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