]> Pileus Git - ~andy/gtk/blobdiff - tests/testcombo.c
Update config.h.win32.in
[~andy/gtk] / tests / testcombo.c
index 4a04f1a6bdc7e6f843d9534aedc8d6d140396507..2a9c527b4cfe8391aed87227d28f4fcab18558a3 100644 (file)
@@ -31,30 +31,28 @@ static GdkPixbuf *
 create_color_pixbuf (const char *color)
 {
         GdkPixbuf *pixbuf;
-        GdkColor col;
+        GdkRGBA rgba;
 
         int x;
         int num;
-        int rowstride;
         guchar *pixels, *p;
 
-        if (!gdk_color_parse (color, &col))
+        if (!gdk_rgba_parse (&rgba, color))
                 return NULL;
 
         pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
                                  FALSE, 8,
                                  16, 16);
 
-        rowstride = gdk_pixbuf_get_rowstride (pixbuf);
         p = pixels = gdk_pixbuf_get_pixels (pixbuf);
 
         num = gdk_pixbuf_get_width (pixbuf) *
                 gdk_pixbuf_get_height (pixbuf);
 
         for (x = 0; x < num; x++) {
-                p[0] = col.red / 65535 * 255;
-                p[1] = col.green / 65535 * 255;
-                p[2] = col.blue / 65535 * 255;
+                p[0] = rgba.red * 255;
+                p[1] = rgba.green * 255;
+                p[2] = rgba.blue * 255;
                 p += 3;
         }
 
@@ -166,8 +164,8 @@ create_tree_blaat (void)
 
        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);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_tree_store_append (store, &iter, NULL);
         gtk_tree_store_set (store, &iter,
                             0, pixbuf,
@@ -175,8 +173,8 @@ create_tree_blaat (void)
                            2, FALSE,
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_STOP,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_tree_store_append (store, &iter2, &iter);                         
         gtk_tree_store_set (store, &iter2,
                             0, pixbuf,
@@ -184,8 +182,8 @@ create_tree_blaat (void)
                            2, FALSE,
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_tree_store_append (store, &iter2, &iter);                         
         gtk_tree_store_set (store, &iter2,
                             0, pixbuf,
@@ -193,8 +191,8 @@ create_tree_blaat (void)
                            2, FALSE,
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_tree_store_append (store, &iter, NULL);
         gtk_tree_store_set (store, &iter,
                             0, pixbuf,
@@ -211,8 +209,8 @@ create_tree_blaat (void)
                             -1);
 #endif
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_OPEN,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_tree_store_append (store, &iter, NULL);
         gtk_tree_store_set (store, &iter,
                             0, pixbuf,
@@ -237,8 +235,8 @@ create_empty_list_blaat (void)
 
         store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_list_store_append (store, &iter);
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
@@ -268,24 +266,24 @@ populate_list_blaat (gpointer data)
 
   cellview = gtk_cell_view_new ();
   
-  pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
-                                  GTK_ICON_SIZE_BUTTON, NULL);
+  pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_STOP,
+                                         GTK_ICON_SIZE_BUTTON);
   gtk_list_store_append (store, &iter);                               
   gtk_list_store_set (store, &iter,
                      0, pixbuf,
                      1, "gtk-stock-stop",
                      -1);
   
-  pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
-                                  GTK_ICON_SIZE_BUTTON, NULL);
+  pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW,
+                                         GTK_ICON_SIZE_BUTTON);
   gtk_list_store_append (store, &iter);                               
   gtk_list_store_set (store, &iter,
                      0, pixbuf,
                      1, "gtk-stock-new",
                      -1);
   
-  pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
-                                  GTK_ICON_SIZE_BUTTON, NULL);
+  pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR,
+                                         GTK_ICON_SIZE_BUTTON);
   gtk_list_store_append (store, &iter);
   gtk_list_store_set (store, &iter,
                      0, pixbuf,
@@ -298,8 +296,8 @@ populate_list_blaat (gpointer data)
                      1, "separator",
                      -1);
   
