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_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 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
230 GTK_ICON_SIZE_BUTTON, NULL);
231 gtk_list_store_append (store, &iter);
232 gtk_list_store_set (store, &iter,
237 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
238 GTK_ICON_SIZE_BUTTON, NULL);
239 gtk_list_store_append (store, &iter);
240 gtk_list_store_set (store, &iter,
245 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
246 GTK_ICON_SIZE_BUTTON, NULL);
247 gtk_list_store_append (store, &iter);
248 gtk_list_store_set (store, &iter,
250 1, "gtk-stock-clear",
253 gtk_list_store_append (store, &iter);
254 gtk_list_store_set (store, &iter,
259 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
260 GTK_ICON_SIZE_BUTTON, NULL);
261 gtk_list_store_append (store, &iter);
262 gtk_list_store_set (store, &iter,
267 gtk_widget_destroy (cellview);
269 return GTK_TREE_MODEL (store);
273 static GtkTreeModel *
274 create_phylogenetic_tree (void)
276 GtkTreeIter iter, iter2, iter3;
279 store = gtk_tree_store_new (1,G_TYPE_STRING);
281 gtk_tree_store_append (store, &iter, NULL);
282 gtk_tree_store_set (store, &iter,
286 gtk_tree_store_append (store, &iter2, &iter);
287 gtk_tree_store_set (store, &iter2,
291 gtk_tree_store_append (store, &iter2, &iter);
292 gtk_tree_store_set (store, &iter2,
296 gtk_tree_store_append (store, &iter2, &iter);
297 gtk_tree_store_set (store, &iter2,
298 0, "Thermodesulfobacterium",
301 gtk_tree_store_append (store, &iter2, &iter);
302 gtk_tree_store_set (store, &iter2,
303 0, "Thermus-Deinococcus group",
306 gtk_tree_store_append (store, &iter2, &iter);
307 gtk_tree_store_set (store, &iter2,
311 gtk_tree_store_append (store, &iter2, &iter);
312 gtk_tree_store_set (store, &iter2,
316 gtk_tree_store_append (store, &iter2, &iter);
317 gtk_tree_store_set (store, &iter2,
321 gtk_tree_store_append (store, &iter2, &iter);
322 gtk_tree_store_set (store, &iter2,
323 0, "Leptospirillium Group",
326 gtk_tree_store_append (store, &iter2, &iter);
327 gtk_tree_store_set (store, &iter2,
330 gtk_tree_store_append (store, &iter2, &iter);
331 gtk_tree_store_set (store, &iter2,
332 0, "Chlorobium-Flavobacteria group",
334 gtk_tree_store_append (store, &iter2, &iter);
335 gtk_tree_store_set (store, &iter2,
336 0, "Chlamydia-Verrucomicrobia group",
339 gtk_tree_store_append (store, &iter3, &iter2);
340 gtk_tree_store_set (store, &iter3,
341 0, "Verrucomicrobia",
343 gtk_tree_store_append (store, &iter3, &iter2);
344 gtk_tree_store_set (store, &iter3,
348 gtk_tree_store_append (store, &iter2, &iter);
349 gtk_tree_store_set (store, &iter2,
354 gtk_tree_store_append (store, &iter2, &iter);
355 gtk_tree_store_set (store, &iter2,
356 0, "Fibrobacter group",
360 gtk_tree_store_append (store, &iter2, &iter);
361 gtk_tree_store_set (store, &iter2,
366 gtk_tree_store_append (store, &iter2, &iter);
367 gtk_tree_store_set (store, &iter2,
372 gtk_tree_store_append (store, &iter3, &iter2);
373 gtk_tree_store_set (store, &iter3,
378 gtk_tree_store_append (store, &iter3, &iter2);
379 gtk_tree_store_set (store, &iter3,
384 gtk_tree_store_append (store, &iter3, &iter2);
385 gtk_tree_store_set (store, &iter3,
390 gtk_tree_store_append (store, &iter3, &iter2);
391 gtk_tree_store_set (store, &iter3,
396 gtk_tree_store_append (store, &iter3, &iter2);
397 gtk_tree_store_set (store, &iter3,
402 gtk_tree_store_append (store, &iter, NULL);
403 gtk_tree_store_set (store, &iter,
408 gtk_tree_store_append (store, &iter2, &iter);
409 gtk_tree_store_set (store, &iter2,
414 gtk_tree_store_append (store, &iter2, &iter);
415 gtk_tree_store_set (store, &iter2,
420 gtk_tree_store_append (store, &iter2, &iter);
421 gtk_tree_store_set (store, &iter2,
426 gtk_tree_store_append (store, &iter2, &iter);
427 gtk_tree_store_set (store, &iter2,
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,
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,
452 0, "choanoflagellates",
456 gtk_tree_store_append (store, &iter2, &iter);
457 gtk_tree_store_set (store, &iter2,
462 gtk_tree_store_append (store, &iter2, &iter);
463 gtk_tree_store_set (store, &iter2,
468 gtk_tree_store_append (store, &iter2, &iter);
469 gtk_tree_store_set (store, &iter2,
474 gtk_tree_store_append (store, &iter2, &iter);
475 gtk_tree_store_set (store, &iter2,
480 gtk_tree_store_append (store, &iter2, &iter);
481 gtk_tree_store_set (store, &iter2,
486 gtk_tree_store_append (store, &iter2, &iter);
487 gtk_tree_store_set (store, &iter2,
492 gtk_tree_store_append (store, &iter2, &iter);
493 gtk_tree_store_set (store, &iter2,
494 0, "crytomonads et al",
498 gtk_tree_store_append (store, &iter, NULL);
499 gtk_tree_store_set (store, &iter,
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,
521 return GTK_TREE_MODEL (store);
526 static GtkTreeModel *
527 create_capital_tree (void)
529 GtkTreeIter iter, iter2;
532 store = gtk_tree_store_new (1, G_TYPE_STRING);
534 gtk_tree_store_append (store, &iter, NULL);
535 gtk_tree_store_set (store, &iter, 0, "A - B", -1);
537 gtk_tree_store_append (store, &iter2, &iter);
538 gtk_tree_store_set (store, &iter2, 0, "Albany", -1);
540 gtk_tree_store_append (store, &iter2, &iter);
541 gtk_tree_store_set (store, &iter2, 0, "Annapolis", -1);
543 gtk_tree_store_append (store, &iter2, &iter);
544 gtk_tree_store_set (store, &iter2, 0, "Atlanta", -1);
546 gtk_tree_store_append (store, &iter2, &iter);
547 gtk_tree_store_set (store, &iter2, 0, "Augusta", -1);
549 gtk_tree_store_append (store, &iter2, &iter);
550 gtk_tree_store_set (store, &iter2, 0, "Austin", -1);
552 gtk_tree_store_append (store, &iter2, &iter);
553 gtk_tree_store_set (store, &iter2, 0, "Baton Rouge", -1);
555 gtk_tree_store_append (store, &iter2, &iter);
556 gtk_tree_store_set (store, &iter2, 0, "Bismarck", -1);
558 gtk_tree_store_append (store, &iter2, &iter);
559 gtk_tree_store_set (store, &iter2, 0, "Boise", -1);
561 gtk_tree_store_append (store, &iter2, &iter);
562 gtk_tree_store_set (store, &iter2, 0, "Boston", -1);
564 gtk_tree_store_append (store, &iter, NULL);
565 gtk_tree_store_set (store, &iter, 0, "C - D", -1);
567 gtk_tree_store_append (store, &iter2, &iter);
568 gtk_tree_store_set (store, &iter2, 0, "Carson City", -1);
570 gtk_tree_store_append (store, &iter2, &iter);
571 gtk_tree_store_set (store, &iter2, 0, "Charleston", -1);
573 gtk_tree_store_append (store, &iter2, &iter);
574 gtk_tree_store_set (store, &iter2, 0, "Cheyenne", -1);
576 gtk_tree_store_append (store, &iter2, &iter);
577 gtk_tree_store_set (store, &iter2, 0, "Columbia", -1);
579 gtk_tree_store_append (store, &iter2, &iter);
580 gtk_tree_store_set (store, &iter2, 0, "Columbus", -1);
582 gtk_tree_store_append (store, &iter2, &iter);
583 gtk_tree_store_set (store, &iter2, 0, "Concord", -1);
585 gtk_tree_store_append (store, &iter2, &iter);
586 gtk_tree_store_set (store, &iter2, 0, "Denver", -1);
588 gtk_tree_store_append (store, &iter2, &iter);
589 gtk_tree_store_set (store, &iter2, 0, "Des Moines", -1);
591 gtk_tree_store_append (store, &iter2, &iter);
592 gtk_tree_store_set (store, &iter2, 0, "Dover", -1);
595 gtk_tree_store_append (store, &iter, NULL);
596 gtk_tree_store_set (store, &iter, 0, "E - J", -1);
598 gtk_tree_store_append (store, &iter2, &iter);
599 gtk_tree_store_set (store, &iter2, 0, "Frankfort", -1);
601 gtk_tree_store_append (store, &iter2, &iter);
602 gtk_tree_store_set (store, &iter2, 0, "Harrisburg", -1);
604 gtk_tree_store_append (store, &iter2, &iter);
605 gtk_tree_store_set (store, &iter2, 0, "Hartford", -1);
607 gtk_tree_store_append (store, &iter2, &iter);
608 gtk_tree_store_set (store, &iter2, 0, "Helena", -1);
610 gtk_tree_store_append (store, &iter2, &iter);
611 gtk_tree_store_set (store, &iter2, 0, "Honolulu", -1);
613 gtk_tree_store_append (store, &iter2, &iter);
614 gtk_tree_store_set (store, &iter2, 0, "Indianapolis", -1);
616 gtk_tree_store_append (store, &iter2, &iter);
617 gtk_tree_store_set (store, &iter2, 0, "Jackson", -1);
619 gtk_tree_store_append (store, &iter2, &iter);
620 gtk_tree_store_set (store, &iter2, 0, "Jefferson City", -1);
622 gtk_tree_store_append (store, &iter2, &iter);
623 gtk_tree_store_set (store, &iter2, 0, "Juneau", -1);
626 gtk_tree_store_append (store, &iter, NULL);
627 gtk_tree_store_set (store, &iter, 0, "K - O", -1);
629 gtk_tree_store_append (store, &iter2, &iter);
630 gtk_tree_store_set (store, &iter2, 0, "Lansing", -1);
632 gtk_tree_store_append (store, &iter2, &iter);
633 gtk_tree_store_set (store, &iter2, 0, "Lincoln", -1);
635 gtk_tree_store_append (store, &iter2, &iter);
636 gtk_tree_store_set (store, &iter2, 0, "Little Rock", -1);
638 gtk_tree_store_append (store, &iter2, &iter);
639 gtk_tree_store_set (store, &iter2, 0, "Madison", -1);
641 gtk_tree_store_append (store, &iter2, &iter);
642 gtk_tree_store_set (store, &iter2, 0, "Montgomery", -1);
644 gtk_tree_store_append (store, &iter2, &iter);
645 gtk_tree_store_set (store, &iter2, 0, "Montpelier", -1);
647 gtk_tree_store_append (store, &iter2, &iter);
648 gtk_tree_store_set (store, &iter2, 0, "Nashville", -1);
650 gtk_tree_store_append (store, &iter2, &iter);
651 gtk_tree_store_set (store, &iter2, 0, "Oklahoma City", -1);
653 gtk_tree_store_append (store, &iter2, &iter);
654 gtk_tree_store_set (store, &iter2, 0, "Olympia", -1);
657 gtk_tree_store_append (store, &iter, NULL);
658 gtk_tree_store_set (store, &iter, 0, "P - S", -1);
660 gtk_tree_store_append (store, &iter2, &iter);
661 gtk_tree_store_set (store, &iter2, 0, "Phoenix", -1);
663 gtk_tree_store_append (store, &iter2, &iter);
664 gtk_tree_store_set (store, &iter2, 0, "Pierre", -1);
666 gtk_tree_store_append (store, &iter2, &iter);
667 gtk_tree_store_set (store, &iter2, 0, "Providence", -1);
669 gtk_tree_store_append (store, &iter2, &iter);
670 gtk_tree_store_set (store, &iter2, 0, "Raleigh", -1);
672 gtk_tree_store_append (store, &iter2, &iter);
673 gtk_tree_store_set (store, &iter2, 0, "Richmond", -1);
675 gtk_tree_store_append (store, &iter2, &iter);
676 gtk_tree_store_set (store, &iter2, 0, "Sacramento", -1);
678 gtk_tree_store_append (store, &iter2, &iter);
679 gtk_tree_store_set (store, &iter2, 0, "Salem", -1);
681 gtk_tree_store_append (store, &iter2, &iter);
682 gtk_tree_store_set (store, &iter2, 0, "Salt Lake City", -1);
684 gtk_tree_store_append (store, &iter2, &iter);
685 gtk_tree_store_set (store, &iter2, 0, "Santa Fe", -1);
687 gtk_tree_store_append (store, &iter2, &iter);
688 gtk_tree_store_set (store, &iter2, 0, "Springfield", -1);
690 gtk_tree_store_append (store, &iter2, &iter);
691 gtk_tree_store_set (store, &iter2, 0, "St. Paul", -1);
694 gtk_tree_store_append (store, &iter, NULL);
695 gtk_tree_store_set (store, &iter, 0, "T - Z", -1);
697 gtk_tree_store_append (store, &iter2, &iter);
698 gtk_tree_store_set (store, &iter2, 0, "Tallahassee", -1);
700 gtk_tree_store_append (store, &iter2, &iter);
701 gtk_tree_store_set (store, &iter2, 0, "Topeka", -1);
703 gtk_tree_store_append (store, &iter2, &iter);
704 gtk_tree_store_set (store, &iter2, 0, "Trenton", -1);
706 return GTK_TREE_MODEL (store);
710 capital_sensitive (GtkCellLayout *cell_layout,
711 GtkCellRenderer *cell,
712 GtkTreeModel *tree_model,
718 sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
720 g_object_set (cell, "sensitive", sensitive, NULL);
724 capital_animation (gpointer data)
726 static gint insert_count = 0;
727 GtkTreeModel *model = GTK_TREE_MODEL (data);
729 GtkTreeIter iter, parent;
731 switch (insert_count % 8)
734 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, NULL, 0);
735 gtk_tree_store_set (GTK_TREE_STORE (model),
741 path = gtk_tree_path_new_from_indices (0, -1);
742 gtk_tree_model_get_iter (model, &parent, path);
743 gtk_tree_path_free (path);
744 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 0);
745 gtk_tree_store_set (GTK_TREE_STORE (model),
751 path = gtk_tree_path_new_from_indices (0, -1);
752 gtk_tree_model_get_iter (model, &parent, path);
753 gtk_tree_path_free (path);
754 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 1);
755 gtk_tree_store_set (GTK_TREE_STORE (model),
761 path = gtk_tree_path_new_from_indices (0, -1);
762 gtk_tree_model_get_iter (model, &parent, path);
763 gtk_tree_path_free (path);
764 gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 2);
765 gtk_tree_store_set (GTK_TREE_STORE (model),
771 path = gtk_tree_path_new_from_indices (0, 2, -1);
772 gtk_tree_model_get_iter (model, &iter, path);
773 gtk_tree_path_free (path);
774 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
778 path = gtk_tree_path_new_from_indices (0, 1, -1);
779 gtk_tree_model_get_iter (model, &iter, path);
780 gtk_tree_path_free (path);
781 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
785 path = gtk_tree_path_new_from_indices (0, 0, -1);
786 gtk_tree_model_get_iter (model, &iter, path);
787 gtk_tree_path_free (path);
788 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
792 path = gtk_tree_path_new_from_indices (0, -1);
793 gtk_tree_model_get_iter (model, &iter, path);
794 gtk_tree_path_free (path);
795 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
807 setup_combo_entry (GtkWidget *entry_box)
809 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
811 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
813 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
814 "la la la dum de dum la la la la la la boom de da la la");
815 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
817 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
819 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
821 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
823 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
825 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
827 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
829 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
831 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
833 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
835 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
837 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
839 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
841 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
843 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
845 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
847 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
849 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
851 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
853 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
855 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
857 gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
862 set_sensitive (GtkCellLayout *cell_layout,
863 GtkCellRenderer *cell,
864 GtkTreeModel *tree_model,
872 path = gtk_tree_model_get_path (tree_model, iter);
873 indices = gtk_tree_path_get_indices (path);
874 sensitive = indices[0] != 1;
875 gtk_tree_path_free (path);
877 g_object_set (cell, "sensitive", sensitive, NULL);
881 is_separator (GtkTreeModel *model,
888 path = gtk_tree_model_get_path (model, iter);
889 result = gtk_tree_path_get_indices (path)[0] == 4;
890 gtk_tree_path_free (path);
897 displayed_row_changed (GtkComboBox *combo,
903 row = gtk_combo_box_get_active (combo);
904 path = gtk_tree_path_new_from_indices (row, -1);
905 gtk_cell_view_set_displayed_row (cell, path);
906 gtk_tree_path_free (path);
910 main (int argc, char **argv)
912 GtkWidget *window, *cellview, *mainbox;
913 GtkWidget *combobox, *comboboxtext, *comboboxgrid;
914 GtkWidget *tmp, *boom;
915 GtkCellRenderer *renderer;
922 gtk_init (&argc, &argv);
924 if (g_getenv ("RTL"))
925 gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
927 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
928 gtk_container_set_border_width (GTK_CONTAINER (window), 5);
929 g_signal_connect (window, "destroy", gtk_main_quit, NULL);
931 mainbox = gtk_vbox_new (FALSE, 2);
932 gtk_container_add (GTK_CONTAINER (window), mainbox);
935 tmp = gtk_frame_new ("GtkCellView");
936 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
938 boom = gtk_vbox_new (FALSE, 0);
939 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
940 gtk_container_add (GTK_CONTAINER (tmp), boom);
942 cellview = gtk_cell_view_new ();
943 renderer = gtk_cell_renderer_pixbuf_new ();
944 pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
945 GTK_ICON_SIZE_BUTTON, NULL);
947 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
950 g_object_set (renderer, "pixbuf", pixbuf, NULL);
952 renderer = gtk_cell_renderer_text_new ();
953 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
956 g_object_set (renderer, "text", "la la la", NULL);
957 gtk_container_add (GTK_CONTAINER (boom), cellview);
959 /* GtkComboBox list */
960 tmp = gtk_frame_new ("GtkComboBox (list)");
961 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
963 boom = gtk_vbox_new (FALSE, 0);
964 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
965 gtk_container_add (GTK_CONTAINER (tmp), boom);
967 model = create_list_blaat ();
968 combobox = gtk_combo_box_new_with_model (model);
969 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
970 g_object_unref (model);
971 gtk_container_add (GTK_CONTAINER (boom), combobox);
973 renderer = gtk_cell_renderer_pixbuf_new ();
974 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
977 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
980 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
985 renderer = gtk_cell_renderer_text_new ();
986 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
989 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
992 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
996 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
997 is_separator, NULL, NULL);
999 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1001 /* GtkComboBox custom entry */
1002 tmp = gtk_frame_new ("GtkComboBox (custom)");
1003 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1005 boom = gtk_vbox_new (FALSE, 0);
1006 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1007 gtk_container_add (GTK_CONTAINER (tmp), boom);
1009 model = create_list_blaat ();
1010 combobox = gtk_combo_box_new_with_model (model);
1011 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1012 g_object_unref (model);
1013 gtk_container_add (GTK_CONTAINER (boom), combobox);
1015 renderer = gtk_cell_renderer_pixbuf_new ();
1016 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1019 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1022 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1027 renderer = gtk_cell_renderer_text_new ();
1028 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1031 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1034 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1038 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1039 is_separator, NULL, NULL);
1041 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1043 tmp = gtk_cell_view_new ();
1044 gtk_widget_show (tmp);
1045 gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model);
1047 renderer = gtk_cell_renderer_text_new ();
1048 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), renderer, TRUE);
1049 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), renderer,
1053 color.blue = 0xffff;
1055 gtk_cell_view_set_background_color (GTK_CELL_VIEW (tmp), &color);
1056 displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp));
1057 g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp);
1059 gtk_container_add (GTK_CONTAINER (combobox), tmp);
1061 /* GtkComboBox tree */
1062 tmp = gtk_frame_new ("GtkComboBox (tree)");
1063 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1065 boom = gtk_vbox_new (FALSE, 0);
1066 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1067 gtk_container_add (GTK_CONTAINER (tmp), boom);
1069 model = create_tree_blaat ();
1070 combobox = gtk_combo_box_new_with_model (model);
1071 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1072 g_object_unref (model);
1073 gtk_container_add (GTK_CONTAINER (boom), combobox);
1075 renderer = gtk_cell_renderer_pixbuf_new ();
1076 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1079 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1082 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1087 renderer = gtk_cell_renderer_text_new ();
1088 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1091 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1094 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1098 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1099 is_separator, NULL, NULL);
1101 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1103 g_timeout_add (1000, (GSourceFunc) animation_timer, model);
1106 /* GtkComboBox (grid mode) */
1107 tmp = gtk_frame_new ("GtkComboBox (grid mode)");
1108 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1110 boom = gtk_vbox_new (FALSE, 0);
1111 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1112 gtk_container_add (GTK_CONTAINER (tmp), boom);
1114 comboboxgrid = create_combo_box_grid_demo ();
1115 gtk_box_pack_start (GTK_BOX (boom), comboboxgrid, FALSE, FALSE, 0);
1118 /* GtkComboBoxEntry */
1119 tmp = gtk_frame_new ("GtkComboBoxEntry");
1120 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1122 boom = gtk_vbox_new (FALSE, 0);
1123 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1124 gtk_container_add (GTK_CONTAINER (tmp), boom);
1126 comboboxtext = gtk_combo_box_entry_new_text ();
1127 setup_combo_entry (comboboxtext);
1128 gtk_container_add (GTK_CONTAINER (boom), comboboxtext);
1131 /* Phylogenetic tree */
1132 tmp = gtk_frame_new ("What are you ?");
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_phylogenetic_tree ();
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_text_new ();
1146 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1149 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1153 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1157 tmp = gtk_frame_new ("Where are you ?");
1158 gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
1160 boom = gtk_vbox_new (FALSE, 0);
1161 gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
1162 gtk_container_add (GTK_CONTAINER (tmp), boom);
1164 model = create_capital_tree ();
1165 combobox = gtk_combo_box_new_with_model (model);
1166 gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
1167 g_object_unref (model);
1168 gtk_container_add (GTK_CONTAINER (boom), combobox);
1169 renderer = gtk_cell_renderer_text_new ();
1170 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1173 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
1176 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1180 path = gtk_tree_path_new_from_indices (0, 8, -1);
1181 gtk_tree_model_get_iter (model, &iter, path);
1182 gtk_tree_path_free (path);
1183 gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);
1186 g_timeout_add (1000, (GSourceFunc) capital_animation, model);
1189 gtk_widget_show_all (window);