]> Pileus Git - ~andy/gtk/blob - tests/testmenubutton.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / tests / testmenubutton.c
1 #include <gtk/gtk.h>
2 #include "prop-editor.h"
3
4 int main (int argc, char **argv)
5 {
6         GtkWidget *window;
7         GtkWidget *button;
8         GtkWidget *grid;
9         GtkWidget *entry;
10         GtkWidget *menu_widget;
11         GtkAccelGroup *accel_group;
12         guint i;
13         GMenu *menu;
14
15         gtk_init (&argc, &argv);
16
17         window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
18         gtk_window_resize (GTK_WINDOW (window), 400, 300);
19
20         grid = gtk_grid_new ();
21         gtk_container_add (GTK_CONTAINER (window), grid);
22
23         accel_group = gtk_accel_group_new ();
24         gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
25
26         /* Button next to entry */
27         entry = gtk_entry_new ();
28         gtk_grid_attach (GTK_GRID (grid),
29                          entry,
30                          0, 0,
31                          1, 1);
32         button = gtk_menu_button_new ();
33         gtk_grid_attach (GTK_GRID (grid),
34                          button,
35                          1, 0,
36                          1, 1);
37
38         /* Button with GtkMenu */
39         menu_widget = gtk_menu_new ();
40         for (i = 5; i > 0; i--) {
41                 GtkWidget *item;
42
43                 if (i == 3) {
44                         item = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY, accel_group);
45                 } else {
46                         char *label;
47
48                         label = g_strdup_printf ("Item _%d", i);
49                         item = gtk_menu_item_new_with_mnemonic (label);
50                         g_free (label);
51                 }
52                 gtk_menu_item_set_use_underline (GTK_MENU_ITEM (item), TRUE);
53                 gtk_menu_attach (GTK_MENU (menu_widget),
54                                  item,
55                                  0, 1,
56                                  i - 1, i);
57         }
58         gtk_widget_show_all (menu_widget);
59
60         button = gtk_menu_button_new ();
61         gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu_widget);
62         gtk_grid_attach (GTK_GRID (grid),
63                          button,
64                          1, 1,
65                          1, 1);
66         gtk_widget_show (create_prop_editor (G_OBJECT (button), 0));
67
68         /* Button with GMenuModel */
69         menu = g_menu_new ();
70         for (i = 5; i > 0; i--) {
71                 char *label;
72                 label = g_strdup_printf ("Item _%d", i);
73                 g_menu_insert (menu, i - 1, label, NULL);
74                 g_free (label);
75         }
76         button = gtk_menu_button_new ();
77         gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), G_MENU_MODEL (menu));
78         gtk_grid_attach (GTK_GRID (grid),
79                          button,
80                          1, 2,
81                          1, 1);
82
83         gtk_widget_show_all (window);
84
85         gtk_main ();
86
87         return 0;
88 }