1 #include <glib.h>
2 #define GDK_VERSION_MIN_REQUIRED G_ENCODE_VERSION (3, 8)
3 #include <gtk/gtk.h>
4
main(int argc,char ** argv)5 int main (int argc, char **argv)
6 {
7 GtkWidget *window;
8 GtkWidget *grid;
9 GtkWidget *button;
10 GtkWidget *menu;
11 GtkWidget *item;
12 GtkWidget *box;
13 GtkWidget *label;
14 GtkAction *action1;
15 GtkAction *action2;
16 GtkAccelGroup *accel_group;
17
18 gtk_init (&argc, &argv);
19
20 action1 = gtk_action_new ("bold", NULL, NULL, GTK_STOCK_BOLD);
21 action2 = gtk_action_new ("new", NULL, NULL, GTK_STOCK_NEW);
22 gtk_action_set_always_show_image (action2, TRUE);
23
24 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
25
26 accel_group = gtk_accel_group_new ();
27 gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
28
29 grid = gtk_grid_new ();
30 gtk_container_add (GTK_CONTAINER (window), grid);
31
32 /* plain old stock button */
33 button = gtk_button_new_from_stock (GTK_STOCK_DELETE);
34 gtk_container_add (GTK_CONTAINER (grid), button);
35
36 /* gtk_button_set_always_show_image still works */
37 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
38 gtk_button_set_always_show_image (GTK_BUTTON (button), TRUE);
39 gtk_container_add (GTK_CONTAINER (grid), button);
40
41 /* old-style image-only button */
42 button = gtk_button_new ();
43 gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_icon_name ("edit-find", GTK_ICON_SIZE_BUTTON));
44 gtk_container_add (GTK_CONTAINER (grid), button);
45
46 /* new-style image-only button */
47 button = gtk_button_new_from_icon_name ("edit-clear", GTK_ICON_SIZE_BUTTON);
48 gtk_container_add (GTK_CONTAINER (grid), button);
49
50 /* GtkAction-backed button */
51 button = gtk_button_new ();
52 gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
53 gtk_activatable_set_related_action (GTK_ACTIVATABLE (button), action1);
54 gtk_container_add (GTK_CONTAINER (grid), button);
55
56 /* gtk_action_set_always_show_image still works for buttons */
57 button = gtk_button_new ();
58 gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
59 gtk_activatable_set_related_action (GTK_ACTIVATABLE (button), action2);
60 gtk_container_add (GTK_CONTAINER (grid), button);
61
62 button = gtk_menu_button_new ();
63 gtk_container_add (GTK_CONTAINER (grid), button);
64
65 menu = gtk_menu_new ();
66 gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
67 gtk_menu_set_accel_path (GTK_MENU (menu), "<menu>/TEST");
68
69 gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu);
70
71 /* plain old stock menuitem */
72 item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, NULL);
73 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
74
75 /* gtk_image_menu_item_set_always_show_image still works */
76 item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLOSE, accel_group);
77 gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
78 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
79
80 /* new-style menuitem with image */
81 item = gtk_menu_item_new ();
82 box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
83 gtk_container_add (GTK_CONTAINER (item), box);
84 gtk_container_add (GTK_CONTAINER (box), gtk_image_new_from_icon_name ("edit-clear", GTK_ICON_SIZE_MENU));
85 label = gtk_accel_label_new ("C_lear");
86 gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
87 gtk_label_set_xalign (GTK_LABEL (label), 0.0);
88 gtk_widget_set_halign (label, GTK_ALIGN_FILL);
89
90 gtk_widget_add_accelerator (item, "activate", accel_group,
91 GDK_KEY_x, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
92 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), item);
93 gtk_box_pack_end (GTK_BOX (box), label, TRUE, TRUE, 0);
94 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
95
96 /* GtkAction-backed menuitem */
97 item = gtk_image_menu_item_new ();
98 gtk_activatable_set_related_action (GTK_ACTIVATABLE (item), action1);
99 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
100
101 /* gtk_action_set_always_show_image still works for menuitems */
102 item = gtk_image_menu_item_new ();
103 gtk_activatable_set_related_action (GTK_ACTIVATABLE (item), action2);
104 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
105
106 gtk_widget_show_all (menu);
107
108 gtk_widget_show_all (window);
109
110 gtk_main ();
111
112 return 0;
113 }
114