## IAnjutaProjectManager IAnjutaProjectManager — Interface for project managers |

## Stability Level

Unstable, unless otherwise indicated

## Functions

GQuark | ianjuta_project_manager_error_quark ()
GFile * | ianjuta_project_manager_add_group ()
GFile * | ianjuta_project_manager_add_source ()
GFile * | ianjuta_project_manager_add_source_quiet ()
GList * | ianjuta_project_manager_add_sources ()
GFile * | ianjuta_project_manager_add_target ()
guint | ianjuta_project_manager_get_capabilities ()
GList * | ianjuta_project_manager_get_children ()
IAnjutaProject * | ianjuta_project_manager_get_current_project ()
GList * | ianjuta_project_manager_get_elements ()
GList * | ianjuta_project_manager_get_packages ()
GFile * | ianjuta_project_manager_get_parent ()
GFile * | ianjuta_project_manager_get_selected ()
AnjutaProjectNodeType | ianjuta_project_manager_get_target_type ()
GList * | ianjuta_project_manager_get_targets ()
gboolean | ianjuta_project_manager_is_open ()
gboolean | ianjuta_project_manager_remove_file ()

## Signals

void | element-added | Run Last
void | element-removed | Run Last
void | element-selected | Run Last
void | project-loaded | Run Last

## Types and Values

#define | IANJUTA_PROJECT_MANAGER_ERROR
#define | IANJUTA_PROJECT_MANAGER_PROJECT_ROOT_URI
#define | IANJUTA_PROJECT_MANAGER_CURRENT_PROJECT
#define | IANJUTA_PROJECT_MANAGER_CURRENT_URI

## Object Hierarchy

        GInterface
        ╰── IAnjutaProjectManager

## Includes

    #include <libanjuta/interfaces/ianjuta-project-manager.h>

## Description

## Functions

### ianjuta_project_manager_error_quark ()

    GQuark
    ianjuta_project_manager_error_quark (void);

### ianjuta_project_manager_add_group ()

    GFile *
    ianjuta_project_manager_add_group (IAnjutaProjectManager *obj,
                                       const gchar *name,
                                       GFile *default_group,
                                       GError **err);

Prompts the user to add a new group to the project. The user can select a parent group different from the one set as default.

#### Parameters

obj | Self. |
name | Group name or URI. |
default_group | A GFile corresponding to the default parent group or `NULL` if don't care. | [allow-none]
err | Error propagation and reporting. |

#### Returns

A GFile corresponding to the new group added in the project. You own the returned file; use `g_object_unref()` to release it.

[transfer full]

### ianjuta_project_manager_add_source ()

    GFile *
    ianjuta_project_manager_add_source (IAnjutaProjectManager *obj,
                                        const gchar *name,
                                        GFile *default_target,
                                        GError **err);

Prompts the user to add a file to the project. If the user selects multiple files only the first source file is returned.

You can add non existing file. In this case the element_added signal will be emitted with a non existing file. So it is up to the caller to reemit this signal later when the file is created.

#### Parameters

obj | Self. |
name | Source name or URI. |
default_target | A GFile corresponding to the default target or group or `NULL` if you don't care. | [allow-none]
err | Error propagation and reporting. |

#### Returns

A GFile corresponding to the new source file in the project view. You own the returned file; use `g_object_unref()` to release it.

[transfer full]

### ianjuta_project_manager_add_source_quiet ()

    GFile *
    ianjuta_project_manager_add_source_quiet
                                   (IAnjutaProjectManager *obj,
                                    const gchar *name,
                                    GFile *target,
                                    GError **err);

Adds a file to the project without prompting the user.

You can add non existing file. In this case the element_added signal will be emitted with a non existing file. So it is up to the caller to reemit this signal later when the file is created.

#### Parameters

obj | Self. |
name | Source name or URI. |
target | A GFile corresponding to the parent target or group. |
err | Error propagation and reporting. |

#### Returns

A GFile corresponding to the new source file in the project view. You own the returned file; use `g_object_unref()` to release it.

[transfer full]

