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_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
170 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_STOP,
179 GTK_ICON_SIZE_BUTTON);
180 gtk_tree_store_append (store, &iter2, &iter);
181 gtk_tree_store_set (store, &iter2,
187 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW,
188 GTK_ICON_SIZE_BUTTON);
189 gtk_tree_store_append (store, &iter2, &iter);
190 gtk_tree_store_set (store, &iter2,
196 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR,
197 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_OPEN,
215 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
241 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_STOP,
272 GTK_ICON_SIZE_BUTTON);
273 gtk_list_store_append (store, &iter);
274 gtk_list_store_set (store, &iter,
279 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW,
280 GTK_ICON_SIZE_BUTTON);
281 gtk_list_store_append (store, &iter);
282 gtk_list_store_set (store, &iter,
287 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR,
288 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_OPEN,
302 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
325 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_STOP,
333 GTK_ICON_SIZE_BUTTON);
334 gtk_list_store_append (store, &iter);
335 gtk_list_store_set (store, &iter,
340 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW,
341 GTK_ICON_SIZE_BUTTON);
342 gtk_list_store_append (store, &iter);
343 gtk_list_store_set (store, &iter,
348 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR,
349 GTK_ICON_SIZE_BUTTON);
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_pixbuf (cellview, GTK_STOCK_OPEN,
363 GTK_ICON_SIZE_BUTTON);
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_list_long (void)
382 store = gtk_list_store_new (1, G_TYPE_STRING);
384 gtk_list_store_append (store, &iter);
385 gtk_list_store_set (store, &iter,
386 0, "here is some long long text that grows out of the combo's allocation",
390 gtk_list_store_append (store, &iter);
391 gtk_list_store_set (store, &iter,
392 0, "with at least a few of these rows",
395 gtk_list_store_append (store, &iter);
396 gtk_list_store_set (store, &iter,
397 0, "so that we can get some ellipsized text here",
400 gtk_list_store_append (store, &iter);
401 gtk_list_store_set (store, &iter,
402 0, "and see the combo box menu being allocated without any constraints",
405 return GTK_TREE_MODEL (store);
408 static GtkTreeModel *
409 create_food_list (void)
414 store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
415 gtk_list_store_append (store, &iter);
416 gtk_list_store_set (store, &iter,
421 gtk_list_store_append (store, &iter);
422 gtk_list_store_set (store, &iter,
427 gtk_list_store_append (store, &iter);
428 gtk_list_store_set (store, &iter,
433 gtk_list_store_append (store, &iter);
434 gtk_list_store_set (store, &iter,
439 gtk_list_store_append (store, &iter);
440 gtk_list_store_set (store, &iter,
445 return GTK_TREE_MODEL (store);
450 static GtkTreeModel *
451 create_phylogenetic_tree (void)
453 GtkTreeIter iter, iter2, iter3;
456 store = gtk_tree_store_new (1,G_TYPE_STRING);
458 gtk_tree_store_append (store, &iter, NULL);
459 gtk_tree_store_set (store, &iter,
463 gtk_tree_store_append (store, &iter2, &iter);
464 gtk_tree_store_set (store, &iter2,
468 gtk_tree_store_append (store, &iter2, &iter);
469 gtk_tree_store_set (store, &iter2,
473 gtk_tree_store_append (store, &iter2, &iter);
474 gtk_tree_store_set (store, &iter2,
475 0, "Thermodesulfobacterium",
478 gtk_tree_store_append (store, &iter2, &iter);
479 gtk_tree_store_set (store, &iter2,
480 0, "Thermus-Deinococcus group",
483 gtk_tree_store_append (store, &iter2, &iter);
484 gtk_tree_store_set (store, &iter2,
488 gtk_tree_store_append (store, &iter2, &iter);
489 gtk_tree_store_set (store, &iter2,
493 gtk_tree_store_append (store, &iter2, &iter);
494 gtk_tree_store_set (store, &iter2,
498 gtk_tree_store_append (store, &iter2, &iter);
499 gtk_tree_store_set (store, &iter2,
500 0, "Leptospirillium Group",
503 gtk_tree_store_append (store, &iter2, &iter);
504 gtk_tree_store_set (store, &iter2,
507 gtk_tree_store_append (store, &iter2, &iter);
508 gtk_tree_store_set (store, &iter2,
509 0, "Chlorobium-Flavobacteria group",
511 gtk_tree_store_append (store, &iter2, &iter);
512 gtk_tree_store_set (store, &iter2,
513 0, "Chlamydia-Verrucomicrobia group",
516 gtk_tree_store_append (store, &iter3, &iter2);
517 gtk_tree_store_set (store, &iter3,
518 0, "Verrucomicrobia",
520 gtk_tree_store_append (store, &iter3, &iter2);
521 gtk_tree_store_set (store, &iter3,
525 gtk_tree_store_append (store, &iter2, &iter);
526 gtk_tree_store_set (store, &iter2,
531 gtk_tree_store_append (store, &iter2, &iter);
532 gtk_tree_store_set (store, &iter2,
533 0, "Fibrobacter group",
537 gtk_tree_store_append (store, &iter2, &iter);
538 gtk_tree_store_set (store, &iter2,
543 gtk_tree_store_append (store, &iter2, &iter);
544 gtk_tree_store_set (store, &iter2,
549 gtk_tree_store_append (store, &iter3, &iter2);
550 gtk_tree_store_set (store, &iter3,
555 gtk_tree_store_append (store, &iter3, &iter2);
556 gtk_tree_store_set (store, &iter3,
561 gtk_tree_store_append (store, &iter3, &iter2);
562 gtk_tree_store_set (store, &iter3,
567 gtk_tree_store_append (store, &iter3, &iter2);
568 gtk_tree_store_set (store, &iter3,
573 gtk_tree_store_append (store, &iter3, &iter2);
574 gtk_tree_store_set (store, &iter3,
579 gtk_tree_store_append (store, &iter, NULL);
580 gtk_tree_store_set (store, &iter,
585 gtk_tree_store_append (store, &iter2, &iter);
586 gtk_tree_store_set (store, &iter2,
591 gtk_tree_store_append (store, &iter2, &iter);
592 gtk_tree_store_set (store, &iter2,
597 gtk_tree_store_append (store, &iter2, &iter);
598 gtk_tree_store_set (store, &iter2,
603 gtk_tree_store_append (store, &iter2, &iter);
604 gtk_tree_store_set (store, &iter2,
609 gtk_tree_store_append (store, &iter2, &iter);
610 gtk_tree_store_set (store, &iter2,
615 gtk_tree_store_append (store, &iter2, &iter);
616 gtk_tree_store_set (store, &iter2,
621 gtk_tree_store_append (store, &iter2, &iter);
622 gtk_tree_store_set (store, &iter2,
627 gtk_tree_store_append (store, &iter2, &iter);
628 gtk_tree_store_set (store, &iter2,
629 0, "choanoflagellates",
633 gtk_tree_store_append (store, &iter2, &iter);
634 gtk_tree_store_set (store, &iter2,
639 gtk_tree_store_append (store, &iter2, &iter);
640 gtk_tree_store_set (store, &iter2,
645 gtk_tree_store_append (store, &iter2, &iter);
646 gtk_tree_store_set (store, &iter2,
651 gtk_tree_store_append (store, &iter2, &iter);
652 gtk_tree_store_set (store, &iter2,
657 gtk_tree_store_append (store, &iter2, &iter);
658 gtk_tree_store_set (store, &iter2,
663 gtk_tree_store_append (store, &iter2, &iter);
664 gtk_tree_store_set (store, &iter2,
669 gtk_tree_store_append (store, &iter2, &iter);
670 gtk_tree_store_set (store, &iter2,
671 0, "crytomonads et al",
675 gtk_tree_store_append (store, &iter, NULL);
676 gtk_tree_store_set (store, &iter,
681 gtk_tree_store_append (store, &iter2, &iter);
682 gtk_tree_store_set (store, &iter2,
687 gtk_tree_store_append (store, &iter2, &iter);
688 gtk_tree_store_set (store, &iter2,
693 gtk_tree_store_append (store, &iter2, &iter);
694 gtk_tree_store_set (store, &iter2,
698 return GTK_TREE_MODEL (store);
703 static GtkTreeModel *
704 create_capital_tree (void)
706 GtkTreeIter iter, iter2;
709 store = gtk_tree_store_new (1, G_TYPE_STRING);
711 gtk_tree_store_append (store, &iter, NULL);
712 gtk_tree_store_set (store, &iter, 0, "A - B", -1);
714 gtk_tree_store_append (store, &iter2, &iter);
715 gtk_tree_store_set (store, &iter2, 0, "Albany", -1);
717 gtk_tree_store_append (store, &iter2, &iter);
718 gtk_tree_store_set (store, &iter2, 0, "Annapolis", -1);
720 gtk_tree_store_append (store, &iter2, &iter);
721 gtk_tree_store_set (store, &iter2, 0, "Atlanta", -1);
723 gtk_tree_store_append (store, &iter2, &iter);
724 gtk_tree_store_set (store, &iter2, 0, "Augusta", -1);
726 gtk_tree_store_append (store, &iter2, &iter);
727 gtk_tree_store_set (store, &iter2, 0, "Austin", -1);
729 gtk_tree_store_append (store, &iter2, &iter);
730 gtk_tree_store_set (store, &iter2, 0, "Baton Rouge", -1);
732 gtk_tree_store_append (store, &iter2, &iter);
733 gtk_tree_store_set (store, &iter2, 0, "Bismarck", -1);
735 gtk_tree_store_append (store, &iter2, &iter);
736 gtk_tree_store_set (store, &iter2, 0, "Boise", -1);
738 gtk_tree_store_append (store, &iter2, &iter);
739 gtk_tree_store_set (store, &iter2, 0, "Boston", -1);
741 gtk_tree_store_append (store, &iter, NULL);
742 gtk_tree_store_set (store, &iter, 0, "C - D", -1);
744 gtk_tree_store_append (store, &iter2, &iter);
745 gtk_tree_store_set (store, &iter2, 0, "Carson City", -1);
747 gtk_tree_store_append (store, &iter2, &iter);
748 gtk_tree_store_set (store, &iter2, 0, "Charleston", -1);
750 gtk_tree_store_append (store, &iter2, &iter);
751 gtk_tree_store_set (store, &iter2, 0, "Cheyenne", -1);
753 gtk_tree_store_append (store, &iter2, &iter);
754 gtk_tree_store_set (store, &iter2, 0, "Columbia", -1);
756 gtk_tree_store_append (store, &iter2, &iter);
757 gtk_tree_store_set (store, &iter2, 0, "Columbus", -1);
759 gtk_tree_store_append (store, &iter2, &iter);
760 gtk_tree_store_set (store, &iter2, 0, "Concord", -1);
762 gtk_tree_store_append (store, &iter2, &iter);
763 gtk_tree_store_set (store, &iter2, 0, "Denver", -1);
765 gtk_tree_store_append (store, &iter2, &iter);
766 gtk_tree_store_set (store, &iter2, 0, "Des Moines", -1);
768 gtk_tree_store_append (store, &iter2, &iter);
769 gtk_tree_store_set (store, &iter2, 0, "Dover", -1);
772 gtk_tree_store_append (store, &iter, NULL);
773 gtk_tree_store_set (store, &iter, 0, "E - J", -1);
775 gtk_tree_store_append (store, &iter2, &iter);
776 gtk_tree_store_set (store, &iter2, 0, "Frankfort", -1);
778 gtk_tree_store_append (store, &iter2, &iter);
779 gtk_tree_store_set (store, &iter2, 0, "Harrisburg", -1);
781 gtk_tree_store_append (store, &iter2, &iter);
782 gtk_tree_store_set (store, &iter2, 0, "Hartford", -1);
784 gtk_tree_store_append (store, &iter2, &iter);
785 gtk_tree_store_set (store, &iter2, 0, "Helena", -1);
787 gtk_tree_store_append (store, &iter2, &iter);
788 gtk_tree_store_set (store, &iter2, 0, "Honolulu", -1);
790 gtk_tree_store_append (store, &iter2, &iter);
791 gtk_tree_store_set (store, &iter2, 0, "Indianapolis", -1);
793 gtk_tree_store_append (store, &iter2, &iter);
794 gtk_tree_store_set (store, &iter2, 0, "Jackson", -1);
796 gtk_tree_store_append (store, &iter2, &iter);
797 gtk_tree_store_set (store, &iter2, 0, "Jefferson City", -1);
799 gtk_tree_store_append (store, &iter2, &iter);
800 gtk_tree_store_set (store, &iter2, 0, "Juneau", -1);
803 gtk_tree_store_append (store, &iter, NULL);
804 gtk_tree_store_set (store, &iter, 0, "K - O", -1);
806 gtk_tree_store_append (store, &iter2, &iter);
807 gtk_tree_store_set (store, &iter2, 0, "Lansing", -1);
809 gtk_tree_store_append (store, &iter2, &iter);
810 gtk_tree_store_set (store, &iter2, 0, "Lincoln", -1);
812 gtk_tree_store_append (store, &iter2, &iter);
813 gtk_tree_store_set (store, &iter2, 0, "Little Rock", -1);
815 gtk_tree_store_append (store, &iter2, &iter);
816 gtk_tree_store_set (store, &iter2, 0, "Madison", -1);
818 gtk_tree_store_append (store, &iter2, &iter);
819 gtk_tree_store_set (store, &iter2, 0, "Montgomery", -1);
821 gtk_tree_store_append (store, &iter2, &iter);
822 gtk_tree_store_set (store, &iter2, 0, "Montpelier", -1);
824 gtk_tree_store_append (store, &iter2, &iter);
825 gtk_tree_store_set (store, &iter2, 0, "Nashville", -1);
827 gtk_tree_store_append (store, &iter2, &iter);
828 gtk_tree_store_set (store, &iter2, 0, "Oklahoma City", -1);
830 gtk_tree_store_append (store, &iter2, &iter);
831 gtk_tree_store_set (store, &iter2, 0, "Olympia", -1);
834 gtk_tree_store_append (store, &iter, NULL);
835 gtk_tree_store_set (store, &iter, 0, "P - S", -1);
837 gtk_tree_store_append (store, &iter2, &iter);
838 gtk_tree_store_set (store, &iter2, 0, "Phoenix", -1);
840 gtk_tree_store_append (store, &iter2, &iter);
841 gtk_tree_store_set (store, &iter2, 0, "Pierre", -1);
843 gtk_tree_store_append (store, &iter2, &iter);
844 gtk_tree_store_set (store, &iter2, 0, "Providence", -1);
846 gtk_tree_store_append (store, &iter2, &iter);
847 gtk_tree_store_set (store, &iter2, 0, "Raleigh", -1);
849 gtk_tree_store_append (store, &iter2, &iter);
850 gtk_tree_store_set (store, &iter2, 0, "Richmond", -1);
852 gtk_tree_store_append (store, &iter2, &iter);
853 gtk_tree_store_set (store, &iter2, 0, "Sacramento", -1);
855 gtk_tree_store_append (store, &iter2, &iter);
856 gtk_tree_store_set (store, &iter2, 0, "Salem", -1);
858 gtk_tree_store_append (store, &iter2, &iter);
859 gtk_tree_store_set (store, &iter2, 0, "Salt Lake City", -1);
861 gtk_tree_store_append (store, &iter2, &iter);
862 gtk_tree_store_set (store, &iter2, 0, "Santa Fe", -1);
864 gtk_tree_store_append (store, &iter2, &iter);
865 gtk_tree_store_set (store, &iter2, 0, "Springfield", -1);
867 gtk_tree_store_append (store, &iter2, &iter);
868 gtk_tree_store_set (store, &iter2, 0, "St. Paul", -1);
871 gtk_tree_store_append (store, &iter, NULL);
872 gtk_tree_store_set (store, &iter, 0, "T - Z", -1);
874 gtk_tree_store_append (store, &iter2, &iter);
875 gtk_tree_store_set (store, &iter2, 0, "Tallahassee", -1);
877 gtk_tree_store_append (store, &iter2, &iter);
878 gtk_tree_store_set (store, &iter2, 0, "Topeka", -1);
880 gtk_tree_store_append (store, &iter2, &iter);
881 gtk_tree_store_set (store, &iter2, 0, "Trenton", -1);
883 return GTK_TREE_MODEL (store);
887 capital_sensitive (GtkCellLayout *cell_layout,
888 GtkCellRenderer *cell,
889 GtkTreeModel *tree_model,
895 sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
897 g_object_set (cell, "sensitive", sensitive, NULL);
901 capital_animation (gpointer data)
903 static gint insert_count = 0;
904 GtkTreeModel *model = GTK_TREE_MODEL (data);
906 GtkTreeIter iter, parent;
908 switch (insert_count % 8)
911 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, NULL, 0);
912 gtk_tree_store_set (GTK_TREE_STORE (model),
918 path = gtk_tree_path_new_from_indices (0, -1);
919 gtk_tree_model_get_iter (model, &parent, path);
920 gtk_tree_path_free (path);
921 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 0);
922 gtk_tree_store_set (GTK_TREE_STORE (model),
928 path = gtk_tree_path_new_from_indices (0, -1);
929 gtk_tree_model_get_iter (model, &parent, path);
930 gtk_tree_path_free (path);
931 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 1);
932 gtk_tree_store_set (GTK_TREE_STORE (model),
938 path = gtk_tree_path_new_from_indices (0, -1);
939 gtk_tree_model_get_iter (model, &parent, path);
940 gtk_tree_path_free (path);
941 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 2);
942 gtk_tree_store_set (GTK_TREE_STORE (model),
948 path = gtk_tree_path_new_from_indices (0, 2, -1);
949 gtk_tree_model_get_iter (model, &iter, path);
950 gtk_tree_path_free (path);
951 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
955 path = gtk_tree_path_new_from_indices (0, 1, -1);
956 gtk_tree_model_get_iter (model, &iter, path);
957 gtk_tree_path_free (path);
958 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
962 path = gtk_tree_path_new_from_indices (0, 0, -1);
963 gtk_tree_model_get_iter (model, &iter, path);
964 gtk_tree_path_free (path);
965 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
969 path = gtk_tree_path_new_from_indices (0, -1);
970 gtk_tree_model_get_iter (model, &iter, path);
971 gtk_tree_path_free (path);
972 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
984 setup_combo_entry (GtkComboBoxText *combo)
986 gtk_combo_box_text_append_text (combo,
988 gtk_combo_box_text_append_text (combo,
990 gtk_combo_box_text_append_text (combo,
991 "la la la dum de dum la la la la la la boom de da la la");
992 gtk_combo_box_text_append_text (combo,
994 gtk_combo_box_text_append_text (combo,
996 gtk_combo_box_text_append_text (combo,
998 gtk_combo_box_text_append_text (combo,
1000 gtk_combo_box_text_append_text (combo,
1002 gtk_combo_box_text_append_text (combo,
1004 gtk_combo_box_text_append_text (combo,
1006 gtk_combo_box_text_append_text (combo,
1008 gtk_combo_box_text_append_text (combo,
1010 gtk_combo_box_text_append_text (combo,
1012 gtk_combo_box_text_append_text (combo,
1014 gtk_combo_box_text_append_text (combo,
1016 gtk_combo_box_text_append_text (combo,
1018 gtk_combo_box_text_append_text (combo,
1020 gtk_combo_box_text_append_text (combo,
1022 gtk_combo_box_text_append_text (combo,
1024 gtk_combo_box_text_append_text (combo,
1026 gtk_combo_box_text_append_text (combo,
1028 gtk_combo_box_text_append_text (combo,
1030 gtk_combo_box_text_append_text (combo,
1032 gtk_combo_box_text_append_text (combo,
1034 gtk_combo_box_text_append_text (combo,
1039 set_sensitive (GtkCellLayout *cell_layout,
1040 GtkCellRenderer *cell,
1041 GtkTreeModel *tree_model,
1049 path = gtk_tree_model_get_path (tree_model, iter);
1050 indices = gtk_tree_path_get_indices (path);
1051 sensitive = indices[0] != 1;
1052 gtk_tree_path_free (path);
1054 g_object_set (cell, "sensitive", sensitive, NULL);
1058 is_separator (GtkTreeModel *model,
1065 path = gtk_tree_model_get_path (model, iter);
1066 result = gtk_tree_path_get_indices (path)[0] == 4;
1067 gtk_tree_path_free (path);
1074 displayed_row_changed (GtkComboBox *combo,
1080 row = gtk_combo_box_get_active (combo);
1081 path = gtk_tree_path_new_from_indices (row, -1);
1082 gtk_cell_view_set_displayed_row (cell, path);
1083 gtk_tree_path_free (path);
1087 main (int argc, char **argv)
1089 GtkWidget *window, *cellview, *mainbox;
1090 GtkWidget *combobox, *comboboxtext, *comboboxgrid;
1091 GtkWidget *tmp, *boom;
1092 GtkCellRenderer *renderer;
1094 GtkTreeModel *model;
1100 gtk_init (&argc, &argv);
1102 if (g_getenv ("RTL"))
1103 gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
1105 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1106 gtk_container_set_border_width (GTK_CONTAINER (window), 5);
1107 g_signal_connect (window, "destroy", gtk_main_quit, NULL);
1109 mainbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
1110 gtk_container_add (GTK_CONTAINER (window), mainbox);
1113 tmp = gtk_frame_new ("GtkCellView");
1114 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1116 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1117 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1118 gtk_container_add (GTK_CONTAINER (tmp), boom);
1120 cellview = gtk_cell_view_new ();
1121 renderer = gtk_cell_renderer_pixbuf_new ();
1122 pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
1123 GTK_ICON_SIZE_BUTTON);
1125 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
1128 g_object_set (renderer, "pixbuf", pixbuf, NULL);
1130 renderer = gtk_cell_renderer_text_new ();
1131 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
1134 g_object_set (renderer, "text", "la la la", NULL);
1135 gtk_container_add (GTK_CONTAINER (boom), cellview);
1137 /* GtkComboBox list */
1138 tmp = gtk_frame_new ("GtkComboBox (list)");
1139 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1141 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1142 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1143 gtk_container_add (GTK_CONTAINER (tmp), boom);
1145 model = create_list_blaat ();
1146 combobox = gtk_combo_box_new_with_model (model);
1147 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1148 g_object_unref (model);
1149 gtk_container_add (GTK_CONTAINER (boom), combobox);
1151 renderer = gtk_cell_renderer_pixbuf_new ();
1152 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1155 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1158 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1163 renderer = gtk_cell_renderer_text_new ();
1164 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1167 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1170 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1174 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1175 is_separator, NULL, NULL);
1177 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1179 /* GtkComboBox dynamic list */
1180 tmp = gtk_frame_new ("GtkComboBox (dynamic list)");
1181 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1183 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1184 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1185 gtk_container_add (GTK_CONTAINER (tmp), boom);
1187 model = create_empty_list_blaat ();
1188 combobox = gtk_combo_box_new_with_model (model);
1189 g_signal_connect (combobox, "notify::popup-shown",
1190 G_CALLBACK (populate_list_blaat), combobox);
1192 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1193 g_object_unref (model);
1194 gtk_container_add (GTK_CONTAINER (boom), combobox);
1196 renderer = gtk_cell_renderer_pixbuf_new ();
1197 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1200 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1203 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1208 renderer = gtk_cell_renderer_text_new ();
1209 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1212 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1215 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1219 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1220 is_separator, NULL, NULL);
1222 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1223 gtk_combo_box_set_title (GTK_COMBO_BOX (combobox), "Dynamic list");
1225 /* GtkComboBox custom entry */
1226 tmp = gtk_frame_new ("GtkComboBox (custom)");
1227 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1229 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1230 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1231 gtk_container_add (GTK_CONTAINER (tmp), boom);
1233 model = create_list_blaat ();
1234 combobox = gtk_combo_box_new_with_model (model);
1235 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1236 g_object_unref (model);
1237 gtk_container_add (GTK_CONTAINER (boom), combobox);
1239 renderer = gtk_cell_renderer_pixbuf_new ();
1240 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1243 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1246 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1251 renderer = gtk_cell_renderer_text_new ();
1252 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1255 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1258 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1262 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1263 is_separator, NULL, NULL);
1265 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1267 tmp = gtk_cell_view_new ();
1268 gtk_widget_show (tmp);
1269 gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model);
1271 renderer = gtk_cell_renderer_text_new ();
1272 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), renderer, TRUE);
1273 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), renderer,
1277 color.blue = 0xffff;
1279 gtk_cell_view_set_background_color (GTK_CELL_VIEW (tmp), &color);
1280 displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp));
1281 g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp);
1283 gtk_container_add (GTK_CONTAINER (combobox), tmp);
1285 /* GtkComboBox tree */
1286 tmp = gtk_frame_new ("GtkComboBox (tree)");
1287 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1289 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1290 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1291 gtk_container_add (GTK_CONTAINER (tmp), boom);
1293 model = create_tree_blaat ();
1294 combobox = gtk_combo_box_new_with_model (model);
1295 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1296 g_object_unref (model);
1297 gtk_container_add (GTK_CONTAINER (boom), combobox);
1299 renderer = gtk_cell_renderer_pixbuf_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),
1311 renderer = gtk_cell_renderer_text_new ();
1312 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1315 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1318 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1322 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1323 is_separator, NULL, NULL);
1325 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1327 g_timeout_add (1000, (GSourceFunc) animation_timer, model);
1330 /* GtkComboBox (grid mode) */
1331 tmp = gtk_frame_new ("GtkComboBox (grid mode)");
1332 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1334 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1335 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1336 gtk_container_add (GTK_CONTAINER (tmp), boom);
1338 comboboxgrid = create_combo_box_grid_demo ();
1339 gtk_box_pack_start (GTK_BOX (boom), comboboxgrid, FALSE, FALSE, 0);
1342 /* GtkComboBoxEntry */
1343 tmp = gtk_frame_new ("GtkComboBox with entry");
1344 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1346 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1347 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1348 gtk_container_add (GTK_CONTAINER (tmp), boom);
1350 comboboxtext = gtk_combo_box_text_new_with_entry ();
1351 setup_combo_entry (GTK_COMBO_BOX_TEXT (comboboxtext));
1352 gtk_container_add (GTK_CONTAINER (boom), comboboxtext);
1355 /* Phylogenetic tree */
1356 tmp = gtk_frame_new ("What are you ?");
1357 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1359 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1360 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1361 gtk_container_add (GTK_CONTAINER (tmp), boom);
1363 model = create_phylogenetic_tree ();
1364 combobox = gtk_combo_box_new_with_model (model);
1365 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1366 g_object_unref (model);
1367 gtk_container_add (GTK_CONTAINER (boom), combobox);
1369 renderer = gtk_cell_renderer_text_new ();
1370 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1373 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1377 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1380 tmp = gtk_frame_new ("Where are you ?");
1381 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1383 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1384 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1385 gtk_container_add (GTK_CONTAINER (tmp), boom);
1387 model = create_capital_tree ();
1388 combobox = gtk_combo_box_new_with_model (model);
1389 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1390 g_object_unref (model);
1391 gtk_container_add (GTK_CONTAINER (boom), combobox);
1392 renderer = gtk_cell_renderer_text_new ();
1393 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1396 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1399 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1403 path = gtk_tree_path_new_from_indices (0, 8, -1);
1404 gtk_tree_model_get_iter (model, &iter, path);
1405 gtk_tree_path_free (path);
1406 gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);
1409 gdk_threads_add_timeout (1000, (GSourceFunc) capital_animation, model);
1413 tmp = gtk_frame_new ("Hungry ?");
1414 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1416 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1417 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1418 gtk_container_add (GTK_CONTAINER (tmp), boom);
1420 model = create_food_list ();
1421 combobox = gtk_combo_box_new_with_model (model);
1422 g_object_unref (model);
1423 gtk_container_add (GTK_CONTAINER (boom), combobox);
1425 area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (combobox));
1427 renderer = gtk_cell_renderer_text_new ();
1428 gtk_cell_area_add_with_properties (area, renderer,
1432 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1436 renderer = gtk_cell_renderer_text_new ();
1437 gtk_cell_area_add_with_properties (area, renderer,
1441 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1445 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1447 /* Ellipsizing growing combos */
1448 tmp = gtk_frame_new ("Unconstrained Menu");
1449 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1451 boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1452 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1453 gtk_container_add (GTK_CONTAINER (tmp), boom);
1455 model = create_list_long ();
1456 combobox = gtk_combo_box_new_with_model (model);
1457 g_object_unref (model);
1458 gtk_container_add (GTK_CONTAINER (boom), combobox);
1459 renderer = gtk_cell_renderer_text_new ();
1460 g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
1462 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE);
1463 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1465 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1466 gtk_combo_box_set_popup_fixed_width (GTK_COMBO_BOX (combobox), FALSE);
1468 gtk_widget_show_all (window);