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)
69 GtkCellRenderer *cell = gtk_cell_renderer_pixbuf_new ();
72 store = gtk_list_store_new (1, GDK_TYPE_PIXBUF);
74 combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
75 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo),
77 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo),
78 cell, "pixbuf", 0, NULL);
79 gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (combo),
83 gtk_list_store_append (store, &iter);
84 gtk_list_store_set (store, &iter,
85 0, create_color_pixbuf ("red"),
88 gtk_list_store_append (store, &iter);
89 gtk_list_store_set (store, &iter,
90 0, create_color_pixbuf ("green"),
93 gtk_list_store_append (store, &iter);
94 gtk_list_store_set (store, &iter,
95 0, create_color_pixbuf ("blue"),
99 gtk_list_store_append (store, &iter);
100 gtk_list_store_set (store, &iter,
101 0, create_color_pixbuf ("yellow"),
104 gtk_list_store_append (store, &iter);
105 gtk_list_store_set (store, &iter,
106 0, create_color_pixbuf ("black"),
109 gtk_list_store_append (store, &iter);
110 gtk_list_store_set (store, &iter,
111 0, create_color_pixbuf ("white"),
115 gtk_list_store_append (store, &iter);
116 gtk_list_store_set (store, &iter,
117 0, create_color_pixbuf ("gray"),
120 gtk_list_store_append (store, &iter);
121 gtk_list_store_set (store, &iter,
122 0, create_color_pixbuf ("snow"),
125 gtk_list_store_append (store, &iter);
126 gtk_list_store_set (store, &iter,
127 0, create_color_pixbuf ("magenta"),
130 g_object_unref (store);
132 gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
138 static GtkTreeModel *
139 create_tree_blaat (void)
143 GtkTreeIter iter, iter2;
146 cellview = gtk_cell_view_new ();
148 store = gtk_tree_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN);
150 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
151 GTK_ICON_SIZE_BUTTON, NULL);
152 gtk_tree_store_append (store, &iter, NULL);
153 gtk_tree_store_set (store, &iter,
155 1, "gtk-stock-dialog-warning",
159 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
160 GTK_ICON_SIZE_BUTTON, NULL);
161 gtk_tree_store_append (store, &iter2, &iter);
162 gtk_tree_store_set (store, &iter2,
168 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
169 GTK_ICON_SIZE_BUTTON, NULL);
170 gtk_tree_store_append (store, &iter2, &iter);
171 gtk_tree_store_set (store, &iter2,
177 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
178 GTK_ICON_SIZE_BUTTON, NULL);
179 gtk_tree_store_append (store, &iter, NULL);
180 gtk_tree_store_set (store, &iter,
182 1, "gtk-stock-clear",
187 gtk_tree_store_append (store, &iter, NULL);
188 gtk_tree_store_set (store, &iter,
195 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
196 GTK_ICON_SIZE_BUTTON, NULL);
197 gtk_tree_store_append (store, &iter, NULL);
198 gtk_tree_store_set (store, &iter,
204 gtk_widget_destroy (cellview);
206 return GTK_TREE_MODEL (store);
209 static GtkTreeModel *
210 create_empty_list_blaat (void)
217 cellview = gtk_cell_view_new ();
219 store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
221 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
222 GTK_ICON_SIZE_BUTTON, NULL);
223 gtk_list_store_append (store, &iter);
224 gtk_list_store_set (store, &iter,
226 1, "gtk-stock-dialog-warning",
229 gtk_widget_destroy (cellview);
231 return GTK_TREE_MODEL (store);
235 populate_list_blaat (gpointer data)
237 GtkComboBox *combo_box = GTK_COMBO_BOX (data);
243 store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));
245 gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter);
247 if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter))
250 cellview = gtk_cell_view_new ();
252 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
253 GTK_ICON_SIZE_BUTTON, NULL);
254 gtk_list_store_append (store, &iter);
255 gtk_list_store_set (store, &iter,
260 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
261 GTK_ICON_SIZE_BUTTON, NULL);
262 gtk_list_store_append (store, &iter);
263 gtk_list_store_set (store, &iter,
268 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
269 GTK_ICON_SIZE_BUTTON, NULL);
270 gtk_list_store_append (store, &iter);
271 gtk_list_store_set (store, &iter,
273 1, "gtk-stock-clear",
276 gtk_list_store_append (store, &iter);
277 gtk_list_store_set (store, &iter,
282 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
283 GTK_ICON_SIZE_BUTTON, NULL);
284 gtk_list_store_append (store, &iter);
285 gtk_list_store_set (store, &iter,
290 gtk_widget_destroy (cellview);
293 static GtkTreeModel *
294 create_list_blaat (void)
301 cellview = gtk_cell_view_new ();
303 store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
305 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
306 GTK_ICON_SIZE_BUTTON, NULL);
307 gtk_list_store_append (store, &iter);
308 gtk_list_store_set (store, &iter,
310 1, "gtk-stock-dialog-warning",
313 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
314 GTK_ICON_SIZE_BUTTON, NULL);
315 gtk_list_store_append (store, &iter);
316 gtk_list_store_set (store, &iter,
321 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
322 GTK_ICON_SIZE_BUTTON, NULL);
323 gtk_list_store_append (store, &iter);
324 gtk_list_store_set (store, &iter,
329 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
330 GTK_ICON_SIZE_BUTTON, NULL);
331 gtk_list_store_append (store, &iter);
332 gtk_list_store_set (store, &iter,
334 1, "gtk-stock-clear",
337 gtk_list_store_append (store, &iter);
338 gtk_list_store_set (store, &iter,
343 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
344 GTK_ICON_SIZE_BUTTON, NULL);
345 gtk_list_store_append (store, &iter);
346 gtk_list_store_set (store, &iter,
351 gtk_widget_destroy (cellview);
353 return GTK_TREE_MODEL (store);
357 static GtkTreeModel *
358 create_phylogenetic_tree (void)
360 GtkTreeIter iter, iter2, iter3;
363 store = gtk_tree_store_new (1,G_TYPE_STRING);
365 gtk_tree_store_append (store, &iter, NULL);
366 gtk_tree_store_set (store, &iter,
370 gtk_tree_store_append (store, &iter2, &iter);
371 gtk_tree_store_set (store, &iter2,
375 gtk_tree_store_append (store, &iter2, &iter);
376 gtk_tree_store_set (store, &iter2,
380 gtk_tree_store_append (store, &iter2, &iter);
381 gtk_tree_store_set (store, &iter2,
382 0, "Thermodesulfobacterium",
385 gtk_tree_store_append (store, &iter2, &iter);
386 gtk_tree_store_set (store, &iter2,
387 0, "Thermus-Deinococcus group",
390 gtk_tree_store_append (store, &iter2, &iter);
391 gtk_tree_store_set (store, &iter2,
395 gtk_tree_store_append (store, &iter2, &iter);
396 gtk_tree_store_set (store, &iter2,
400 gtk_tree_store_append (store, &iter2, &iter);
401 gtk_tree_store_set (store, &iter2,
405 gtk_tree_store_append (store, &iter2, &iter);
406 gtk_tree_store_set (store, &iter2,
407 0, "Leptospirillium Group",
410 gtk_tree_store_append (store, &iter2, &iter);
411 gtk_tree_store_set (store, &iter2,
414 gtk_tree_store_append (store, &iter2, &iter);
415 gtk_tree_store_set (store, &iter2,
416 0, "Chlorobium-Flavobacteria group",
418 gtk_tree_store_append (store, &iter2, &iter);
419 gtk_tree_store_set (store, &iter2,
420 0, "Chlamydia-Verrucomicrobia group",
423 gtk_tree_store_append (store, &iter3, &iter2);
424 gtk_tree_store_set (store, &iter3,
425 0, "Verrucomicrobia",
427 gtk_tree_store_append (store, &iter3, &iter2);
428 gtk_tree_store_set (store, &iter3,
432 gtk_tree_store_append (store, &iter2, &iter);
433 gtk_tree_store_set (store, &iter2,
438 gtk_tree_store_append (store, &iter2, &iter);
439 gtk_tree_store_set (store, &iter2,
440 0, "Fibrobacter group",
444 gtk_tree_store_append (store, &iter2, &iter);
445 gtk_tree_store_set (store, &iter2,
450 gtk_tree_store_append (store, &iter2, &iter);
451 gtk_tree_store_set (store, &iter2,
456 gtk_tree_store_append (store, &iter3, &iter2);
457 gtk_tree_store_set (store, &iter3,
462 gtk_tree_store_append (store, &iter3, &iter2);
463 gtk_tree_store_set (store, &iter3,
468 gtk_tree_store_append (store, &iter3, &iter2);
469 gtk_tree_store_set (store, &iter3,
474 gtk_tree_store_append (store, &iter3, &iter2);
475 gtk_tree_store_set (store, &iter3,
480 gtk_tree_store_append (store, &iter3, &iter2);
481 gtk_tree_store_set (store, &iter3,
486 gtk_tree_store_append (store, &iter, NULL);
487 gtk_tree_store_set (store, &iter,
492 gtk_tree_store_append (store, &iter2, &iter);
493 gtk_tree_store_set (store, &iter2,
498 gtk_tree_store_append (store, &iter2, &iter);
499 gtk_tree_store_set (store, &iter2,
504 gtk_tree_store_append (store, &iter2, &iter);
505 gtk_tree_store_set (store, &iter2,
510 gtk_tree_store_append (store, &iter2, &iter);
511 gtk_tree_store_set (store, &iter2,
516 gtk_tree_store_append (store, &iter2, &iter);
517 gtk_tree_store_set (store, &iter2,
522 gtk_tree_store_append (store, &iter2, &iter);
523 gtk_tree_store_set (store, &iter2,
528 gtk_tree_store_append (store, &iter2, &iter);
529 gtk_tree_store_set (store, &iter2,
534 gtk_tree_store_append (store, &iter2, &iter);
535 gtk_tree_store_set (store, &iter2,
536 0, "choanoflagellates",
540 gtk_tree_store_append (store, &iter2, &iter);
541 gtk_tree_store_set (store, &iter2,
546 gtk_tree_store_append (store, &iter2, &iter);
547 gtk_tree_store_set (store, &iter2,
552 gtk_tree_store_append (store, &iter2, &iter);
553 gtk_tree_store_set (store, &iter2,
558 gtk_tree_store_append (store, &iter2, &iter);
559 gtk_tree_store_set (store, &iter2,
564 gtk_tree_store_append (store, &iter2, &iter);
565 gtk_tree_store_set (store, &iter2,
570 gtk_tree_store_append (store, &iter2, &iter);
571 gtk_tree_store_set (store, &iter2,
576 gtk_tree_store_append (store, &iter2, &iter);
577 gtk_tree_store_set (store, &iter2,
578 0, "crytomonads et al",
582 gtk_tree_store_append (store, &iter, NULL);
583 gtk_tree_store_set (store, &iter,
588 gtk_tree_store_append (store, &iter2, &iter);
589 gtk_tree_store_set (store, &iter2,
594 gtk_tree_store_append (store, &iter2, &iter);
595 gtk_tree_store_set (store, &iter2,
600 gtk_tree_store_append (store, &iter2, &iter);
601 gtk_tree_store_set (store, &iter2,
605 return GTK_TREE_MODEL (store);
610 static GtkTreeModel *
611 create_capital_tree (void)
613 GtkTreeIter iter, iter2;
616 store = gtk_tree_store_new (1, G_TYPE_STRING);
618 gtk_tree_store_append (store, &iter, NULL);
619 gtk_tree_store_set (store, &iter, 0, "A - B", -1);
621 gtk_tree_store_append (store, &iter2, &iter);
622 gtk_tree_store_set (store, &iter2, 0, "Albany", -1);
624 gtk_tree_store_append (store, &iter2, &iter);
625 gtk_tree_store_set (store, &iter2, 0, "Annapolis", -1);
627 gtk_tree_store_append (store, &iter2, &iter);
628 gtk_tree_store_set (store, &iter2, 0, "Atlanta", -1);
630 gtk_tree_store_append (store, &iter2, &iter);
631 gtk_tree_store_set (store, &iter2, 0, "Augusta", -1);
633 gtk_tree_store_append (store, &iter2, &iter);
634 gtk_tree_store_set (store, &iter2, 0, "Austin", -1);
636 gtk_tree_store_append (store, &iter2, &iter);
637 gtk_tree_store_set (store, &iter2, 0, "Baton Rouge", -1);
639 gtk_tree_store_append (store, &iter2, &iter);
640 gtk_tree_store_set (store, &iter2, 0, "Bismarck", -1);
642 gtk_tree_store_append (store, &iter2, &iter);
643 gtk_tree_store_set (store, &iter2, 0, "Boise", -1);
645 gtk_tree_store_append (store, &iter2, &iter);
646 gtk_tree_store_set (store, &iter2, 0, "Boston", -1);
648 gtk_tree_store_append (store, &iter, NULL);
649 gtk_tree_store_set (store, &iter, 0, "C - D", -1);
651 gtk_tree_store_append (store, &iter2, &iter);
652 gtk_tree_store_set (store, &iter2, 0, "Carson City", -1);
654 gtk_tree_store_append (store, &iter2, &iter);
655 gtk_tree_store_set (store, &iter2, 0, "Charleston", -1);
657 gtk_tree_store_append (store, &iter2, &iter);
658 gtk_tree_store_set (store, &iter2, 0, "Cheyenne", -1);
660 gtk_tree_store_append (store, &iter2, &iter);
661 gtk_tree_store_set (store, &iter2, 0, "Columbia", -1);
663 gtk_tree_store_append (store, &iter2, &iter);
664 gtk_tree_store_set (store, &iter2, 0, "Columbus", -1);
666 gtk_tree_store_append (store, &iter2, &iter);
667 gtk_tree_store_set (store, &iter2, 0, "Concord", -1);
669 gtk_tree_store_append (store, &iter2, &iter);
670 gtk_tree_store_set (store, &iter2, 0, "Denver", -1);
672 gtk_tree_store_append (store, &iter2, &iter);
673 gtk_tree_store_set (store, &iter2, 0, "Des Moines", -1);
675 gtk_tree_store_append (store, &iter2, &iter);
676 gtk_tree_store_set (store, &iter2, 0, "Dover", -1);
679 gtk_tree_store_append (store, &iter, NULL);
680 gtk_tree_store_set (store, &iter, 0, "E - J", -1);
682 gtk_tree_store_append (store, &iter2, &iter);
683 gtk_tree_store_set (store, &iter2, 0, "Frankfort", -1);
685 gtk_tree_store_append (store, &iter2, &iter);
686 gtk_tree_store_set (store, &iter2, 0, "Harrisburg", -1);
688 gtk_tree_store_append (store, &iter2, &iter);
689 gtk_tree_store_set (store, &iter2, 0, "Hartford", -1);
691 gtk_tree_store_append (store, &iter2, &iter);
692 gtk_tree_store_set (store, &iter2, 0, "Helena", -1);
694 gtk_tree_store_append (store, &iter2, &iter);
695 gtk_tree_store_set (store, &iter2, 0, "Honolulu", -1);
697 gtk_tree_store_append (store, &iter2, &iter);
698 gtk_tree_store_set (store, &iter2, 0, "Indianapolis", -1);
700 gtk_tree_store_append (store, &iter2, &iter);
701 gtk_tree_store_set (store, &iter2, 0, "Jackson", -1);
703 gtk_tree_store_append (store, &iter2, &iter);
704 gtk_tree_store_set (store, &iter2, 0, "Jefferson City", -1);
706 gtk_tree_store_append (store, &iter2, &iter);
707 gtk_tree_store_set (store, &iter2, 0, "Juneau", -1);
710 gtk_tree_store_append (store, &iter, NULL);
711 gtk_tree_store_set (store, &iter, 0, "K - O", -1);
713 gtk_tree_store_append (store, &iter2, &iter);
714 gtk_tree_store_set (store, &iter2, 0, "Lansing", -1);
716 gtk_tree_store_append (store, &iter2, &iter);
717 gtk_tree_store_set (store, &iter2, 0, "Lincoln", -1);
719 gtk_tree_store_append (store, &iter2, &iter);
720 gtk_tree_store_set (store, &iter2, 0, "Little Rock", -1);
722 gtk_tree_store_append (store, &iter2, &iter);
723 gtk_tree_store_set (store, &iter2, 0, "Madison", -1);
725 gtk_tree_store_append (store, &iter2, &iter);
726 gtk_tree_store_set (store, &iter2, 0, "Montgomery", -1);
728 gtk_tree_store_append (store, &iter2, &iter);
729 gtk_tree_store_set (store, &iter2, 0, "Montpelier", -1);
731 gtk_tree_store_append (store, &iter2, &iter);
732 gtk_tree_store_set (store, &iter2, 0, "Nashville", -1);
734 gtk_tree_store_append (store, &iter2, &iter);
735 gtk_tree_store_set (store, &iter2, 0, "Oklahoma City", -1);
737 gtk_tree_store_append (store, &iter2, &iter);
738 gtk_tree_store_set (store, &iter2, 0, "Olympia", -1);
741 gtk_tree_store_append (store, &iter, NULL);
742 gtk_tree_store_set (store, &iter, 0, "P - S", -1);
744 gtk_tree_store_append (store, &iter2, &iter);
745 gtk_tree_store_set (store, &iter2, 0, "Phoenix", -1);
747 gtk_tree_store_append (store, &iter2, &iter);
748 gtk_tree_store_set (store, &iter2, 0, "Pierre", -1);
750 gtk_tree_store_append (store, &iter2, &iter);
751 gtk_tree_store_set (store, &iter2, 0, "Providence", -1);
753 gtk_tree_store_append (store, &iter2, &iter);
754 gtk_tree_store_set (store, &iter2, 0, "Raleigh", -1);
756 gtk_tree_store_append (store, &iter2, &iter);
757 gtk_tree_store_set (store, &iter2, 0, "Richmond", -1);
759 gtk_tree_store_append (store, &iter2, &iter);
760 gtk_tree_store_set (store, &iter2, 0, "Sacramento", -1);
762 gtk_tree_store_append (store, &iter2, &iter);
763 gtk_tree_store_set (store, &iter2, 0, "Salem", -1);
765 gtk_tree_store_append (store, &iter2, &iter);
766 gtk_tree_store_set (store, &iter2, 0, "Salt Lake City", -1);
768 gtk_tree_store_append (store, &iter2, &iter);
769 gtk_tree_store_set (store, &iter2, 0, "Santa Fe", -1);
771 gtk_tree_store_append (store, &iter2, &iter);
772 gtk_tree_store_set (store, &iter2, 0, "Springfield", -1);
774 gtk_tree_store_append (store, &iter2, &iter);
775 gtk_tree_store_set (store, &iter2, 0, "St. Paul", -1);
778 gtk_tree_store_append (store, &iter, NULL);
779 gtk_tree_store_set (store, &iter, 0, "T - Z", -1);
781 gtk_tree_store_append (store, &iter2, &iter);
782 gtk_tree_store_set (store, &iter2, 0, "Tallahassee", -1);
784 gtk_tree_store_append (store, &iter2, &iter);
785 gtk_tree_store_set (store, &iter2, 0, "Topeka", -1);
787 gtk_tree_store_append (store, &iter2, &iter);
788 gtk_tree_store_set (store, &iter2, 0, "Trenton", -1);
790 return GTK_TREE_MODEL (store);
794 capital_sensitive (GtkCellLayout *cell_layout,
795 GtkCellRenderer *cell,
796 GtkTreeModel *tree_model,
802 sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
804 g_object_set (cell, "sensitive", sensitive, NULL);
808 capital_animation (gpointer data)
810 static gint insert_count = 0;
811 GtkTreeModel *model = GTK_TREE_MODEL (data);
813 GtkTreeIter iter, parent;
815 switch (insert_count % 8)
818 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, NULL, 0);
819 gtk_tree_store_set (GTK_TREE_STORE (model),
825 path = gtk_tree_path_new_from_indices (0, -1);
826 gtk_tree_model_get_iter (model, &parent, path);
827 gtk_tree_path_free (path);
828 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 0);
829 gtk_tree_store_set (GTK_TREE_STORE (model),
835 path = gtk_tree_path_new_from_indices (0, -1);
836 gtk_tree_model_get_iter (model, &parent, path);
837 gtk_tree_path_free (path);
838 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 1);
839 gtk_tree_store_set (GTK_TREE_STORE (model),
845 path = gtk_tree_path_new_from_indices (0, -1);
846 gtk_tree_model_get_iter (model, &parent, path);
847 gtk_tree_path_free (path);
848 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 2);
849 gtk_tree_store_set (GTK_TREE_STORE (model),
855 path = gtk_tree_path_new_from_indices (0, 2, -1);
856 gtk_tree_model_get_iter (model, &iter, path);
857 gtk_tree_path_free (path);
858 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
862 path = gtk_tree_path_new_from_indices (0, 1, -1);
863 gtk_tree_model_get_iter (model, &iter, path);
864 gtk_tree_path_free (path);
865 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
869 path = gtk_tree_path_new_from_indices (0, 0, -1);
870 gtk_tree_model_get_iter (model, &iter, path);
871 gtk_tree_path_free (path);
872 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
876 path = gtk_tree_path_new_from_indices (0, -1);
877 gtk_tree_model_get_iter (model, &iter, path);
878 gtk_tree_path_free (path);
879 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
891 setup_combo_entry (GtkWidget *entry_box)
893 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
895 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
897 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
898 "la la la dum de dum la la la la la la boom de da la la");
899 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
901 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
903 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
905 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
907 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
909 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
911 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
913 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
915 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
917 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
919 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
921 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
923 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
925 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
927 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
929 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
931 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
933 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
935 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
937 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
939 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
941 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
946 set_sensitive (GtkCellLayout *cell_layout,
947 GtkCellRenderer *cell,
948 GtkTreeModel *tree_model,
956 path = gtk_tree_model_get_path (tree_model, iter);
957 indices = gtk_tree_path_get_indices (path);
958 sensitive = indices[0] != 1;
959 gtk_tree_path_free (path);
961 g_object_set (cell, "sensitive", sensitive, NULL);
965 is_separator (GtkTreeModel *model,
972 path = gtk_tree_model_get_path (model, iter);
973 result = gtk_tree_path_get_indices (path)[0] == 4;
974 gtk_tree_path_free (path);
981 displayed_row_changed (GtkComboBox *combo,
987 row = gtk_combo_box_get_active (combo);
988 path = gtk_tree_path_new_from_indices (row, -1);
989 gtk_cell_view_set_displayed_row (cell, path);
990 gtk_tree_path_free (path);
994 main (int argc, char **argv)
996 GtkWidget *window, *cellview, *mainbox;
997 GtkWidget *combobox, *comboboxtext, *comboboxgrid;
998 GtkWidget *tmp, *boom;
999 GtkCellRenderer *renderer;
1001 GtkTreeModel *model;
1006 gtk_init (&argc, &argv);
1008 if (g_getenv ("RTL"))
1009 gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
1011 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1012 gtk_container_set_border_width (GTK_CONTAINER (window), 5);
1013 g_signal_connect (window, "destroy", gtk_main_quit, NULL);
1015 mainbox = gtk_vbox_new (FALSE, 2);
1016 gtk_container_add (GTK_CONTAINER (window), mainbox);
1019 tmp = gtk_frame_new ("GtkCellView");
1020 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1022 boom = gtk_vbox_new (FALSE, 0);
1023 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1024 gtk_container_add (GTK_CONTAINER (tmp), boom);
1026 cellview = gtk_cell_view_new ();
1027 renderer = gtk_cell_renderer_pixbuf_new ();
1028 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
1029 GTK_ICON_SIZE_BUTTON, NULL);
1031 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
1034 g_object_set (renderer, "pixbuf", pixbuf, NULL);
1036 renderer = gtk_cell_renderer_text_new ();
1037 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
1040 g_object_set (renderer, "text", "la la la", NULL);
1041 gtk_container_add (GTK_CONTAINER (boom), cellview);
1043 /* GtkComboBox list */
1044 tmp = gtk_frame_new ("GtkComboBox (list)");
1045 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1047 boom = gtk_vbox_new (FALSE, 0);
1048 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1049 gtk_container_add (GTK_CONTAINER (tmp), boom);
1051 model = create_list_blaat ();
1052 combobox = gtk_combo_box_new_with_model (model);
1053 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1054 g_object_unref (model);
1055 gtk_container_add (GTK_CONTAINER (boom), combobox);
1057 renderer = gtk_cell_renderer_pixbuf_new ();
1058 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1061 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1064 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1069 renderer = gtk_cell_renderer_text_new ();
1070 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1073 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1076 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1080 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1081 is_separator, NULL, NULL);
1083 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1085 /* GtkComboBox dynamic list */
1086 tmp = gtk_frame_new ("GtkComboBox (dynamic list)");
1087 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1089 boom = gtk_vbox_new (FALSE, 0);
1090 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1091 gtk_container_add (GTK_CONTAINER (tmp), boom);
1093 model = create_empty_list_blaat ();
1094 combobox = gtk_combo_box_new_with_model (model);
1095 g_signal_connect (combobox, "popup-show",
1096 G_CALLBACK (populate_list_blaat), combobox);
1098 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1099 g_object_unref (model);
1100 gtk_container_add (GTK_CONTAINER (boom), combobox);
1102 renderer = gtk_cell_renderer_pixbuf_new ();
1103 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1106 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1109 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1114 renderer = gtk_cell_renderer_text_new ();
1115 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1118 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1121 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1125 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1126 is_separator, NULL, NULL);
1128 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1129 gtk_combo_box_set_title (GTK_COMBO_BOX (combobox), "Dynamic list");
1131 /* GtkComboBox custom entry */
1132 tmp = gtk_frame_new ("GtkComboBox (custom)");
1133 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1135 boom = gtk_vbox_new (FALSE, 0);
1136 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1137 gtk_container_add (GTK_CONTAINER (tmp), boom);
1139 model = create_list_blaat ();
1140 combobox = gtk_combo_box_new_with_model (model);
1141 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1142 g_object_unref (model);
1143 gtk_container_add (GTK_CONTAINER (boom), combobox);
1145 renderer = gtk_cell_renderer_pixbuf_new ();
1146 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1149 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1152 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1157 renderer = gtk_cell_renderer_text_new ();
1158 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1161 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1164 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1168 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1169 is_separator, NULL, NULL);
1171 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1173 tmp = gtk_cell_view_new ();
1174 gtk_widget_show (tmp);
1175 gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model);
1177 renderer = gtk_cell_renderer_text_new ();
1178 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), renderer, TRUE);
1179 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), renderer,
1183 color.blue = 0xffff;
1185 gtk_cell_view_set_background_color (GTK_CELL_VIEW (tmp), &color);
1186 displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp));
1187 g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp);
1189 gtk_container_add (GTK_CONTAINER (combobox), tmp);
1191 /* GtkComboBox tree */
1192 tmp = gtk_frame_new ("GtkComboBox (tree)");
1193 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1195 boom = gtk_vbox_new (FALSE, 0);
1196 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1197 gtk_container_add (GTK_CONTAINER (tmp), boom);
1199 model = create_tree_blaat ();
1200 combobox = gtk_combo_box_new_with_model (model);
1201 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1202 g_object_unref (model);
1203 gtk_container_add (GTK_CONTAINER (boom), combobox);
1205 renderer = gtk_cell_renderer_pixbuf_new ();
1206 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1209 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1212 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1217 renderer = gtk_cell_renderer_text_new ();
1218 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1221 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1224 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1228 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1229 is_separator, NULL, NULL);
1231 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1233 g_timeout_add (1000, (GSourceFunc) animation_timer, model);
1236 /* GtkComboBox (grid mode) */
1237 tmp = gtk_frame_new ("GtkComboBox (grid mode)");
1238 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1240 boom = gtk_vbox_new (FALSE, 0);
1241 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1242 gtk_container_add (GTK_CONTAINER (tmp), boom);
1244 comboboxgrid = create_combo_box_grid_demo ();
1245 gtk_box_pack_start (GTK_BOX (boom), comboboxgrid, FALSE, FALSE, 0);
1248 /* GtkComboBoxEntry */
1249 tmp = gtk_frame_new ("GtkComboBoxEntry");
1250 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1252 boom = gtk_vbox_new (FALSE, 0);
1253 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1254 gtk_container_add (GTK_CONTAINER (tmp), boom);
1256 comboboxtext = gtk_combo_box_entry_new_text ();
1257 setup_combo_entry (comboboxtext);
1258 gtk_container_add (GTK_CONTAINER (boom), comboboxtext);
1261 /* Phylogenetic tree */
1262 tmp = gtk_frame_new ("What are you ?");
1263 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1265 boom = gtk_vbox_new (FALSE, 0);
1266 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1267 gtk_container_add (GTK_CONTAINER (tmp), boom);
1269 model = create_phylogenetic_tree ();
1270 combobox = gtk_combo_box_new_with_model (model);
1271 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1272 g_object_unref (model);
1273 gtk_container_add (GTK_CONTAINER (boom), combobox);
1275 renderer = gtk_cell_renderer_text_new ();
1276 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1279 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1283 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1287 tmp = gtk_frame_new ("Where are you ?");
1288 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1290 boom = gtk_vbox_new (FALSE, 0);
1291 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1292 gtk_container_add (GTK_CONTAINER (tmp), boom);
1294 model = create_capital_tree ();
1295 combobox = gtk_combo_box_new_with_model (model);
1296 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1297 g_object_unref (model);
1298 gtk_container_add (GTK_CONTAINER (boom), combobox);
1299 renderer = gtk_cell_renderer_text_new ();
1300 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1303 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1306 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1310 path = gtk_tree_path_new_from_indices (0, 8, -1);
1311 gtk_tree_model_get_iter (model, &iter, path);
1312 gtk_tree_path_free (path);
1313 gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);
1316 g_timeout_add (1000, (GSourceFunc) capital_animation, model);
1319 gtk_widget_show_all (window);