diff options
author | Jonathan Blandford <jrb@redhat.com> | 2000-10-27 23:34:58 +0000 |
---|---|---|
committer | Jonathan Blandford <jrb@src.gnome.org> | 2000-10-27 23:34:58 +0000 |
commit | 0ccb3e9aed43a9c2a8b77f7af5c29f4e23b4698d (patch) | |
tree | a01d83d5374da6025125c53fd36aefb4396a2556 /gtk | |
parent | 2bf87de4cb334a850aa2226b9118b302140f71e2 (diff) | |
download | gdk-pixbuf-0ccb3e9aed43a9c2a8b77f7af5c29f4e23b4698d.tar.gz |
Not sure how this ever worked. Fixed it to use new iter stuff, and added
Fri Oct 27 17:56:26 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtkliststore.c: Not sure how this ever worked. Fixed it to
use new iter stuff, and added all the appropriate signals et al.
* gtk/gtktreedatalist.h: s/gtk/_gtk to further reinforce that this
code is internal to gtk only.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkliststore.c | 445 | ||||
-rw-r--r-- | gtk/gtkliststore.h | 77 | ||||
-rw-r--r-- | gtk/gtkmarshal.list | 3 | ||||
-rw-r--r-- | gtk/gtkmarshalers.list | 3 | ||||
-rw-r--r-- | gtk/gtkmodelsimple.c | 296 | ||||
-rw-r--r-- | gtk/gtkmodelsimple.h | 46 | ||||
-rw-r--r-- | gtk/gtktreedatalist.c | 38 | ||||
-rw-r--r-- | gtk/gtktreedatalist.h | 22 | ||||
-rw-r--r-- | gtk/gtktreemodel.c | 72 | ||||
-rw-r--r-- | gtk/gtktreemodel.h | 12 | ||||
-rw-r--r-- | gtk/gtktreestore.c | 138 | ||||
-rw-r--r-- | gtk/gtktreestore.h | 105 | ||||
-rw-r--r-- | gtk/gtktreeview.c | 16 | ||||
-rw-r--r-- | gtk/gtktreeviewcolumn.c | 7 | ||||
-rw-r--r-- | gtk/treestoretest.c | 87 |
15 files changed, 783 insertions, 584 deletions
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c index dae38c6f2..032241cf3 100644 --- a/gtk/gtkliststore.c +++ b/gtk/gtkliststore.c @@ -24,7 +24,7 @@ #include "gtksignal.h" #define G_SLIST(x) ((GSList *) x) -#if 0 + enum { CHANGED, INSERTED, @@ -35,31 +35,35 @@ enum { static guint list_store_signals[LAST_SIGNAL] = { 0 }; -static void gtk_list_store_init (GtkListStore *list_store); -static void gtk_list_store_class_init (GtkListStoreClass *class); -static void gtk_list_store_tree_model_init (GtkTreeModelIface *iface); -static gint gtk_list_store_get_n_columns (GtkTreeModel *tree_model); -static GtkTreeIter *gtk_list_store_get_iter (GtkTreeModel *tree_model, - GtkTreePath *path); -static GtkTreePath *gtk_list_store_get_path (GtkTreeModel *tree_model, - GtkTreeIter *iter); -static void gtk_list_store_iter_get_value (GtkTreeModel *tree_model, - GtkTreeIter *iter, - gint column, - GValue *value); -static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model, - GtkTreeIter *iter); -static GtkTreeIter *gtk_list_store_iter_children (GtkTreeModel *tree_model, - GtkTreeIter *iter); -static gboolean gtk_list_store_iter_has_child (GtkTreeModel *tree_model, - GtkTreeIter *iter); -static gint gtk_list_store_iter_n_children (GtkTreeModel *tree_model, - GtkTreeIter *iter); -static GtkTreeIter *gtk_list_store_iter_nth_child (GtkTreeModel *tree_model, - GtkTreeIter *iter, - gint n); -static GtkTreeIter *gtk_list_store_iter_parent (GtkTreeModel *tree_model, - GtkTreeIter *iter); +static void gtk_list_store_init (GtkListStore *list_store); +static void gtk_list_store_class_init (GtkListStoreClass *class); +static void gtk_list_store_tree_model_init (GtkTreeModelIface *iface); +static gint gtk_list_store_get_n_columns (GtkTreeModel *tree_model); +static gboolean gtk_list_store_get_iter (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreePath *path); +static GtkTreePath *gtk_list_store_get_path (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static void gtk_list_store_get_value (GtkTreeModel *tree_model, + GtkTreeIter *iter, + gint column, + GValue *value); +static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *parent); +static gboolean gtk_list_store_iter_has_child (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static gint gtk_list_store_iter_n_children (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static gboolean gtk_list_store_iter_nth_child (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *parent, + gint n); +static gboolean gtk_list_store_iter_parent (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *child); GtkType @@ -151,7 +155,7 @@ gtk_list_store_tree_model_init (GtkTreeModelIface *iface) iface->get_n_columns = gtk_list_store_get_n_columns; iface->get_iter = gtk_list_store_get_iter; iface->get_path = gtk_list_store_get_path; - iface->iter_get_value = gtk_list_store_iter_get_value; + iface->get_value = gtk_list_store_get_value; iface->iter_next = gtk_list_store_iter_next; iface->iter_children = gtk_list_store_iter_children; iface->iter_has_child = gtk_list_store_iter_has_child; @@ -164,32 +168,32 @@ static void gtk_list_store_init (GtkListStore *list_store) { list_store->root = NULL; + list_store->stamp = 1; } -GtkObject * +GtkListStore * gtk_list_store_new (void) { - return GTK_OBJECT (gtk_type_new (gtk_list_store_get_type ())); + return GTK_LIST_STORE (gtk_type_new (gtk_list_store_get_type ())); } -GtkObject * +GtkListStore * gtk_list_store_new_with_types (gint n_columns, ...) { - GtkObject *retval; + GtkListStore *retval; va_list args; gint i; g_return_val_if_fail (n_columns > 0, NULL); retval = gtk_list_store_new (); - gtk_list_store_set_n_columns (GTK_LIST_STORE (retval), - n_columns); + gtk_list_store_set_n_columns (retval, n_columns); va_start (args, n_columns); + for (i = 0; i < n_columns; i++) - gtk_list_store_set_column_type (GTK_LIST_STORE (retval), - i, va_arg (args, GType)); + gtk_list_store_set_column_type (retval, i, va_arg (args, GType)); va_end (args); @@ -204,6 +208,7 @@ gtk_list_store_set_n_columns (GtkListStore *list_store, g_return_if_fail (list_store != NULL); g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (n_columns > 0); if (list_store->n_columns == n_columns) return; @@ -240,138 +245,160 @@ gtk_list_store_set_column_type (GtkListStore *list_store, static gint gtk_list_store_get_n_columns (GtkTreeModel *tree_model) { - g_return_val_if_fail (tree_model != NULL, 0); g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), 0); return GTK_LIST_STORE (tree_model)->n_columns; } -static GtkTreeIter * +static gboolean gtk_list_store_get_iter (GtkTreeModel *tree_model, + GtkTreeIter *iter, GtkTreePath *path) { - g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, NULL); - - return (GtkTreeIter) g_slist_nth (G_SLIST (GTK_LIST_STORE (tree_model)->root), - gtk_tree_path_get_indices (path)[0]); + g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), FALSE); + g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE); + + iter->stamp = GTK_LIST_STORE (tree_model)->stamp; + iter->tree_node = g_slist_nth (G_SLIST (GTK_LIST_STORE (tree_model)->root), + gtk_tree_path_get_indices (path)[0]); + + return iter->tree_node != NULL; } static GtkTreePath * gtk_list_store_get_path (GtkTreeModel *tree_model, - GtkTreeIter iter) + GtkTreeIter *iter) { GtkTreePath *retval; GSList *list; gint i = 0; g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), NULL); + g_return_val_if_fail (iter->stamp == GTK_LIST_STORE (tree_model)->stamp, NULL); for (list = G_SLIST (GTK_LIST_STORE (tree_model)->root); list; list = list->next) { - i++; - if (list == G_SLIST (iter)) + if (list == G_SLIST (iter->tree_node)) break; + i++; } if (list == NULL) return NULL; retval = gtk_tree_path_new (); gtk_tree_path_append_index (retval, i); - return retval; } static void -gtk_list_store_iter_get_value (GtkTreeModel *tree_model, - GtkTreeIter iter, - gint column, - GValue *value) +gtk_list_store_get_value (GtkTreeModel *tree_model, + GtkTreeIter *iter, + gint column, + GValue *value) { GtkTreeDataList *list; gint tmp_column = column; - g_return_if_fail (tree_model != NULL); g_return_if_fail (GTK_IS_LIST_STORE (tree_model)); - g_return_if_fail (iter != NULL); g_return_if_fail (column < GTK_LIST_STORE (tree_model)->n_columns); + g_return_if_fail (GTK_LIST_STORE (tree_model)->stamp == iter->stamp); - list = G_SLIST (iter)->data; + list = G_SLIST (iter->tree_node)->data; while (tmp_column-- > 0 && list) list = list->next; - g_return_if_fail (list != NULL); - - gtk_tree_data_list_iter_to_value (list, - GTK_LIST_STORE (tree_model)->column_headers[column], - value); + if (list == NULL) + g_value_init (value, GTK_LIST_STORE (tree_model)->column_headers[column]); + else + _gtk_tree_data_list_node_to_value (list, + GTK_LIST_STORE (tree_model)->column_headers[column], + value); } static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter) { - if (iter == NULL || *iter == NULL) - return FALSE; + g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), FALSE); + g_return_val_if_fail (GTK_LIST_STORE (tree_model)->stamp == iter->stamp, FALSE); - *iter = (GtkTreeIter) G_SLIST (*iter)->next; + iter->tree_node = G_SLIST (iter->tree_node)->next; - return (*iter != NULL); + return (iter->tree_node != NULL); } -static GtkTreeIter +static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model, - GtkTreeIter iter) + GtkTreeIter *iter, + GtkTreeIter *parent) { - return NULL; + iter->stamp = 0; + iter->tree_node = NULL; + + return FALSE; } static gboolean gtk_list_store_iter_has_child (GtkTreeModel *tree_model, - GtkTreeIter iter) + GtkTreeIter *iter) { return FALSE; } static gint gtk_list_store_iter_n_children (GtkTreeModel *tree_model, - GtkTreeIter iter) + GtkTreeIter *iter) { return 0; } -static GtkTreeIter +static gboolean gtk_list_store_iter_nth_child (GtkTreeModel *tree_model, - GtkTreeIter iter, + GtkTreeIter *iter, + GtkTreeIter *parent, gint n) { - return NULL; -} + g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), FALSE); -static GtkTreeIter -gtk_list_store_iter_parent (GtkTreeModel *tree_model, - GtkTreeIter iter) -{ - return NULL; + if (parent) + { + g_return_val_if_fail (iter->stamp == GTK_LIST_STORE (tree_model)->stamp, FALSE); + iter->stamp = 0; + iter->tree_node = NULL; + + return FALSE; + } + + iter->tree_node = g_slist_nth (G_SLIST (GTK_LIST_STORE (tree_model)->root), n); + if (iter->tree_node) + iter->stamp = GTK_LIST_STORE (tree_model)->stamp; + else + iter->stamp = 0; + + return (iter->tree_node != NULL); } -/* Public accessors */ -GtkTreeIter -gtk_list_store_iter_new (void) +static gboolean +gtk_list_store_iter_parent (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *child) { - GtkTreeIter retval = (GtkTreeIter) g_slist_alloc (); + iter->stamp = 0; + iter->tree_node = NULL; - return retval; + return FALSE; } +/* Public accessors */ /* This is a somewhat inelegant function that does a lot of list * manipulations on it's own. */ void -gtk_list_store_iter_set_cell (GtkListStore *list_store, - GtkTreeIter iter, - gint column, - GValue *value) +gtk_list_store_set_cell (GtkListStore *list_store, + GtkTreeIter *iter, + gint column, + GValue *value) { GtkTreeDataList *list; GtkTreeDataList *prev; @@ -381,13 +408,13 @@ gtk_list_store_iter_set_cell (GtkListStore *list_store, g_return_if_fail (iter != NULL); g_return_if_fail (column >= 0 && column < list_store->n_columns); - prev = list = G_SLIST (iter)->data; + prev = list = G_SLIST (iter->tree_node)->data; while (list != NULL) { if (column == 0) { - gtk_tree_data_list_value_to_iter (list, value); + _gtk_tree_data_list_value_to_node (list, value); return; } @@ -396,123 +423,235 @@ gtk_list_store_iter_set_cell (GtkListStore *list_store, list = list->next; } - if (G_SLIST (iter)->data == NULL) + if (G_SLIST (iter->tree_node)->data == NULL) { - G_SLIST (iter)->data = list = gtk_tree_data_list_alloc (); + G_SLIST (iter->tree_node)->data = list = _gtk_tree_data_list_alloc (); list->next = NULL; } else { - list = prev->next = gtk_tree_data_list_alloc (); + list = prev->next = _gtk_tree_data_list_alloc (); list->next = NULL; } while (column != 0) { - list->next = gtk_tree_data_list_alloc (); + list->next = _gtk_tree_data_list_alloc (); list = list->next; list->next = NULL; column --; } - gtk_tree_data_list_value_to_iter (list, value); + _gtk_tree_data_list_value_to_node (list, value); + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "changed", + NULL, iter); } void -gtk_list_store_iter_remove (GtkListStore *list_store, - GtkTreeIter iter) +gtk_list_store_remove (GtkListStore *list_store, + GtkTreeIter *iter) { - /* FIXME: implement */ - g_warning ("Remember to implement this function\n"); + GtkTreePath *path; + + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + + if (G_SLIST (iter->tree_node)->data) + _gtk_tree_data_list_free ((GtkTreeDataList *) G_SLIST (iter->tree_node)->data, + list_store->column_headers); + + path = gtk_list_store_get_path (GTK_TREE_MODEL (list_store), iter); + list_store->root = g_slist_remove_link (G_SLIST (list_store->root), + G_SLIST (iter->tree_node)); + list_store->stamp ++; + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "deleted", + path); + gtk_tree_path_free (path); } -GtkTreeIter -gtk_list_store_iter_insert (GtkListStore *list_store, - gint position, - GtkTreeIter iter) +void +gtk_list_store_insert (GtkListStore *list_store, + GtkTreeIter *iter, + gint position) { GSList *list; + GtkTreePath *path; - g_return_val_if_fail (list_store != NULL, iter); - g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter); - g_return_val_if_fail (iter != NULL, iter); - g_return_val_if_fail (position < 0, iter); - g_return_val_if_fail (G_SLIST (iter)->next == NULL, iter); + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (iter != NULL); + g_return_if_fail (position < 0); if (position == 0) { - gtk_list_store_iter_prepend (list_store, iter); - return iter; + gtk_list_store_prepend (list_store, iter); + return; } - list = g_slist_nth (G_SLIST (list_store->root), position); + iter->stamp = list_store->stamp; + iter->tree_node = g_slist_alloc (); + + list = g_slist_nth (G_SLIST (list_store->root), position - 1); if (list) { - G_SLIST (iter)->next = list->next; - list->next = G_SLIST (iter)->next; + G_SLIST (iter->tree_node)->next = list->next; + list->next = G_SLIST (iter->tree_node)->next; } - - return iter; + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, position); + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "inserted", + path, iter); + gtk_tree_path_free (path); } - -GtkTreeIter -gtk_list_store_iter_insert_before (GtkListStore *list_store, - GtkTreeIter sibling, - GtkTreeIter iter) +void +gtk_list_store_insert_before (GtkListStore *list_store, + GtkTreeIter *iter, + GtkTreeIter *sibling) { - g_return_val_if_fail (list_store != NULL, iter); - g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter); - g_return_val_if_fail (iter != NULL, iter); + GtkTreePath *path; + GSList *list, *prev; + gint i = 0; + + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (iter != NULL); + g_return_if_fail (G_SLIST (iter)->next == NULL); - /* FIXME: This is all wrong. This is actually insert_after */ if (sibling == NULL) - return gtk_list_store_iter_prepend (list_store, iter); + { + gtk_list_store_append (list_store, iter); + return; + } - G_SLIST (iter)->next = G_SLIST (sibling)->next; - G_SLIST (sibling)->next = G_SLIST (iter); - return iter; + iter->stamp = list_store->stamp; + iter->tree_node = g_slist_alloc (); + + prev = list = list_store->root; + while (list && list != sibling->tree_node) + { + prev = list; + list = list->next; + i++; + } + + if (prev) + { + prev->next = iter->tree_node; + } + else + { + G_SLIST (iter->tree_node)->next = list_store->root; + list_store->root = iter->tree_node; + } + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, i); + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "inserted", + path, iter); + gtk_tree_path_free (path); } -GtkTreeIter -gtk_list_store_iter_prepend (GtkListStore *list_store, - GtkTreeIter iter) +void +gtk_list_store_insert_after (GtkListStore *list_store, + GtkTreeIter *iter, + GtkTreeIter *sibling) { - g_return_val_if_fail (list_store != NULL, iter); - g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter); - g_return_val_if_fail (iter != NULL, iter); + GtkTreePath *path; + GSList *list; + gint i = 0; + + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (iter == NULL); + if (sibling) + g_return_if_fail (sibling->stamp == list_store->stamp); - G_SLIST (iter)->next = G_SLIST (list_store->root); - list_store->root = iter; + if (sibling == NULL) + { + gtk_list_store_prepend (list_store, iter); + return; + } + + for (list = list_store->root; list && list != sibling->tree_node; list = list->next) + i++; + + g_return_if_fail (list != NULL); - return iter; + iter->stamp = list_store->stamp; + iter->tree_node = g_slist_alloc (); + + G_SLIST (iter->tree_node)->next = G_SLIST (sibling->tree_node)->next; + G_SLIST (sibling)->next = G_SLIST (iter); + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, i); + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "inserted", + path, iter); + gtk_tree_path_free (path); } -GtkTreeIter -gtk_list_store_iter_append (GtkListStore *list_store, - GtkTreeIter iter) +void +gtk_list_store_prepend (GtkListStore *list_store, + GtkTreeIter *iter) { - GSList *list; + GtkTreePath *path; + + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (iter != NULL); - g_return_val_if_fail (list_store != NULL, iter); - g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), iter); - g_return_val_if_fail (iter != NULL, iter); - g_return_val_if_fail (G_SLIST (iter)->next == NULL, iter); + iter->stamp = list_store->stamp; + iter->tree_node = g_slist_alloc (); - list = g_slist_last (G_SLIST (list_store->root)); - if (list == NULL) - list_store->root = iter; - else - list->next = G_SLIST (iter); + G_SLIST (iter->tree_node)->next = G_SLIST (list_store->root); + list_store->root = iter->tree_node; - return iter; + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, 0); + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "inserted", + path, iter); + gtk_tree_path_free (path); } -GtkTreeIter -gtk_list_store_iter_get_root (GtkListStore *list_store) +void +gtk_list_store_append (GtkListStore *list_store, + GtkTreeIter *iter) { - g_return_val_if_fail (list_store != NULL, NULL); - g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), NULL); + GtkTreePath *path; + GSList *list, *prev; + gint i = 0; + + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (iter != NULL); + g_return_if_fail (G_SLIST (iter)->next == NULL); + + iter->stamp = list_store->stamp; + iter->tree_node = g_slist_alloc (); - return (GtkTreeIter *) list_store->root; + prev = list = list_store->root; + while (list) + { + prev = list; + list = list->next; + i++; + } + + if (prev) + prev->next = iter->tree_node; + else + list_store->root = iter->tree_node; + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, i); + gtk_signal_emit_by_name (GTK_OBJECT (list_store), + "inserted", + path, iter); + gtk_tree_path_free (path); } -#endif diff --git a/gtk/gtkliststore.h b/gtk/gtkliststore.h index 4bb562b32..dc91fa567 100644 --- a/gtk/gtkliststore.h +++ b/gtk/gtkliststore.h @@ -52,45 +52,48 @@ struct _GtkListStoreClass /* signals */ /* Will be moved into the GtkTreeModelIface eventually */ - void (* changed) (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter); - void (* inserted) (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter); - void (* child_toggled) (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter); - void (* deleted) (GtkTreeModel *tree_model, - GtkTreePath *path); + void (* changed) (GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter); + void (* inserted) (GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter); + void (* child_toggled) (GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter); + void (* deleted) (GtkTreeModel *tree_model, + GtkTreePath *path); }; -GtkType gtk_list_store_get_type (void); -GtkObject *gtk_list_store_new (void); -GtkObject *gtk_list_store_new_with_types (gint n_columns, - ...); -void gtk_list_store_set_n_columns (GtkListStore *store, - gint n_columns); -void gtk_list_store_set_column_type (GtkListStore *store, - gint column, - GType type); -GtkTreeIter *gtk_list_store_node_new (void); -void gtk_list_store_node_set_cell (GtkListStore *store, - GtkTreeIter *iter, - gint column, - GValue *value); -void gtk_list_store_node_remove (GtkListStore *store, - GtkTreeIter *iter); -GtkTreeIter *gtk_list_store_node_insert (GtkListStore *store, - gint position, - GtkTreeIter *iter); -GtkTreeIter *gtk_list_store_node_insert_before (GtkListStore *store, - GtkTreeIter sibling, - GtkTreeIter *iter); -GtkTreeIter *gtk_list_store_node_prepend (GtkListStore *store, - GtkTreeIter *iter); -GtkTreeIter *gtk_list_store_node_append (GtkListStore *store, - GtkTreeIter *iter); + +GtkType gtk_list_store_get_type (void); +GtkListStore *gtk_list_store_new (void); +GtkListStore *gtk_list_store_new_with_types (gint n_columns, + ...); +void gtk_list_store_set_n_columns (GtkListStore *store, + gint n_columns); +void gtk_list_store_set_column_type (GtkListStore *store, + gint column, + GType type); +void gtk_list_store_set_cell (GtkListStore *store, + GtkTreeIter *iter, + gint column, + GValue *value); +void gtk_list_store_remove (GtkListStore *store, + GtkTreeIter *iter); +void gtk_list_store_insert (GtkListStore *store, + GtkTreeIter *iter, + gint position); +void gtk_list_store_insert_before (GtkListStore *store, + GtkTreeIter *iter, + GtkTreeIter *sibling); +void gtk_list_store_insert_after (GtkListStore *store, + GtkTreeIter *iter, + GtkTreeIter *sibling); +void gtk_list_store_prepend (GtkListStore *store, + GtkTreeIter *iter); +void gtk_list_store_append (GtkListStore *store, + GtkTreeIter *iter); diff --git a/gtk/gtkmarshal.list b/gtk/gtkmarshal.list index 116da0161..eeed763bb 100644 --- a/gtk/gtkmarshal.list +++ b/gtk/gtkmarshal.list @@ -22,12 +22,15 @@ # BOOL deprecated alias for BOOLEAN BOOLEAN:POINTER +BOOLEAN:POINTER,POINTER BOOLEAN:POINTER,INT,INT BOOLEAN:POINTER,INT,INT,UINT +BOOLEAN:POINTER,POINTER,INT BOOLEAN:POINTER,POINTER,INT,INT BOOLEAN:POINTER,STRING,STRING,POINTER BOOLEAN:VOID ENUM:ENUM +INT:INT INT:OBJECT,BOXED,POINTER INT:POINTER INT:POINTER,CHAR,CHAR diff --git a/gtk/gtkmarshalers.list b/gtk/gtkmarshalers.list index 116da0161..eeed763bb 100644 --- a/gtk/gtkmarshalers.list +++ b/gtk/gtkmarshalers.list @@ -22,12 +22,15 @@ # BOOL deprecated alias for BOOLEAN BOOLEAN:POINTER +BOOLEAN:POINTER,POINTER BOOLEAN:POINTER,INT,INT BOOLEAN:POINTER,INT,INT,UINT +BOOLEAN:POINTER,POINTER,INT BOOLEAN:POINTER,POINTER,INT,INT BOOLEAN:POINTER,STRING,STRING,POINTER BOOLEAN:VOID ENUM:ENUM +INT:INT INT:OBJECT,BOXED,POINTER INT:POINTER INT:POINTER,CHAR,CHAR diff --git a/gtk/gtkmodelsimple.c b/gtk/gtkmodelsimple.c index 6502701d9..ddfc733f7 100644 --- a/gtk/gtkmodelsimple.c +++ b/gtk/gtkmodelsimple.c @@ -16,26 +16,26 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ -#if 0 + #include "gtkmodelsimple.h" #include "gtksignal.h" enum { - NODE_CHANGED, - NODE_INSERTED, - NODE_CHILD_TOGGLED, - NODE_DELETED, + CHANGED, + INSERTED, + CHILD_TOGGLED, + DELETED, GET_N_COLUMNS, - GET_NODE, + GET_COLUMN_TYPE, + GET_ITER, GET_PATH, - NODE_GET_VALUE, - NODE_COPY, - NODE_NEXT, - NODE_CHILDREN, - NODE_HAS_CHILD, - NODE_N_CHILDREN, - NODE_NTH_CHILD, - NODE_PARENT, + GET_VALUE, + ITER_NEXT, + ITER_CHILDREN, + ITER_HAS_CHILD, + ITER_N_CHILDREN, + ITER_NTH_CHILD, + ITER_PARENT, LAST_SIGNAL }; @@ -43,27 +43,34 @@ static void gtk_model_simple_init (GtkModelSimple * static void gtk_model_simple_class_init (GtkModelSimpleClass *class); static void gtk_model_simple_tree_model_init (GtkTreeModelIface *iface); static gint gtk_real_model_simple_get_n_columns (GtkTreeModel *tree_model); -static GtkTreeNode gtk_real_model_simple_get_node (GtkTreeModel *tree_model, +static GType gtk_real_model_simple_get_column_type (GtkTreeModel *tree_model, + gint index); +static gboolean gtk_real_model_simple_get_iter (GtkTreeModel *tree_model, + GtkTreeIter *iter, GtkTreePath *path); static GtkTreePath *gtk_real_model_simple_get_path (GtkTreeModel *tree_model, - GtkTreeNode node); -static void gtk_real_model_simple_node_get_value (GtkTreeModel *tree_model, - GtkTreeNode node, + GtkTreeIter *iter); +static void gtk_real_model_simple_get_value (GtkTreeModel *tree_model, + GtkTreeIter *iter, gint column, GValue *value); -static gboolean gtk_real_model_simple_node_next (GtkTreeModel *tree_model, - GtkTreeNode *node); -static GtkTreeNode gtk_real_model_simple_node_children (GtkTreeModel *tree_model, - GtkTreeNode node); -static gboolean gtk_real_model_simple_node_has_child (GtkTreeModel *tree_model, - GtkTreeNode node); -static gint gtk_real_model_simple_node_n_children (GtkTreeModel *tree_model, - GtkTreeNode node); -static GtkTreeNode gtk_real_model_simple_node_nth_child (GtkTreeModel *tree_model, - GtkTreeNode node, +static gboolean gtk_real_model_simple_iter_next (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static gboolean gtk_real_model_simple_iter_children (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *parent); +static gboolean gtk_real_model_simple_iter_has_child (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static gint gtk_real_model_simple_iter_n_children (GtkTreeModel *tree_model, + GtkTreeIter *iter); +static gboolean gtk_real_model_simple_iter_nth_child (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *parent, gint n); -static GtkTreeNode gtk_real_model_simple_node_parent (GtkTreeModel *tree_model, - GtkTreeNode node); +static gboolean gtk_real_model_simple_iter_parent (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *child); + @@ -106,10 +113,14 @@ gtk_model_simple_get_type (void) return model_simple_type; } -GtkObject * +GtkModelSimple * gtk_model_simple_new (void) { - return GTK_OBJECT (gtk_type_new (GTK_TYPE_MODEL_SIMPLE)); + GtkModelSimple *retval; + + retval = GTK_MODEL_SIMPLE (gtk_type_new (GTK_TYPE_MODEL_SIMPLE)); + + return retval; } static void @@ -119,38 +130,38 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class) object_class = (GtkObjectClass*) class; - model_simple_signals[NODE_CHANGED] = - gtk_signal_new ("node_changed", + model_simple_signals[CHANGED] = + gtk_signal_new ("changed", GTK_RUN_FIRST, GTK_CLASS_TYPE (object_class), - GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_changed), + GTK_SIGNAL_OFFSET (GtkModelSimpleClass, changed), gtk_marshal_VOID__POINTER_POINTER, GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER); - model_simple_signals[NODE_INSERTED] = - gtk_signal_new ("node_inserted", + model_simple_signals[INSERTED] = + gtk_signal_new ("inserted", GTK_RUN_FIRST, GTK_CLASS_TYPE (object_class), - GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_inserted), + GTK_SIGNAL_OFFSET (GtkModelSimpleClass, inserted), gtk_marshal_VOID__POINTER_POINTER, GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER); - model_simple_signals[NODE_CHILD_TOGGLED] = - gtk_signal_new ("node_child_toggled", + model_simple_signals[CHILD_TOGGLED] = + gtk_signal_new ("child_toggled", GTK_RUN_FIRST, GTK_CLASS_TYPE (object_class), - GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_child_toggled), + GTK_SIGNAL_OFFSET (GtkModelSimpleClass, child_toggled), gtk_marshal_VOID__POINTER_POINTER, GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER); - model_simple_signals[NODE_DELETED] = - gtk_signal_new ("node_deleted", + model_simple_signals[DELETED] = + gtk_signal_new ("deleted", GTK_RUN_FIRST, GTK_CLASS_TYPE (object_class), - GTK_SIGNAL_OFFSET (GtkModelSimpleClass, node_deleted), + GTK_SIGNAL_OFFSET (GtkModelSimpleClass, deleted), gtk_marshal_VOID__POINTER, GTK_TYPE_NONE, 1, GTK_TYPE_POINTER); @@ -162,13 +173,22 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class) 0, gtk_marshal_INT__VOID, GTK_TYPE_INT, 0); - model_simple_signals[GET_NODE] = - gtk_signal_new ("get_node", + model_simple_signals[GET_COLUMN_TYPE] = + gtk_signal_new ("get_column_type", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, - gtk_marshal_POINTER__POINTER, - GTK_TYPE_POINTER, 1, + gtk_marshal_INT__INT, + GTK_TYPE_INT, 1, + GTK_TYPE_INT); + model_simple_signals[GET_ITER] = + gtk_signal_new ("get_iter", + GTK_RUN_LAST, + GTK_CLASS_TYPE (object_class), + 0, + gtk_marshal_BOOLEAN__POINTER_POINTER, + GTK_TYPE_BOOL, 2, + GTK_TYPE_POINTER, GTK_TYPE_POINTER); model_simple_signals[GET_PATH] = gtk_signal_new ("get_path", @@ -178,8 +198,8 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class) gtk_marshal_POINTER__POINTER, GTK_TYPE_POINTER, 1, GTK_TYPE_POINTER); - model_simple_signals[NODE_GET_VALUE] = - gtk_signal_new ("node_get_value", + model_simple_signals[GET_VALUE] = + gtk_signal_new ("get_value", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, @@ -188,54 +208,56 @@ gtk_model_simple_class_init (GtkModelSimpleClass *class) GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_POINTER); - model_simple_signals[NODE_NEXT] = - gtk_signal_new ("node_next", + model_simple_signals[ITER_NEXT] = + gtk_signal_new ("iter_next", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, gtk_marshal_BOOLEAN__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); - model_simple_signals[NODE_CHILDREN] = - gtk_signal_new ("node_children", + model_simple_signals[ITER_CHILDREN] = + gtk_signal_new ("iter_children", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, - gtk_marshal_POINTER__POINTER, - GTK_TYPE_POINTER, 1, + gtk_marshal_BOOLEAN__POINTER_POINTER, + GTK_TYPE_POINTER, 2, + GTK_TYPE_POINTER, GTK_TYPE_POINTER); - model_simple_signals[NODE_HAS_CHILD] = - gtk_signal_new ("node_has_child", + model_simple_signals[ITER_HAS_CHILD] = + gtk_signal_new ("iter_has_child", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, - gtk_marshal_POINTER__POINTER, - GTK_TYPE_POINTER, 1, + gtk_marshal_BOOLEAN__POINTER, + GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); - model_simple_signals[NODE_N_CHILDREN] = - gtk_signal_new ("node_n_children", + model_simple_signals[ITER_N_CHILDREN] = + gtk_signal_new ("iter_n_children", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, - gtk_marshal_POINTER__POINTER, - GTK_TYPE_POINTER, 1, + gtk_marshal_INT__POINTER, + GTK_TYPE_INT, 1, GTK_TYPE_POINTER); - model_simple_signals[NODE_NTH_CHILD] = + model_simple_signals[ITER_NTH_CHILD] = gtk_signal_new ("node_nth_child", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, - gtk_marshal_POINTER__POINTER_INT, - GTK_TYPE_POINTER, 2, + gtk_marshal_BOOLEAN__POINTER_POINTER_INT, + GTK_TYPE_BOOL, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER); - model_simple_signals[NODE_PARENT] = + model_simple_signals[ITER_PARENT] = gtk_signal_new ("node_parent", GTK_RUN_LAST, GTK_CLASS_TYPE (object_class), 0, - gtk_marshal_POINTER__POINTER, - GTK_TYPE_POINTER, 1, + gtk_marshal_BOOLEAN__POINTER_POINTER, + GTK_TYPE_BOOL, 2, + GTK_TYPE_POINTER, GTK_TYPE_POINTER); gtk_object_class_add_signals (object_class, model_simple_signals, LAST_SIGNAL); @@ -245,21 +267,23 @@ static void gtk_model_simple_tree_model_init (GtkTreeModelIface *iface) { iface->get_n_columns = gtk_real_model_simple_get_n_columns; - iface->get_node = gtk_real_model_simple_get_node; + iface->get_column_type = gtk_real_model_simple_get_column_type; + iface->get_iter = gtk_real_model_simple_get_iter; iface->get_path = gtk_real_model_simple_get_path; - iface->node_get_value = gtk_real_model_simple_node_get_value; - iface->node_next = gtk_real_model_simple_node_next; - iface->node_children = gtk_real_model_simple_node_children; - iface->node_has_child = gtk_real_model_simple_node_has_child; - iface->node_n_children = gtk_real_model_simple_node_n_children; - iface->node_nth_child = gtk_real_model_simple_node_nth_child; - iface->node_parent = gtk_real_model_simple_node_parent; + iface->get_value = gtk_real_model_simple_get_value; + iface->iter_next = gtk_real_model_simple_iter_next; + iface->iter_children = gtk_real_model_simple_iter_children; + iface->iter_has_child = gtk_real_model_simple_iter_has_child; + iface->iter_n_children = gtk_real_model_simple_iter_n_children; + iface->iter_nth_child = gtk_real_model_simple_iter_nth_child; + iface->iter_parent = gtk_real_model_simple_iter_parent; } static void gtk_model_simple_init (GtkModelSimple *model_simple) { + model_simple->stamp = 1; } static gint @@ -272,150 +296,164 @@ gtk_real_model_simple_get_n_columns (GtkTreeModel *tree_model) return retval; } -static GtkTreeNode -gtk_real_model_simple_get_node (GtkTreeModel *tree_model, +static GType +gtk_real_model_simple_get_column_type (GtkTreeModel *tree_model, + gint index) +{ + GType retval = G_TYPE_INVALID; + + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_COLUMN_TYPE], index, &retval); + + return retval; +} + +static gboolean +gtk_real_model_simple_get_iter (GtkTreeModel *tree_model, + GtkTreeIter *iter, GtkTreePath *path) { - GtkTreeNode retval; + gboolean retval; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_NODE], path, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_ITER], iter, path, &retval); return retval; } static GtkTreePath * gtk_real_model_simple_get_path (GtkTreeModel *tree_model, - GtkTreeNode node) + GtkTreeIter *iter) { GtkTreePath *retval; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_PATH], node, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_PATH], iter, &retval); return retval; } static void -gtk_real_model_simple_node_get_value (GtkTreeModel *tree_model, - GtkTreeNode node, - gint column, - GValue *value) +gtk_real_model_simple_get_value (GtkTreeModel *tree_model, + GtkTreeIter *iter, + gint column, + GValue *value) { - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_GET_VALUE], node, column, value); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[GET_VALUE], iter, column, value); } static gboolean -gtk_real_model_simple_node_next (GtkTreeModel *tree_model, - GtkTreeNode *node) +gtk_real_model_simple_iter_next (GtkTreeModel *tree_model, + GtkTreeIter *iter) { gboolean retval = FALSE; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_NEXT], node, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_NEXT], iter, &retval); return retval; } -static GtkTreeNode -gtk_real_model_simple_node_children (GtkTreeModel *tree_model, - GtkTreeNode node) +static gboolean +gtk_real_model_simple_iter_children (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *parent) { - GtkTreeNode retval = NULL; + gboolean retval = FALSE; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_CHILDREN], node, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_CHILDREN], iter, parent, &retval); return retval; } static gboolean -gtk_real_model_simple_node_has_child (GtkTreeModel *tree_model, - GtkTreeNode node) +gtk_real_model_simple_iter_has_child (GtkTreeModel *tree_model, + GtkTreeIter *iter) { gboolean retval = FALSE; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_HAS_CHILD], node, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_HAS_CHILD], iter, &retval); return retval; } static gint -gtk_real_model_simple_node_n_children (GtkTreeModel *tree_model, - GtkTreeNode node) +gtk_real_model_simple_iter_n_children (GtkTreeModel *tree_model, + GtkTreeIter *iter) { gint retval = 0; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_N_CHILDREN], node, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_N_CHILDREN], iter, &retval); return retval; } -static GtkTreeNode -gtk_real_model_simple_node_nth_child (GtkTreeModel *tree_model, - GtkTreeNode node, +static gboolean +gtk_real_model_simple_iter_nth_child (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *parent, gint n) { - GtkTreeNode retval = NULL; + gboolean retval = FALSE; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_NTH_CHILD], node, n, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_NTH_CHILD], iter, parent, n, &retval); return retval; } -static GtkTreeNode -gtk_real_model_simple_node_parent (GtkTreeModel *tree_model, - GtkTreeNode node) +static gboolean +gtk_real_model_simple_iter_parent (GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkTreeIter *child) { - GtkTreeNode retval = NULL; + gboolean retval = FALSE; - gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[NODE_PARENT], node, &retval); + gtk_signal_emit (GTK_OBJECT (tree_model), model_simple_signals[ITER_PARENT], iter, child, &retval); return retval; } /* Public functions */ void -gtk_model_simple_node_changed (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node) +gtk_model_simple_changed (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter) { g_return_if_fail (simple != NULL); g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple)); g_return_if_fail (path != NULL); - gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_changed", path, node); + gtk_signal_emit_by_name (GTK_OBJECT (simple), "changed", path, iter); } void -gtk_model_simple_node_inserted (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node) +gtk_model_simple_inserted (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter) { g_return_if_fail (simple != NULL); g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple)); g_return_if_fail (path != NULL); - gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_inserted", path, node); + gtk_signal_emit_by_name (GTK_OBJECT (simple), "inserted", path, iter); } void -gtk_model_simple_node_child_toggled (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node) +gtk_model_simple_child_toggled (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter) { g_return_if_fail (simple != NULL); g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple)); g_return_if_fail (path != NULL); - gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_child_toggled", path, node); + gtk_signal_emit_by_name (GTK_OBJECT (simple), "child_toggled", path, iter); } void -gtk_model_simple_node_deleted (GtkModelSimple *simple, +gtk_model_simple_iter_deleted (GtkModelSimple *simple, GtkTreePath *path, - GtkTreeNode node) + GtkTreeIter *iter) { g_return_if_fail (simple != NULL); g_return_if_fail (GTK_IS_MODEL_SIMPLE (simple)); g_return_if_fail (path != NULL); - gtk_signal_emit_by_name (GTK_OBJECT (simple), "node_deleted", path, node); + gtk_signal_emit_by_name (GTK_OBJECT (simple), "iter_deleted", path, iter); } -#endif diff --git a/gtk/gtkmodelsimple.h b/gtk/gtkmodelsimple.h index b637d7815..fa13d943e 100644 --- a/gtk/gtkmodelsimple.h +++ b/gtk/gtkmodelsimple.h @@ -26,7 +26,6 @@ extern "C" { #endif /* __cplusplus */ -#if 0 #define GTK_TYPE_MODEL_SIMPLE (gtk_model_simple_get_type ()) #define GTK_MODEL_SIMPLE(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_MODEL_SIMPLE, GtkModelSimple)) @@ -40,6 +39,8 @@ typedef struct _GtkModelSimpleClass GtkModelSimpleClass; struct _GtkModelSimple { GtkObject parent; + + gint stamp; }; struct _GtkModelSimpleClass @@ -49,37 +50,36 @@ struct _GtkModelSimpleClass /* signals */ /* Will be moved into the GtkTreeModelIface eventually */ void (* changed) (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeNode node); + GtkTreePath *path, + GtkTreeIter *iter); void (* inserted) (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeNode node); + GtkTreePath *path, + GtkTreeIter *iter); void (* child_toggled) (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeNode node); + GtkTreePath *path, + GtkTreeIter *iter); void (* deleted) (GtkTreeModel *tree_model, - GtkTreePath *path); + GtkTreePath *path); }; -GtkType gtk_model_simple_get_type (void); -GtkObject *gtk_model_simple_new (void); +GtkType gtk_model_simple_get_type (void); +GtkModelSimple *gtk_model_simple_new (void); +void gtk_model_simple_node_changed (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter); +void gtk_model_simple_node_inserted (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter); +void gtk_model_simple_node_child_toggled (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter); +void gtk_model_simple_node_deleted (GtkModelSimple *simple, + GtkTreePath *path, + GtkTreeIter *iter); -void gtk_model_simple_node_changed (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node); -void gtk_model_simple_node_inserted (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node); -void gtk_model_simple_node_child_toggled (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node); -void gtk_model_simple_node_deleted (GtkModelSimple *simple, - GtkTreePath *path, - GtkTreeNode node); -#endif #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/gtk/gtktreedatalist.c b/gtk/gtktreedatalist.c index f89eef824..f2fe36e4e 100644 --- a/gtk/gtktreedatalist.c +++ b/gtk/gtktreedatalist.c @@ -68,7 +68,7 @@ gtk_tree_data_list_validate_allocator (GAllocator *allocator) } void -gtk_tree_data_list_push_allocator (GAllocator *allocator) +_gtk_tree_data_list_push_allocator (GAllocator *allocator) { G_LOCK (current_allocator); gtk_tree_data_list_validate_allocator ( allocator ); @@ -78,7 +78,7 @@ gtk_tree_data_list_push_allocator (GAllocator *allocator) } void -gtk_tree_data_list_pop_allocator (void) +_gtk_tree_data_list_pop_allocator (void) { G_LOCK (current_allocator); if (current_allocator) @@ -94,7 +94,7 @@ gtk_tree_data_list_pop_allocator (void) } GtkTreeDataList * -gtk_tree_data_list_alloc (void) +_gtk_tree_data_list_alloc (void) { GtkTreeDataList *list; @@ -120,8 +120,28 @@ gtk_tree_data_list_alloc (void) } void -gtk_tree_data_list_free (GtkTreeDataList *list) +_gtk_tree_data_list_free (GtkTreeDataList *list, + GType *column_headers) { + GtkTreeDataList *tmp; + gint i = 0; + + for (tmp = list; tmp; tmp = tmp->next) + { + switch (column_headers [i]) + { + case G_TYPE_STRING: + g_free ((gchar *) tmp->data.v_pointer); + break; + case G_TYPE_OBJECT: + g_object_unref (G_OBJECT (tmp->data.v_pointer)); + break; + default: + break; + } + i++; + } + G_LOCK (current_allocator); list->next = current_allocator->free_nodes; current_allocator->free_nodes = list; @@ -129,9 +149,9 @@ gtk_tree_data_list_free (GtkTreeDataList *list) } void -gtk_tree_data_list_node_to_value (GtkTreeDataList *list, - GType type, - GValue *value) +_gtk_tree_data_list_node_to_value (GtkTreeDataList *list, + GType type, + GValue *value) { g_value_init (value, type); @@ -171,8 +191,8 @@ gtk_tree_data_list_node_to_value (GtkTreeDataList *list, } void -gtk_tree_data_list_value_to_node (GtkTreeDataList *list, - GValue *value) +_gtk_tree_data_list_value_to_node (GtkTreeDataList *list, + GValue *value) { switch (value->g_type) { diff --git a/gtk/gtktreedatalist.h b/gtk/gtktreedatalist.h index 78f4db651..1149fdad0 100644 --- a/gtk/gtktreedatalist.h +++ b/gtk/gtktreedatalist.h @@ -39,17 +39,17 @@ struct _GtkTreeDataList } data; }; -/* FIXME: s/gtk/_gtk/g to make internal */ -void gtk_tree_data_list_push_allocator (GAllocator *allocator); -void gtk_tree_data_list_pop_allocator (void); -GtkTreeDataList *gtk_tree_data_list_alloc (void); -void gtk_tree_data_list_free (GtkTreeDataList *list); - -void gtk_tree_data_list_node_to_value (GtkTreeDataList *list, - GType type, - GValue *value); -void gtk_tree_data_list_value_to_node (GtkTreeDataList *list, - GValue *value); +void _gtk_tree_data_list_push_allocator (GAllocator *allocator); +void _gtk_tree_data_list_pop_allocator (void); +GtkTreeDataList *_gtk_tree_data_list_alloc (void); +void _gtk_tree_data_list_free (GtkTreeDataList *list, + GType *column_headers); +void _gtk_tree_data_list_node_to_value (GtkTreeDataList *list, + GType type, + GValue *value); +void _gtk_tree_data_list_value_to_node (GtkTreeDataList *list, + GValue *value); + #endif /* __GTK_TREE_DATA_LIST_H__ */ diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c index e0f19611b..4e60d9bc0 100644 --- a/gtk/gtktreemodel.c +++ b/gtk/gtktreemodel.c @@ -392,6 +392,8 @@ gtk_tree_path_down (GtkTreePath *path) gint gtk_tree_model_get_n_columns (GtkTreeModel *tree_model) { + g_return_val_if_fail (tree_model != NULL, 0); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), 0); g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_n_columns != NULL, 0); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_n_columns) (tree_model); @@ -418,10 +420,14 @@ gtk_tree_model_get_iter (GtkTreeModel *tree_model, gint *indices; gint depth, i; + g_return_val_if_fail (tree_model != NULL, FALSE); + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (path != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); + if (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_iter != NULL) return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_iter) (tree_model, iter, path); - g_return_val_if_fail (path != NULL, FALSE); indices = gtk_tree_path_get_indices (path); depth = gtk_tree_path_get_depth (path); @@ -440,31 +446,6 @@ gtk_tree_model_get_iter (GtkTreeModel *tree_model, return TRUE; } - -/** - * gtk_tree_model_iter_invalid: - * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter. - * - * Tests the validity of @iter, and returns TRUE if it is invalid. - * - * Return value: TRUE, if @iter is invalid. - **/ -gboolean -gtk_tree_model_iter_invalid (GtkTreeModel *tree_model, - GtkTreeIter *iter) -{ - g_return_val_if_fail (tree_model != NULL, FALSE); - if (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_invalid) - return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_invalid) (tree_model, iter); - - /* Default implementation. Returns false if iter is false, or the stamp is 0 */ - if (iter == NULL || iter->stamp == 0) - return TRUE; - - return FALSE; -} - /** * gtk_tree_model_get_path: * @tree_model: A #GtkTreeModel. @@ -479,13 +460,16 @@ GtkTreePath * gtk_tree_model_get_path (GtkTreeModel *tree_model, GtkTreeIter *iter) { + g_return_val_if_fail (tree_model != NULL, NULL); + g_return_val_if_fail (iter != NULL, NULL); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), NULL); g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_path != NULL, NULL); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_path) (tree_model, iter); } /** - * gtk_tree_model_iter_get_value: + * gtk_tree_model_get_value: * @tree_model: A #GtkTreeModel. * @iter: The #GtkTreeIter. * @column: The column to lookup the value at. @@ -495,14 +479,18 @@ gtk_tree_model_get_path (GtkTreeModel *tree_model, * #g_value_unset needs to be called on it. **/ void -gtk_tree_model_iter_get_value (GtkTreeModel *tree_model, - GtkTreeIter *iter, - gint column, - GValue *value) +gtk_tree_model_get_value (GtkTreeModel *tree_model, + GtkTreeIter *iter, + gint column, + GValue *value) { - g_return_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_get_value != NULL); + g_return_if_fail (tree_model != NULL); + g_return_if_fail (iter != NULL); + g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); + g_return_if_fail (value != NULL); + g_return_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_value != NULL); - (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_get_value) (tree_model, iter, column, value); + (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_value) (tree_model, iter, column, value); } /** @@ -519,6 +507,9 @@ gboolean gtk_tree_model_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter) { + g_return_val_if_fail (tree_model != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); + g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_next != NULL, FALSE); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_next) (tree_model, iter); @@ -541,6 +532,9 @@ gtk_tree_model_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent) { + g_return_val_if_fail (tree_model != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); + g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_children != NULL, FALSE); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_children) (tree_model, iter, parent); @@ -559,6 +553,9 @@ gboolean gtk_tree_model_iter_has_child (GtkTreeModel *tree_model, GtkTreeIter *iter) { + g_return_val_if_fail (tree_model != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); + g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_has_child != NULL, FALSE); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_has_child) (tree_model, iter); @@ -577,7 +574,10 @@ gint gtk_tree_model_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter) { - g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_n_children != NULL, -1); + g_return_val_if_fail (tree_model != NULL, 0); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), 0); + g_return_val_if_fail (iter != NULL, 0); + g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_n_children != NULL, 0); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_n_children) (tree_model, iter); } @@ -602,6 +602,10 @@ gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *parent, gint n) { + g_return_val_if_fail (tree_model != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (n >= 0, FALSE); g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_nth_child != NULL, FALSE); return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_nth_child) (tree_model, iter, parent, n); diff --git a/gtk/gtktreemodel.h b/gtk/gtktreemodel.h index 364a3c8d9..fce77d607 100644 --- a/gtk/gtktreemodel.h +++ b/gtk/gtktreemodel.h @@ -71,11 +71,9 @@ struct _GtkTreeModelIface gboolean (* get_iter) (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePath *path); - gboolean (* iter_invalid) (GtkTreeModel *tree_model, - GtkTreeIter *iter); GtkTreePath *(* get_path) (GtkTreeModel *tree_model, GtkTreeIter *iter); - void (* iter_get_value) (GtkTreeModel *tree_model, + void (* get_value) (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); @@ -83,7 +81,7 @@ struct _GtkTreeModelIface GtkTreeIter *iter); gboolean (* iter_children) (GtkTreeModel *tree_model, GtkTreeIter *iter, - GtkTreeIter *child); + GtkTreeIter *parent); gboolean (* iter_has_child) (GtkTreeModel *tree_model, GtkTreeIter *iter); gint (* iter_n_children) (GtkTreeModel *tree_model, @@ -94,7 +92,7 @@ struct _GtkTreeModelIface gint n); gboolean (* iter_parent) (GtkTreeModel *tree_model, GtkTreeIter *iter, - GtkTreeIter *parent); + GtkTreeIter *child); }; @@ -133,11 +131,9 @@ GType gtk_tree_model_get_column_type (GtkTreeModel *tree_model, gboolean gtk_tree_model_get_iter (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePath *path); -gboolean gtk_tree_model_iter_invalid (GtkTreeModel *tree_model, - GtkTreeIter *iter); GtkTreePath *gtk_tree_model_get_path (GtkTreeModel *tree_model, GtkTreeIter *iter); -void gtk_tree_model_iter_get_value (GtkTreeModel *tree_model, +void gtk_tree_model_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index a557ce4f1..3454202ad 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -43,7 +43,7 @@ static void gtk_tree_store_tree_model_init (GtkTreeModelIface *iface); static gint gtk_tree_store_get_n_columns (GtkTreeModel *tree_model); static GtkTreePath *gtk_tree_store_get_path (GtkTreeModel *tree_model, GtkTreeIter *iter); -static void gtk_tree_store_iter_get_value (GtkTreeModel *tree_model, +static void gtk_tree_store_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); @@ -152,7 +152,7 @@ gtk_tree_store_tree_model_init (GtkTreeModelIface *iface) { iface->get_n_columns = gtk_tree_store_get_n_columns; iface->get_path = gtk_tree_store_get_path; - iface->iter_get_value = gtk_tree_store_iter_get_value; + iface->get_value = gtk_tree_store_get_value; iface->iter_next = gtk_tree_store_iter_next; iface->iter_children = gtk_tree_store_iter_children; iface->iter_has_child = gtk_tree_store_iter_has_child; @@ -312,10 +312,10 @@ gtk_tree_store_get_path (GtkTreeModel *tree_model, static void -gtk_tree_store_iter_get_value (GtkTreeModel *tree_model, - GtkTreeIter *iter, - gint column, - GValue *value) +gtk_tree_store_get_value (GtkTreeModel *tree_model, + GtkTreeIter *iter, + gint column, + GValue *value) { GtkTreeDataList *list; gint tmp_column = column; @@ -333,9 +333,9 @@ gtk_tree_store_iter_get_value (GtkTreeModel *tree_model, if (list) { - gtk_tree_data_list_node_to_value (list, - GTK_TREE_STORE (tree_model)->column_headers[column], - value); + _gtk_tree_data_list_node_to_value (list, + GTK_TREE_STORE (tree_model)->column_headers[column], + value); } else { @@ -452,10 +452,10 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model, * manipulations on it's own. */ void -gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store, - GtkTreeIter *iter, - gint column, - GValue *value) +gtk_tree_store_set_cell (GtkTreeStore *tree_store, + GtkTreeIter *iter, + gint column, + GValue *value) { GtkTreeDataList *list; GtkTreeDataList *prev; @@ -470,7 +470,7 @@ gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store, { if (column == 0) { - gtk_tree_data_list_value_to_node (list, value); + _gtk_tree_data_list_value_to_node (list, value); return; } @@ -481,29 +481,32 @@ gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store, if (G_NODE (iter->tree_node)->data == NULL) { - G_NODE (iter->tree_node)->data = list = gtk_tree_data_list_alloc (); + G_NODE (iter->tree_node)->data = list = _gtk_tree_data_list_alloc (); list->next = NULL; } else { - list = prev->next = gtk_tree_data_list_alloc (); + list = prev->next = _gtk_tree_data_list_alloc (); list->next = NULL; } while (column != 0) { - list->next = gtk_tree_data_list_alloc (); + list->next = _gtk_tree_data_list_alloc (); list = list->next; list->next = NULL; column --; } - gtk_tree_data_list_value_to_node (list, value); + _gtk_tree_data_list_value_to_node (list, value); + gtk_signal_emit_by_name (GTK_OBJECT (tree_store), + "changed", + NULL, iter); } void -gtk_tree_store_iter_setv (GtkTreeStore *tree_store, - GtkTreeIter *iter, - va_list var_args) +gtk_tree_store_setv (GtkTreeStore *tree_store, + GtkTreeIter *iter, + va_list var_args) { gint column; @@ -535,10 +538,10 @@ gtk_tree_store_iter_setv (GtkTreeStore *tree_store, break; } - gtk_tree_store_iter_set_cell (tree_store, - iter, - column, - &value); + gtk_tree_store_set_cell (tree_store, + iter, + column, + &value); g_value_unset (&value); @@ -547,23 +550,23 @@ gtk_tree_store_iter_setv (GtkTreeStore *tree_store, } void -gtk_tree_store_iter_set (GtkTreeStore *tree_store, - GtkTreeIter *iter, - ...) +gtk_tree_store_set (GtkTreeStore *tree_store, + GtkTreeIter *iter, + ...) { va_list var_args; g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); va_start (var_args, iter); - gtk_tree_store_iter_setv (tree_store, iter, var_args); + gtk_tree_store_setv (tree_store, iter, var_args); va_end (var_args); } void -gtk_tree_store_iter_getv (GtkTreeStore *tree_store, - GtkTreeIter *iter, - va_list var_args) +gtk_tree_store_getv (GtkTreeStore *tree_store, + GtkTreeIter *iter, + va_list var_args) { gint column; @@ -582,7 +585,7 @@ gtk_tree_store_iter_getv (GtkTreeStore *tree_store, break; } - gtk_tree_store_iter_get_value (GTK_TREE_MODEL (tree_store), iter, column, &value); + gtk_tree_store_get_value (GTK_TREE_MODEL (tree_store), iter, column, &value); G_VALUE_LCOPY (&value, var_args, &error); if (error) @@ -603,24 +606,25 @@ gtk_tree_store_iter_getv (GtkTreeStore *tree_store, } void -gtk_tree_store_iter_get (GtkTreeStore *tree_store, - GtkTreeIter *iter, - ...) +gtk_tree_store_get (GtkTreeStore *tree_store, + GtkTreeIter *iter, + ...) { va_list var_args; g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); va_start (var_args, iter); - gtk_tree_store_iter_getv (tree_store, iter, var_args); + gtk_tree_store_getv (tree_store, iter, var_args); va_end (var_args); } void -gtk_tree_store_iter_remove (GtkTreeStore *model, - GtkTreeIter *iter) +gtk_tree_store_remove (GtkTreeStore *model, + GtkTreeIter *iter) { GtkTreePath *path; + GNode *parent; g_return_if_fail (model != NULL); @@ -628,8 +632,14 @@ gtk_tree_store_iter_remove (GtkTreeStore *model, parent = G_NODE (iter->tree_node)->parent; + if (G_NODE (iter->tree_node)->data) + _gtk_tree_data_list_free ((GtkTreeDataList *) G_NODE (iter->tree_node)->data, + model->column_headers); + path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter); g_node_destroy (G_NODE (iter->tree_node)); + + model->stamp++; gtk_signal_emit_by_name (GTK_OBJECT (model), "deleted", path); @@ -645,10 +655,10 @@ gtk_tree_store_iter_remove (GtkTreeStore *model, } void -gtk_tree_store_iter_insert (GtkTreeStore *model, - GtkTreeIter *iter, - GtkTreeIter *parent, - gint position) +gtk_tree_store_insert (GtkTreeStore *model, + GtkTreeIter *iter, + GtkTreeIter *parent, + gint position) { GtkTreePath *path; @@ -670,10 +680,10 @@ gtk_tree_store_iter_insert (GtkTreeStore *model, } void -gtk_tree_store_iter_insert_before (GtkTreeStore *model, - GtkTreeIter *iter, - GtkTreeIter *parent, - GtkTreeIter *sibling) +gtk_tree_store_insert_before (GtkTreeStore *model, + GtkTreeIter *iter, + GtkTreeIter *parent, + GtkTreeIter *sibling) { GtkTreePath *path; GNode *parent_node = NULL; @@ -708,10 +718,10 @@ gtk_tree_store_iter_insert_before (GtkTreeStore *model, } void -gtk_tree_store_iter_insert_after (GtkTreeStore *model, - GtkTreeIter *iter, - GtkTreeIter *parent, - GtkTreeIter *sibling) +gtk_tree_store_insert_after (GtkTreeStore *model, + GtkTreeIter *iter, + GtkTreeIter *parent, + GtkTreeIter *sibling) { GtkTreePath *path; GNode *parent_node; @@ -746,9 +756,9 @@ gtk_tree_store_iter_insert_after (GtkTreeStore *model, } void -gtk_tree_store_iter_prepend (GtkTreeStore *model, - GtkTreeIter *iter, - GtkTreeIter *parent) +gtk_tree_store_prepend (GtkTreeStore *model, + GtkTreeIter *iter, + GtkTreeIter *parent) { GNode *parent_node; @@ -793,14 +803,14 @@ gtk_tree_store_iter_prepend (GtkTreeStore *model, } else { - gtk_tree_store_iter_insert_after (model, iter, parent, NULL); + gtk_tree_store_insert_after (model, iter, parent, NULL); } } void -gtk_tree_store_iter_append (GtkTreeStore *model, - GtkTreeIter *iter, - GtkTreeIter *parent) +gtk_tree_store_append (GtkTreeStore *model, + GtkTreeIter *iter, + GtkTreeIter *parent) { GNode *parent_node; @@ -845,13 +855,13 @@ gtk_tree_store_iter_append (GtkTreeStore *model, } else { - gtk_tree_store_iter_insert_before (model, iter, parent, NULL); + gtk_tree_store_insert_before (model, iter, parent, NULL); } } void -gtk_tree_store_get_root (GtkTreeStore *model, - GtkTreeIter *iter) +gtk_tree_store_get_root_iter (GtkTreeStore *model, + GtkTreeIter *iter) { g_return_if_fail (model != NULL); g_return_if_fail (GTK_IS_TREE_STORE (model)); @@ -863,9 +873,9 @@ gtk_tree_store_get_root (GtkTreeStore *model, gboolean -gtk_tree_store_iter_is_ancestor (GtkTreeStore *model, - GtkTreeIter *iter, - GtkTreeIter *descendant) +gtk_tree_store_is_ancestor (GtkTreeStore *model, + GtkTreeIter *iter, + GtkTreeIter *descendant) { g_return_val_if_fail (model != NULL, FALSE); g_return_val_if_fail (GTK_IS_TREE_STORE (model), FALSE); diff --git a/gtk/gtktreestore.h b/gtk/gtktreestore.h index 3f65aafbf..a333db5ca 100644 --- a/gtk/gtktreestore.h +++ b/gtk/gtktreestore.h @@ -66,58 +66,59 @@ struct _GtkTreeStoreClass }; -GtkType gtk_tree_store_get_type (void); -GtkTreeStore *gtk_tree_store_new (void); -GtkTreeStore *gtk_tree_store_new_with_values (gint n_columns, - ...); -void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store, - gint n_columns); -void gtk_tree_store_set_column_type (GtkTreeStore *store, - gint column, - GType type); -void gtk_tree_store_iter_set_cell (GtkTreeStore *tree_store, - GtkTreeIter *iter, - gint column, - GValue *value); -void gtk_tree_store_iter_set (GtkTreeStore *tree_store, - GtkTreeIter *iter, - ...); -void gtk_tree_store_iter_setv (GtkTreeStore *tree_store, - GtkTreeIter *iter, - va_list var_args); -void gtk_tree_store_iter_get (GtkTreeStore *tree_store, - GtkTreeIter *iter, - ...); -void gtk_tree_store_iter_getv (GtkTreeStore *tree_store, - GtkTreeIter *iter, - va_list var_args); -void gtk_tree_store_iter_remove (GtkTreeStore *tree_store, - GtkTreeIter *iter); -void gtk_tree_store_iter_insert (GtkTreeStore *tree_store, - GtkTreeIter *iter, - GtkTreeIter *parent, - gint position); -void gtk_tree_store_iter_insert_before (GtkTreeStore *tree_store, - GtkTreeIter *iter, - GtkTreeIter *parent, - GtkTreeIter *sibling); -void gtk_tree_store_iter_insert_after (GtkTreeStore *tree_store, - GtkTreeIter *iter, - GtkTreeIter *parent, - GtkTreeIter *sibling); -void gtk_tree_store_iter_prepend (GtkTreeStore *tree_store, - GtkTreeIter *iter, - GtkTreeIter *parent); -void gtk_tree_store_iter_append (GtkTreeStore *tree_store, - GtkTreeIter *iter, - GtkTreeIter *parent); -void gtk_tree_store_get_root (GtkTreeStore *tree_store, - GtkTreeIter *iter); -gboolean gtk_tree_store_iter_is_ancestor (GtkTreeStore *tree_store, - GtkTreeIter *iter, - GtkTreeIter *descendant); -gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store, - GtkTreeIter *iter); +GtkType gtk_tree_store_get_type (void); +GtkTreeStore *gtk_tree_store_new (void); + +GtkTreeStore *gtk_tree_store_new_with_values (gint n_columns, + ...); +void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store, + gint n_columns); +void gtk_tree_store_set_column_type (GtkTreeStore *store, + gint column, + GType type); +void gtk_tree_store_set_cell (GtkTreeStore *tree_store, + GtkTreeIter *iter, + gint column, + GValue *value); +void gtk_tree_store_set (GtkTreeStore *tree_store, + GtkTreeIter *iter, + ...); +void gtk_tree_store_setv (GtkTreeStore *tree_store, + GtkTreeIter *iter, + va_list var_args); +void gtk_tree_store_get (GtkTreeStore *tree_store, + GtkTreeIter *iter, + ...); +void gtk_tree_store_getv (GtkTreeStore *tree_store, + GtkTreeIter *iter, + va_list var_args); +void gtk_tree_store_remove (GtkTreeStore *tree_store, + GtkTreeIter *iter); +void gtk_tree_store_insert (GtkTreeStore *tree_store, + GtkTreeIter *iter, + GtkTreeIter *parent, + gint position); +void gtk_tree_store_insert_before (GtkTreeStore *tree_store, + GtkTreeIter *iter, + GtkTreeIter *parent, + GtkTreeIter *sibling); +void gtk_tree_store_insert_after (GtkTreeStore *tree_store, + GtkTreeIter *iter, + GtkTreeIter *parent, + GtkTreeIter *sibling); +void gtk_tree_store_prepend (GtkTreeStore *tree_store, + GtkTreeIter *iter, + GtkTreeIter *parent); +void gtk_tree_store_append (GtkTreeStore *tree_store, + GtkTreeIter *iter, + GtkTreeIter *parent); +void gtk_tree_store_get_root_iter (GtkTreeStore *tree_store, + GtkTreeIter *iter); +gboolean gtk_tree_store_is_ancestor (GtkTreeStore *tree_store, + GtkTreeIter *iter, + GtkTreeIter *descendant); +gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store, + GtkTreeIter *iter); #ifdef __cplusplus diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 26afe3899..15821411c 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -1917,7 +1917,7 @@ gtk_tree_view_changed (GtkTreeModel *model, gint height; gboolean dirty_marked; - g_return_if_fail (path != NULL || node != NULL); + g_return_if_fail (path != NULL || iter != NULL); if (path == NULL) path = gtk_tree_model_get_path (model, iter); @@ -2067,7 +2067,7 @@ gtk_tree_view_child_toggled (GtkTreeModel *model, GtkRBTree *tree; GtkRBNode *node; - g_return_if_fail (path != NULL || node != NULL); + g_return_if_fail (path != NULL || iter != NULL); if (iter) real_iter = *iter; @@ -2237,9 +2237,6 @@ gtk_tree_view_build_tree (GtkTreeView *tree_view, GtkRBNode *temp = NULL; gint max_height; - if (gtk_tree_model_iter_invalid (tree_view->priv->model, iter)) - return; - do { max_height = 0; @@ -2285,10 +2282,6 @@ gtk_tree_view_calc_size (GtkTreeView *tree_view, gint max_height; gint i; - /* FIXME: Make this function robust against internal inconsistencies! */ - if (gtk_tree_model_iter_invalid (tree_view->priv->model, iter)) - return; - TREE_VIEW_INTERNAL_ASSERT_VOID (tree != NULL); while (temp->left != tree->nil) @@ -2399,11 +2392,6 @@ gtk_tree_view_discover_dirty (GtkTreeView *tree_view, GtkTreeIter child; gboolean is_all_dirty; - /* FIXME: Make this function robust against internal inconsistencies! */ - if (gtk_tree_model_iter_invalid (tree_view->priv->model, - iter)) - return; - TREE_VIEW_INTERNAL_ASSERT_VOID (tree != NULL); while (temp->left != tree->nil) diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index af0afc7cc..8c4c43f2e 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -336,10 +336,9 @@ gtk_tree_view_column_set_cell_data (GtkTreeViewColumn *tree_column, while (list && list->next) { - gtk_tree_model_iter_get_value (tree_model, - iter, - GPOINTER_TO_INT (list->next->data), - &value); + gtk_tree_model_get_value (tree_model, iter, + GPOINTER_TO_INT (list->next->data), + &value); g_object_set_param (cell, (gchar *) list->data, &value); g_value_unset (&value); list = list->next->next; diff --git a/gtk/treestoretest.c b/gtk/treestoretest.c index 84423e97a..d1c311c83 100644 --- a/gtk/treestoretest.c +++ b/gtk/treestoretest.c @@ -1,7 +1,7 @@ #include <gtk/gtk.h> #include <stdlib.h> -GtkObject *model; +GtkTreeStore *model; static void selection_changed (GtkTreeSelection *selection, @@ -21,7 +21,7 @@ node_set (GtkTreeIter *iter) gchar *str; str = g_strdup_printf ("FOO: %d", i++); - gtk_tree_store_iter_set (GTK_TREE_STORE (model), iter, 0, str, -1); + gtk_tree_store_set (model, iter, 0, str, -1); g_free (str); } @@ -33,8 +33,7 @@ iter_remove (GtkWidget *button, GtkTreeView *tree_view) if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), &selected)) { - gtk_tree_store_iter_remove (GTK_TREE_STORE (model), - &selected); + gtk_tree_store_remove (model, &selected); } } @@ -49,17 +48,17 @@ iter_insert (GtkWidget *button, GtkTreeView *tree_view) if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), &selected)) { - gtk_tree_store_iter_insert (GTK_TREE_STORE (model), - &iter, - &selected, - atoi (gtk_entry_get_text (GTK_ENTRY (entry)))); + gtk_tree_store_insert (model, + &iter, + &selected, + atoi (gtk_entry_get_text (GTK_ENTRY (entry)))); } else { - gtk_tree_store_iter_insert (GTK_TREE_STORE (model), - &iter, - NULL, - atoi (gtk_entry_get_text (GTK_ENTRY (entry)))); + gtk_tree_store_insert (model, + &iter, + NULL, + atoi (gtk_entry_get_text (GTK_ENTRY (entry)))); } node_set (&iter); @@ -74,17 +73,17 @@ iter_insert_before (GtkWidget *button, GtkTreeView *tree_view) if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), &selected)) { - gtk_tree_store_iter_insert_before (GTK_TREE_STORE (model), - &iter, - NULL, - &selected); + gtk_tree_store_insert_before (model, + &iter, + NULL, + &selected); } else { - gtk_tree_store_iter_insert_before (GTK_TREE_STORE (model), - &iter, - NULL, - NULL); + gtk_tree_store_insert_before (model, + &iter, + NULL, + NULL); } node_set (&iter); @@ -99,17 +98,17 @@ iter_insert_after (GtkWidget *button, GtkTreeView *tree_view) if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), &selected)) { - gtk_tree_store_iter_insert_after (GTK_TREE_STORE (model), - &iter, - NULL, - &selected); + gtk_tree_store_insert_after (model, + &iter, + NULL, + &selected); } else { - gtk_tree_store_iter_insert_after (GTK_TREE_STORE (model), - &iter, - NULL, - &selected); + gtk_tree_store_insert_after (model, + &iter, + NULL, + &selected); } node_set (&iter); @@ -124,15 +123,15 @@ iter_prepend (GtkWidget *button, GtkTreeView *tree_view) if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), &selected)) { - gtk_tree_store_iter_prepend (GTK_TREE_STORE (model), - &iter, - &selected); + gtk_tree_store_prepend (model, + &iter, + &selected); } else { - gtk_tree_store_iter_prepend (GTK_TREE_STORE (model), - &iter, - NULL); + gtk_tree_store_prepend (model, + &iter, + NULL); } node_set (&iter); @@ -147,15 +146,11 @@ iter_append (GtkWidget *button, GtkTreeView *tree_view) if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), &selected)) { - gtk_tree_store_iter_append (GTK_TREE_STORE (model), - &iter, - &selected); + gtk_tree_store_append (model, &iter, &selected); } else { - gtk_tree_store_iter_append (GTK_TREE_STORE (model), - &iter, - NULL); + gtk_tree_store_append (model, &iter, NULL); } node_set (&iter); @@ -194,7 +189,7 @@ make_window () gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL); /* buttons */ - button = gtk_button_new_with_label ("gtk_tree_store_iter_remove"); + button = gtk_button_new_with_label ("gtk_tree_store_remove"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (selection), "selection_changed", @@ -203,7 +198,7 @@ make_window () gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_remove, tree_view); gtk_widget_set_sensitive (button, FALSE); - button = gtk_button_new_with_label ("gtk_tree_store_iter_insert"); + button = gtk_button_new_with_label ("gtk_tree_store_insert"); hbox = gtk_hbox_new (FALSE, 8); entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); @@ -213,7 +208,7 @@ make_window () gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert, tree_view); - button = gtk_button_new_with_label ("gtk_tree_store_iter_insert_before"); + button = gtk_button_new_with_label ("gtk_tree_store_insert_before"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert_before, tree_view); gtk_signal_connect (GTK_OBJECT (selection), @@ -222,7 +217,7 @@ make_window () button); gtk_widget_set_sensitive (button, FALSE); - button = gtk_button_new_with_label ("gtk_tree_store_iter_insert_after"); + button = gtk_button_new_with_label ("gtk_tree_store_insert_after"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert_after, tree_view); gtk_signal_connect (GTK_OBJECT (selection), @@ -231,11 +226,11 @@ make_window () button); gtk_widget_set_sensitive (button, FALSE); - button = gtk_button_new_with_label ("gtk_tree_store_iter_prepend"); + button = gtk_button_new_with_label ("gtk_tree_store_prepend"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_prepend, tree_view); - button = gtk_button_new_with_label ("gtk_tree_store_iter_append"); + button = gtk_button_new_with_label ("gtk_tree_store_append"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_append, tree_view); |