diff options
author | Kristian Rietveld <kristian@planet.nl> | 2001-10-24 18:36:50 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2001-10-24 18:36:50 +0000 |
commit | beaba6a43c287ceeaee0cb05c1a1b48604cd8cc5 (patch) | |
tree | ec56398bac847a92591c92a8c723351fecd53efb /tests | |
parent | 9b7d528ac208a72ce5f011c76f15a51641ed2136 (diff) | |
download | gtk+-beaba6a43c287ceeaee0cb05c1a1b48604cd8cc5.tar.gz |
more changes in an attempt to get it right. It's not yet ready for general
Wed Oct 24 20:29:47 2001 Kristian Rietveld <kristian@planet.nl>
* gtk/gtktreemodelsort.c: more changes in an attempt to get
it right. It's not yet ready for general consumption.
* tests/treestoretest.c: add a button and entry for the new
iter_change function
(iter_change): new function, to test
the row_changed signal implementation of the GtkTreeModelSort
* tests/testtreesort.c: cleanups, changes to test more features
of the GtkTreeModelSort at once
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testtreesort.c | 383 | ||||
-rw-r--r-- | tests/treestoretest.c | 31 |
2 files changed, 224 insertions, 190 deletions
diff --git a/tests/testtreesort.c b/tests/testtreesort.c index 69bceb1be9..33313311cb 100644 --- a/tests/testtreesort.c +++ b/tests/testtreesort.c @@ -57,12 +57,12 @@ main (int argc, char *argv[]) GtkWidget *scrolled_window; GtkWidget *tree_view; GtkTreeStore *model; - GtkTreeModel *smodel; + GtkTreeModel *smodel = NULL; GtkTreeModel *ssmodel = NULL; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeIter iter; - gint i, j; + gint i; GtkWidget *window2, *vbox2, *scrolled_window2, *tree_view2; GtkWidget *window3, *vbox3, *scrolled_window3, *tree_view3; @@ -87,40 +87,43 @@ main (int argc, char *argv[]) gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0); model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + +/* smodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (model)); ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel)); - +*/ tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); - for (j = 0; j < 2; j++) - for (i = 0; data[i].word_1 != NULL; i++) - { - gint k; - - gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL); - gtk_tree_store_set (GTK_TREE_STORE (model), &iter, - WORD_COLUMN_1, data[i].word_1, - WORD_COLUMN_2, data[i].word_2, - WORD_COLUMN_3, data[i].word_3, - WORD_COLUMN_4, data[i].word_4, - -1); - for (k = 0; childdata[k].word_1 != NULL; k++) - { - GtkTreeIter child_iter; - - gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter); - gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter, - WORD_COLUMN_1, childdata[k].word_1, - WORD_COLUMN_2, childdata[k].word_2, - WORD_COLUMN_3, childdata[k].word_3, - WORD_COLUMN_4, childdata[k].word_4, - -1); - } - } -/* + /* 12 iters now, 12 later... */ + for (i = 0; data[i].word_1 != NULL; i++) + { + gint k; + + gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, + WORD_COLUMN_1, data[i].word_1, + WORD_COLUMN_2, data[i].word_2, + WORD_COLUMN_3, data[i].word_3, + WORD_COLUMN_4, data[i].word_4, + -1); + + for (k = 0; childdata[k].word_1 != NULL; k++) + { + GtkTreeIter child_iter; + + gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter); + gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter, + WORD_COLUMN_1, childdata[k].word_1, + WORD_COLUMN_2, childdata[k].word_2, + WORD_COLUMN_3, childdata[k].word_3, + WORD_COLUMN_4, childdata[k].word_4, + -1); + } + } + smodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (model)); ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel)); -*/ + g_object_unref (G_OBJECT (model)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE); @@ -152,11 +155,11 @@ main (int argc, char *argv[]) gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); -/* + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel), WORD_COLUMN_1, GTK_SORT_ASCENDING); - */ + gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); gtk_window_set_default_size (GTK_WINDOW (window), 400, 400); gtk_widget_show_all (window); @@ -166,167 +169,169 @@ main (int argc, char *argv[]) * Second window - GtkTreeModelSort wrapping the GtkTreeStore */ - window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window2), - "Words, words, words - window 2"); - gtk_signal_connect (GTK_OBJECT (window2), "destroy", gtk_main_quit, NULL); - vbox2 = gtk_vbox_new (FALSE, 8); - gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8); - gtk_box_pack_start (GTK_BOX (vbox2), - gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeStore of window 1"), - FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (window2), vbox2); - - scrolled_window2 = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window2), - GTK_SHADOW_ETCHED_IN); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window2), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window2, TRUE, TRUE, 0); - - - tree_view2 = gtk_tree_view_new_with_model (smodel); - gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view2), TRUE); - - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("First Word", renderer, - "text", WORD_COLUMN_1, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer, - "text", WORD_COLUMN_2, - NULL); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer, - "text", WORD_COLUMN_3, - NULL); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer, - "text", WORD_COLUMN_4, - NULL); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); - - gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (smodel), - (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func, - NULL, NULL); -/* - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel), - WORD_COLUMN_1, - GTK_SORT_DESCENDING); - */ - - gtk_container_add (GTK_CONTAINER (scrolled_window2), tree_view2); - gtk_window_set_default_size (GTK_WINDOW (window2), 400, 400); - gtk_widget_show_all (window2); - + if (smodel) + { + window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window2), + "Words, words, words - window 2"); + gtk_signal_connect (GTK_OBJECT (window2), "destroy", gtk_main_quit, NULL); + vbox2 = gtk_vbox_new (FALSE, 8); + gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8); + gtk_box_pack_start (GTK_BOX (vbox2), + gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeStore of window 1"), + FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (window2), vbox2); + + scrolled_window2 = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window2), + GTK_SHADOW_ETCHED_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window2), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window2, TRUE, TRUE, 0); + + + tree_view2 = gtk_tree_view_new_with_model (smodel); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view2), TRUE); + + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("First Word", renderer, + "text", WORD_COLUMN_1, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer, + "text", WORD_COLUMN_2, + NULL); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer, + "text", WORD_COLUMN_3, + NULL); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer, + "text", WORD_COLUMN_4, + NULL); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); + + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (smodel), + (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func, + NULL, NULL); + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel), + WORD_COLUMN_1, + GTK_SORT_DESCENDING); + + gtk_container_add (GTK_CONTAINER (scrolled_window2), tree_view2); + gtk_window_set_default_size (GTK_WINDOW (window2), 400, 400); + gtk_widget_show_all (window2); + } + /** * Third window - GtkTreeModelSort wrapping the GtkTreeModelSort which * is wrapping the GtkTreeStore. */ - - if (ssmodel) { - window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window3), - "Words, words, words - Window 3"); - gtk_signal_connect (GTK_OBJECT (window3), "destroy", gtk_main_quit, NULL); - vbox3 = gtk_vbox_new (FALSE, 8); - gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8); - gtk_box_pack_start (GTK_BOX (vbox3), - gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeModelSort of window 2"), - FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (window3), vbox3); - - scrolled_window3 = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window3), - GTK_SHADOW_ETCHED_IN); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window3), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_box_pack_start (GTK_BOX (vbox3), scrolled_window3, TRUE, TRUE, 0); - - - tree_view3 = gtk_tree_view_new_with_model (ssmodel); - gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view3), TRUE); - - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("First Word", renderer, - "text", WORD_COLUMN_1, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer, - "text", WORD_COLUMN_2, - NULL); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer, - "text", WORD_COLUMN_3, - NULL); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer, - "text", WORD_COLUMN_4, - NULL); - gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); -/* - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (ssmodel), - WORD_COLUMN_1, - GTK_SORT_ASCENDING); -*/ - gtk_container_add (GTK_CONTAINER (scrolled_window3), tree_view3); - gtk_window_set_default_size (GTK_WINDOW (window3), 400, 400); - gtk_widget_show_all (window3); - } - -/* - for (j = 0; j < 2; j++) - for (i = 0; data[i].word_1 != NULL; i++) - { - gint k; - - gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL); - gtk_tree_store_set (GTK_TREE_STORE (model), &iter, - WORD_COLUMN_1, data[i].word_1, - WORD_COLUMN_2, data[i].word_2, - WORD_COLUMN_3, data[i].word_3, - WORD_COLUMN_4, data[i].word_4, - -1); - - for (k = 0; childdata[k].word_1 != NULL; k++) - { - GtkTreeIter child_iter; - - gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter); - gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter, - WORD_COLUMN_1, childdata[k].word_1, - WORD_COLUMN_2, childdata[k].word_2, - WORD_COLUMN_3, childdata[k].word_3, - WORD_COLUMN_4, childdata[k].word_4, - -1); - } - } -*/ + + if (ssmodel) + { + window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window3), + "Words, words, words - Window 3"); + gtk_signal_connect (GTK_OBJECT (window3), "destroy", gtk_main_quit, NULL); + vbox3 = gtk_vbox_new (FALSE, 8); + gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8); + gtk_box_pack_start (GTK_BOX (vbox3), + gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeModelSort of window 2"), + FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (window3), vbox3); + + scrolled_window3 = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window3), + GTK_SHADOW_ETCHED_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window3), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox3), scrolled_window3, TRUE, TRUE, 0); + + + tree_view3 = gtk_tree_view_new_with_model (ssmodel); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view3), TRUE); + + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("First Word", renderer, + "text", WORD_COLUMN_1, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer, + "text", WORD_COLUMN_2, + NULL); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer, + "text", WORD_COLUMN_3, + NULL); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer, + "text", WORD_COLUMN_4, + NULL); + gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); + + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (ssmodel), + (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func, + NULL, NULL); + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (ssmodel), + WORD_COLUMN_1, + GTK_SORT_ASCENDING); + + gtk_container_add (GTK_CONTAINER (scrolled_window3), tree_view3); + gtk_window_set_default_size (GTK_WINDOW (window3), 400, 400); + gtk_widget_show_all (window3); + } + + for (i = 0; data[i].word_1 != NULL; i++) + { + gint k; + + gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, + WORD_COLUMN_1, data[i].word_1, + WORD_COLUMN_2, data[i].word_2, + WORD_COLUMN_3, data[i].word_3, + WORD_COLUMN_4, data[i].word_4, + -1); + for (k = 0; childdata[k].word_1 != NULL; k++) + { + GtkTreeIter child_iter; + + gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter); + gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter, + WORD_COLUMN_1, childdata[k].word_1, + WORD_COLUMN_2, childdata[k].word_2, + WORD_COLUMN_3, childdata[k].word_3, + WORD_COLUMN_4, childdata[k].word_4, + -1); + } + } + gtk_main (); - + return 0; } diff --git a/tests/treestoretest.c b/tests/treestoretest.c index 83adcd2d5f..9a0cf780d0 100644 --- a/tests/treestoretest.c +++ b/tests/treestoretest.c @@ -83,6 +83,25 @@ iter_insert (GtkWidget *button, GtkTreeView *tree_view) } static void +iter_change (GtkWidget *button, GtkTreeView *tree_view) +{ + GtkWidget *entry; + GtkTreeIter selected; + GtkTreeModel *model = gtk_tree_view_get_model (tree_view); + + entry = gtk_object_get_user_data (GTK_OBJECT (button)); + if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), + NULL, &selected)) + { + gtk_tree_store_set (GTK_TREE_STORE (model), + &selected, + 1, + gtk_entry_get_text (GTK_ENTRY (entry)), + -1); + } +} + +static void iter_insert_before (GtkWidget *button, GtkTreeView *tree_view) { GtkTreeIter iter; @@ -281,7 +300,17 @@ make_window (gint view_type) gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (iter_insert), tree_view); - + + button = gtk_button_new_with_label ("gtk_tree_store_set"); + hbox = gtk_hbox_new (FALSE, 8); + entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); + gtk_object_set_user_data (GTK_OBJECT (button), entry); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (iter_change), + tree_view); button = gtk_button_new_with_label ("gtk_tree_store_insert_before"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); |