1 #undef GTK_DISABLE_DEPRECATED
16 print_hello (GtkWidget *w,
22 g_message ("File New activated");
24 case ACTION_FILE_OPEN:
25 g_message ("File Open activated");
28 g_message ("OK activated");
30 case ACTION_HELP_ABOUT:
31 g_message ("Help About activated ");
34 g_assert_not_reached ();
39 static GtkItemFactoryEntry menu_items[] = {
40 { "/_File", NULL, NULL, 0, "<Branch>" },
41 { "/File/_New", "<control>N", print_hello, ACTION_FILE_NEW, "<Item>" },
42 { "/File/_Open", "<control>O", print_hello, ACTION_FILE_OPEN, "<Item>" },
43 { "/File/sep1", NULL, NULL, 0, "<Separator>" },
44 { "/File/Quit", "<control>Q", gtk_main_quit, 0, "<Item>" },
45 { "/O_K", "<control>K",print_hello, ACTION_OK, "<Item>" },
46 { "/_Help", NULL, NULL, 0, "<LastBranch>" },
47 { "/_Help/About", NULL, print_hello, ACTION_HELP_ABOUT, "<Item>" },
51 remove_buttons (GtkWidget *widget, GtkWidget *other_button)
53 gtk_widget_destroy (other_button);
54 gtk_widget_destroy (widget);
58 blink_cb (gpointer data)
60 GtkWidget *widget = data;
62 gtk_widget_show (widget);
63 g_object_set_data (G_OBJECT (widget), "blink", NULL);
69 blink (GtkWidget *widget,
72 guint blink_timeout = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (window), "blink"));
76 blink_timeout = g_timeout_add (1000, blink_cb, window);
77 gtk_widget_hide (window);
79 g_object_set_data (G_OBJECT (window), "blink", GUINT_TO_POINTER (blink_timeout));
84 local_destroy (GtkWidget *window)
86 guint blink_timeout = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (window), "blink"));
88 g_source_remove (blink_timeout);
92 remote_destroy (GtkWidget *window)
94 local_destroy (window);
99 add_buttons (GtkWidget *widget, GtkWidget *box)
101 GtkWidget *add_button;
102 GtkWidget *remove_button;
104 add_button = gtk_button_new_with_mnemonic ("_Add");
105 gtk_box_pack_start (GTK_BOX (box), add_button, TRUE, TRUE, 0);
106 gtk_widget_show (add_button);
108 g_signal_connect (add_button, "clicked",
109 G_CALLBACK (add_buttons),
112 remove_button = gtk_button_new_with_mnemonic ("_Remove");
113 gtk_box_pack_start (GTK_BOX (box), remove_button, TRUE, TRUE, 0);
114 gtk_widget_show (remove_button);
116 g_signal_connect (remove_button, "clicked",
117 G_CALLBACK (remove_buttons),
128 cbitems = g_list_append (cbitems, "item0");
129 cbitems = g_list_append (cbitems, "item1 item1");
130 cbitems = g_list_append (cbitems, "item2 item2 item2");
131 cbitems = g_list_append (cbitems, "item3 item3 item3 item3");
132 cbitems = g_list_append (cbitems, "item4 item4 item4 item4 item4");
133 cbitems = g_list_append (cbitems, "item5 item5 item5 item5 item5 item5");
134 cbitems = g_list_append (cbitems, "item6 item6 item6 item6 item6");
135 cbitems = g_list_append (cbitems, "item7 item7 item7 item7");
136 cbitems = g_list_append (cbitems, "item8 item8 item8");
137 cbitems = g_list_append (cbitems, "item9 item9");
139 combo = GTK_COMBO (gtk_combo_new ());
140 gtk_combo_set_popdown_strings (combo, cbitems);
141 gtk_entry_set_text (GTK_ENTRY (combo->entry), "hello world");
142 gtk_editable_select_region (GTK_EDITABLE (combo->entry), 0, -1);
144 return GTK_WIDGET (combo);
148 create_menubar (GtkWindow *window)
150 GtkItemFactory *item_factory;
151 GtkAccelGroup *accel_group=NULL;
154 accel_group = gtk_accel_group_new ();
155 item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>",
157 gtk_item_factory_create_items (item_factory,
158 G_N_ELEMENTS (menu_items),
161 gtk_window_add_accel_group (window, accel_group);
162 menubar = gtk_item_factory_get_widget (item_factory, "<main>");
168 create_combo_box (void)
170 GtkComboBox *combo_box = GTK_COMBO_BOX (gtk_combo_box_new_text ());
172 gtk_combo_box_append_text (combo_box, "This");
173 gtk_combo_box_append_text (combo_box, "Is");
174 gtk_combo_box_append_text (combo_box, "A");
175 gtk_combo_box_append_text (combo_box, "ComboBox");
177 return GTK_WIDGET (combo_box);
181 create_content (GtkWindow *window, gboolean local)
187 frame = gtk_frame_new (local? "Local" : "Remote");
188 gtk_container_set_border_width (GTK_CONTAINER (frame), 3);
189 vbox = gtk_vbox_new (TRUE, 0);
190 gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
192 gtk_container_add (GTK_CONTAINER (frame), vbox);
195 gtk_box_pack_start (GTK_BOX (vbox), create_combo(), TRUE, TRUE, 0);
198 gtk_box_pack_start (GTK_BOX (vbox), gtk_entry_new(), TRUE, TRUE, 0);
201 button = gtk_button_new_with_mnemonic ("_Close");
202 gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
203 g_signal_connect_swapped (button, "clicked",
204 G_CALLBACK (gtk_widget_destroy), window);
207 button = gtk_button_new_with_mnemonic ("_Blink");
208 gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
209 g_signal_connect (button, "clicked",
214 gtk_box_pack_start (GTK_BOX (vbox), create_menubar (GTK_WINDOW (window)),
218 gtk_box_pack_start (GTK_BOX (vbox), create_combo_box (), TRUE, TRUE, 0);
220 add_buttons (NULL, vbox);
226 create_child_plug (guint32 xid,
232 window = gtk_plug_new (xid);
234 g_signal_connect (window, "destroy",
235 local ? G_CALLBACK (local_destroy)
236 : G_CALLBACK (remote_destroy),
238 gtk_container_set_border_width (GTK_CONTAINER (window), 0);
240 content = create_content (GTK_WINDOW (window), local);
242 gtk_container_add (GTK_CONTAINER (window), content);
244 gtk_widget_show_all (window);
246 if (GTK_WIDGET_REALIZED (window))
247 return GDK_WINDOW_XID (window->window);