]> Pileus Git - ~andy/gtk/commitdiff
Some trees in combo boxes.
authorMatthias Clasen <mclasen@redhat.com>
Mon, 2 Aug 2004 19:17:19 +0000 (19:17 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 2 Aug 2004 19:17:19 +0000 (19:17 +0000)
2004-08-02  Matthias Clasen  <mclasen@redhat.com>

* tests/testcombo.c: Some trees in combo boxes.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
tests/testcombo.c

index d0ab202838075f61612b14601e080473eef67232..2200f0f05153a561fb92fb71bac9e5f9e0bd1946 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/testcombo.c: Some trees in combo boxes.
+
        * gtk/gtkcombobox.c: Rework the combo box to handle 
        tree models.  (#139582, Matt Walton)
        
index d0ab202838075f61612b14601e080473eef67232..2200f0f05153a561fb92fb71bac9e5f9e0bd1946 100644 (file)
@@ -1,5 +1,7 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/testcombo.c: Some trees in combo boxes.
+
        * gtk/gtkcombobox.c: Rework the combo box to handle 
        tree models.  (#139582, Matt Walton)
        
index d0ab202838075f61612b14601e080473eef67232..2200f0f05153a561fb92fb71bac9e5f9e0bd1946 100644 (file)
@@ -1,5 +1,7 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/testcombo.c: Some trees in combo boxes.
+
        * gtk/gtkcombobox.c: Rework the combo box to handle 
        tree models.  (#139582, Matt Walton)
        
index d0ab202838075f61612b14601e080473eef67232..2200f0f05153a561fb92fb71bac9e5f9e0bd1946 100644 (file)
@@ -1,5 +1,7 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/testcombo.c: Some trees in combo boxes.
+
        * gtk/gtkcombobox.c: Rework the combo box to handle 
        tree models.  (#139582, Matt Walton)
        
index b666b9401184509b4c7a21419fbc4c0b7465d76e..f2b7c7401dc27f068132aacbde26bf881d30ce7d 100644 (file)
@@ -1,6 +1,5 @@
 #include <config.h>
 #include <gtk/gtk.h>
-#include <gtk/gtkcellview.h>
 
 #include <string.h>
 #include <stdio.h>
@@ -119,7 +118,78 @@ create_combo_box_grid_demo ()
 
 /* blaat */
 static GtkTreeModel *
-create_blaat ()
+create_tree_blaat ()
+{
+        GdkPixbuf *pixbuf;
+        GtkWidget *cellview;
+        GtkTreeIter iter, iter2;
+        GtkTreeStore *store;
+
+        cellview = gtk_cell_view_new ();
+
+       store = gtk_tree_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN);
+
+        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
+                                         GTK_ICON_SIZE_BUTTON, NULL);
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter,
+                            0, pixbuf,
+                            1, "gtk-stock-dialog-warning",
+                           2, FALSE,
+                            -1);
+
+        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
+                                         GTK_ICON_SIZE_BUTTON, NULL);
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, pixbuf,
+                            1, "gtk-stock-stop",
+                           2, FALSE,
+                            -1);
+
+        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
+                                         GTK_ICON_SIZE_BUTTON, NULL);
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, pixbuf,
+                            1, "gtk-stock-new",
+                           2, FALSE,
+                            -1);
+
+        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
+                                         GTK_ICON_SIZE_BUTTON, NULL);
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter,
+                            0, pixbuf,
+                            1, "gtk-stock-clear",
+                           2, FALSE,
+                            -1);
+
+#if 0
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter,
+                            0, NULL,
+                            1, "separator",
+                           2, TRUE,
+                            -1);
+#endif
+
+        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
+                                         GTK_ICON_SIZE_BUTTON, NULL);
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter,
+                            0, pixbuf,
+                            1, "gtk-stock-open",
+                           2, FALSE,
+                            -1);
+
+        gtk_widget_destroy (cellview);
+
+        return GTK_TREE_MODEL (store);
+}
+
+static GtkTreeModel *
+create_list_blaat ()
 {
         GdkPixbuf *pixbuf;
         GtkWidget *cellview;
@@ -140,7 +210,7 @@ create_blaat ()
 
         pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
                                          GTK_ICON_SIZE_BUTTON, NULL);