### ianjuta_project_manager_add_sources ()

    GList *
    ianjuta_project_manager_add_sources (IAnjutaProjectManager *obj,
                                         GList *names,
                                         GFile *default_target,
                                         GError **err);

Prompts the user to add several files to the project. Depending on the project backend, it can be possible that the source files must be located in a particular directory.

You can add non existing file. In this case the element_added signal will be emitted with a non existing file. So it is up to the caller to reemit this signal later when the file is created.

#### Parameters

obj | Self. |
names | Sources name or URI to add. | [element-type utf8]
default_target | A GFile corresponding to the default target or group or `NULL` if don't care. | [allow-none]
err | Error propagation and reporting. |

#### Returns

A list of GFile corresponding to all new source files added in the project. You own the list with the the returned files; use `g_list_free()` and `g_object_unref()` on each file to release them.

[element-type GFile][transfer full]

### ianjuta_project_manager_add_target ()

    GFile *
    ianjuta_project_manager_add_target (IAnjutaProjectManager *obj,
                                        const gchar *name,
                                        GFile *default_group,
                                        GError **err);

Prompts the user to add a new target to the project. The user can select a parent group different from the one set as default.

#### Parameters

obj | Self |
name | Target name or URI. |
default_group | A GFile corresponding to the default parent group or `NULL` if don't care. | [allow-none]
err | Error propagation and reporting. |

#### Returns

A GFile corresponding to the new target added in the project. You own the returned file; use `g_object_unref()` to release it.

[transfer full]

### ianjuta_project_manager_get_capabilities ()

    guint
    ianjuta_project_manager_get_capabilities
                                   (IAnjutaProjectManager *obj,
                                    GError **err);

Gets the capabilites of project whether it can add group, target sources etc.

#### Parameters

obj | Self |
err | Error propagation and reporting. |

#### Returns

Supported capabilites.

### ianjuta_project_manager_get_children ()

    GList *
    ianjuta_project_manager_get_children (IAnjutaProjectManager *obj,
                                          GFile *parent,
                                          gint children_type,
                                          GError **err);

Recursively gets the list of all children below the corresponding parent having the specify type.

#### Parameters

obj | Self |
parent | A GFile corresponding to the parent. |
children_type | Select one element type: source, group or target |
err | Error propagation and reporting. |

#### Returns

The list of GFile corresponding to all children or `NULL` if the element has no children with the corresponding type. Free the returned * list with `g_list_free()` and the files with `g_object_unref()`.

[element-type GFile][transfer full]

### ianjuta_project_manager_get_current_project ()

    IAnjutaProject *
    ianjuta_project_manager_get_current_project
                                   (IAnjutaProjectManager *obj,
                                    GError **err);

Gets the current project.

#### Parameters

obj | Self |
err | Error propagation and reporting. |

#### Returns

the currently active project. NULL if none is there.

[transfer none]

### ianjuta_project_manager_get_elements ()

    GList *
    ianjuta_project_manager_get_elements (IAnjutaProjectManager *obj,
                                          AnjutaProjectNodeType element_type,
                                          GError **err);

Get a list of all elements of this type in the project.

#### Parameters

obj | Self |
element_type | Select one element type: source, group or target |
err | Error propagation and reporting. |

#### Returns

Get list of GFile corresponding to all valid elements or `NULL` if there are no elements of this type. Free the returned list with `g_list_free()` and the files with `g_object_unref()`.

[element-type GFile][transfer full]

### ianjuta_project_manager_get_packages ()

    GList *
    ianjuta_project_manager_get_packages (IAnjutaProjectManager *obj,
                                          GError **err);

#### Parameters

obj | Self |
err | Error propagation and reporting. |

#### Returns

the list of pkg-config packages that the current project requires in it's configure.ac. Can be NULL if there is no project opened currently or no package is required.

[element-type utf8][transfer container]

### ianjuta_project_manager_get_parent ()

    GFile *
    ianjuta_project_manager_get_parent (IAnjutaProjectManager *obj,
                                        GFile *element,
                                        GError **err);

Gets the parent of the corresponding child.

#### Parameters

