2 * Copyright (C) 2003 Kristian Rietveld
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
26 * oh yes, this test app surely has a lot of ugly code
31 create_color_pixbuf (const char *color)
41 if (!gdk_color_parse (color, &col))
44 pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
48 rowstride = gdk_pixbuf_get_rowstride (pixbuf);
49 p = pixels = gdk_pixbuf_get_pixels (pixbuf);
51 num = gdk_pixbuf_get_width (pixbuf) *
52 gdk_pixbuf_get_height (pixbuf);
54 for (x = 0; x < num; x++) {
55 p[0] = col.red / 65535 * 255;
56 p[1] = col.green / 65535 * 255;
57 p[2] = col.blue / 65535 * 255;
65 create_combo_box_grid_demo (void)
70 GtkCellRenderer *cell = gtk_cell_renderer_pixbuf_new ();
73 store = gtk_list_store_new (1, GDK_TYPE_PIXBUF);
75 combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
76 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo),
78 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo),
79 cell, "pixbuf", 0, NULL);
80 gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (combo),
84 pixbuf = create_color_pixbuf ("red");
85 gtk_list_store_append (store, &iter);
86 gtk_list_store_set (store, &iter,
89 g_object_unref (pixbuf);
91 pixbuf = create_color_pixbuf ("green");
92 gtk_list_store_append (store, &iter);
93 gtk_list_store_set (store, &iter,
96 g_object_unref (pixbuf);
98 pixbuf = create_color_pixbuf ("blue");
99 gtk_list_store_append (store, &iter);
100 gtk_list_store_set (store, &iter,
103 g_object_unref (pixbuf);
106 pixbuf = create_color_pixbuf ("yellow");
107 gtk_list_store_append (store, &iter);
108 gtk_list_store_set (store, &iter,
111 g_object_unref (pixbuf);
113 pixbuf = create_color_pixbuf ("black");
114 gtk_list_store_append (store, &iter);
115 gtk_list_store_set (store, &iter,
118 g_object_unref (pixbuf);
120 pixbuf = create_color_pixbuf ("white");
121 gtk_list_store_append (store, &iter);
122 gtk_list_store_set (store, &iter,
125 g_object_unref (pixbuf);
128 pixbuf = create_color_pixbuf ("gray");
129 gtk_list_store_append (store, &iter);
130 gtk_list_store_set (store, &iter,
133 g_object_unref (pixbuf);
135 pixbuf = create_color_pixbuf ("snow");
136 gtk_list_store_append (store, &iter);
137 gtk_list_store_set (store, &iter,
140 g_object_unref (pixbuf);
142 pixbuf = create_color_pixbuf ("magenta");
143 gtk_list_store_append (store, &iter);
144 gtk_list_store_set (store, &iter,
147 g_object_unref (pixbuf);
149 g_object_unref (store);
151 gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
157 static GtkTreeModel *
158 create_tree_blaat (void)
162 GtkTreeIter iter, iter2;
165 cellview = gtk_cell_view_new ();
167 store = gtk_tree_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN);
169 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
170 GTK_ICON_SIZE_BUTTON, NULL);
171 gtk_tree_store_append (store, &iter, NULL);
172 gtk_tree_store_set (store, &iter,
174 1, "gtk-stock-dialog-warning",
178 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
179 GTK_ICON_SIZE_BUTTON, NULL);
180 gtk_tree_store_append (store, &iter2, &iter);
181 gtk_tree_store_set (store, &iter2,
187 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
188 GTK_ICON_SIZE_BUTTON, NULL);
189 gtk_tree_store_append (store, &iter2, &iter);
190 gtk_tree_store_set (store, &iter2,
196 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
197 GTK_ICON_SIZE_BUTTON, NULL);
198 gtk_tree_store_append (store, &iter, NULL);
199 gtk_tree_store_set (store, &iter,
201 1, "gtk-stock-clear",
206 gtk_tree_store_append (store, &iter, NULL);
207 gtk_tree_store_set (store, &iter,
214 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
215 GTK_ICON_SIZE_BUTTON, NULL);
216 gtk_tree_store_append (store, &iter, NULL);
217 gtk_tree_store_set (store, &iter,
223 gtk_widget_destroy (cellview);
225 return GTK_TREE_MODEL (store);
228 static GtkTreeModel *
229 create_empty_list_blaat (void)
236 cellview = gtk_cell_view_new ();
238 store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
240 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
241 GTK_ICON_SIZE_BUTTON, NULL);
242 gtk_list_store_append (store, &iter);
243 gtk_list_store_set (store, &iter,
245 1, "gtk-stock-dialog-warning",
248 gtk_widget_destroy (cellview);
250 return GTK_TREE_MODEL (store);
254 populate_list_blaat (gpointer data)
256 GtkComboBox *combo_box = GTK_COMBO_BOX (data);
262 store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));
264 gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter);
266 if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter))
269 cellview = gtk_cell_view_new ();
271 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
272 GTK_ICON_SIZE_BUTTON, NULL);
273 gtk_list_store_append (store, &iter);
274 gtk_list_store_set (store, &iter,
279 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
280 GTK_ICON_SIZE_BUTTON, NULL);
281 gtk_list_store_append (store, &iter);
282 gtk_list_store_set (store, &iter,
287 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
288 GTK_ICON_SIZE_BUTTON, NULL);
289 gtk_list_store_append (store, &iter);
290 gtk_list_store_set (store, &iter,
292 1, "gtk-stock-clear",
295 gtk_list_store_append (store, &iter);
296 gtk_list_store_set (store, &iter,
301 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
302 GTK_ICON_SIZE_BUTTON, NULL);
303 gtk_list_store_append (store, &iter);
304 gtk_list_store_set (store, &iter,
309 gtk_widget_destroy (cellview);
312 static GtkTreeModel *
313 create_list_blaat (void)
320 cellview = gtk_cell_view_new ();
322 store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
324 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
325 GTK_ICON_SIZE_BUTTON, NULL);
326 gtk_list_store_append (store, &iter);
327 gtk_list_store_set (store, &iter,
329 1, "gtk-stock-dialog-warning",
332 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
333 GTK_ICON_SIZE_BUTTON, NULL);
334 gtk_list_store_append (store, &iter);
335 gtk_list_store_set (store, &iter,
340 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
341 GTK_ICON_SIZE_BUTTON, NULL);
342 gtk_list_store_append (store, &iter);
343 gtk_list_store_set (store, &iter,
348 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
349 GTK_ICON_SIZE_BUTTON, NULL);
350 gtk_list_store_append (store, &iter);
351 gtk_list_store_set (store, &iter,
353 1, "gtk-stock-clear",
356 gtk_list_store_append (store, &iter);
357 gtk_list_store_set (store, &iter,
362 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
363 GTK_ICON_SIZE_BUTTON, NULL);
364 gtk_list_store_append (store, &iter);
365 gtk_list_store_set (store, &iter,
370 gtk_widget_destroy (cellview);
372 return GTK_TREE_MODEL (store);
376 static GtkTreeModel *
377 create_phylogenetic_tree (void)
379 GtkTreeIter iter, iter2, iter3;
382 store = gtk_tree_store_new (1,G_TYPE_STRING);
384 gtk_tree_store_append (store, &iter, NULL);
385 gtk_tree_store_set (store, &iter,
389 gtk_tree_store_append (store, &iter2, &iter);
390 gtk_tree_store_set (store, &iter2,
394 gtk_tree_store_append (store, &iter2, &iter);
395 gtk_tree_store_set (store, &iter2,
399 gtk_tree_store_append (store, &iter2, &iter);
400 gtk_tree_store_set (store, &iter2,
401 0, "Thermodesulfobacterium",
404 gtk_tree_store_append (store, &iter2, &iter);
405 gtk_tree_store_set (store, &iter2,
406 0, "Thermus-Deinococcus group",
409 gtk_tree_store_append (store, &iter2, &iter);
410 gtk_tree_store_set (store, &iter2,
414 gtk_tree_store_append (store, &iter2, &iter);
415 gtk_tree_store_set (store, &iter2,
419 gtk_tree_store_append (store, &iter2, &iter);
420 gtk_tree_store_set (store, &iter2,
424 gtk_tree_store_append (store, &iter2, &iter);
425 gtk_tree_store_set (store, &iter2,
426 0, "Leptospirillium Group",
429 gtk_tree_store_append (store, &iter2, &iter);
430 gtk_tree_store_set (store, &iter2,
433 gtk_tree_store_append (store, &iter2, &iter);
434 gtk_tree_store_set (store, &iter2,
435 0, "Chlorobium-Flavobacteria group",
437 gtk_tree_store_append (store, &iter2, &iter);
438 gtk_tree_store_set (store, &iter2,
439 0, "Chlamydia-Verrucomicrobia group",
442 gtk_tree_store_append (store, &iter3, &iter2);
443 gtk_tree_store_set (store, &iter3,
444 0, "Verrucomicrobia",
446 gtk_tree_store_append (store, &iter3, &iter2);
447 gtk_tree_store_set (store, &iter3,
451 gtk_tree_store_append (store, &iter2, &iter);
452 gtk_tree_store_set (store, &iter2,
457 gtk_tree_store_append (store, &iter2, &iter);
458 gtk_tree_store_set (store, &iter2,
459 0, "Fibrobacter group",
463 gtk_tree_store_append (store, &iter2, &iter);
464 gtk_tree_store_set (store, &iter2,
469 gtk_tree_store_append (store, &iter2, &iter);
470 gtk_tree_store_set (store, &iter2,
475 gtk_tree_store_append (store, &iter3, &iter2);
476 gtk_tree_store_set (store, &iter3,
481 gtk_tree_store_append (store, &iter3, &iter2);
482 gtk_tree_store_set (store, &iter3,
487 gtk_tree_store_append (store, &iter3, &iter2);
488 gtk_tree_store_set (store, &iter3,
493 gtk_tree_store_append (store, &iter3, &iter2);
494 gtk_tree_store_set (store, &iter3,
499 gtk_tree_store_append (store, &iter3, &iter2);
500 gtk_tree_store_set (store, &iter3,
505 gtk_tree_store_append (store, &iter, NULL);
506 gtk_tree_store_set (store, &iter,
511 gtk_tree_store_append (store, &iter2, &iter);
512 gtk_tree_store_set (store, &iter2,
517 gtk_tree_store_append (store, &iter2, &iter);
518 gtk_tree_store_set (store, &iter2,
523 gtk_tree_store_append (store, &iter2, &iter);
524 gtk_tree_store_set (store, &iter2,
529 gtk_tree_store_append (store, &iter2, &iter);
530 gtk_tree_store_set (store, &iter2,
535 gtk_tree_store_append (store, &iter2, &iter);
536 gtk_tree_store_set (store, &iter2,
541 gtk_tree_store_append (store, &iter2, &iter);
542 gtk_tree_store_set (store, &iter2,
547 gtk_tree_store_append (store, &iter2, &iter);
548 gtk_tree_store_set (store, &iter2,
553 gtk_tree_store_append (store, &iter2, &iter);
554 gtk_tree_store_set (store, &iter2,
555 0, "choanoflagellates",
559 gtk_tree_store_append (store, &iter2, &iter);
560 gtk_tree_store_set (store, &iter2,
565 gtk_tree_store_append (store, &iter2, &iter);
566 gtk_tree_store_set (store, &iter2,
571 gtk_tree_store_append (store, &iter2, &iter);
572 gtk_tree_store_set (store, &iter2,
577 gtk_tree_store_append (store, &iter2, &iter);
578 gtk_tree_store_set (store, &iter2,
583 gtk_tree_store_append (store, &iter2, &iter);
584 gtk_tree_store_set (store, &iter2,
589 gtk_tree_store_append (store, &iter2, &iter);
590 gtk_tree_store_set (store, &iter2,
595 gtk_tree_store_append (store, &iter2, &iter);
596 gtk_tree_store_set (store, &iter2,
597 0, "crytomonads et al",
601 gtk_tree_store_append (store, &iter, NULL);
602 gtk_tree_store_set (store, &iter,
607 gtk_tree_store_append (store, &iter2, &iter);
608 gtk_tree_store_set (store, &iter2,
613 gtk_tree_store_append (store, &iter2, &iter);
614 gtk_tree_store_set (store, &iter2,
619 gtk_tree_store_append (store, &iter2, &iter);
620 gtk_tree_store_set (store, &iter2,
624 return GTK_TREE_MODEL (store);
629 static GtkTreeModel *
630 create_capital_tree (void)
632 GtkTreeIter iter, iter2;
635 store = gtk_tree_store_new (1, G_TYPE_STRING);
637 gtk_tree_store_append (store, &iter, NULL);
638 gtk_tree_store_set (store, &iter, 0, "A - B", -1);
640 gtk_tree_store_append (store, &iter2, &iter);
641 gtk_tree_store_set (store, &iter2, 0, "Albany", -1);
643 gtk_tree_store_append (store, &iter2, &iter);
644 gtk_tree_store_set (store, &iter2, 0, "Annapolis", -1);
646 gtk_tree_store_append (store, &iter2, &iter);
647 gtk_tree_store_set (store, &iter2, 0, "Atlanta", -1);
649 gtk_tree_store_append (store, &iter2, &iter);
650 gtk_tree_store_set (store, &iter2, 0, "Augusta", -1);
652 gtk_tree_store_append (store, &iter2, &iter);
653 gtk_tree_store_set (store, &iter2, 0, "Austin", -1);
655 gtk_tree_store_append (store, &iter2, &iter);
656 gtk_tree_store_set (store, &iter2, 0, "Baton Rouge", -1);
658 gtk_tree_store_append (store, &iter2, &iter);
659 gtk_tree_store_set (store, &iter2, 0, "Bismarck", -1);
661 gtk_tree_store_append (store, &iter2, &iter);
662 gtk_tree_store_set (store, &iter2, 0, "Boise", -1);
664 gtk_tree_store_append (store, &iter2, &iter);
665 gtk_tree_store_set (store, &iter2, 0, "Boston", -1);
667 gtk_tree_store_append (store, &iter, NULL);
668 gtk_tree_store_set (store, &iter, 0, "C - D", -1);
670 gtk_tree_store_append (store, &iter2, &iter);
671 gtk_tree_store_set (store, &iter2, 0, "Carson City", -1);
673 gtk_tree_store_append (store, &iter2, &iter);
674 gtk_tree_store_set (store, &iter2, 0, "Charleston", -1);
676 gtk_tree_store_append (store, &iter2, &iter);
677 gtk_tree_store_set (store, &iter2, 0, "Cheyenne", -1);
679 gtk_tree_store_append (store, &iter2, &iter);
680 gtk_tree_store_set (store, &iter2, 0, "Columbia", -1);
682 gtk_tree_store_append (store, &iter2, &iter);
683 gtk_tree_store_set (store, &iter2, 0, "Columbus", -1);
685 gtk_tree_store_append (store, &iter2, &iter);
686 gtk_tree_store_set (store, &iter2, 0, "Concord", -1);
688 gtk_tree_store_append (store, &iter2, &iter);
689 gtk_tree_store_set (store, &iter2, 0, "Denver", -1);
691 gtk_tree_store_append (store, &iter2, &iter);
692 gtk_tree_store_set (store, &iter2, 0, "Des Moines", -1);
694 gtk_tree_store_append (store, &iter2, &iter);
695 gtk_tree_store_set (store, &iter2, 0, "Dover", -1);
698 gtk_tree_store_append (store, &iter, NULL);
699 gtk_tree_store_set (store, &iter, 0, "E - J", -1);
701 gtk_tree_store_append (store, &iter2, &iter);
702 gtk_tree_store_set (store, &iter2, 0, "Frankfort", -1);
704 gtk_tree_store_append (store, &iter2, &iter);
705 gtk_tree_store_set (store, &iter2, 0, "Harrisburg", -1);
707 gtk_tree_store_append (store, &iter2, &iter);
708 gtk_tree_store_set (store, &iter2, 0, "Hartford", -1);
710 gtk_tree_store_append (store, &iter2, &iter);
711 gtk_tree_store_set (store, &iter2, 0, "Helena", -1);
713 gtk_tree_store_append (store, &iter2, &iter);
714 gtk_tree_store_set (store, &iter2, 0, "Honolulu", -1);
716 gtk_tree_store_append (store, &iter2, &iter);
717 gtk_tree_store_set (store, &iter2, 0, "Indianapolis", -1);
719 gtk_tree_store_append (store, &iter2, &iter);
720 gtk_tree_store_set (store, &iter2, 0, "Jackson", -1);
722 gtk_tree_store_append (store, &iter2, &iter);
723 gtk_tree_store_set (store, &iter2, 0, "Jefferson City", -1);
725 gtk_tree_store_append (store, &iter2, &iter);
726 gtk_tree_store_set (store, &iter2, 0, "Juneau", -1);
729 gtk_tree_store_append (store, &iter, NULL);
730 gtk_tree_store_set (store, &iter, 0, "K - O", -1);
732 gtk_tree_store_append (store, &iter2, &iter);
733 gtk_tree_store_set (store, &iter2, 0, "Lansing", -1);
735 gtk_tree_store_append (store, &iter2, &iter);
736 gtk_tree_store_set (store, &iter2, 0, "Lincoln", -1);
738 gtk_tree_store_append (store, &iter2, &iter);
739 gtk_tree_store_set (store, &iter2, 0, "Little Rock", -1);
741 gtk_tree_store_append (store, &iter2, &iter);
742 gtk_tree_store_set (store, &iter2, 0, "Madison", -1);
744 gtk_tree_store_append (store, &iter2, &iter);
745 gtk_tree_store_set (store, &iter2, 0, "Montgomery", -1);
747 gtk_tree_store_append (store, &iter2, &iter);
748 gtk_tree_store_set (store, &iter2, 0, "Montpelier", -1);
750 gtk_tree_store_append (store, &iter2, &iter);
751 gtk_tree_store_set (store, &iter2, 0, "Nashville", -1);
753 gtk_tree_store_append (store, &iter2, &iter);
754 gtk_tree_store_set (store, &iter2, 0, "Oklahoma City", -1);
756 gtk_tree_store_append (store, &iter2, &iter);
757 gtk_tree_store_set (store, &iter2, 0, "Olympia", -1);
760 gtk_tree_store_append (store, &iter, NULL);
761 gtk_tree_store_set (store, &iter, 0, "P - S", -1);
763 gtk_tree_store_append (store, &iter2, &iter);
764 gtk_tree_store_set (store, &iter2, 0, "Phoenix", -1);
766 gtk_tree_store_append (store, &iter2, &iter);
767 gtk_tree_store_set (store, &iter2, 0, "Pierre", -1);
769 gtk_tree_store_append (store, &iter2, &iter);
770 gtk_tree_store_set (store, &iter2, 0, "Providence", -1);
772 gtk_tree_store_append (store, &iter2, &iter);
773 gtk_tree_store_set (store, &iter2, 0, "Raleigh", -1);
775 gtk_tree_store_append (store, &iter2, &iter);
776 gtk_tree_store_set (store, &iter2, 0, "Richmond", -1);
778 gtk_tree_store_append (store, &iter2, &iter);
779 gtk_tree_store_set (store, &iter2, 0, "Sacramento", -1);
781 gtk_tree_store_append (store, &iter2, &iter);
782 gtk_tree_store_set (store, &iter2, 0, "Salem", -1);
784 gtk_tree_store_append (store, &iter2, &iter);
785 gtk_tree_store_set (store, &iter2, 0, "Salt Lake City", -1);
787 gtk_tree_store_append (store, &iter2, &iter);
788 gtk_tree_store_set (store, &iter2, 0, "Santa Fe", -1);
790 gtk_tree_store_append (store, &iter2, &iter);
791 gtk_tree_store_set (store, &iter2, 0, "Springfield", -1);
793 gtk_tree_store_append (store, &iter2, &iter);
794 gtk_tree_store_set (store, &iter2, 0, "St. Paul", -1);
797 gtk_tree_store_append (store, &iter, NULL);
798 gtk_tree_store_set (store, &iter, 0, "T - Z", -1);
800 gtk_tree_store_append (store, &iter2, &iter);
801 gtk_tree_store_set (store, &iter2, 0, "Tallahassee", -1);
803 gtk_tree_store_append (store, &iter2, &iter);
804 gtk_tree_store_set (store, &iter2, 0, "Topeka", -1);
806 gtk_tree_store_append (store, &iter2, &iter);
807 gtk_tree_store_set (store, &iter2, 0, "Trenton", -1);
809 return GTK_TREE_MODEL (store);
813 capital_sensitive (GtkCellLayout *cell_layout,
814 GtkCellRenderer *cell,
815 GtkTreeModel *tree_model,
821 sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
823 g_object_set (cell, "sensitive", sensitive, NULL);
827 capital_animation (gpointer data)
829 static gint insert_count = 0;
830 GtkTreeModel *model = GTK_TREE_MODEL (data);
832 GtkTreeIter iter, parent;
834 switch (insert_count % 8)
837 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, NULL, 0);
838 gtk_tree_store_set (GTK_TREE_STORE (model),
844 path = gtk_tree_path_new_from_indices (0, -1);
845 gtk_tree_model_get_iter (model, &parent, path);
846 gtk_tree_path_free (path);
847 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 0);
848 gtk_tree_store_set (GTK_TREE_STORE (model),
854 path = gtk_tree_path_new_from_indices (0, -1);
855 gtk_tree_model_get_iter (model, &parent, path);
856 gtk_tree_path_free (path);
857 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 1);
858 gtk_tree_store_set (GTK_TREE_STORE (model),
864 path = gtk_tree_path_new_from_indices (0, -1);
865 gtk_tree_model_get_iter (model, &parent, path);
866 gtk_tree_path_free (path);
867 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 2);
868 gtk_tree_store_set (GTK_TREE_STORE (model),
874 path = gtk_tree_path_new_from_indices (0, 2, -1);
875 gtk_tree_model_get_iter (model, &iter, path);
876 gtk_tree_path_free (path);
877 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
881 path = gtk_tree_path_new_from_indices (0, 1, -1);
882 gtk_tree_model_get_iter (model, &iter, path);
883 gtk_tree_path_free (path);
884 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
888 path = gtk_tree_path_new_from_indices (0, 0, -1);
889 gtk_tree_model_get_iter (model, &iter, path);
890 gtk_tree_path_free (path);
891 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
895 path = gtk_tree_path_new_from_indices (0, -1);
896 gtk_tree_model_get_iter (model, &iter, path);
897 gtk_tree_path_free (path);
898 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
910 setup_combo_entry (GtkWidget *entry_box)
912 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
914 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
916 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
917 "la la la dum de dum la la la la la la boom de da la la");
918 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
920 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
922 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
924 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
926 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
928 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
930 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
932 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
934 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
936 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
938 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
940 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
942 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
944 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
946 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
948 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
950 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
952 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
954 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
956 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
958 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
960 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
965 set_sensitive (GtkCellLayout *cell_layout,
966 GtkCellRenderer *cell,
967 GtkTreeModel *tree_model,
975 path = gtk_tree_model_get_path (tree_model, iter);
976 indices = gtk_tree_path_get_indices (path);
977 sensitive = indices[0] != 1;
978 gtk_tree_path_free (path);
980 g_object_set (cell, "sensitive", sensitive, NULL);
984 is_separator (GtkTreeModel *model,
991 path = gtk_tree_model_get_path (model, iter);
992 result = gtk_tree_path_get_indices (path)[0] == 4;
993 gtk_tree_path_free (path);
1000 displayed_row_changed (GtkComboBox *combo,
1006 row = gtk_combo_box_get_active (combo);
1007 path = gtk_tree_path_new_from_indices (row, -1);
1008 gtk_cell_view_set_displayed_row (cell, path);
1009 gtk_tree_path_free (path);
1013 main (int argc, char **argv)
1015 GtkWidget *window, *cellview, *mainbox;
1016 GtkWidget *combobox, *comboboxtext, *comboboxgrid;
1017 GtkWidget *tmp, *boom;
1018 GtkCellRenderer *renderer;
1020 GtkTreeModel *model;
1025 gtk_init (&argc, &argv);
1027 if (g_getenv ("RTL"))
1028 gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
1030 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1031 gtk_container_set_border_width (GTK_CONTAINER (window), 5);
1032 g_signal_connect (window, "destroy", gtk_main_quit, NULL);
1034 mainbox = gtk_vbox_new (FALSE, 2);
1035 gtk_container_add (GTK_CONTAINER (window), mainbox);
1038 tmp = gtk_frame_new ("GtkCellView");
1039 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1041 boom = gtk_vbox_new (FALSE, 0);
1042 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1043 gtk_container_add (GTK_CONTAINER (tmp), boom);
1045 cellview = gtk_cell_view_new ();
1046 renderer = gtk_cell_renderer_pixbuf_new ();
1047 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
1048 GTK_ICON_SIZE_BUTTON, NULL);
1050 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
1053 g_object_set (renderer, "pixbuf", pixbuf, NULL);
1055 renderer = gtk_cell_renderer_text_new ();
1056 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
1059 g_object_set (renderer, "text", "la la la", NULL);
1060 gtk_container_add (GTK_CONTAINER (boom), cellview);
1062 /* GtkComboBox list */
1063 tmp = gtk_frame_new ("GtkComboBox (list)");
1064 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1066 boom = gtk_vbox_new (FALSE, 0);
1067 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1068 gtk_container_add (GTK_CONTAINER (tmp), boom);
1070 model = create_list_blaat ();
1071 combobox = gtk_combo_box_new_with_model (model);
1072 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1073 g_object_unref (model);
1074 gtk_container_add (GTK_CONTAINER (boom), combobox);
1076 renderer = gtk_cell_renderer_pixbuf_new ();
1077 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1080 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1083 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1088 renderer = gtk_cell_renderer_text_new ();
1089 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1092 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1095 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1099 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1100 is_separator, NULL, NULL);
1102 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1104 /* GtkComboBox dynamic list */
1105 tmp = gtk_frame_new ("GtkComboBox (dynamic list)");
1106 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1108 boom = gtk_vbox_new (FALSE, 0);
1109 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1110 gtk_container_add (GTK_CONTAINER (tmp), boom);
1112 model = create_empty_list_blaat ();
1113 combobox = gtk_combo_box_new_with_model (model);
1114 g_signal_connect (combobox, "notify::popup-shown",
1115 G_CALLBACK (populate_list_blaat), combobox);
1117 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1118 g_object_unref (model);
1119 gtk_container_add (GTK_CONTAINER (boom), combobox);
1121 renderer = gtk_cell_renderer_pixbuf_new ();
1122 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1125 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1128 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1133 renderer = gtk_cell_renderer_text_new ();
1134 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1137 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1140 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1144 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1145 is_separator, NULL, NULL);
1147 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1148 gtk_combo_box_set_title (GTK_COMBO_BOX (combobox), "Dynamic list");
1150 /* GtkComboBox custom entry */
1151 tmp = gtk_frame_new ("GtkComboBox (custom)");
1152 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1154 boom = gtk_vbox_new (FALSE, 0);
1155 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1156 gtk_container_add (GTK_CONTAINER (tmp), boom);
1158 model = create_list_blaat ();
1159 combobox = gtk_combo_box_new_with_model (model);
1160 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1161 g_object_unref (model);
1162 gtk_container_add (GTK_CONTAINER (boom), combobox);
1164 renderer = gtk_cell_renderer_pixbuf_new ();
1165 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1168 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1171 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1176 renderer = gtk_cell_renderer_text_new ();
1177 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1180 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1183 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1187 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1188 is_separator, NULL, NULL);
1190 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1192 tmp = gtk_cell_view_new ();
1193 gtk_widget_show (tmp);
1194 gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model);
1196 renderer = gtk_cell_renderer_text_new ();
1197 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), renderer, TRUE);
1198 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), renderer,
1202 color.blue = 0xffff;
1204 gtk_cell_view_set_background_color (GTK_CELL_VIEW (tmp), &color);
1205 displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp));
1206 g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp);
1208 gtk_container_add (GTK_CONTAINER (combobox), tmp);
1210 /* GtkComboBox tree */
1211 tmp = gtk_frame_new ("GtkComboBox (tree)");
1212 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1214 boom = gtk_vbox_new (FALSE, 0);
1215 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1216 gtk_container_add (GTK_CONTAINER (tmp), boom);
1218 model = create_tree_blaat ();
1219 combobox = gtk_combo_box_new_with_model (model);
1220 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1221 g_object_unref (model);
1222 gtk_container_add (GTK_CONTAINER (boom), combobox);
1224 renderer = gtk_cell_renderer_pixbuf_new ();
1225 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1228 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1231 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1236 renderer = gtk_cell_renderer_text_new ();
1237 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1240 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1243 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1247 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1248 is_separator, NULL, NULL);
1250 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1252 g_timeout_add (1000, (GSourceFunc) animation_timer, model);
1255 /* GtkComboBox (grid mode) */
1256 tmp = gtk_frame_new ("GtkComboBox (grid mode)");
1257 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1259 boom = gtk_vbox_new (FALSE, 0);
1260 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1261 gtk_container_add (GTK_CONTAINER (tmp), boom);
1263 comboboxgrid = create_combo_box_grid_demo ();
1264 gtk_box_pack_start (GTK_BOX (boom), comboboxgrid, FALSE, FALSE, 0);
1267 /* GtkComboBoxEntry */
1268 tmp = gtk_frame_new ("GtkComboBoxEntry");
1269 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1271 boom = gtk_vbox_new (FALSE, 0);
1272 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1273 gtk_container_add (GTK_CONTAINER (tmp), boom);
1275 comboboxtext = gtk_combo_box_entry_new_text ();
1276 setup_combo_entry (comboboxtext);
1277 gtk_container_add (GTK_CONTAINER (boom), comboboxtext);
1280 /* Phylogenetic tree */
1281 tmp = gtk_frame_new ("What are you ?");
1282 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1284 boom = gtk_vbox_new (FALSE, 0);
1285 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1286 gtk_container_add (GTK_CONTAINER (tmp), boom);
1288 model = create_phylogenetic_tree ();
1289 combobox = gtk_combo_box_new_with_model (model);
1290 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1291 g_object_unref (model);
1292 gtk_container_add (GTK_CONTAINER (boom), combobox);
1294 renderer = gtk_cell_renderer_text_new ();
1295 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1298 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1302 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1306 tmp = gtk_frame_new ("Where are you ?");
1307 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1309 boom = gtk_vbox_new (FALSE, 0);
1310 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1311 gtk_container_add (GTK_CONTAINER (tmp), boom);
1313 model = create_capital_tree ();
1314 combobox = gtk_combo_box_new_with_model (model);
1315 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1316 g_object_unref (model);
1317 gtk_container_add (GTK_CONTAINER (boom), combobox);
1318 renderer = gtk_cell_renderer_text_new ();
1319 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1322 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1325 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1329 path = gtk_tree_path_new_from_indices (0, 8, -1);
1330 gtk_tree_model_get_iter (model, &iter, path);
1331 gtk_tree_path_free (path);
1332 gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);
1335 gdk_threads_add_timeout (1000, (GSourceFunc) capital_animation, model);
1338 gtk_widget_show_all (window);