http://ftp.x.org/contrib/applications/xscreensaver-3.26.tar.gz
[xscreensaver] / driver / demo-Gtk-widgets.c
1 /*
2  * DO NOT EDIT THIS FILE - it is generated by Glade.
3  */
4
5 #ifdef HAVE_CONFIG_H
6 #  include <config.h>
7 #endif
8
9 #include <sys/types.h>
10 #include <sys/stat.h>
11 #include <unistd.h>
12 #include <string.h>
13
14 #include <gdk/gdkkeysyms.h>
15 #include <gtk/gtk.h>
16
17 #include "demo-Gtk-stubs.h"
18 #include "demo-Gtk-widgets.h"
19
20 GtkWidget*
21 create_xscreensaver_demo (void)
22 {
23   GtkWidget *xscreensaver_demo;
24   GtkWidget *outer_vbox;
25   GtkWidget *menubar;
26   guint tmp_key;
27   GtkWidget *file;
28   GtkWidget *file_menu;
29   GtkAccelGroup *file_menu_accels;
30   GtkWidget *activate_menu;
31   GtkWidget *lock_menu;
32   GtkWidget *kill_menu;
33   GtkWidget *restart;
34   GtkWidget *separator1;
35   GtkWidget *exit_menu;
36   GtkWidget *edit;
37   GtkWidget *edit_menu;
38   GtkAccelGroup *edit_menu_accels;
39   GtkWidget *cut_menu;
40   GtkWidget *copy_menu;
41   GtkWidget *paste_menu;
42   GtkWidget *help;
43   GtkWidget *help_menu;
44   GtkAccelGroup *help_menu_accels;
45   GtkWidget *about_menu;
46   GtkWidget *doc_menu;
47   GtkWidget *notebook;
48   GtkWidget *demos_hbox;
49   GtkWidget *list_vbox;
50   GtkWidget *scroller;
51   GtkWidget *viewport;
52   GtkWidget *list;
53   GtkWidget *centering_hbox;
54   GtkWidget *next_prev_hbox;
55   GtkWidget *next;
56   GtkWidget *prev;
57   GtkWidget *opts_vbox;
58   GtkWidget *frame;
59   GtkWidget *doc;
60   GtkWidget *opts_vbox2;
61   GtkWidget *cmd_label;
62   GtkWidget *cmd_text;
63   GtkWidget *opts_hbox3;
64   GtkWidget *enabled;
65   GtkWidget *visual;
66   GtkWidget *visual_combo;
67   GList *visual_combo_items = NULL;
68   GtkWidget *combo_entry1;
69   GtkWidget *demo_hline;
70   GtkWidget *demo_manual_hbox;
71   GtkWidget *demo;
72   GtkWidget *manual;
73   GtkWidget *demo_tab;
74   GtkWidget *prefs_hbox;
75   GtkWidget *prefs_frame;
76   GtkWidget *prefs_table;
77   GtkWidget *timeout_text;
78   GtkWidget *cycle_text;
79   GtkWidget *fade_text;
80   GtkWidget *ticks_text;
81   GtkWidget *lock_text;
82   GtkWidget *pass_text;
83   GtkWidget *timeout_label;
84   GtkWidget *cycle_label;
85   GtkWidget *fade_label;
86   GtkWidget *ticks_label;
87   GtkWidget *lock_label;
88   GtkWidget *pass_label;
89   GtkWidget *verbose_button;
90   GtkWidget *install_button;
91   GtkWidget *fade_button;
92   GtkWidget *unfade_button;
93   GtkWidget *lock_button;
94   GtkWidget *prefs_tab;
95   GtkAccelGroup *accel_group;
96   GtkTooltips *tooltips;
97
98   tooltips = gtk_tooltips_new ();
99
100   accel_group = gtk_accel_group_new ();
101
102   xscreensaver_demo = gtk_window_new (GTK_WINDOW_TOPLEVEL);
103   gtk_widget_set_name (xscreensaver_demo, "xscreensaver_demo");
104   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "xscreensaver_demo", xscreensaver_demo);
105   gtk_window_set_title (GTK_WINDOW (xscreensaver_demo), "XScreenSaver");
106   gtk_window_set_default_size (GTK_WINDOW (xscreensaver_demo), 600, 400);
107   gtk_window_set_policy (GTK_WINDOW (xscreensaver_demo), TRUE, TRUE, FALSE);
108   gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_demo), "xscreensaver", "XScreenSaver");
109
110   outer_vbox = gtk_vbox_new (FALSE, 5);
111   gtk_widget_set_name (outer_vbox, "outer_vbox");
112   gtk_widget_ref (outer_vbox);
113   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "outer_vbox", outer_vbox,
114                             (GtkDestroyNotify) gtk_widget_unref);
115   gtk_widget_show (outer_vbox);
116   gtk_container_add (GTK_CONTAINER (xscreensaver_demo), outer_vbox);
117
118   menubar = gtk_menu_bar_new ();
119   gtk_widget_set_name (menubar, "menubar");
120   gtk_widget_ref (menubar);
121   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "menubar", menubar,
122                             (GtkDestroyNotify) gtk_widget_unref);
123   gtk_widget_show (menubar);
124   gtk_box_pack_start (GTK_BOX (outer_vbox), menubar, FALSE, FALSE, 0);
125
126   file = gtk_menu_item_new_with_label ("");
127   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (file)->child),
128                                    "_File");
129   gtk_widget_add_accelerator (file, "activate_item", accel_group,
130                               tmp_key, GDK_MOD1_MASK, 0);
131   gtk_widget_set_name (file, "file");
132   gtk_widget_ref (file);
133   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file", file,
134                             (GtkDestroyNotify) gtk_widget_unref);
135   gtk_widget_show (file);
136   gtk_container_add (GTK_CONTAINER (menubar), file);
137
138   file_menu = gtk_menu_new ();
139   gtk_widget_set_name (file_menu, "file_menu");
140   gtk_widget_ref (file_menu);
141   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file_menu", file_menu,
142                             (GtkDestroyNotify) gtk_widget_unref);
143   gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), file_menu);
144   file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file_menu));
145
146   activate_menu = gtk_menu_item_new_with_label ("");
147   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (activate_menu)->child),
148                                    "_Blank Screen Now");
149   gtk_widget_add_accelerator (activate_menu, "activate_item", file_menu_accels,
150                               tmp_key, 0, 0);
151   gtk_widget_set_name (activate_menu, "activate_menu");
152   gtk_widget_ref (activate_menu);
153   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "activate_menu", activate_menu,
154                             (GtkDestroyNotify) gtk_widget_unref);
155   gtk_widget_show (activate_menu);
156   gtk_container_add (GTK_CONTAINER (file_menu), activate_menu);
157   gtk_tooltips_set_tip (tooltips, activate_menu, "Activate the XScreenSaver daemon now (locking the screen if so configured.)", NULL);
158
159   lock_menu = gtk_menu_item_new_with_label ("");
160   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (lock_menu)->child),
161                                    "_Lock Screen Now");
162   gtk_widget_add_accelerator (lock_menu, "activate_item", file_menu_accels,
163                               tmp_key, 0, 0);
164   gtk_widget_set_name (lock_menu, "lock_menu");
165   gtk_widget_ref (lock_menu);
166   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_menu", lock_menu,
167                             (GtkDestroyNotify) gtk_widget_unref);
168   gtk_widget_show (lock_menu);
169   gtk_container_add (GTK_CONTAINER (file_menu), lock_menu);
170   gtk_tooltips_set_tip (tooltips, lock_menu, "Lock the screen now (even if \"Require Password\" is unchecked.)", NULL);
171
172   kill_menu = gtk_menu_item_new_with_label ("");
173   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (kill_menu)->child),
174                                    "_Kill Daemon");
175   gtk_widget_add_accelerator (kill_menu, "activate_item", file_menu_accels,
176                               tmp_key, 0, 0);
177   gtk_widget_set_name (kill_menu, "kill_menu");
178   gtk_widget_ref (kill_menu);
179   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "kill_menu", kill_menu,
180                             (GtkDestroyNotify) gtk_widget_unref);
181   gtk_widget_show (kill_menu);
182   gtk_container_add (GTK_CONTAINER (file_menu), kill_menu);
183   gtk_tooltips_set_tip (tooltips, kill_menu, "Tell the running XScreenSaver daemon to exit.", NULL);
184
185   restart = gtk_menu_item_new_with_label ("");
186   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (restart)->child),
187                                    "_Restart Daemon");
188   gtk_widget_add_accelerator (restart, "activate_item", file_menu_accels,
189                               tmp_key, 0, 0);
190   gtk_widget_set_name (restart, "restart");
191   gtk_widget_ref (restart);
192   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "restart", restart,
193                             (GtkDestroyNotify) gtk_widget_unref);
194   gtk_widget_show (restart);
195   gtk_container_add (GTK_CONTAINER (file_menu), restart);
196   gtk_tooltips_set_tip (tooltips, restart, "Kill and re-launch the XScreenSaver daemon.", NULL);
197
198   separator1 = gtk_menu_item_new ();
199   gtk_widget_set_name (separator1, "separator1");
200   gtk_widget_ref (separator1);
201   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "separator1", separator1,
202                             (GtkDestroyNotify) gtk_widget_unref);
203   gtk_widget_show (separator1);
204   gtk_container_add (GTK_CONTAINER (file_menu), separator1);
205   gtk_widget_set_sensitive (separator1, FALSE);
206
207   exit_menu = gtk_menu_item_new_with_label ("");
208   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (exit_menu)->child),
209                                    "_Exit");
210   gtk_widget_add_accelerator (exit_menu, "activate_item", file_menu_accels,
211                               tmp_key, 0, 0);
212   gtk_widget_set_name (exit_menu, "exit_menu");
213   gtk_widget_ref (exit_menu);
214   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "exit_menu", exit_menu,
215                             (GtkDestroyNotify) gtk_widget_unref);
216   gtk_widget_show (exit_menu);
217   gtk_container_add (GTK_CONTAINER (file_menu), exit_menu);
218   gtk_tooltips_set_tip (tooltips, exit_menu, "Exit the xscreensaver-demo program (but leave the XScreenSaver daemon running in the background.)", NULL);
219
220   edit = gtk_menu_item_new_with_label ("");
221   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (edit)->child),
222                                    "_Edit");
223   gtk_widget_add_accelerator (edit, "activate_item", accel_group,
224                               tmp_key, GDK_MOD1_MASK, 0);
225   gtk_widget_set_name (edit, "edit");
226   gtk_widget_ref (edit);
227   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "edit", edit,
228                             (GtkDestroyNotify) gtk_widget_unref);
229   gtk_widget_show (edit);
230   gtk_container_add (GTK_CONTAINER (menubar), edit);
231
232   edit_menu = gtk_menu_new ();
233   gtk_widget_set_name (edit_menu, "edit_menu");
234   gtk_widget_ref (edit_menu);
235   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "edit_menu", edit_menu,
236                             (GtkDestroyNotify) gtk_widget_unref);
237   gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit), edit_menu);
238   edit_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (edit_menu));
239
240   cut_menu = gtk_menu_item_new_with_label ("");
241   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (cut_menu)->child),
242                                    "C_ut");
243   gtk_widget_add_accelerator (cut_menu, "activate_item", edit_menu_accels,
244                               tmp_key, 0, 0);
245   gtk_widget_set_name (cut_menu, "cut_menu");
246   gtk_widget_ref (cut_menu);
247   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cut_menu", cut_menu,
248                             (GtkDestroyNotify) gtk_widget_unref);
249   gtk_widget_show (cut_menu);
250   gtk_container_add (GTK_CONTAINER (edit_menu), cut_menu);
251
252   copy_menu = gtk_menu_item_new_with_label ("");
253   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (copy_menu)->child),
254                                    "_Copy");
255   gtk_widget_add_accelerator (copy_menu, "activate_item", edit_menu_accels,
256                               tmp_key, 0, 0);
257   gtk_widget_set_name (copy_menu, "copy_menu");
258   gtk_widget_ref (copy_menu);
259   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "copy_menu", copy_menu,
260                             (GtkDestroyNotify) gtk_widget_unref);
261   gtk_widget_show (copy_menu);
262   gtk_container_add (GTK_CONTAINER (edit_menu), copy_menu);
263
264   paste_menu = gtk_menu_item_new_with_label ("");
265   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (paste_menu)->child),
266                                    "_Paste");
267   gtk_widget_add_accelerator (paste_menu, "activate_item", edit_menu_accels,
268                               tmp_key, 0, 0);
269   gtk_widget_set_name (paste_menu, "paste_menu");
270   gtk_widget_ref (paste_menu);
271   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "paste_menu", paste_menu,
272                             (GtkDestroyNotify) gtk_widget_unref);
273   gtk_widget_show (paste_menu);
274   gtk_container_add (GTK_CONTAINER (edit_menu), paste_menu);
275
276   help = gtk_menu_item_new_with_label ("");
277   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (help)->child),
278                                    "_Help");
279   gtk_widget_add_accelerator (help, "activate_item", accel_group,
280                               tmp_key, GDK_MOD1_MASK, 0);
281   gtk_widget_set_name (help, "help");
282   gtk_widget_ref (help);
283   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help", help,
284                             (GtkDestroyNotify) gtk_widget_unref);
285   gtk_widget_show (help);
286   gtk_container_add (GTK_CONTAINER (menubar), help);
287
288   help_menu = gtk_menu_new ();
289   gtk_widget_set_name (help_menu, "help_menu");
290   gtk_widget_ref (help_menu);
291   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help_menu", help_menu,
292                             (GtkDestroyNotify) gtk_widget_unref);
293   gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu);
294   help_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (help_menu));
295
296   about_menu = gtk_menu_item_new_with_label ("");
297   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (about_menu)->child),
298                                    "_About...");
299   gtk_widget_add_accelerator (about_menu, "activate_item", help_menu_accels,
300                               tmp_key, 0, 0);
301   gtk_widget_set_name (about_menu, "about_menu");
302   gtk_widget_ref (about_menu);
303   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "about_menu", about_menu,
304                             (GtkDestroyNotify) gtk_widget_unref);
305   gtk_widget_show (about_menu);
306   gtk_container_add (GTK_CONTAINER (help_menu), about_menu);
307   gtk_tooltips_set_tip (tooltips, about_menu, "Display version information.", NULL);
308
309   doc_menu = gtk_menu_item_new_with_label ("");
310   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (doc_menu)->child),
311                                    "_Documentation...");
312   gtk_widget_add_accelerator (doc_menu, "activate_item", help_menu_accels,
313                               tmp_key, 0, 0);
314   gtk_widget_set_name (doc_menu, "doc_menu");
315   gtk_widget_ref (doc_menu);
316   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "doc_menu", doc_menu,
317                             (GtkDestroyNotify) gtk_widget_unref);
318   gtk_widget_show (doc_menu);
319   gtk_container_add (GTK_CONTAINER (help_menu), doc_menu);
320   gtk_tooltips_set_tip (tooltips, doc_menu, "Go to the documentation on the XScreenSaver web page.", NULL);
321
322   notebook = gtk_notebook_new ();
323   gtk_widget_set_name (notebook, "notebook");
324   gtk_widget_ref (notebook);
325   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "notebook", notebook,
326                             (GtkDestroyNotify) gtk_widget_unref);
327   gtk_widget_show (notebook);
328   gtk_box_pack_start (GTK_BOX (outer_vbox), notebook, TRUE, TRUE, 0);
329
330   demos_hbox = gtk_hbox_new (FALSE, 5);
331   gtk_widget_set_name (demos_hbox, "demos_hbox");
332   gtk_widget_ref (demos_hbox);
333   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demos_hbox", demos_hbox,
334                             (GtkDestroyNotify) gtk_widget_unref);
335   gtk_widget_show (demos_hbox);
336   gtk_container_add (GTK_CONTAINER (notebook), demos_hbox);
337
338   list_vbox = gtk_vbox_new (FALSE, 5);
339   gtk_widget_set_name (list_vbox, "list_vbox");
340   gtk_widget_ref (list_vbox);
341   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list_vbox", list_vbox,
342                             (GtkDestroyNotify) gtk_widget_unref);
343   gtk_widget_show (list_vbox);
344   gtk_box_pack_start (GTK_BOX (demos_hbox), list_vbox, FALSE, FALSE, 0);
345   gtk_container_set_border_width (GTK_CONTAINER (list_vbox), 10);
346
347   scroller = gtk_scrolled_window_new (NULL, NULL);
348   gtk_widget_set_name (scroller, "scroller");
349   gtk_widget_ref (scroller);
350   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "scroller", scroller,
351                             (GtkDestroyNotify) gtk_widget_unref);
352   gtk_widget_show (scroller);
353   gtk_box_pack_start (GTK_BOX (list_vbox), scroller, TRUE, TRUE, 0);
354   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
355
356   viewport = gtk_viewport_new (NULL, NULL);
357   gtk_widget_set_name (viewport, "viewport");
358   gtk_widget_ref (viewport);
359   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "viewport", viewport,
360                             (GtkDestroyNotify) gtk_widget_unref);
361   gtk_widget_show (viewport);
362   gtk_container_add (GTK_CONTAINER (scroller), viewport);
363   gtk_container_set_border_width (GTK_CONTAINER (viewport), 1);
364
365   list = gtk_list_new ();
366   gtk_widget_set_name (list, "list");
367   gtk_widget_ref (list);
368   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list", list,
369                             (GtkDestroyNotify) gtk_widget_unref);
370   gtk_widget_show (list);
371   gtk_container_add (GTK_CONTAINER (viewport), list);
372
373   centering_hbox = gtk_hbox_new (TRUE, 0);
374   gtk_widget_set_name (centering_hbox, "centering_hbox");
375   gtk_widget_ref (centering_hbox);
376   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "centering_hbox", centering_hbox,
377                             (GtkDestroyNotify) gtk_widget_unref);
378   gtk_widget_show (centering_hbox);
379   gtk_box_pack_start (GTK_BOX (list_vbox), centering_hbox, FALSE, TRUE, 0);
380
381   next_prev_hbox = gtk_hbox_new (FALSE, 0);
382   gtk_widget_set_name (next_prev_hbox, "next_prev_hbox");
383   gtk_widget_ref (next_prev_hbox);
384   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next_prev_hbox", next_prev_hbox,
385                             (GtkDestroyNotify) gtk_widget_unref);
386   gtk_widget_show (next_prev_hbox);
387   gtk_box_pack_start (GTK_BOX (centering_hbox), next_prev_hbox, FALSE, FALSE, 0);
388
389   next = gtk_button_new_with_label ("\\/");
390   gtk_widget_set_name (next, "next");
391   gtk_widget_ref (next);
392   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next", next,
393                             (GtkDestroyNotify) gtk_widget_unref);
394   gtk_widget_show (next);
395   gtk_box_pack_start (GTK_BOX (next_prev_hbox), next, FALSE, FALSE, 0);
396   GTK_WIDGET_SET_FLAGS (next, GTK_CAN_DEFAULT);
397   gtk_tooltips_set_tip (tooltips, next, "Run the next demo in this list in full-screen mode (click the mouse to return.)", NULL);
398
399   prev = gtk_button_new_with_label ("/\\");
400   gtk_widget_set_name (prev, "prev");
401   gtk_widget_ref (prev);
402   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prev", prev,
403                             (GtkDestroyNotify) gtk_widget_unref);
404   gtk_widget_show (prev);
405   gtk_box_pack_start (GTK_BOX (next_prev_hbox), prev, FALSE, FALSE, 0);
406   GTK_WIDGET_SET_FLAGS (prev, GTK_CAN_DEFAULT);
407   gtk_tooltips_set_tip (tooltips, prev, "Run the previous demo in this list in full-screen mode (click the mouse to return.)", NULL);
408
409   opts_vbox = gtk_vbox_new (FALSE, 0);
410   gtk_widget_set_name (opts_vbox, "opts_vbox");
411   gtk_widget_ref (opts_vbox);
412   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "opts_vbox", opts_vbox,
413                             (GtkDestroyNotify) gtk_widget_unref);
414   gtk_widget_show (opts_vbox);
415   gtk_box_pack_start (GTK_BOX (demos_hbox), opts_vbox, TRUE, TRUE, 0);
416   gtk_container_set_border_width (GTK_CONTAINER (opts_vbox), 10);
417
418   frame = gtk_frame_new (NULL);
419   gtk_widget_set_name (frame, "frame");
420   gtk_widget_ref (frame);
421   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "frame", frame,
422                             (GtkDestroyNotify) gtk_widget_unref);
423   gtk_widget_show (frame);
424   gtk_box_pack_start (GTK_BOX (opts_vbox), frame, TRUE, TRUE, 0);
425
426   doc = gtk_label_new ("");
427   gtk_widget_set_name (doc, "doc");
428   gtk_widget_ref (doc);
429   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "doc", doc,
430                             (GtkDestroyNotify) gtk_widget_unref);
431   gtk_widget_show (doc);
432   gtk_container_add (GTK_CONTAINER (frame), doc);
433   gtk_label_set_justify (GTK_LABEL (doc), GTK_JUSTIFY_LEFT);
434   gtk_label_set_line_wrap (GTK_LABEL (doc), TRUE);
435   gtk_misc_set_alignment (GTK_MISC (doc), 0, 0);
436   gtk_misc_set_padding (GTK_MISC (doc), 10, 10);
437
438   opts_vbox2 = gtk_vbox_new (FALSE, 2);
439   gtk_widget_set_name (opts_vbox2, "opts_vbox2");
440   gtk_widget_ref (opts_vbox2);
441   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "opts_vbox2", opts_vbox2,
442                             (GtkDestroyNotify) gtk_widget_unref);
443   gtk_widget_show (opts_vbox2);
444   gtk_box_pack_start (GTK_BOX (opts_vbox), opts_vbox2, FALSE, TRUE, 0);
445
446   cmd_label = gtk_label_new ("Command Line:");
447   gtk_widget_set_name (cmd_label, "cmd_label");
448   gtk_widget_ref (cmd_label);
449   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmd_label", cmd_label,
450                             (GtkDestroyNotify) gtk_widget_unref);
451   gtk_widget_show (cmd_label);
452   gtk_box_pack_start (GTK_BOX (opts_vbox2), cmd_label, FALSE, FALSE, 0);
453   gtk_label_set_justify (GTK_LABEL (cmd_label), GTK_JUSTIFY_LEFT);
454   gtk_misc_set_alignment (GTK_MISC (cmd_label), 0, 1);
455   gtk_misc_set_padding (GTK_MISC (cmd_label), 0, 2);
456
457   cmd_text = gtk_entry_new ();
458   gtk_widget_set_name (cmd_text, "cmd_text");
459   gtk_widget_ref (cmd_text);
460   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmd_text", cmd_text,
461                             (GtkDestroyNotify) gtk_widget_unref);
462   gtk_widget_show (cmd_text);
463   gtk_box_pack_start (GTK_BOX (opts_vbox2), cmd_text, FALSE, TRUE, 0);
464
465   opts_hbox3 = gtk_hbox_new (FALSE, 0);
466   gtk_widget_set_name (opts_hbox3, "opts_hbox3");
467   gtk_widget_ref (opts_hbox3);
468   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "opts_hbox3", opts_hbox3,
469                             (GtkDestroyNotify) gtk_widget_unref);
470   gtk_widget_show (opts_hbox3);
471   gtk_box_pack_start (GTK_BOX (opts_vbox2), opts_hbox3, FALSE, TRUE, 4);
472   gtk_container_set_border_width (GTK_CONTAINER (opts_hbox3), 4);
473
474   enabled = gtk_check_button_new_with_label ("Enabled");
475   gtk_widget_set_name (enabled, "enabled");
476   gtk_widget_ref (enabled);
477   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "enabled", enabled,
478                             (GtkDestroyNotify) gtk_widget_unref);
479   gtk_widget_show (enabled);
480   gtk_box_pack_start (GTK_BOX (opts_hbox3), enabled, FALSE, FALSE, 0);
481   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enabled), TRUE);
482
483   visual = gtk_label_new ("Visual:");
484   gtk_widget_set_name (visual, "visual");
485   gtk_widget_ref (visual);
486   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "visual", visual,
487                             (GtkDestroyNotify) gtk_widget_unref);
488   gtk_widget_show (visual);
489   gtk_box_pack_start (GTK_BOX (opts_hbox3), visual, FALSE, FALSE, 0);
490   gtk_label_set_justify (GTK_LABEL (visual), GTK_JUSTIFY_RIGHT);
491   gtk_misc_set_alignment (GTK_MISC (visual), 1, 0.5);
492   gtk_misc_set_padding (GTK_MISC (visual), 10, 0);
493
494   visual_combo = gtk_combo_new ();
495   gtk_widget_set_name (visual_combo, "visual_combo");
496   gtk_widget_ref (visual_combo);
497   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "visual_combo", visual_combo,
498                             (GtkDestroyNotify) gtk_widget_unref);
499   gtk_widget_show (visual_combo);
500   gtk_box_pack_start (GTK_BOX (opts_hbox3), visual_combo, FALSE, FALSE, 0);
501   visual_combo_items = g_list_append (visual_combo_items, "Any");
502   visual_combo_items = g_list_append (visual_combo_items, "Best");
503   visual_combo_items = g_list_append (visual_combo_items, "Default");
504   visual_combo_items = g_list_append (visual_combo_items, "Default-N");
505   visual_combo_items = g_list_append (visual_combo_items, "GL");
506   visual_combo_items = g_list_append (visual_combo_items, "TrueColor");
507   visual_combo_items = g_list_append (visual_combo_items, "PseudoColor");
508   visual_combo_items = g_list_append (visual_combo_items, "StaticGray");
509   visual_combo_items = g_list_append (visual_combo_items, "GrayScale");
510   visual_combo_items = g_list_append (visual_combo_items, "DirectColor");
511   visual_combo_items = g_list_append (visual_combo_items, "Color");
512   visual_combo_items = g_list_append (visual_combo_items, "Gray");
513   visual_combo_items = g_list_append (visual_combo_items, "Mono");
514   gtk_combo_set_popdown_strings (GTK_COMBO (visual_combo), visual_combo_items);
515   g_list_free (visual_combo_items);
516
517   combo_entry1 = GTK_COMBO (visual_combo)->entry;
518   gtk_widget_set_name (combo_entry1, "combo_entry1");
519   gtk_widget_ref (combo_entry1);
520   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "combo_entry1", combo_entry1,
521                             (GtkDestroyNotify) gtk_widget_unref);
522   gtk_widget_show (combo_entry1);
523   gtk_tooltips_set_tip (tooltips, combo_entry1, "The X visual type that this demo will require.  If that visual is available it will be used, otherwise, this demo will not be run.", NULL);
524   gtk_entry_set_text (GTK_ENTRY (combo_entry1), "Any");
525
526   demo_hline = gtk_hseparator_new ();
527   gtk_widget_set_name (demo_hline, "demo_hline");
528   gtk_widget_ref (demo_hline);
529   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_hline", demo_hline,
530                             (GtkDestroyNotify) gtk_widget_unref);
531   gtk_widget_show (demo_hline);
532   gtk_box_pack_start (GTK_BOX (opts_vbox), demo_hline, FALSE, FALSE, 5);
533
534   demo_manual_hbox = gtk_hbutton_box_new ();
535   gtk_widget_set_name (demo_manual_hbox, "demo_manual_hbox");
536   gtk_widget_ref (demo_manual_hbox);
537   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_manual_hbox", demo_manual_hbox,
538                             (GtkDestroyNotify) gtk_widget_unref);
539   gtk_widget_show (demo_manual_hbox);
540   gtk_box_pack_start (GTK_BOX (opts_vbox), demo_manual_hbox, FALSE, TRUE, 0);
541
542   demo = gtk_button_new_with_label ("Demo");
543   gtk_widget_set_name (demo, "demo");
544   gtk_widget_ref (demo);
545   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo", demo,
546                             (GtkDestroyNotify) gtk_widget_unref);
547   gtk_widget_show (demo);
548   gtk_container_add (GTK_CONTAINER (demo_manual_hbox), demo);
549   GTK_WIDGET_SET_FLAGS (demo, GTK_CAN_DEFAULT);
550   gtk_tooltips_set_tip (tooltips, demo, "Run this one in full-screen mode (click the mouse to return.)", NULL);
551
552   manual = gtk_button_new_with_label ("Documentation...");
553   gtk_widget_set_name (manual, "manual");
554   gtk_widget_ref (manual);
555   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "manual", manual,
556                             (GtkDestroyNotify) gtk_widget_unref);
557   gtk_widget_show (manual);
558   gtk_container_add (GTK_CONTAINER (demo_manual_hbox), manual);
559   GTK_WIDGET_SET_FLAGS (manual, GTK_CAN_DEFAULT);
560   gtk_tooltips_set_tip (tooltips, manual, "Click here to read the manual for this display mode, if it has one.", NULL);
561
562   demo_tab = gtk_label_new ("Graphics Demos");
563   gtk_widget_set_name (demo_tab, "demo_tab");
564   gtk_widget_ref (demo_tab);
565   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_tab", demo_tab,
566                             (GtkDestroyNotify) gtk_widget_unref);
567   gtk_widget_show (demo_tab);
568   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), demo_tab);
569
570   prefs_hbox = gtk_vbox_new (FALSE, 0);
571   gtk_widget_set_name (prefs_hbox, "prefs_hbox");
572   gtk_widget_ref (prefs_hbox);
573   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_hbox", prefs_hbox,
574                             (GtkDestroyNotify) gtk_widget_unref);
575   gtk_widget_show (prefs_hbox);
576   gtk_container_add (GTK_CONTAINER (notebook), prefs_hbox);
577
578   prefs_frame = gtk_frame_new (NULL);
579   gtk_widget_set_name (prefs_frame, "prefs_frame");
580   gtk_widget_ref (prefs_frame);
581   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_frame", prefs_frame,
582                             (GtkDestroyNotify) gtk_widget_unref);
583   gtk_widget_show (prefs_frame);
584   gtk_box_pack_start (GTK_BOX (prefs_hbox), prefs_frame, TRUE, TRUE, 0);
585   gtk_container_set_border_width (GTK_CONTAINER (prefs_frame), 10);
586
587   prefs_table = gtk_table_new (6, 3, FALSE);
588   gtk_widget_set_name (prefs_table, "prefs_table");
589   gtk_widget_ref (prefs_table);
590   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_table", prefs_table,
591                             (GtkDestroyNotify) gtk_widget_unref);
592   gtk_widget_show (prefs_table);
593   gtk_container_add (GTK_CONTAINER (prefs_frame), prefs_table);
594   gtk_container_set_border_width (GTK_CONTAINER (prefs_table), 10);
595   gtk_table_set_row_spacings (GTK_TABLE (prefs_table), 2);
596   gtk_table_set_col_spacings (GTK_TABLE (prefs_table), 10);
597
598   timeout_text = gtk_entry_new_with_max_length (8);
599   gtk_widget_set_name (timeout_text, "timeout_text");
600   gtk_widget_ref (timeout_text);
601   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_text", timeout_text,
602                             (GtkDestroyNotify) gtk_widget_unref);
603   gtk_widget_show (timeout_text);
604   gtk_table_attach (GTK_TABLE (prefs_table), timeout_text, 1, 2, 0, 1,
605                     (GtkAttachOptions) (GTK_FILL),
606                     (GtkAttachOptions) (0), 0, 0);
607   gtk_tooltips_set_tip (tooltips, timeout_text, "How long until the screensaver activates.", NULL);
608
609   cycle_text = gtk_entry_new_with_max_length (8);
610   gtk_widget_set_name (cycle_text, "cycle_text");
611   gtk_widget_ref (cycle_text);
612   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_text", cycle_text,
613                             (GtkDestroyNotify) gtk_widget_unref);
614   gtk_widget_show (cycle_text);
615   gtk_table_attach (GTK_TABLE (prefs_table), cycle_text, 1, 2, 1, 2,
616                     (GtkAttachOptions) (GTK_FILL),
617                     (GtkAttachOptions) (0), 0, 0);
618   gtk_tooltips_set_tip (tooltips, cycle_text, "How long each demo will be run before moving on to another.", NULL);
619
620   fade_text = gtk_entry_new_with_max_length (8);
621   gtk_widget_set_name (fade_text, "fade_text");
622   gtk_widget_ref (fade_text);
623   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_text", fade_text,
624                             (GtkDestroyNotify) gtk_widget_unref);
625   gtk_widget_show (fade_text);
626   gtk_table_attach (GTK_TABLE (prefs_table), fade_text, 1, 2, 2, 3,
627                     (GtkAttachOptions) (GTK_FILL),
628                     (GtkAttachOptions) (0), 0, 0);
629   gtk_tooltips_set_tip (tooltips, fade_text, "How long (in seconds) it should take for the screen to fade to black (8-bit displays only.)", NULL);
630
631   ticks_text = gtk_entry_new_with_max_length (8);
632   gtk_widget_set_name (ticks_text, "ticks_text");
633   gtk_widget_ref (ticks_text);
634   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "ticks_text", ticks_text,
635                             (GtkDestroyNotify) gtk_widget_unref);
636   gtk_widget_show (ticks_text);
637   gtk_table_attach (GTK_TABLE (prefs_table), ticks_text, 1, 2, 3, 4,
638                     (GtkAttachOptions) (GTK_FILL),
639                     (GtkAttachOptions) (0), 0, 0);
640   gtk_tooltips_set_tip (tooltips, ticks_text, "How many steps are in the fade animation (8-bit displays only.)", NULL);
641
642   lock_text = gtk_entry_new_with_max_length (8);
643   gtk_widget_set_name (lock_text, "lock_text");
644   gtk_widget_ref (lock_text);
645   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_text", lock_text,
646                             (GtkDestroyNotify) gtk_widget_unref);
647   gtk_widget_show (lock_text);
648   gtk_table_attach (GTK_TABLE (prefs_table), lock_text, 1, 2, 4, 5,
649                     (GtkAttachOptions) (GTK_FILL),
650                     (GtkAttachOptions) (0), 0, 0);
651   gtk_tooltips_set_tip (tooltips, lock_text, "How long after the screensaver has activated until a password will be required (if  `Require Password' is also set.)", NULL);
652
653   pass_text = gtk_entry_new_with_max_length (8);
654   gtk_widget_set_name (pass_text, "pass_text");
655   gtk_widget_ref (pass_text);
656   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "pass_text", pass_text,
657                             (GtkDestroyNotify) gtk_widget_unref);
658   gtk_widget_show (pass_text);
659   gtk_table_attach (GTK_TABLE (prefs_table), pass_text, 1, 2, 5, 6,
660                     (GtkAttachOptions) (GTK_FILL),
661                     (GtkAttachOptions) (0), 0, 0);
662   gtk_tooltips_set_tip (tooltips, pass_text, "How long the password dialog will wait.", NULL);
663
664   timeout_label = gtk_label_new ("Saver Timeout:");
665   gtk_widget_set_name (timeout_label, "timeout_label");
666   gtk_widget_ref (timeout_label);
667   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label,
668                             (GtkDestroyNotify) gtk_widget_unref);
669   gtk_widget_show (timeout_label);
670   gtk_table_attach (GTK_TABLE (prefs_table), timeout_label, 0, 1, 0, 1,
671                     (GtkAttachOptions) (GTK_FILL),
672                     (GtkAttachOptions) (0), 0, 0);
673   gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT);
674   gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5);
675
676   cycle_label = gtk_label_new ("Cycle Timeout:");
677   gtk_widget_set_name (cycle_label, "cycle_label");
678   gtk_widget_ref (cycle_label);
679   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label,
680                             (GtkDestroyNotify) gtk_widget_unref);
681   gtk_widget_show (cycle_label);
682   gtk_table_attach (GTK_TABLE (prefs_table), cycle_label, 0, 1, 1, 2,
683                     (GtkAttachOptions) (GTK_FILL),
684                     (GtkAttachOptions) (0), 0, 0);
685   gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT);
686   gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5);
687
688   fade_label = gtk_label_new ("Fade Duration:");
689   gtk_widget_set_name (fade_label, "fade_label");
690   gtk_widget_ref (fade_label);
691   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_label", fade_label,
692                             (GtkDestroyNotify) gtk_widget_unref);
693   gtk_widget_show (fade_label);
694   gtk_table_attach (GTK_TABLE (prefs_table), fade_label, 0, 1, 2, 3,
695                     (GtkAttachOptions) (GTK_FILL),
696                     (GtkAttachOptions) (0), 0, 0);
697   gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_RIGHT);
698   gtk_misc_set_alignment (GTK_MISC (fade_label), 1, 0.5);
699
700   ticks_label = gtk_label_new ("Fade Ticks:");
701   gtk_widget_set_name (ticks_label, "ticks_label");
702   gtk_widget_ref (ticks_label);
703   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "ticks_label", ticks_label,
704                             (GtkDestroyNotify) gtk_widget_unref);
705   gtk_widget_show (ticks_label);
706   gtk_table_attach (GTK_TABLE (prefs_table), ticks_label, 0, 1, 3, 4,
707                     (GtkAttachOptions) (GTK_FILL),
708                     (GtkAttachOptions) (0), 0, 0);
709   gtk_label_set_justify (GTK_LABEL (ticks_label), GTK_JUSTIFY_RIGHT);
710   gtk_misc_set_alignment (GTK_MISC (ticks_label), 1, 0.5);
711
712   lock_label = gtk_label_new ("Lock Timeout:");
713   gtk_widget_set_name (lock_label, "lock_label");
714   gtk_widget_ref (lock_label);
715   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_label", lock_label,
716                             (GtkDestroyNotify) gtk_widget_unref);
717   gtk_widget_show (lock_label);
718   gtk_table_attach (GTK_TABLE (prefs_table), lock_label, 0, 1, 4, 5,
719                     (GtkAttachOptions) (GTK_FILL),
720                     (GtkAttachOptions) (0), 0, 0);
721   gtk_label_set_justify (GTK_LABEL (lock_label), GTK_JUSTIFY_RIGHT);
722   gtk_misc_set_alignment (GTK_MISC (lock_label), 1, 0.5);
723
724   pass_label = gtk_label_new ("Password Timeout:");
725   gtk_widget_set_name (pass_label, "pass_label");
726   gtk_widget_ref (pass_label);
727   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "pass_label", pass_label,
728                             (GtkDestroyNotify) gtk_widget_unref);
729   gtk_widget_show (pass_label);
730   gtk_table_attach (GTK_TABLE (prefs_table), pass_label, 0, 1, 5, 6,
731                     (GtkAttachOptions) (GTK_FILL),
732                     (GtkAttachOptions) (0), 0, 0);
733   gtk_label_set_justify (GTK_LABEL (pass_label), GTK_JUSTIFY_RIGHT);
734   gtk_misc_set_alignment (GTK_MISC (pass_label), 1, 0.5);
735
736   verbose_button = gtk_check_button_new_with_label ("Verbose");
737   gtk_widget_set_name (verbose_button, "verbose_button");
738   gtk_widget_ref (verbose_button);
739   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button", verbose_button,
740                             (GtkDestroyNotify) gtk_widget_unref);
741   gtk_widget_show (verbose_button);
742   gtk_table_attach (GTK_TABLE (prefs_table), verbose_button, 2, 3, 0, 1,
743                     (GtkAttachOptions) (GTK_FILL),
744                     (GtkAttachOptions) (0), 10, 0);
745
746   install_button = gtk_check_button_new_with_label ("Install Colormap");
747   gtk_widget_set_name (install_button, "install_button");
748   gtk_widget_ref (install_button);
749   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button", install_button,
750                             (GtkDestroyNotify) gtk_widget_unref);
751   gtk_widget_show (install_button);
752   gtk_table_attach (GTK_TABLE (prefs_table), install_button, 2, 3, 1, 2,
753                     (GtkAttachOptions) (GTK_FILL),
754                     (GtkAttachOptions) (0), 10, 0);
755
756   fade_button = gtk_check_button_new_with_label ("Fade Colormap");
757   gtk_widget_set_name (fade_button, "fade_button");
758   gtk_widget_ref (fade_button);
759   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button", fade_button,
760                             (GtkDestroyNotify) gtk_widget_unref);
761   gtk_widget_show (fade_button);
762   gtk_table_attach (GTK_TABLE (prefs_table), fade_button, 2, 3, 2, 3,
763                     (GtkAttachOptions) (GTK_FILL),
764                     (GtkAttachOptions) (0), 10, 0);
765
766   unfade_button = gtk_check_button_new_with_label ("Unfade Colormap");
767   gtk_widget_set_name (unfade_button, "unfade_button");
768   gtk_widget_ref (unfade_button);
769   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button", unfade_button,
770                             (GtkDestroyNotify) gtk_widget_unref);
771   gtk_widget_show (unfade_button);
772   gtk_table_attach (GTK_TABLE (prefs_table), unfade_button, 2, 3, 3, 4,
773                     (GtkAttachOptions) (GTK_FILL),
774                     (GtkAttachOptions) (0), 10, 0);
775
776   lock_button = gtk_check_button_new_with_label ("Require Password");
777   gtk_widget_set_name (lock_button, "lock_button");
778   gtk_widget_ref (lock_button);
779   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button,
780                             (GtkDestroyNotify) gtk_widget_unref);
781   gtk_widget_show (lock_button);
782   gtk_table_attach (GTK_TABLE (prefs_table), lock_button, 2, 3, 4, 5,
783                     (GtkAttachOptions) (GTK_FILL),
784                     (GtkAttachOptions) (0), 10, 0);
785
786   prefs_tab = gtk_label_new ("Screensaver Options");
787   gtk_widget_set_name (prefs_tab, "prefs_tab");
788   gtk_widget_ref (prefs_tab);
789   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_tab", prefs_tab,
790                             (GtkDestroyNotify) gtk_widget_unref);
791   gtk_widget_show (prefs_tab);
792   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), prefs_tab);
793
794   gtk_signal_connect (GTK_OBJECT (activate_menu), "activate",
795                       GTK_SIGNAL_FUNC (activate_menu_cb),
796                       NULL);
797   gtk_signal_connect (GTK_OBJECT (lock_menu), "activate",
798                       GTK_SIGNAL_FUNC (lock_menu_cb),
799                       NULL);
800   gtk_signal_connect (GTK_OBJECT (kill_menu), "activate",
801                       GTK_SIGNAL_FUNC (kill_menu_cb),
802                       NULL);
803   gtk_signal_connect (GTK_OBJECT (restart), "activate",
804                       GTK_SIGNAL_FUNC (restart_menu_cb),
805                       NULL);
806   gtk_signal_connect (GTK_OBJECT (exit_menu), "activate",
807                       GTK_SIGNAL_FUNC (exit_menu_cb),
808                       NULL);
809   gtk_signal_connect (GTK_OBJECT (cut_menu), "activate",
810                       GTK_SIGNAL_FUNC (cut_menu_cb),
811                       NULL);
812   gtk_signal_connect (GTK_OBJECT (copy_menu), "activate",
813                       GTK_SIGNAL_FUNC (copy_menu_cb),
814                       NULL);
815   gtk_signal_connect (GTK_OBJECT (paste_menu), "activate",
816                       GTK_SIGNAL_FUNC (paste_menu_cb),
817                       NULL);
818   gtk_signal_connect (GTK_OBJECT (about_menu), "activate",
819                       GTK_SIGNAL_FUNC (about_menu_cb),
820                       NULL);
821   gtk_signal_connect (GTK_OBJECT (doc_menu), "activate",
822                       GTK_SIGNAL_FUNC (doc_menu_cb),
823                       NULL);
824   gtk_signal_connect (GTK_OBJECT (notebook), "switch_page",
825                       GTK_SIGNAL_FUNC (pref_changed_cb),
826                       NULL);
827   gtk_signal_connect (GTK_OBJECT (next), "clicked",
828                       GTK_SIGNAL_FUNC (run_next_cb),
829                       NULL);
830   gtk_signal_connect (GTK_OBJECT (prev), "clicked",
831                       GTK_SIGNAL_FUNC (run_prev_cb),
832                       NULL);
833   gtk_signal_connect (GTK_OBJECT (enabled), "toggled",
834                       GTK_SIGNAL_FUNC (enabled_cb),
835                       NULL);
836   gtk_signal_connect (GTK_OBJECT (demo), "clicked",
837                       GTK_SIGNAL_FUNC (run_this_cb),
838                       NULL);
839   gtk_signal_connect (GTK_OBJECT (manual), "clicked",
840                       GTK_SIGNAL_FUNC (manual_cb),
841                       NULL);
842   gtk_signal_connect (GTK_OBJECT (timeout_text), "activate",
843                       GTK_SIGNAL_FUNC (pref_changed_cb),
844                       NULL);
845   gtk_signal_connect (GTK_OBJECT (timeout_text), "focus_out_event",
846                       GTK_SIGNAL_FUNC (pref_changed_cb),
847                       NULL);
848   gtk_signal_connect (GTK_OBJECT (cycle_text), "activate",
849                       GTK_SIGNAL_FUNC (pref_changed_cb),
850                       NULL);
851   gtk_signal_connect (GTK_OBJECT (cycle_text), "focus_out_event",
852                       GTK_SIGNAL_FUNC (pref_changed_cb),
853                       NULL);
854   gtk_signal_connect (GTK_OBJECT (fade_text), "activate",
855                       GTK_SIGNAL_FUNC (pref_changed_cb),
856                       NULL);
857   gtk_signal_connect (GTK_OBJECT (fade_text), "focus_out_event",
858                       GTK_SIGNAL_FUNC (pref_changed_cb),
859                       NULL);
860   gtk_signal_connect (GTK_OBJECT (ticks_text), "activate",
861                       GTK_SIGNAL_FUNC (pref_changed_cb),
862                       NULL);
863   gtk_signal_connect (GTK_OBJECT (ticks_text), "focus_out_event",
864                       GTK_SIGNAL_FUNC (pref_changed_cb),
865                       NULL);
866   gtk_signal_connect (GTK_OBJECT (lock_text), "activate",
867                       GTK_SIGNAL_FUNC (pref_changed_cb),
868                       NULL);
869   gtk_signal_connect (GTK_OBJECT (lock_text), "focus_out_event",
870                       GTK_SIGNAL_FUNC (pref_changed_cb),
871                       NULL);
872   gtk_signal_connect (GTK_OBJECT (pass_text), "activate",
873                       GTK_SIGNAL_FUNC (pref_changed_cb),
874                       NULL);
875   gtk_signal_connect (GTK_OBJECT (pass_text), "focus_out_event",
876                       GTK_SIGNAL_FUNC (pref_changed_cb),
877                       NULL);
878   gtk_signal_connect (GTK_OBJECT (verbose_button), "toggled",
879                       GTK_SIGNAL_FUNC (pref_changed_cb),
880                       NULL);
881   gtk_signal_connect (GTK_OBJECT (install_button), "toggled",
882                       GTK_SIGNAL_FUNC (pref_changed_cb),
883                       NULL);
884   gtk_signal_connect (GTK_OBJECT (fade_button), "toggled",
885                       GTK_SIGNAL_FUNC (pref_changed_cb),
886                       NULL);
887   gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled",
888                       GTK_SIGNAL_FUNC (pref_changed_cb),
889                       NULL);
890   gtk_signal_connect (GTK_OBJECT (lock_button), "toggled",
891                       GTK_SIGNAL_FUNC (pref_changed_cb),
892                       NULL);
893
894   gtk_widget_grab_default (next);
895   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "tooltips", tooltips);
896
897   gtk_window_add_accel_group (GTK_WINDOW (xscreensaver_demo), accel_group);
898
899   return xscreensaver_demo;
900 }
901