X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=tests%2Ftesttreemenu.c;h=1e8443abc2b429e555374a9df6c5b08f0e960555;hb=HEAD;hp=76422d269503fee2243e6fba2740c1e5eff59b09;hpb=84a726c3ce9df0ed3bd79d997c93511bcd190548;p=~andy%2Fgtk diff --git a/tests/testtreemenu.c b/tests/testtreemenu.c index 76422d269..1e8443abc 100644 --- a/tests/testtreemenu.c +++ b/tests/testtreemenu.c @@ -1,22 +1,23 @@ #include -#include "cellareascaffold.h" /******************************************************* * Grid Test * *******************************************************/ + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ 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 (color, &col)) return NULL; pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, @@ -30,9 +31,9 @@ create_color_pixbuf (const char *color) 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] = col.red * 255; + p[1] = col.green * 255; + p[2] = col.blue * 255; p += 3; } @@ -126,6 +127,7 @@ create_menu_grid_demo (void) return menu; } +#endif /******************************************************* * Simple Test * @@ -273,29 +275,21 @@ simple_tree_model (void) return (GtkTreeModel *)store; } -static GtkWidget * -simple_tree_menu (void) +static GtkCellArea * +create_cell_area (void) { - GtkTreeModel *model; - GtkWidget *menu; GtkCellArea *area; GtkCellRenderer *renderer; - model = simple_tree_model (); - - menu = gtk_tree_menu_new (); - gtk_tree_menu_set_model (GTK_TREE_MENU (menu), model); - gtk_tree_menu_set_root (GTK_TREE_MENU (menu), NULL); - - area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (menu)); + area = gtk_cell_area_box_new (); cell_1 = renderer = gtk_cell_renderer_text_new (); - gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, FALSE); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, FALSE, FALSE); gtk_cell_area_attribute_connect (area, renderer, "text", SIMPLE_COLUMN_NAME); cell_2 = renderer = gtk_cell_renderer_pixbuf_new (); g_object_set (G_OBJECT (renderer), "xalign", 0.0F, NULL); - gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, TRUE, FALSE); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, TRUE, FALSE, FALSE); gtk_cell_area_attribute_connect (area, renderer, "stock-id", SIMPLE_COLUMN_ICON); cell_3 = renderer = gtk_cell_renderer_text_new (); @@ -303,62 +297,92 @@ simple_tree_menu (void) "wrap-mode", PANGO_WRAP_WORD, "wrap-width", 215, NULL); - gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, TRUE); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, TRUE, FALSE); gtk_cell_area_attribute_connect (area, renderer, "text", SIMPLE_COLUMN_DESCRIPTION); + return area; +} + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ +static GtkWidget * +simple_tree_menu (GtkCellArea *area) +{ + GtkTreeModel *model; + GtkWidget *menu; + + model = simple_tree_model (); + + menu = gtk_tree_menu_new_with_area (area); + gtk_tree_menu_set_model (GTK_TREE_MENU (menu), model); + return menu; } +#endif + +static void +orientation_changed (GtkComboBox *combo, + GtkCellArea *area) +{ + GtkOrientation orientation = gtk_combo_box_get_active (combo); + + gtk_orientable_set_orientation (GTK_ORIENTABLE (area), orientation); +} static void align_cell_2_toggled (GtkToggleButton *toggle, - GtkTreeMenu *menu) + GtkCellArea *area) { - GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (menu)); - gboolean align = gtk_toggle_button_get_active (toggle); + gboolean align = gtk_toggle_button_get_active (toggle); gtk_cell_area_cell_set (area, cell_2, "align", align, NULL); } static void align_cell_3_toggled (GtkToggleButton *toggle, - GtkTreeMenu *menu) + GtkCellArea *area) { - GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (menu)); - gboolean align = gtk_toggle_button_get_active (toggle); + gboolean align = gtk_toggle_button_get_active (toggle); gtk_cell_area_cell_set (area, cell_3, "align", align, NULL); } static void expand_cell_1_toggled (GtkToggleButton *toggle, - GtkTreeMenu *menu) + GtkCellArea *area) { - GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (menu)); - gboolean expand = gtk_toggle_button_get_active (toggle); + gboolean expand = gtk_toggle_button_get_active (toggle); gtk_cell_area_cell_set (area, cell_1, "expand", expand, NULL); } static void expand_cell_2_toggled (GtkToggleButton *toggle, - GtkTreeMenu *menu) + GtkCellArea *area) { - GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (menu)); - gboolean expand = gtk_toggle_button_get_active (toggle); + gboolean expand = gtk_toggle_button_get_active (toggle); gtk_cell_area_cell_set (area, cell_2, "expand", expand, NULL); } static void expand_cell_3_toggled (GtkToggleButton *toggle, - GtkTreeMenu *menu) + GtkCellArea *area) { - GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (menu)); - gboolean expand = gtk_toggle_button_get_active (toggle); + gboolean expand = gtk_toggle_button_get_active (toggle); gtk_cell_area_cell_set (area, cell_3, "expand", expand, NULL); } +gboolean +enable_submenu_headers (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + return TRUE; +} + + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ static void menu_activated_cb (GtkTreeMenu *menu, const gchar *path, @@ -378,15 +402,6 @@ menu_activated_cb (GtkTreeMenu *menu, g_free (row_name); } -gboolean -enable_submenu_headers (GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data) -{ - return TRUE; -} - - static void submenu_headers_toggled (GtkToggleButton *toggle, GtkTreeMenu *menu) @@ -403,25 +418,30 @@ tearoff_toggled (GtkToggleButton *toggle, { gtk_tree_menu_set_tearoff (menu, gtk_toggle_button_get_active (toggle)); } +#endif static void tree_menu (void) { GtkWidget *window, *widget; - GtkWidget *menu, *menubar, *vbox, *menuitem; + GtkWidget *menubar, *vbox; + GtkCellArea *area; + GtkTreeModel *store; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "GtkTreeMenu"); - vbox = gtk_vbox_new (FALSE, 4); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_widget_show (vbox); menubar = gtk_menu_bar_new (); gtk_widget_show (menubar); -#if 1 + store = simple_tree_model (); + area = create_cell_area (); +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ menuitem = gtk_menu_item_new_with_label ("Grid"); menu = create_menu_grid_demo (); gtk_widget_show (menu); @@ -429,8 +449,6 @@ tree_menu (void) gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu); -#endif - menuitem = gtk_menu_item_new_with_label ("Tree"); menu = simple_tree_menu (); gtk_widget_show (menu); @@ -441,15 +459,33 @@ tree_menu (void) g_signal_connect (menu, "menu-activate", G_CALLBACK (menu_activated_cb), NULL); gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0); +#endif + + /* Add a combo box with the same menu ! */ + widget = gtk_combo_box_new_with_area (area); + gtk_combo_box_set_model (GTK_COMBO_BOX (widget), store); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_end (GTK_BOX (vbox), widget, FALSE, FALSE, 0); /* Now add some controls */ + widget = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Vertical"); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (orientation_changed), area); + widget = gtk_check_button_new_with_label ("Align 2nd Cell"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); gtk_widget_show (widget); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (widget), "toggled", - G_CALLBACK (align_cell_2_toggled), menu); + G_CALLBACK (align_cell_2_toggled), area); widget = gtk_check_button_new_with_label ("Align 3rd Cell"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); @@ -457,7 +493,7 @@ tree_menu (void) gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (widget), "toggled", - G_CALLBACK (align_cell_3_toggled), menu); + G_CALLBACK (align_cell_3_toggled), area); widget = gtk_check_button_new_with_label ("Expand 1st Cell"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); @@ -465,7 +501,7 @@ tree_menu (void) gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (widget), "toggled", - G_CALLBACK (expand_cell_1_toggled), menu); + G_CALLBACK (expand_cell_1_toggled), area); widget = gtk_check_button_new_with_label ("Expand 2nd Cell"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); @@ -473,7 +509,7 @@ tree_menu (void) gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (widget), "toggled", - G_CALLBACK (expand_cell_2_toggled), menu); + G_CALLBACK (expand_cell_2_toggled), area); widget = gtk_check_button_new_with_label ("Expand 3rd Cell"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); @@ -481,8 +517,9 @@ tree_menu (void) gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (widget), "toggled", - G_CALLBACK (expand_cell_3_toggled), menu); + G_CALLBACK (expand_cell_3_toggled), area); +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ widget = gtk_check_button_new_with_label ("Submenu Headers"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); gtk_widget_show (widget); @@ -498,6 +535,7 @@ tree_menu (void) g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (tearoff_toggled), menu); +#endif gtk_container_add (GTK_CONTAINER (window), vbox);