diff options
Diffstat (limited to 'widgets/table/e-tree-model.h')
-rw-r--r-- | widgets/table/e-tree-model.h | 202 |
1 files changed, 112 insertions, 90 deletions
diff --git a/widgets/table/e-tree-model.h b/widgets/table/e-tree-model.h index 50bd8064a5..21d3b9b844 100644 --- a/widgets/table/e-tree-model.h +++ b/widgets/table/e-tree-model.h @@ -3,7 +3,6 @@ #define _E_TREE_MODEL_H_ #include <gdk-pixbuf/gdk-pixbuf.h> -#include <gal/e-table/e-table-model.h> #ifdef __cplusplus extern "C" { @@ -16,127 +15,150 @@ extern "C" { #define E_IS_TREE_MODEL(o) (GTK_CHECK_TYPE ((o), E_TREE_MODEL_TYPE)) #define E_IS_TREE_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_MODEL_TYPE)) -typedef struct ETreePath ETreePath; +typedef void * ETreePath; typedef struct ETreeModel ETreeModel; -typedef struct ETreeModelPriv ETreeModelPriv; typedef struct ETreeModelClass ETreeModelClass; -typedef gint (*ETreePathCompareFunc)(ETreeModel *model, ETreePath *path1, ETreePath *path2); -typedef gboolean (*ETreePathFunc)(ETreeModel *model, ETreePath *path, gpointer data); +typedef gint (*ETreePathCompareFunc)(ETreeModel *model, ETreePath path1, ETreePath path2); +typedef gboolean (*ETreePathFunc)(ETreeModel *model, ETreePath path, gpointer data); struct ETreeModel { - ETableModel base; - ETreeModelPriv *priv; + GtkObject base; }; struct ETreeModelClass { - ETableModelClass parent_class; + GtkObjectClass parent_class; /* * Virtual methods */ - ETreePath *(*get_root) (ETreeModel *etm); + ETreePath (*get_root) (ETreeModel *etm); - ETreePath *(*get_parent) (ETreeModel *etm, ETreePath* node); - ETreePath *(*get_first_child) (ETreeModel *etm, ETreePath* node); - ETreePath *(*get_last_child) (ETreeModel *etm, ETreePath* node); - ETreePath *(*get_next) (ETreeModel *etm, ETreePath* node); - ETreePath *(*get_prev) (ETreeModel *etm, ETreePath* node); - guint (*get_children) (ETreeModel *etm, ETreePath* node, ETreePath ***paths); + ETreePath (*get_parent) (ETreeModel *etm, ETreePath node); + ETreePath (*get_first_child) (ETreeModel *etm, ETreePath node); + ETreePath (*get_last_child) (ETreeModel *etm, ETreePath node); + ETreePath (*get_next) (ETreeModel *etm, ETreePath node); + ETreePath (*get_prev) (ETreeModel *etm, ETreePath node); - gboolean (*is_expanded) (ETreeModel *etm, ETreePath* node); - gboolean (*is_visible) (ETreeModel *etm, ETreePath* node); - void (*set_expanded) (ETreeModel *etm, ETreePath* node, gboolean expanded); - void (*set_expanded_recurse) (ETreeModel *etm, ETreePath *node, gboolean expanded); - void (*set_expanded_level) (ETreeModel *etm, ETreePath *node, gboolean expanded, int level); + gboolean (*is_root) (ETreeModel *etm, ETreePath node); + gboolean (*is_expandable) (ETreeModel *etm, ETreePath node); + guint (*get_children) (ETreeModel *etm, ETreePath node, ETreePath **paths); + guint (*depth) (ETreeModel *etm, ETreePath node); - GdkPixbuf *(*icon_at) (ETreeModel *etm, ETreePath* node); - ETreePath* (*node_at_row) (ETreeModel *etm, int row); + GdkPixbuf *(*icon_at) (ETreeModel *etm, ETreePath node); + + gboolean (*get_expanded_default) (ETreeModel *etm); + gint (*column_count) (ETreeModel *etm); + + gboolean (*has_save_id) (ETreeModel *etm); + gchar *(*get_save_id) (ETreeModel *etm, ETreePath node); /* * ETable analogs */ - void *(*value_at) (ETreeModel *etm, ETreePath* node, int col); - void (*set_value_at) (ETreeModel *etm, ETreePath* node, int col, const void *val); - gboolean (*is_editable) (ETreeModel *etm, ETreePath* node, int col); + void *(*value_at) (ETreeModel *etm, ETreePath node, int col); + void (*set_value_at) (ETreeModel *etm, ETreePath node, int col, const void *val); + gboolean (*is_editable) (ETreeModel *etm, ETreePath node, int col); + void *(*duplicate_value) (ETreeModel *etm, int col, const void *value); + void (*free_value) (ETreeModel *etm, int col, void *value); + void *(*initialize_value) (ETreeModel *etm, int col); + gboolean (*value_is_empty) (ETreeModel *etm, int col, const void *value); + char *(*value_to_string) (ETreeModel *etm, int col, const void *value); /* * Signals */ - void (*node_changed) (ETreeModel *etm, ETreePath *node); - void (*node_inserted) (ETreeModel *etm, ETreePath *parent, ETreePath *inserted_node); - void (*node_removed) (ETreeModel *etm, ETreePath *parent, ETreePath *removed_node); - void (*node_collapsed) (ETreeModel *etm, ETreePath *node); - void (*node_expanded) (ETreeModel *etm, ETreePath *node, gboolean *allow_expand); - + void (*pre_change) (ETreeModel *etm); + void (*node_changed) (ETreeModel *etm, ETreePath node); + void (*node_data_changed) (ETreeModel *etm, ETreePath node); + void (*node_col_changed) (ETreeModel *etm, ETreePath node, int col); + void (*node_inserted) (ETreeModel *etm, ETreePath parent, ETreePath inserted_node); + void (*node_removed) (ETreeModel *etm, ETreePath parent, ETreePath removed_node); }; - -GtkType e_tree_model_get_type (void); -void e_tree_model_construct (ETreeModel *etree); -ETreeModel *e_tree_model_new (void); +GtkType e_tree_model_get_type (void); +ETreeModel *e_tree_model_new (void); /* tree traversal operations */ -ETreePath *e_tree_model_get_root (ETreeModel *etree); -ETreePath *e_tree_model_node_get_parent (ETreeModel *etree, ETreePath *path); -ETreePath *e_tree_model_node_get_first_child (ETreeModel *etree, ETreePath *path); -ETreePath *e_tree_model_node_get_last_child (ETreeModel *etree, ETreePath *path); -ETreePath *e_tree_model_node_get_next (ETreeModel *etree, ETreePath *path); -ETreePath *e_tree_model_node_get_prev (ETreeModel *etree, ETreePath *path); - -/* node operations */ -ETreePath *e_tree_model_node_insert (ETreeModel *etree, ETreePath *parent, int position, gpointer node_data); -ETreePath *e_tree_model_node_insert_before (ETreeModel *etree, ETreePath *parent, ETreePath *sibling, gpointer node_data); -gpointer e_tree_model_node_remove (ETreeModel *etree, ETreePath *path); - -/* Freeze and thaw */ -void e_tree_model_freeze (ETreeModel *etree); -void e_tree_model_thaw (ETreeModel *etree); +ETreePath e_tree_model_get_root (ETreeModel *etree); +ETreePath e_tree_model_node_get_parent (ETreeModel *etree, + ETreePath path); +ETreePath e_tree_model_node_get_first_child (ETreeModel *etree, + ETreePath path); +ETreePath e_tree_model_node_get_last_child (ETreeModel *etree, + ETreePath path); +ETreePath e_tree_model_node_get_next (ETreeModel *etree, + ETreePath path); +ETreePath e_tree_model_node_get_prev (ETreeModel *etree, + ETreePath path); /* node accessors */ -gboolean e_tree_model_node_is_root (ETreeModel *etree, ETreePath *path); -gboolean e_tree_model_node_is_expandable (ETreeModel *etree, ETreePath *path); -gboolean e_tree_model_node_is_expanded (ETreeModel *etree, ETreePath *path); -gboolean e_tree_model_node_is_visible (ETreeModel *etree, ETreePath *path); -void e_tree_model_set_expanded_default (ETreeModel *etree, gboolean expanded); -void e_tree_model_node_set_expanded (ETreeModel *etree, ETreePath *path, gboolean expanded); -void e_tree_model_node_set_expanded_recurse (ETreeModel *etree, ETreePath *path, gboolean expanded); -guint e_tree_model_node_get_children (ETreeModel *etree, ETreePath *path, ETreePath ***paths); -guint e_tree_model_node_depth (ETreeModel *etree, ETreePath *path); -guint e_tree_model_node_num_visible_descendents (ETreeModel *etm, ETreePath *node); -gpointer e_tree_model_node_get_data (ETreeModel *etm, ETreePath *node); -void e_tree_model_node_set_data (ETreeModel *etm, ETreePath *node, gpointer node_data); - -/* display oriented routines */ -ETreePath *e_tree_model_node_at_row (ETreeModel *etree, int row); -GdkPixbuf *e_tree_model_icon_of_node (ETreeModel *etree, ETreePath *path); -int e_tree_model_row_of_node (ETreeModel *etree, ETreePath *path); -void e_tree_model_root_node_set_visible (ETreeModel *etree, gboolean visible); -gboolean e_tree_model_root_node_is_visible (ETreeModel *etree); - -/* sort routine, analogous to gtk_ctree_node_sort */ -void e_tree_model_node_set_compare_function (ETreeModel *tree_model, ETreePath *node, ETreePathCompareFunc compare); -void e_tree_model_node_sort (ETreeModel *tree_model, ETreePath *node); +gboolean e_tree_model_node_is_root (ETreeModel *etree, + ETreePath path); +gboolean e_tree_model_node_is_expandable (ETreeModel *etree, + ETreePath path); +guint e_tree_model_node_get_children (ETreeModel *etree, + ETreePath path, + ETreePath **paths); +guint e_tree_model_node_depth (ETreeModel *etree, + ETreePath path); +GdkPixbuf *e_tree_model_icon_at (ETreeModel *etree, + ETreePath path); +gboolean e_tree_model_get_expanded_default (ETreeModel *model); +gint e_tree_model_column_count (ETreeModel *model); + + +gboolean e_tree_model_has_save_id (ETreeModel *model); +gchar *e_tree_model_get_save_id (ETreeModel *model, + ETreePath node); + +void *e_tree_model_value_at (ETreeModel *etree, + ETreePath node, + int col); +void e_tree_model_set_value_at (ETreeModel *etree, + ETreePath node, + int col, + const void *val); +gboolean e_tree_model_node_is_editable (ETreeModel *etree, + ETreePath node, + int col); +void *e_tree_model_duplicate_value (ETreeModel *etree, + int col, + const void *value); +void e_tree_model_free_value (ETreeModel *etree, + int col, + void *value); +void *e_tree_model_initialize_value (ETreeModel *etree, + int col); +gboolean e_tree_model_value_is_empty (ETreeModel *etree, + int col, + const void *value); +char *e_tree_model_value_to_string (ETreeModel *etree, + int col, + const void *value); + +/* depth first traversal of path's descendents, calling func on each one */ +void e_tree_model_node_traverse (ETreeModel *model, + ETreePath path, + ETreePathFunc func, + gpointer data); /* ** Routines for emitting signals on the ETreeModel */ -void e_tree_model_node_changed (ETreeModel *tree_model, ETreePath *node); -void e_tree_model_node_inserted (ETreeModel *tree_model, ETreePath *parent_node, ETreePath *inserted_node); -void e_tree_model_node_removed (ETreeModel *tree_model, ETreePath *parent_node, ETreePath *removed_node); -void e_tree_model_node_collapsed (ETreeModel *tree_model, ETreePath *node); -void e_tree_model_node_expanded (ETreeModel *tree_model, ETreePath *node, gboolean *allow_expand); - -/* expanded state saving stuff */ -gboolean e_tree_model_save_expanded_state (ETreeModel *etm, const char *filename); -gboolean e_tree_model_load_expanded_state (ETreeModel *etm, const char *filename); -void e_tree_model_node_set_save_id (ETreeModel *etm, ETreePath *node, const char *id); -ETreePath* e_tree_model_node_insert_id (ETreeModel *tree_model, ETreePath *parent_path, - int position, gpointer node_data, const char *save_id); - -/* depth first traversal of path's descendents, calling func on each one */ -void e_tree_model_node_traverse (ETreeModel *model, ETreePath *path, ETreePathFunc func, gpointer data); - -void e_tree_model_show_node (ETreeModel *etm, ETreePath* node); +void e_tree_model_pre_change (ETreeModel *tree_model); +void e_tree_model_node_changed (ETreeModel *tree_model, + ETreePath node); +void e_tree_model_node_data_changed (ETreeModel *tree_model, + ETreePath node); +void e_tree_model_node_col_changed (ETreeModel *tree_model, + ETreePath node, + int col); +void e_tree_model_node_inserted (ETreeModel *tree_model, + ETreePath parent_node, + ETreePath inserted_node); +void e_tree_model_node_removed (ETreeModel *tree_model, + ETreePath parent_node, + ETreePath removed_node); #ifdef __cplusplus } |