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