-        gtk_list_store_append (store, &iter);
+        gtk_list_store_append (store, &iter);                         
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
                             1, "gtk-stock-stop",
@@ -148,7 +218,7 @@ create_blaat ()
 
         pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
                                          GTK_ICON_SIZE_BUTTON, NULL);
-        gtk_list_store_append (store, &iter);
+        gtk_list_store_append (store, &iter);                         
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
                             1, "gtk-stock-new",
@@ -181,6 +251,540 @@ create_blaat ()
         return GTK_TREE_MODEL (store);
 }
 
+/* blaat */
+static GtkTreeModel *
+create_phylogenetic_tree ()
+{
+        GtkTreeIter iter, iter2, iter3;
+        GtkTreeStore *store;
+
+       store = gtk_tree_store_new (1,G_TYPE_STRING);
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter,
+                            0, "Eubacteria",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Aquifecales",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Thermotogales",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Thermodesulfobacterium",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Thermus-Deinococcus group",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Chloroflecales",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Cyanobacteria",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Firmicutes",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Leptospirillium Group",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Synergistes",
+                            -1);
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Chlorobium-Flavobacteria group",
+                            -1);
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Chlamydia-Verrucomicrobia group",
+                            -1);
+
+        gtk_tree_store_append (store, &iter3, &iter2);                        
+        gtk_tree_store_set (store, &iter3,
+                            0, "Verrucomicrobia",
+                            -1);
+        gtk_tree_store_append (store, &iter3, &iter2);                        
+        gtk_tree_store_set (store, &iter3,
+                            0, "Chlamydia",
+                            -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Flexistipes",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Fibrobacter group",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "spirocheteus",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Proteobacteria",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter3, &iter2);                        
+        gtk_tree_store_set (store, &iter3,
+                            0, "alpha",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter3, &iter2);                        
+        gtk_tree_store_set (store, &iter3,
+                            0, "beta",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter3, &iter2);                        
+        gtk_tree_store_set (store, &iter3,
+                            0, "delta ",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter3, &iter2);                        
+        gtk_tree_store_set (store, &iter3,
+                            0, "epsilon",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter3, &iter2);  
+        gtk_tree_store_set (store, &iter3,
+                            0, "gamma ",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter, NULL);                           
+        gtk_tree_store_set (store, &iter,
+                            0, "Eukaryotes",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Metazoa",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Bilateria",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Myxozoa",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Cnidaria",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Ctenophora",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Placozoa",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Porifera",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "choanoflagellates",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Fungi",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Microsporidia",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Aleveolates",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Stramenopiles",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Rhodophyta",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Viridaeplantae",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "crytomonads et al",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter, NULL);                           
+        gtk_tree_store_set (store, &iter,
+                            0, "Archaea ",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Korarchaeota",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Crenarchaeota",
+                            -1);
+
+
+        gtk_tree_store_append (store, &iter2, &iter);                         
+        gtk_tree_store_set (store, &iter2,
+                            0, "Buryarchaeota",
+                            -1);
+
+        return GTK_TREE_MODEL (store);
+}
+
+
+/* blaat */
+static GtkTreeModel *
+create_capital_tree ()
+{
+        GtkTreeIter iter, iter2;
+        GtkTreeStore *store;
+
+       store = gtk_tree_store_new (1, G_TYPE_STRING);
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter, 0, "A - B", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Albany", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Annapolis", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Atlanta", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Augusta", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Austin", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Baton Rouge", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Bismarck", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Boise", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Boston", -1);
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter, 0, "C - D", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Carson City", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Charleston", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Cheyenne", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Columbia", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Columbus", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Concord", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Denver", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Des Moines", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Dover", -1);
+
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter, 0, "E - J", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Frankfort", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Harrisburg", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Hartford", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Helena", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Honolulu", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Indianapolis", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Jackson", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Jefferson City", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Juneau", -1);
+
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter, 0, "K - O", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Lansing", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Lincoln", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Little Rock", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Madison", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Montgomery", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Montpelier", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Nashville", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Oklahoma City", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Olympia", -1);
+
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter, 0, "P - S", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Phoenix", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Pierre", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Providence", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Raleigh", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Richmond", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Sacramento", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Salem", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Salt Lake City", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Santa Fe", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Springfield", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "St. Paul", -1);
+
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter, 0, "T - Z", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Tallahassee", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Topeka", -1);
+
+        gtk_tree_store_append (store, &iter2, &iter);
+        gtk_tree_store_set (store, &iter2, 0, "Trenton", -1);
+
+        return GTK_TREE_MODEL (store);
+}
+
+static void
+capital_sensitive (GtkCellLayout   *cell_layout,
+                  GtkCellRenderer *cell,
+                  GtkTreeModel    *tree_model,
+                  GtkTreeIter     *iter,
+                  gpointer         data)
+{
+  gboolean sensitive;
+
+  sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
+
+  g_object_set (cell, "sensitive", sensitive, NULL);
+}
+
+static gboolean
+capital_animation (gpointer data)
+{
+  static gint insert_count = 0;
+  GtkTreeModel *model = GTK_TREE_MODEL (data);
+  GtkTreePath *path;
+  GtkTreeIter iter, parent;
+
+  switch (insert_count % 8)
+    {
+    case 0:
+      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, NULL, 0);
+      gtk_tree_store_set (GTK_TREE_STORE (model), 
+                         &iter,
+                         0, "Europe", -1);
+      break;
+
+    case 1:
+      path = gtk_tree_path_new_from_indices (0, -1);
+      gtk_tree_model_get_iter (model, &parent, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 0);
+      gtk_tree_store_set (GTK_TREE_STORE (model), 
+                         &iter,
+                         0, "Berlin", -1);
+      break;
+
+    case 2:
+      path = gtk_tree_path_new_from_indices (0, -1);
+      gtk_tree_model_get_iter (model, &parent, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 1);
+      gtk_tree_store_set (GTK_TREE_STORE (model), 
+                         &iter,
+                         0, "London", -1);
+      break;
+
+    case 3:
+      path = gtk_tree_path_new_from_indices (0, -1);
+      gtk_tree_model_get_iter (model, &parent, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 2);
+      gtk_tree_store_set (GTK_TREE_STORE (model), 
+                         &iter,
+                         0, "Paris", -1);
+      break;
+
+    case 4:
+      path = gtk_tree_path_new_from_indices (0, 2, -1);
+      gtk_tree_model_get_iter (model, &iter, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
+      break;
+
+    case 5:
+      path = gtk_tree_path_new_from_indices (0, 1, -1);
+      gtk_tree_model_get_iter (model, &iter, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
+      break;
+
+    case 6:
+      path = gtk_tree_path_new_from_indices (0, 0, -1);
+      gtk_tree_model_get_iter (model, &iter, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
+      break;
+
+    case 7:
+      path = gtk_tree_path_new_from_indices (0, -1);
+      gtk_tree_model_get_iter (model, &iter, path);
+      gtk_tree_path_free (path);
+      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
+      break;
+
+    default: ;
+
+    }
+  insert_count++;
+
+  return TRUE;
+}
+
 static void
 setup_combo_entry (GtkWidget *entry_box)
 {
@@ -196,6 +800,44 @@ setup_combo_entry (GtkWidget *entry_box)
                                   "bleep");
        gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
                                   "klaas");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas0");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas1");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas2");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas3");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas4");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas5");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas6");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas7");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas8");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas9");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaasa");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaasb");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaasc");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaasd");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaase");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaasf");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas10");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas11");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (entry_box),
