## IAnjutaProject IAnjutaProject — Interface implemented by project backend |

## Stability Level

Unstable, unless otherwise indicated

## Functions

GQuark | ianjuta_project_error_quark ()
AnjutaProjectNode * | ianjuta_project_add_node_after ()
AnjutaProjectNode * | ianjuta_project_add_node_before ()
const GList * | ianjuta_project_get_node_info ()
AnjutaProjectNode * | ianjuta_project_get_root ()
gboolean | ianjuta_project_is_loaded ()
gboolean | ianjuta_project_load_node ()
gboolean | ianjuta_project_remove_node ()
gboolean | ianjuta_project_remove_property ()
gboolean | ianjuta_project_save_node ()
AnjutaProjectProperty * | ianjuta_project_set_property ()

## Signals

void | file-changed | Run Last
void | node-changed | Run Last
void | node-loaded | Run Last
void | node-saved | Run Last

## Object Hierarchy

        GEnum
        ├── IAnjutaProjectError
        ╰── IAnjutaProjectProbe
        GInterface
        ╰── IAnjutaProject

## Includes

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

## Description

This is the new interface that is replacing Gnome Build.

## Functions

### ianjuta_project_error_quark ()

    GQuark
    ianjuta_project_error_quark (void);

### ianjuta_project_add_node_after ()

    AnjutaProjectNode *
    ianjuta_project_add_node_after (IAnjutaProject *obj,
                                    AnjutaProjectNode *parent,
                                    AnjutaProjectNode *sibling,
                                    AnjutaProjectNodeType type,
                                    GFile *file,
                                    const gchar *name,
                                    GError **err);

Create a new node and insert it after sibling

#### Parameters

obj | Self |
parent | Parent. | [transfer none]
sibling | Sibling. | [allow-none][transfer none]
type | Node type |
file | Optional file object for the node. | [allow-none][transfer none]
name | Optional name for the node. | [allow-none][transfer none]
err | Error propagation and reporting |

#### Returns

The new node, NULL if error.

[transfer none]

### ianjuta_project_add_node_before ()

    AnjutaProjectNode *
    ianjuta_project_add_node_before (IAnjutaProject *obj,
                                     AnjutaProjectNode *parent,
                                     AnjutaProjectNode *sibling,
                                     AnjutaProjectNodeType type,
                                     GFile *file,
                                     const gchar *name,
                                     GError **err);

Create a new node and insert it before sibling

#### Parameters

obj | Self |
parent | Parent. | [transfer none]
sibling | Sibling. | [allow-none][transfer none]
type | Node type |
file | Optional file object for the node. | [allow-none][transfer none]
name | Optional name for the node. | [allow-none][transfer none]
err | Error propagation and reporting |

#### Returns

The new node, NULL if error.

[transfer none]

### ianjuta_project_get_node_info ()

    const GList *
    ianjuta_project_get_node_info (IAnjutaProject *obj,
                                   GError **err);

Return a list of possible node;

#### Parameters

obj | Self |
err | Error propagation and reporting |

#### Returns

A list containing information on all node supported by the project.

[element-type Anjuta.ProjectNodeInfo][transfer none]

### ianjuta_project_get_root ()

    AnjutaProjectNode *
    ianjuta_project_get_root (IAnjutaProject *obj,
                              GError **err);

Get root_node

#### Parameters

obj | Self |
err | Error propagation and reporting |

#### Returns

The root node.

[transfer none]

### ianjuta_project_is_loaded ()

    gboolean
    ianjuta_project_is_loaded (IAnjutaProject *obj,
                               GError **err);

Return TRUE if the project is loaded;

#### Parameters

obj | Self |
err | Error propagation and reporting |

#### Returns

TRUE if the project is completely loaded.

### ianjuta_project_load_node ()

    gboolean
    ianjuta_project_load_node (IAnjutaProject *obj,
                               AnjutaProjectNode *node,
                               GError **err);

Reload a project node

#### Parameters

obj | Self |
node | Project node to reload. | [transfer none]
err | Error propagation and reporting |

#### Returns

TRUE if the node has been loaded without error

### ianjuta_project_remove_node ()

    gboolean
    ianjuta_project_remove_node (IAnjutaProject *obj,
                                 AnjutaProjectNode *node,
                                 GError **err);

Remove a node

#### Parameters

obj | Self |
node | Node. | [transfer none]
err | Error propagation and reporting |

#### Returns

TRUE if the node can be removed

### ianjuta_project_remove_property ()

    gboolean
    ianjuta_project_remove_property (IAnjutaProject *obj,
                                     AnjutaProjectNode *node,
                                     const gchar *id,
                                     const gchar *name,
                                     GError **err);

Remove a property of the node

#### Parameters

obj | Self |
node | Node. | [transfer none]
id | Property. | [transfer none]
name | Name for map property. | [allow-none][transfer none]
err | Error propagation and reporting |

#### Returns

TRUE if the node is removed

### ianjuta_project_save_node ()

    gboolean
    ianjuta_project_save_node (IAnjutaProject *obj,
                               AnjutaProjectNode *node,
                               GError **err);

Save a project node

#### Parameters

obj | Self |
node | Project node to save. | [transfer none]
err | Error propagation and reporting |

#### Returns

TRUE if the node has been saved without error

### ianjuta_project_set_property ()

    AnjutaProjectProperty *
    ianjuta_project_set_property (IAnjutaProject *obj,
                                  AnjutaProjectNode *node,
                                  const gchar *id,
                                  const gchar *name,
                                  const gchar *value,
                                  GError **err);

Change a properties on node.

#### Parameters

obj | Self |
node | Node. | [transfer none]
id | Property. | [transfer none]
name | Name for map property. | [allow-none][transfer none]
value | Value. | [transfer none]
err | Error propagation and reporting |

#### Returns

The new property of NULL if the property cannot be set.

[allow-none][transfer none]

## Signal Details

### The `“file-changed”` signal

    void
    user_function (IAnjutaProject *obj,
                   gpointer        node,
                   gpointer        user_data)

This signal is emitted when the project is changed on the disk. The corresponding node has to be reloaded.

#### Parameters

obj | Self |
node | Node to be reloaded. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“node-changed”` signal

    void
    user_function (IAnjutaProject *obj,
                   gpointer        node,
                   GError         *error,
                   gpointer        user_data)

This signal is emitted when a node is changed by a function of this interface. The error argument is not NULL if the change was not possible. The corresponding node need to be saved.

#### Parameters

obj | Self |
node | Changed node. |
error | Error while changing node |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

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

    void
    user_function (IAnjutaProject *obj,
                   gpointer        node,
                   GError         *error,
                   gpointer        user_data)

This signal is emitted when a node is loaded. It returns an error if the load operation fail.

#### Parameters

obj | Self |
node | Loaded node. |
error | Error while loading node |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“node-saved”` signal

    void
    user_function (IAnjutaProject *obj,
                   gpointer        node,
                   GError         *error,
                   gpointer        user_data)

This signal is emitted when a node is saved. It returns an error if the save operation fail.

#### Parameters

obj | Self |
node | Saved node. |
error | Error while saving node |
user_data | user data set when the signal handler was connected. |

Flags: Run Last