## ETreeModel ETreeModel |

## Synopsis

                        ETreeModel;
    typedef             ETreePath;
    ETreePath           e_tree_model_get_root               (ETreeModel *tree_model);
    ETreePath           e_tree_model_node_get_parent        (ETreeModel *tree_model,
                                                             ETreePath path);
    ETreePath           e_tree_model_node_get_first_child   (ETreeModel *tree_model,
                                                             ETreePath path);
    ETreePath           e_tree_model_node_get_next          (ETreeModel *tree_model,
                                                             ETreePath path);
    gboolean            e_tree_model_node_is_root           (ETreeModel *tree_model,
                                                             ETreePath path);
    gboolean            e_tree_model_node_is_expandable     (ETreeModel *tree_model,
                                                             ETreePath path);
    guint               e_tree_model_node_get_n_nodes       (ETreeModel *tree_model);
    guint               e_tree_model_node_get_n_children    (ETreeModel *tree_model,
                                                             ETreePath path);
    guint               e_tree_model_node_depth             (ETreeModel *tree_model,
                                                             ETreePath path);
    gboolean            e_tree_model_get_expanded_default   (ETreeModel *tree_model);
    gint                e_tree_model_column_count           (ETreeModel *tree_model);
    gchar *             e_tree_model_get_save_id            (ETreeModel *tree_model,
                                                             ETreePath path);
    ETreePath           e_tree_model_get_node_by_id         (ETreeModel *tree_model,
                                                             const gchar *save_id);
    gpointer            e_tree_model_sort_value_at          (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             gint col);
    gpointer            e_tree_model_value_at               (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             gint col);
    gpointer            e_tree_model_duplicate_value        (ETreeModel *tree_model,
                                                             gint col,
                                                             gconstpointer value);
    void                e_tree_model_free_value             (ETreeModel *tree_model,
                                                             gint col,
                                                             gpointer value);
    gpointer            e_tree_model_initialize_value       (ETreeModel *tree_model,
                                                             gint col);
    gboolean            e_tree_model_value_is_empty         (ETreeModel *tree_model,
                                                             gint col,
                                                             gconstpointer value);
    gchar *             e_tree_model_value_to_string        (ETreeModel *tree_model,
                                                             gint col,
                                                             gconstpointer value);
    gboolean            (*ETreePathFunc)                    (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             gpointer data);
    void                e_tree_model_node_traverse          (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             ETreePathFunc func,
                                                             gpointer data);
    ETreePath           e_tree_model_node_find              (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             ETreePath end_path,
                                                             ETreePathFunc func,
                                                             gpointer data);
    void                e_tree_model_pre_change             (ETreeModel *tree_model);
    void                e_tree_model_rebuilt                (ETreeModel *tree_model);
    void                e_tree_model_node_changed           (ETreeModel *tree_model,
                                                             ETreePath path);
    void                e_tree_model_node_data_changed      (ETreeModel *tree_model,
                                                             ETreePath path);
    void                e_tree_model_node_inserted          (ETreeModel *tree_model,
                                                             ETreePath parent_path,
                                                             ETreePath inserted_path);
    void                e_tree_model_node_removed           (ETreeModel *tree_model,
                                                             ETreePath parent_path,
                                                             ETreePath removed_path,
                                                             gint old_position);
    void                e_tree_model_node_deleted           (ETreeModel *tree_model,
                                                             ETreePath deleted_path);

## Object Hierarchy

      GInterface
       +----ETreeModel

## Prerequisites

ETreeModel requires GObject.

## Signals

      "node-changed"                                   : Run Last
      "node-data-changed"                              : Run Last
      "node-deleted"                                   : Run Last
      "node-inserted"                                  : Run Last
      "node-removed"                                   : Run Last
      "pre-change"                                     : Run Last
      "rebuilt"                                        : Run Last

## Description

## Details

### ETreeModel

    typedef struct _ETreeModel ETreeModel;

### ETreePath

    typedef gpointer ETreePath;

### e_tree_model_get_root ()

    ETreePath           e_tree_model_get_root               (ETreeModel *tree_model);

Accessor for the root node of `tree_model`.

return values: the ETreePath corresponding to the root node.

`tree_model` : | the ETreeModel of which we want the root node.

