## IAnjutaProjectManager IAnjutaProjectManager — Interface for project managers |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

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

    #define             IANJUTA_PROJECT_MANAGER_ERROR
    #define             IANJUTA_PROJECT_MANAGER_PROJECT_ROOT_URI
    #define             IANJUTA_PROJECT_MANAGER_CURRENT_URI
                        IAnjutaProjectManager;
                        IAnjutaProjectManagerIface;
    GQuark              ianjuta_project_manager_error_quark (void);
    GFile*              ianjuta_project_manager_add_group   (IAnjutaProjectManager *obj,
                                                             const gchar *name,
                                                             GFile *default_group,
                                                             GError **err);
    GFile*              ianjuta_project_manager_add_source  (IAnjutaProjectManager *obj,
                                                             const gchar *name,
                                                             GFile *default_target,
                                                             GError **err);
    GFile*              ianjuta_project_manager_add_source_quiet
                                                            (IAnjutaProjectManager *obj,
                                                             const gchar *name,
                                                             GFile *target,
                                                             GError **err);
    GList*              ianjuta_project_manager_add_sources (IAnjutaProjectManager *obj,
                                                             GList *names,
                                                             GFile *default_target,
                                                             GError **err);
    GFile*              ianjuta_project_manager_add_target  (IAnjutaProjectManager *obj,
                                                             const gchar *name,
                                                             GFile *default_group,
                                                             GError **err);
    guint               ianjuta_project_manager_get_capabilities
                                                            (IAnjutaProjectManager *obj,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_children
                                                            (IAnjutaProjectManager *obj,
                                                             GFile *element,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_elements
                                                            (IAnjutaProjectManager *obj,
                                                             AnjutaProjectNodeType element_type,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_packages
                                                            (IAnjutaProjectManager *obj,
                                                             GError **err);
    GFile*              ianjuta_project_manager_get_parent  (IAnjutaProjectManager *obj,
                                                             GFile *element,
                                                             GError **err);
    GFile*              ianjuta_project_manager_get_selected
                                                            (IAnjutaProjectManager *obj,
                                                             GError **err);
    AnjutaProjectTargetClass  ianjuta_project_manager_get_target_type
                                                            (IAnjutaProjectManager *obj,
                                                             GFile *target,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_targets (IAnjutaProjectManager *obj,
                                                             AnjutaProjectTargetClass target_type,
                                                             GError **err);
    gboolean            ianjuta_project_manager_is_open     (IAnjutaProjectManager *obj,
                                                             GError **err);

## Object Hierarchy

      GInterface
       +----IAnjutaProjectManager

## Prerequisites

IAnjutaProjectManager requires GObject.

## Signals

      "element-added"                                  : Run Last
      "element-removed"                                : Run Last
      "element-selected"                               : Run Last

## Description

## Details

### 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_URI

    #define IANJUTA_PROJECT_MANAGER_CURRENT_URI "project_manager_current_uri"

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

### IAnjutaProjectManager

    typedef struct _IAnjutaProjectManager IAnjutaProjectManager;

### IAnjutaProjectManagerIface

    typedef struct {
    	GTypeInterface g_iface;

    	/* Signal */
    	void (*element_added) (IAnjutaProjectManager *obj, GFile *element);
    	/* Signal */
    	void (*element_removed) (IAnjutaProjectManager *obj, GFile *element);
    	/* Signal */
    	void (*element_selected) (IAnjutaProjectManager *obj, GFile *element);

    	GFile* (*add_group) (IAnjutaProjectManager *obj, const gchar *name,  GFile *default_group, GError **err);
    	GFile* (*add_source) (IAnjutaProjectManager *obj, const gchar *name,  GFile *default_target, GError **err);
    	GFile* (*add_source_quiet) (IAnjutaProjectManager *obj, const gchar *name,  GFile *target, GError **err);
    	GList* (*add_sources) (IAnjutaProjectManager *obj, GList* names,  GFile *default_target, GError **err);
    	GFile* (*add_target) (IAnjutaProjectManager *obj, const gchar *name,  GFile *default_group, GError **err);
    	guint (*get_capabilities) (IAnjutaProjectManager *obj, GError **err);
    	GList* (*get_children) (IAnjutaProjectManager *obj, GFile *element, GError **err);
    	GList* (*get_elements) (IAnjutaProjectManager *obj, AnjutaProjectNodeType element_type, GError **err);
    	GList* (*get_packages) (IAnjutaProjectManager *obj, GError **err);
    	GFile* (*get_parent) (IAnjutaProjectManager *obj, GFile *element, GError **err);
    	GFile* (*get_selected) (IAnjutaProjectManager *obj, GError **err);
    	AnjutaProjectTargetClass (*get_target_type) (IAnjutaProjectManager *obj, GFile *target, GError **err);
    	GList* (*get_targets) (IAnjutaProjectManager *obj, AnjutaProjectTargetClass target_type, GError **err);
    	gboolean (*is_open) (IAnjutaProjectManager *obj, GError **err);
    } IAnjutaProjectManagerIface;

### ianjuta_project_manager_error_quark ()

    GQuark              ianjuta_project_manager_error_quark (void);

Returns : |

### 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.

`obj` : | Self.
`name` : | Group name or URI.
`default_group` : | A GFile corresponding to the default parent group or `NULL` if don't care.
`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.

### 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.

`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.
`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.

### 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.

`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.

### 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.

`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.
`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 GFile]

### 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.

`obj` : | Self
`name` : | Target name or URI.
`default_group` : | A GFile corresponding to the default parent group or `NULL` if don't care.
`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.

### 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.

`obj` : | Self
`err` : | Error propagation and reporting.
Returns : | Supported capabilites.

### ianjuta_project_manager_get_children ()

    GList*              ianjuta_project_manager_get_children
                                                            (IAnjutaProjectManager *obj,
                                                             GFile *element,
                                                             GError **err);

Gets the list of all children of the corresponding parent.

`obj` : | Self
`element` : | A GFile corresponding to a parent.
`err` : | Error propagation and reporting.
Returns : | The list of GFile corresponding to each child of the element or `NULL` if the element has no child. Free the returned list with `g_list_free()` and the files with `g_object_unref()`. [element-type GFile][transfer full GFile]

### 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.

`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 GFile]

### ianjuta_project_manager_get_packages ()

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

`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]

### ianjuta_project_manager_get_parent ()

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

Gets the parent of the corresponding child.

`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.

`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.

### ianjuta_project_manager_get_target_type ()

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

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

`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,
                                                             AnjutaProjectTargetClass target_type,
                                                             GError **err);

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

`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 GFile]

### ianjuta_project_manager_is_open ()

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

Gets whether a project is currently opened.

`obj` : | Self
`err` : | Error propagation and reporting.
Returns : | `TRUE` if a project is opened.

## Signal Details

### The `"element-added"` signal

    void                user_function                      (IAnjutaProjectManager *ianjutaprojectmanager,
                                                            GObject               *arg1,
                                                            gpointer               user_data)                  : Run Last

`ianjutaprojectmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"element-removed"` signal

    void                user_function                      (IAnjutaProjectManager *ianjutaprojectmanager,
                                                            GObject               *arg1,
                                                            gpointer               user_data)                  : Run Last

`ianjutaprojectmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"element-selected"` signal

    void                user_function                      (IAnjutaProjectManager *ianjutaprojectmanager,
                                                            GObject               *arg1,
                                                            gpointer               user_data)                  : Run Last

`ianjutaprojectmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.