+                                  "klaas12");
 }
 
 static void
@@ -243,9 +885,14 @@ main (int argc, char **argv)
         GdkPixbuf *pixbuf;
         GtkTreeModel *model;
         GValue value = {0, };
-
+       GtkTreePath *path;
+       GtkTreeIter iter;
+       
         gtk_init (&argc, &argv);
 
+       if (g_getenv ("RTL"))
+         gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
+
         window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
         gtk_container_set_border_width (GTK_CONTAINER (window), 5);
         g_signal_connect (window, "destroy", gtk_main_quit, NULL);
@@ -253,7 +900,6 @@ main (int argc, char **argv)
         mainbox = gtk_vbox_new (FALSE, 2);
         gtk_container_add (GTK_CONTAINER (window), mainbox);
 
-
         /* GtkCellView */
         tmp = gtk_frame_new ("GtkCellView");
         gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
@@ -291,17 +937,17 @@ main (int argc, char **argv)
         g_value_unset (&value);
         gtk_container_add (GTK_CONTAINER (boom), cellview);
 
-
-        /* GtkComboBox */
-        tmp = gtk_frame_new ("GtkComboBox");
+        /* GtkComboBox list */
+        tmp = gtk_frame_new ("GtkComboBox (list)");
         gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
 
         boom = gtk_vbox_new (FALSE, 0);
         gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
         gtk_container_add (GTK_CONTAINER (tmp), boom);
 