-  pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
-                                  GTK_ICON_SIZE_BUTTON, NULL);
+  pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_OPEN,
+                                         GTK_ICON_SIZE_BUTTON);
   gtk_list_store_append (store, &iter);
   gtk_list_store_set (store, &iter,
                      0, pixbuf,
@@ -321,32 +319,32 @@ create_list_blaat (void)
 
         store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_list_store_append (store, &iter);
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
                             1, "gtk-stock-dialog-warning",
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_STOP,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_list_store_append (store, &iter);                         
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
                             1, "gtk-stock-stop",
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_list_store_append (store, &iter);                         
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
                             1, "gtk-stock-new",
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_list_store_append (store, &iter);
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
@@ -359,8 +357,8 @@ create_list_blaat (void)
                             1, "separator",
                             -1);
 
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_OPEN,
+                                                GTK_ICON_SIZE_BUTTON);
         gtk_list_store_append (store, &iter);
         gtk_list_store_set (store, &iter,
                             0, pixbuf,
@@ -405,6 +403,47 @@ create_list_long (void)
         return GTK_TREE_MODEL (store);
 }
 
+static GtkTreeModel *
+create_food_list (void)
+{
+        GtkTreeIter iter;
+        GtkListStore *store;
+
+        store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+        gtk_list_store_append (store, &iter);
+        gtk_list_store_set (store, &iter,
+                            0, "Pepperoni",
+                            1, "Pizza",
+                            -1);
+
+        gtk_list_store_append (store, &iter);                         
+        gtk_list_store_set (store, &iter,
+                            0, "Cheese",
+                            1, "Burger",
+                            -1);
+
+        gtk_list_store_append (store, &iter);                         
+        gtk_list_store_set (store, &iter,
+                            0, "Pineapple",
+                            1, "Milkshake",
+                            -1);
+
+        gtk_list_store_append (store, &iter);                         
+        gtk_list_store_set (store, &iter,
+                            0, "Orange",
+                            1, "Soda",
+                            -1);
+
+        gtk_list_store_append (store, &iter);                         
+        gtk_list_store_set (store, &iter,
+                            0, "Club",
+                            1, "Sandwich",
+                            -1);
+
+        return GTK_TREE_MODEL (store);
+}
+
+
 /* blaat */
 static GtkTreeModel *
 create_phylogenetic_tree (void)
@@ -1054,12 +1093,27 @@ main (int argc, char **argv)
        GtkTreePath *path;
        GtkTreeIter iter;
         GdkColor color;
+       GtkCellArea *area;
 
         gtk_init (&argc, &argv);
 
        if (g_getenv ("RTL"))
          gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
 
+       if (g_getenv ("LISTMODE"))
+         {
+           GtkCssProvider *provider = gtk_css_provider_new ();
+
+           gtk_css_provider_load_from_data (provider,
+                                            "* { -GtkComboBox-appears-as-list: true; }", 
+                                            -1, NULL);
+
+           gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
+                                                      GTK_STYLE_PROVIDER (provider),
+                                                      GTK_STYLE_PROVIDER_PRIORITY_FALLBACK);
+
+         }
+
         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);
@@ -1077,8 +1131,8 @@ main (int argc, char **argv)
 
         cellview = gtk_cell_view_new ();
         renderer = gtk_cell_renderer_pixbuf_new ();
-        pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING,
-                                         GTK_ICON_SIZE_BUTTON, NULL);
+        pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING,
+                                                GTK_ICON_SIZE_BUTTON);
 
         gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
                                     renderer,
@@ -1334,7 +1388,6 @@ main (int argc, char **argv)
        
         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);
@@ -1368,6 +1421,41 @@ main (int argc, char **argv)
        gdk_threads_add_timeout (1000, (GSourceFunc) capital_animation, model);
 #endif
 
+        /* Aligned Food */
+        tmp = gtk_frame_new ("Hungry ?");
+        gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);
+
+        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+        gtk_container_set_border_width (GTK_CONTAINER (boom), 5);
+        gtk_container_add (GTK_CONTAINER (tmp), boom);
+
+        model = create_food_list ();
+       combobox = gtk_combo_box_new_with_model (model);
+        g_object_unref (model);
+        gtk_container_add (GTK_CONTAINER (boom), combobox);
+
+       area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (combobox));
+
+        renderer = gtk_cell_renderer_text_new ();
+       gtk_cell_area_add_with_properties (area, renderer, 
+                                          "align", TRUE, 
+                                          "expand", TRUE, 
+                                          NULL);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+                                        "text", 0,
+                                        NULL);
+
+        renderer = gtk_cell_renderer_text_new ();
+       gtk_cell_area_add_with_properties (area, renderer, 
+                                          "align", TRUE, 
+                                          "expand", TRUE, 
+                                          NULL);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+                                        "text", 1,
+                                        NULL);
+
+        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
+
        /* Ellipsizing growing combos */
         tmp = gtk_frame_new ("Unconstrained Menu");
         gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0);