3 #include "../gtk/gtktreedatalist.h"
6 typedef struct _ListSort ListSort;
15 static ListSort data[] =
17 { "Apples", "Transmogrify long word to demonstrate weirdness", "Exculpatory", "Gesundheit"},
18 { "Oranges", "Wicker", "Adamantine", "Convivial" },
19 { "Bovine Spongiform Encephilopathy", "Sleazebucket", "Mountaineer", "Pander" },
20 { "Foot and Mouth", "Lampshade", "Skim Milk\nFull Milk", "Viewless" },
21 { "Blood,\nsweat,\ntears", "The Man", "Horses", "Muckety-Muck" },
22 { "Rare Steak", "Siam", "Watchdog", "Xantippe" },
23 { "SIGINT", "Rabbit Breath", "Alligator", "Bloodstained" },
24 { "Google", "Chrysanthemums", "Hobnob", "Leapfrog"},
25 { "Technology fibre optic", "Turtle", "Academe", "Lonely" },
26 { "Freon", "Harpes", "Quidditch", "Reagan" },
27 { "Transposition", "Fruit Basket", "Monkey Wort", "Glogg" },
28 { "Fern", "Glasnost and Perestroika", "Latitude", "Bomberman!!!" },
32 static ListSort childdata[] =
34 { "Heineken", "Nederland", "Wanda de vis", "Electronische post"},
35 { "Hottentottententententoonstelling", "Rotterdam", "Ionentransport", "Palm"},
36 { "Fruitvlieg", "Eigenfrequentie", "Supernoodles", "Ramen"},
37 { "Gereedschapskist", "Stelsel van lineaire vergelijkingen", "Tulpen", "Badlaken"},
38 { "Stereoinstallatie", "Rood tapijt", "Het periodieke systeem der elementen", "Laaste woord"},
53 main (int argc, char *argv[])
57 GtkWidget *scrolled_window;
60 GtkTreeModel *smodel = NULL;
61 GtkTreeModel *ssmodel = NULL;
62 GtkCellRenderer *renderer;
63 GtkTreeViewColumn *column;
67 GtkWidget *window2, *vbox2, *scrolled_window2, *tree_view2;
68 GtkWidget *window3, *vbox3, *scrolled_window3, *tree_view3;
70 gtk_init (&argc, &argv);
73 * First window - Just a GtkTreeStore
76 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
77 gtk_window_set_title (GTK_WINDOW (window), "Words, words, words - Window 1");
78 gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
79 vbox = gtk_vbox_new (FALSE, 8);
80 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
81 gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("Jonathan and Kristian's list of cool words.\n\nThis is just a GtkTreeStore"), FALSE, FALSE, 0);
82 gtk_container_add (GTK_CONTAINER (window), vbox);
84 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
85 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
86 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
87 gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
89 model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
92 smodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (model));
93 ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel));
95 tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
96 /* 12 iters now, 12 later... */
97 for (i = 0; data[i].word_1 != NULL; i++)
100 GtkTreeIter child_iter;
103 gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
104 gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
105 WORD_COLUMN_1, data[i].word_1,
106 WORD_COLUMN_2, data[i].word_2,
107 WORD_COLUMN_3, data[i].word_3,
108 WORD_COLUMN_4, data[i].word_4,
111 gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
112 gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
113 WORD_COLUMN_1, data[i].word_1,
114 WORD_COLUMN_2, data[i].word_2,
115 WORD_COLUMN_3, data[i].word_3,
116 WORD_COLUMN_4, data[i].word_4,
118 for (k = 0; childdata[k].word_1 != NULL; k++)
120 gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
121 gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
122 WORD_COLUMN_1, childdata[k].word_1,
123 WORD_COLUMN_2, childdata[k].word_2,
124 WORD_COLUMN_3, childdata[k].word_3,
125 WORD_COLUMN_4, childdata[k].word_4,
130 smodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (model));
131 ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel));
133 g_object_unref (G_OBJECT (model));
134 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
136 renderer = gtk_cell_renderer_text_new ();
137 column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
138 "text", WORD_COLUMN_1,
140 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
141 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
143 renderer = gtk_cell_renderer_text_new ();
144 column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
145 "text", WORD_COLUMN_2,
147 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
148 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
150 renderer = gtk_cell_renderer_text_new ();
151 column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
152 "text", WORD_COLUMN_3,
154 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
155 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
157 renderer = gtk_cell_renderer_text_new ();
158 column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
159 "text", WORD_COLUMN_4,
161 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
163 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
165 /* gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel),
167 GTK_SORT_ASCENDING);*/
169 gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
170 gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
171 gtk_widget_show_all (window);
175 * Second window - GtkTreeModelSort wrapping the GtkTreeStore
180 window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
181 gtk_window_set_title (GTK_WINDOW (window2),
182 "Words, words, words - window 2");
183 gtk_signal_connect (GTK_OBJECT (window2), "destroy", gtk_main_quit, NULL);
184 vbox2 = gtk_vbox_new (FALSE, 8);
185 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
186 gtk_box_pack_start (GTK_BOX (vbox2),
187 gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeStore of window 1"),
189 gtk_container_add (GTK_CONTAINER (window2), vbox2);
191 scrolled_window2 = gtk_scrolled_window_new (NULL, NULL);
192 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window2),
193 GTK_SHADOW_ETCHED_IN);
194 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window2),
195 GTK_POLICY_AUTOMATIC,
196 GTK_POLICY_AUTOMATIC);
197 gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window2, TRUE, TRUE, 0);
200 tree_view2 = gtk_tree_view_new_with_model (smodel);
201 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view2), TRUE);
204 renderer = gtk_cell_renderer_text_new ();
205 column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
206 "text", WORD_COLUMN_1,
208 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
209 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
211 renderer = gtk_cell_renderer_text_new ();
212 column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
213 "text", WORD_COLUMN_2,
215 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
216 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
218 renderer = gtk_cell_renderer_text_new ();
219 column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
220 "text", WORD_COLUMN_3,
222 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
223 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
225 renderer = gtk_cell_renderer_text_new ();
226 column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
227 "text", WORD_COLUMN_4,
229 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
230 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column);
232 /* gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (smodel),
233 (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func,
235 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel),
237 GTK_SORT_DESCENDING);*/
240 gtk_container_add (GTK_CONTAINER (scrolled_window2), tree_view2);
241 gtk_window_set_default_size (GTK_WINDOW (window2), 400, 400);
242 gtk_widget_show_all (window2);
246 * Third window - GtkTreeModelSort wrapping the GtkTreeModelSort which
247 * is wrapping the GtkTreeStore.
252 window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
253 gtk_window_set_title (GTK_WINDOW (window3),
254 "Words, words, words - Window 3");
255 gtk_signal_connect (GTK_OBJECT (window3), "destroy", gtk_main_quit, NULL);
256 vbox3 = gtk_vbox_new (FALSE, 8);
257 gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8);
258 gtk_box_pack_start (GTK_BOX (vbox3),
259 gtk_label_new ("Jonathan and Kristian's list of words.\n\nA GtkTreeModelSort wrapping the GtkTreeModelSort of window 2"),
261 gtk_container_add (GTK_CONTAINER (window3), vbox3);
263 scrolled_window3 = gtk_scrolled_window_new (NULL, NULL);
264 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window3),
265 GTK_SHADOW_ETCHED_IN);
266 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window3),
267 GTK_POLICY_AUTOMATIC,
268 GTK_POLICY_AUTOMATIC);
269 gtk_box_pack_start (GTK_BOX (vbox3), scrolled_window3, TRUE, TRUE, 0);
272 tree_view3 = gtk_tree_view_new_with_model (ssmodel);
273 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view3), TRUE);
276 renderer = gtk_cell_renderer_text_new ();
277 column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
278 "text", WORD_COLUMN_1,
280 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
281 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
283 renderer = gtk_cell_renderer_text_new ();
284 column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
285 "text", WORD_COLUMN_2,
287 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
288 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
290 renderer = gtk_cell_renderer_text_new ();
291 column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
292 "text", WORD_COLUMN_3,
294 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
295 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
297 renderer = gtk_cell_renderer_text_new ();
298 column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
299 "text", WORD_COLUMN_4,
301 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
302 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column);
304 /* gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (ssmodel),
305 (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func,
307 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (ssmodel),
309 GTK_SORT_ASCENDING);*/
311 gtk_container_add (GTK_CONTAINER (scrolled_window3), tree_view3);
312 gtk_window_set_default_size (GTK_WINDOW (window3), 400, 400);
313 gtk_widget_show_all (window3);
316 for (i = 0; data[i].word_1 != NULL; i++)
320 gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
321 gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
322 WORD_COLUMN_1, data[i].word_1,
323 WORD_COLUMN_2, data[i].word_2,
324 WORD_COLUMN_3, data[i].word_3,
325 WORD_COLUMN_4, data[i].word_4,
327 for (k = 0; childdata[k].word_1 != NULL; k++)
329 GtkTreeIter child_iter;
331 gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
332 gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
333 WORD_COLUMN_1, childdata[k].word_1,
334 WORD_COLUMN_2, childdata[k].word_2,
335 WORD_COLUMN_3, childdata[k].word_3,
336 WORD_COLUMN_4, childdata[k].word_4,