## IAnjutaProjectManager IAnjutaProjectManager — Interface for project managers |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

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

    #define             IANJUTA_TYPE_PROJECT_MANAGER_CAPABILITIES
    #define             IANJUTA_TYPE_PROJECT_MANAGER_ELEMENT_TYPE
    #define             IANJUTA_TYPE_PROJECT_MANAGER_TARGET_TYPE
    #define             IANJUTA_PROJECT_MANAGER_ERROR
    #define             IANJUTA_PROJECT_MANAGER_PROJECT_ROOT_URI
    #define             IANJUTA_PROJECT_MANAGER_CURRENT_URI
                        IAnjutaProjectManager;
                        IAnjutaProjectManagerIface;
    enum                IAnjutaProjectManagerCapabilities;
    enum                IAnjutaProjectManagerElementType;
    enum                IAnjutaProjectManagerTargetType;
    GType               ianjuta_project_manager_element_type_get_type
                                                            (void);
    GType               ianjuta_project_manager_target_type_get_type
                                                            (void);
    GQuark              ianjuta_project_manager_error_quark (void);
    GType               ianjuta_project_manager_get_type    (void);
    gchar*              ianjuta_project_manager_add_group   (IAnjutaProjectManager *obj,
                                                             const gchar *group_name_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);
    gchar*              ianjuta_project_manager_add_source  (IAnjutaProjectManager *obj,
                                                             const gchar *source_uri_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);
    GList*              ianjuta_project_manager_add_sources (IAnjutaProjectManager *obj,
                                                             GList *source_uris_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);
    gchar*              ianjuta_project_manager_add_target  (IAnjutaProjectManager *obj,
                                                             const gchar *target_name_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);
    IAnjutaProjectManagerCapabilities  ianjuta_project_manager_get_capabilities
                                                            (IAnjutaProjectManager *obj,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_children
                                                            (IAnjutaProjectManager *obj,
                                                             const gchar *element_uri,
                                                             GError **err);
    IAnjutaProjectManagerElementType  ianjuta_project_manager_get_element_type
                                                            (IAnjutaProjectManager *obj,
                                                             const gchar *element_uri,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_elements
                                                            (IAnjutaProjectManager *obj,
                                                             IAnjutaProjectManagerElementType element_type,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_packages
                                                            (IAnjutaProjectManager *obj,
                                                             GError **err);
    gchar*              ianjuta_project_manager_get_parent  (IAnjutaProjectManager *obj,
                                                             const gchar *element_uri,
                                                             GError **err);
    gchar*              ianjuta_project_manager_get_selected
                                                            (IAnjutaProjectManager *obj,
                                                             GError **err);
    IAnjutaProjectManagerTargetType  ianjuta_project_manager_get_target_type
                                                            (IAnjutaProjectManager *obj,
                                                             const gchar *target_uri,
                                                             GError **err);
    GList*              ianjuta_project_manager_get_targets (IAnjutaProjectManager *obj,
                                                             IAnjutaProjectManagerTargetType 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_TYPE_PROJECT_MANAGER_CAPABILITIES

    #define IANJUTA_TYPE_PROJECT_MANAGER_CAPABILITIES (ianjuta_project_manager_capabilities_get_type())

### IANJUTA_TYPE_PROJECT_MANAGER_ELEMENT_TYPE

    #define IANJUTA_TYPE_PROJECT_MANAGER_ELEMENT_TYPE (ianjuta_project_manager_element_type_get_type())

### IANJUTA_TYPE_PROJECT_MANAGER_TARGET_TYPE

    #define IANJUTA_TYPE_PROJECT_MANAGER_TARGET_TYPE (ianjuta_project_manager_target_type_get_type())

### 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, const gchar *element_uri);
    	/* Signal */
    	void (*element_removed) (IAnjutaProjectManager *obj, const gchar *element_uri);
    	/* Signal */
    	void (*element_selected) (IAnjutaProjectManager *obj, const gchar *element_uri);

    	gchar* (*add_group) (IAnjutaProjectManager *obj, const gchar *group_name_to_add,  const gchar *default_location_uri, GError **err);
    	gchar* (*add_source) (IAnjutaProjectManager *obj, const gchar *source_uri_to_add,  const gchar *default_location_uri, GError **err);
    	gchar* (*add_source_quiet) (IAnjutaProjectManager *obj, const gchar *source_uri_to_add,  const gchar *target_id, GError **err);
    	GList* (*add_sources) (IAnjutaProjectManager *obj, GList* source_uris_to_add,  const gchar *default_location_uri, GError **err);
    	gchar* (*add_target) (IAnjutaProjectManager *obj, const gchar *target_name_to_add,  const gchar *default_location_uri, GError **err);
    	IAnjutaProjectManagerCapabilities (*get_capabilities) (IAnjutaProjectManager *obj, GError **err);
    	GList* (*get_children) (IAnjutaProjectManager *obj, const gchar *element_uri, GError **err);
    	IAnjutaProjectManagerElementType (*get_element_type) (IAnjutaProjectManager *obj, const gchar *element_uri, GError **err);
    	GList* (*get_elements) (IAnjutaProjectManager *obj, IAnjutaProjectManagerElementType element_type, GError **err);
    	GList* (*get_packages) (IAnjutaProjectManager *obj, GError **err);
    	gchar* (*get_parent) (IAnjutaProjectManager *obj, const gchar *element_uri, GError **err);
    	gchar* (*get_selected) (IAnjutaProjectManager *obj, GError **err);
    	gchar* (*get_selected_id) (IAnjutaProjectManager *obj, IAnjutaProjectManagerElementType element_type, GError **err);
    	IAnjutaProjectManagerTargetType (*get_target_type) (IAnjutaProjectManager *obj, const gchar *target_uri, GError **err);
    	GList* (*get_targets) (IAnjutaProjectManager *obj, IAnjutaProjectManagerTargetType target_type, GError **err);
    	gboolean (*is_open) (IAnjutaProjectManager *obj, GError **err);
    } IAnjutaProjectManagerIface;

### enum IAnjutaProjectManagerCapabilities

    typedef enum {
    	IANJUTA_PROJECT_MANAGER_CAN_ADD_NONE     = 0,
    	IANJUTA_PROJECT_MANAGER_CAN_ADD_GROUP    = 1 << 0,
    	IANJUTA_PROJECT_MANAGER_CAN_ADD_TARGET   = 1 << 1,
    	IANJUTA_PROJECT_MANAGER_CAN_ADD_SOURCE   = 1 << 2
    } IAnjutaProjectManagerCapabilities;

### enum IAnjutaProjectManagerElementType

    typedef enum {
    	IANJUTA_PROJECT_MANAGER_UNKNOWN,
    	IANJUTA_PROJECT_MANAGER_SOURCE,
    	IANJUTA_PROJECT_MANAGER_TARGET,
    	IANJUTA_PROJECT_MANAGER_GROUP
    } IAnjutaProjectManagerElementType;

### enum IAnjutaProjectManagerTargetType

    typedef enum {
    	IANJUTA_PROJECT_MANAGER_TARGET_UNKNOWN,
    	IANJUTA_PROJECT_MANAGER_TARGET_SHAREDLIB,
    	IANJUTA_PROJECT_MANAGER_TARGET_STATICLIB,
    	IANJUTA_PROJECT_MANAGER_TARGET_EXECUTABLE
    } IAnjutaProjectManagerTargetType;

### ianjuta_project_manager_element_type_get_type ()

    GType               ianjuta_project_manager_element_type_get_type
                                                            (void);

Returns : |

### ianjuta_project_manager_target_type_get_type ()

    GType               ianjuta_project_manager_target_type_get_type
                                                            (void);

Returns : |

### ianjuta_project_manager_error_quark ()

    GQuark              ianjuta_project_manager_error_quark (void);

Returns : |

### ianjuta_project_manager_get_type ()

    GType               ianjuta_project_manager_get_type    (void);

Returns : |

### ianjuta_project_manager_add_group ()

    gchar*              ianjuta_project_manager_add_group   (IAnjutaProjectManager *obj,
                                                             const gchar *group_name_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);

fixme

`obj` : | Self
`group_name_to_add` : | fixme
`default_location_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_add_source ()

    gchar*              ianjuta_project_manager_add_source  (IAnjutaProjectManager *obj,
                                                             const gchar *source_uri_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);

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

`obj` : | Self
`source_uri_to_add` : | Target name or uri
`default_location_uri` : | Default source location or NULL if don't care
`err` : | Error propagation and reporting.
Returns : | element URIs. Must be freed when no longer required.

### ianjuta_project_manager_add_sources ()

    GList*              ianjuta_project_manager_add_sources (IAnjutaProjectManager *obj,
                                                             GList *source_uris_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);

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

`obj` : | Self
`source_uris_to_add` : | fixme
`default_location_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : | element URIs. Must be freed when no longer required.

### ianjuta_project_manager_add_target ()

    gchar*              ianjuta_project_manager_add_target  (IAnjutaProjectManager *obj,
                                                             const gchar *target_name_to_add,
                                                             const gchar *default_location_uri,
                                                             GError **err);

fixme

`obj` : | Self
`target_name_to_add` : | fixme
`default_location_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : |

### ianjuta_project_manager_get_capabilities ()

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

Returns 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,
                                                             const gchar *element_uri,
                                                             GError **err);

fixme

`obj` : | Self
`element_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_get_element_type ()

    IAnjutaProjectManagerElementType  ianjuta_project_manager_get_element_type
                                                            (IAnjutaProjectManager *obj,
                                                             const gchar *element_uri,
                                                             GError **err);

fixme

`obj` : | Self
`element_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_get_elements ()

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

fixme

`obj` : | Self
`element_type` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_get_packages ()

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

`obj` : |
`err` : |
Returns : |

### ianjuta_project_manager_get_parent ()

    gchar*              ianjuta_project_manager_get_parent  (IAnjutaProjectManager *obj,
                                                             const gchar *element_uri,
                                                             GError **err);

fixme

`obj` : | Self
`element_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_get_selected ()

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

fixme

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

### ianjuta_project_manager_get_target_type ()

    IAnjutaProjectManagerTargetType  ianjuta_project_manager_get_target_type
                                                            (IAnjutaProjectManager *obj,
                                                             const gchar *target_uri,
                                                             GError **err);

fixme

`obj` : | Self
`target_uri` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_get_targets ()

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

fixme

`obj` : | Self
`target_type` : | fixme
`err` : | Error propagation and reporting.
Returns : | fixme

### ianjuta_project_manager_is_open ()

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

fixme

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

## Signal Details

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

    void                user_function                      (IAnjutaProjectManager *ianjutaprojectmanager,
                                                            gchar                 *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,
                                                            gchar                 *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,
                                                            gchar                 *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.