-        model = create_blaat ();
+        model = create_list_blaat ();
         combobox = gtk_combo_box_new_with_model (model);
+       gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
         g_object_unref (model);
         gtk_container_add (GTK_CONTAINER (boom), combobox);
 
@@ -333,6 +979,50 @@ main (int argc, char **argv)
                                                
         gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
 
+        /* GtkComboBox tree */
+        tmp = gtk_frame_new ("GtkComboBox (tree)");
+        gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
+
+        boom = gtk_vbox_new (FALSE, 0);
+        gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
+        gtk_container_add (GTK_CONTAINER (tmp), boom);
+
+        model = create_tree_blaat ();
+        combobox = gtk_combo_box_new_with_model (model);
+       gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
+        g_object_unref (model);
+        gtk_container_add (GTK_CONTAINER (boom), combobox);
+
+        renderer = gtk_cell_renderer_pixbuf_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
+                                    renderer,
+                                    FALSE);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+                                        "pixbuf", 0,
+                                        NULL);
+       gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
+                                           renderer,
+                                           set_sensitive,
+                                           NULL, NULL);
+
+        renderer = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
+                                    renderer,
+                                    TRUE);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+                                        "text", 1,
+                                        NULL);
+       gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
+                                           renderer,
+                                           set_sensitive,
+                                           NULL, NULL);
+       gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), 
+                                             is_separator, NULL, NULL);
+                                               
+        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
+#if 0
+       g_timeout_add (1000, (GSourceFunc) animation_timer, model);
+#endif
 
         /* GtkComboBox (grid mode) */
         tmp = gtk_frame_new ("GtkComboBox (grid mode)");
@@ -358,7 +1048,65 @@ main (int argc, char **argv)
        setup_combo_entry (comboboxtext);
         gtk_container_add (GTK_CONTAINER (boom), comboboxtext);
 
-        /* done */
+
+        /* Phylogenetic tree */
+        tmp = gtk_frame_new ("What are you ?");
+        gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
+
+        boom = gtk_vbox_new (FALSE, 0);
+        gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
+        gtk_container_add (GTK_CONTAINER (tmp), boom);
+
+        model = create_phylogenetic_tree ();
+        combobox = gtk_combo_box_new_with_model (model);
+       gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
+        g_object_unref (model);
+        gtk_container_add (GTK_CONTAINER (boom), combobox);
+
+        renderer = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
+                                    renderer,
+                                    TRUE);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+                                        "text", 0,
+                                        NULL);
+       
+        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
+
+
+        /* Capitals */
+        tmp = gtk_frame_new ("Where are you ?");
+        gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
+
+        boom = gtk_vbox_new (FALSE, 0);
+        gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
+        gtk_container_add (GTK_CONTAINER (tmp), boom);
+
+        model = create_capital_tree ();
+        combobox = gtk_combo_box_new_with_model (model);
+       gtk_combo_box_set_add_tearoffs (GTK_COMBO_BOX (combobox), TRUE);
+        g_object_unref (model);
+        gtk_container_add (GTK_CONTAINER (boom), combobox);
+        renderer = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
+                                    renderer,
+                                    TRUE);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+                                        "text", 0,
+                                        NULL);
+       gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
+                                           renderer,
+                                           capital_sensitive,
+                                           NULL, NULL);
+       path = gtk_tree_path_new_from_indices (0, 8, -1);
+       gtk_tree_model_get_iter (model, &iter, path);
+       gtk_tree_path_free (path);
+        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);
+
+#if 1
+       g_timeout_add (1000, (GSourceFunc) capital_animation, model);
+#endif
+
         gtk_widget_show_all (window);
 
         gtk_main ();