obj | Self |
element | A GFile corresponding to one child. |
err | Error propagation and reporting. |

#### Returns

The parent of the child, or `NULL` if the element is the root.

### ianjuta_project_manager_get_selected ()

    GFile *
    ianjuta_project_manager_get_selected (IAnjutaProjectManager *obj,
                                          GError **err);

Gets the currently selected element in the project manager view.

#### Parameters

obj | Self |
err | Error propagation and reporting. |

#### Returns

A GFile corresponding to the selected element in the project view. You own the returned file; use `g_object_unref()` to release it.

[transfer full]

### ianjuta_project_manager_get_target_type ()

    AnjutaProjectNodeType
    ianjuta_project_manager_get_target_type
                                   (IAnjutaProjectManager *obj,
                                    GFile *target,
                                    GError **err);

Get the type of the corresponding target: program, library...

#### Parameters

obj | Self |
target | A GFile corresponding to a target |
err | Error propagation and reporting. |

#### Returns

Return the type of the target.

### ianjuta_project_manager_get_targets ()

    GList *
    ianjuta_project_manager_get_targets (IAnjutaProjectManager *obj,
                                         AnjutaProjectNodeType target_type,
                                         GError **err);

Get a list of targets in the project with the corresponding type.

#### Parameters

obj | Self |
target_type | type of the target |
err | Error propagation and reporting. |

#### Returns

A list of GFile corresponding to each target of the requested type or `NULL` if none exists. Free the returned list with `g_list_free()` and the files with `g_object_unref()`.

[element-type GFile][transfer full]

### ianjuta_project_manager_is_open ()

    gboolean
    ianjuta_project_manager_is_open (IAnjutaProjectManager *obj,
                                     GError **err);

Gets whether a project is currently opened.

#### Parameters

obj | Self |
err | Error propagation and reporting. |

#### Returns

`TRUE` if a project is opened.

### ianjuta_project_manager_remove_file ()

    gboolean
    ianjuta_project_manager_remove_file (IAnjutaProjectManager *obj,
                                         GFile *file,
                                         GError **err);

Remove a source file from the project. If the file is used in several targets, it is removed from all targets. The file could be removed from the disk.

#### Parameters

obj | Self. |
file | A GFile that will be removed from the project |
err | Error propagation and reporting. |

#### Returns

`TRUE` if the file has been removed from the project else `FALSE`

## Types and Values

### IANJUTA_PROJECT_MANAGER_ERROR

    #define IANJUTA_PROJECT_MANAGER_ERROR ianjuta_project_manager_error_quark()

### IANJUTA_PROJECT_MANAGER_PROJECT_ROOT_URI

    #define IANJUTA_PROJECT_MANAGER_PROJECT_ROOT_URI "project_root_uri"

Anjuta shell value set by project manager to the project root uri.

### IANJUTA_PROJECT_MANAGER_CURRENT_PROJECT

    #define IANJUTA_PROJECT_MANAGER_CURRENT_PROJECT "project_manager_current_project"

Anjuta shell value set by project manager to the current project object which implement IAnjutaProject interface.

### IANJUTA_PROJECT_MANAGER_CURRENT_URI

    #define IANJUTA_PROJECT_MANAGER_CURRENT_URI "project_manager_current_uri"

Anjuta shell value set by project manager to the current uri.

## Signal Details

### The `“element-added”` signal

    void
    user_function (IAnjutaProjectManager *ianjutaprojectmanager,
                   GFile                 *arg1,
                   gpointer               user_data)

Flags: Run Last

### The `“element-removed”` signal

    void
    user_function (IAnjutaProjectManager *ianjutaprojectmanager,
                   GFile                 *arg1,
                   gpointer               user_data)

Flags: Run Last

### The `“element-selected”` signal

    void
    user_function (IAnjutaProjectManager *ianjutaprojectmanager,
                   GFile                 *arg1,
                   gpointer               user_data)

Flags: Run Last

### The `“project-loaded”` signal

    void
    user_function (IAnjutaProjectManager *ianjutaprojectmanager,
                   GError                *arg1,
                   gpointer               user_data)

Flags: Run Last