### e_tree_model_node_get_parent ()

    ETreePath           e_tree_model_node_get_parent        (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_get_first_child ()

    ETreePath           e_tree_model_node_get_first_child   (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_get_next ()

    ETreePath           e_tree_model_node_get_next          (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_is_root ()

    gboolean            e_tree_model_node_is_root           (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_is_expandable ()

    gboolean            e_tree_model_node_is_expandable     (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_get_n_nodes ()

    guint               e_tree_model_node_get_n_nodes       (ETreeModel *tree_model);

### e_tree_model_node_get_n_children ()

    guint               e_tree_model_node_get_n_children    (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_depth ()

    guint               e_tree_model_node_depth             (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_get_expanded_default ()

    gboolean            e_tree_model_get_expanded_default   (ETreeModel *tree_model);

XXX docs here.

return values: Whether nodes should be expanded by default.

`tree_model` : | The ETreeModel.

### e_tree_model_column_count ()

    gint                e_tree_model_column_count           (ETreeModel *tree_model);

XXX docs here.

return values: The number of columns

`tree_model` : | The ETreeModel.

### e_tree_model_get_save_id ()

    gchar *             e_tree_model_get_save_id            (ETreeModel *tree_model,
                                                             ETreePath path);

XXX docs here.

return values: The save id for this path.

`tree_model` : | The ETreeModel.
`path` : | The ETreePath.

### e_tree_model_get_node_by_id ()

    ETreePath           e_tree_model_get_node_by_id         (ETreeModel *tree_model,
                                                             const gchar *save_id);

get_node_by_id(get_save_id(node)) should be the original node. Likewise if get_node_by_id is not NULL, then get_save_id(get_node_by_id(string)) should be a copy of the original string.

return values: The path for this save id.

`tree_model` : | The ETreeModel.

### e_tree_model_sort_value_at ()

    gpointer            e_tree_model_sort_value_at          (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             gint col);

`tree_model` : | The ETreeModel.
`path` : | The ETreePath to the node we're getting the data from.
`col` : | the column to retrieve data from
Returns : | This function returns the value that is stored by the `tree_model` in column `col` and node `path`. The data returned can be a pointer or any data value that can be stored inside a pointer. The data returned is typically used by an sort renderer if it wants to proxy the data of cell value_at at a better sorting order. The data returned must be valid until the model sends a signal that affect that piece of data. node_changed and node_deleted affect all data in tha t node and all nodes under that node. node_data_changed affects the data in that node. node_col_changed affects the data in that node for that column. node_inserted, node_removed, and no_change don't affect any data in this way.

### e_tree_model_value_at ()

    gpointer            e_tree_model_value_at               (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             gint col);

`tree_model` : | The ETreeModel.
`path` : | The ETreePath to the node we're getting the data from.
`col` : | the column to retrieve data from
Returns : | This function returns the value that is stored by the `tree_model` in column `col` and node `path`. The data returned can be a pointer or any data value that can be stored inside a pointer. The data returned is typically used by an ECell renderer. The data returned must be valid until the model sends a signal that affect that piece of data. node_changed and node_deleted affect all data in tha t node and all nodes under that node. node_data_changed affects the data in that node. node_col_changed affects the data in that node for that column. node_inserted, node_removed, and no_change don't affect any data in this way.

### e_tree_model_duplicate_value ()

    gpointer            e_tree_model_duplicate_value        (ETreeModel *tree_model,
                                                             gint col,
                                                             gconstpointer value);

### e_tree_model_free_value ()

    void                e_tree_model_free_value             (ETreeModel *tree_model,
                                                             gint col,
                                                             gpointer value);

### e_tree_model_initialize_value ()

    gpointer            e_tree_model_initialize_value       (ETreeModel *tree_model,
                                                             gint col);

### e_tree_model_value_is_empty ()

    gboolean            e_tree_model_value_is_empty         (ETreeModel *tree_model,
                                                             gint col,
                                                             gconstpointer value);

### e_tree_model_value_to_string ()

    gchar *             e_tree_model_value_to_string        (ETreeModel *tree_model,
                                                             gint col,
                                                             gconstpointer value);

### ETreePathFunc ()

    gboolean            (*ETreePathFunc)                    (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             gpointer data);

### e_tree_model_node_traverse ()

    void                e_tree_model_node_traverse          (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             ETreePathFunc func,
                                                             gpointer data);

### e_tree_model_node_find ()

    ETreePath           e_tree_model_node_find              (ETreeModel *tree_model,
                                                             ETreePath path,
                                                             ETreePath end_path,
                                                             ETreePathFunc func,
                                                             gpointer data);

### e_tree_model_pre_change ()

    void                e_tree_model_pre_change             (ETreeModel *tree_model);

### e_tree_model_rebuilt ()

    void                e_tree_model_rebuilt                (ETreeModel *tree_model);

### e_tree_model_node_changed ()

    void                e_tree_model_node_changed           (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_data_changed ()

    void                e_tree_model_node_data_changed      (ETreeModel *tree_model,
                                                             ETreePath path);

### e_tree_model_node_inserted ()

    void                e_tree_model_node_inserted          (ETreeModel *tree_model,
                                                             ETreePath parent_path,
                                                             ETreePath inserted_path);

### e_tree_model_node_removed ()

    void                e_tree_model_node_removed           (ETreeModel *tree_model,
                                                             ETreePath parent_path,
                                                             ETreePath removed_path,
                                                             gint old_position);

### e_tree_model_node_deleted ()

    void                e_tree_model_node_deleted           (ETreeModel *tree_model,
                                                             ETreePath deleted_path);

## Signal Details

### The `"node-changed"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    arg1,
                                                            gpointer    user_data)       : Run Last

### The `"node-data-changed"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    arg1,
                                                            gpointer    user_data)       : Run Last

### The `"node-deleted"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    arg1,
                                                            gpointer    user_data)       : Run Last

### The `"node-inserted"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    arg1,
                                                            gpointer    arg2,
                                                            gpointer    user_data)       : Run Last

### The `"node-removed"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    arg1,
                                                            gpointer    arg2,
                                                            gint        arg3,
                                                            gpointer    user_data)       : Run Last

### The `"pre-change"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    user_data)       : Run Last

### The `"rebuilt"` signal

    void                user_function                      (ETreeModel *etreemodel,
                                                            gpointer    user_data)       : Run Last