http://packetstormsecurity.org/UNIX/admin/xscreensaver-3.32.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 *options_vbox;
75   GtkWidget *options_table;
76   GtkWidget *options_table_2;
77   GtkWidget *dpms_frame;
78   GtkWidget *dpms_table;
79   GtkWidget *dpms_off_text;
80   GtkWidget *dpms_suspend_text;
81   GtkWidget *dpms_standby_text;
82   GtkWidget *dpms_standby_label;
83   GtkWidget *dpms_off_label;
84   GtkWidget *dpms_suspend_label;
85   GtkWidget *dpms_dummy;
86   GtkWidget *dpms_button_eventbox;
87   GtkWidget *dpms_button;
88   GtkWidget *cmap_frame;
89   GtkWidget *cmap_table;
90   GtkWidget *fade_text;
91   GtkWidget *cmap_dummy;
92   GtkWidget *fade_label;
93   GtkWidget *install_button_eventbox;
94   GtkWidget *install_button;
95   GtkWidget *fade_button_eventbox;
96   GtkWidget *fade_button;
97   GtkWidget *unfade_button_eventbox;
98   GtkWidget *unfade_button;
99   GtkWidget *cmap_hr;
100   GtkWidget *options_table_1;
101   GtkWidget *grab_frame;
102   GtkWidget *grab_table;
103   GtkWidget *grab_image_eventbox;
104   GtkWidget *grab_image_button;
105   GtkWidget *image_browse_button;
106   GtkWidget *grab_video_eventbox;
107   GtkWidget *grab_video_button;
108   GtkWidget *grab_desk_eventbox;
109   GtkWidget *grab_desk_button;
110   GtkWidget *grab_dummy;
111   GtkWidget *image_text;
112   GtkWidget *blanking_frame;
113   GtkWidget *blanking_table;
114   GtkWidget *lock_text;
115   GtkWidget *cycle_text;
116   GtkWidget *timeout_text;
117   GtkWidget *timeout_label;
118   GtkWidget *cycle_label;
119   GtkWidget *lock_label;
120   GtkWidget *blanking_dummy;
121   GtkWidget *lock_button_eventbox;
122   GtkWidget *lock_button;
123   GtkWidget *blanking_hr;
124   GtkWidget *diag_frame;
125   GtkWidget *diag_table;
126   GtkWidget *splash_button_eventbox;
127   GtkWidget *splash_button;
128   GtkWidget *capture_button_eventbox;
129   GtkWidget *capture_button;
130   GtkWidget *verbose_button_eventbox;
131   GtkWidget *verbose_button;
132   GtkWidget *options_tab;
133   GtkAccelGroup *accel_group;
134   GtkTooltips *tooltips;
135
136   tooltips = gtk_tooltips_new ();
137
138   accel_group = gtk_accel_group_new ();
139
140   xscreensaver_demo = gtk_window_new (GTK_WINDOW_TOPLEVEL);
141   gtk_widget_set_name (xscreensaver_demo, "xscreensaver_demo");
142   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "xscreensaver_demo", xscreensaver_demo);
143   gtk_window_set_title (GTK_WINDOW (xscreensaver_demo), "XScreenSaver");
144   gtk_window_set_policy (GTK_WINDOW (xscreensaver_demo), TRUE, TRUE, FALSE);
145   gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_demo), "xscreensaver", "XScreenSaver");
146
147   outer_vbox = gtk_vbox_new (FALSE, 5);
148   gtk_widget_set_name (outer_vbox, "outer_vbox");
149   gtk_widget_ref (outer_vbox);
150   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "outer_vbox", outer_vbox,
151                             (GtkDestroyNotify) gtk_widget_unref);
152   gtk_widget_show (outer_vbox);
153   gtk_container_add (GTK_CONTAINER (xscreensaver_demo), outer_vbox);
154
155   menubar = gtk_menu_bar_new ();
156   gtk_widget_set_name (menubar, "menubar");
157   gtk_widget_ref (menubar);
158   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "menubar", menubar,
159                             (GtkDestroyNotify) gtk_widget_unref);
160   gtk_widget_show (menubar);
161   gtk_box_pack_start (GTK_BOX (outer_vbox), menubar, FALSE, FALSE, 0);
162
163   file = gtk_menu_item_new_with_label ("");
164   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (file)->child),
165                                    "_File");
166   gtk_widget_add_accelerator (file, "activate_item", accel_group,
167                               tmp_key, GDK_MOD1_MASK, 0);
168   gtk_widget_set_name (file, "file");
169   gtk_widget_ref (file);
170   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file", file,
171                             (GtkDestroyNotify) gtk_widget_unref);
172   gtk_widget_show (file);
173   gtk_container_add (GTK_CONTAINER (menubar), file);
174
175   file_menu = gtk_menu_new ();
176   gtk_widget_set_name (file_menu, "file_menu");
177   gtk_widget_ref (file_menu);
178   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file_menu", file_menu,
179                             (GtkDestroyNotify) gtk_widget_unref);
180   gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), file_menu);
181   file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file_menu));
182
183   activate_menu = gtk_menu_item_new_with_label ("");
184   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (activate_menu)->child),
185                                    "_Blank Screen Now");
186   gtk_widget_add_accelerator (activate_menu, "activate_item", file_menu_accels,
187                               tmp_key, 0, 0);
188   gtk_widget_set_name (activate_menu, "activate_menu");
189   gtk_widget_ref (activate_menu);
190   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "activate_menu", activate_menu,
191                             (GtkDestroyNotify) gtk_widget_unref);
192   gtk_widget_show (activate_menu);
193   gtk_container_add (GTK_CONTAINER (file_menu), activate_menu);
194   gtk_tooltips_set_tip (tooltips, activate_menu, "Activate the XScreenSaver daemon now (locking the screen if so configured.)", NULL);
195
196   lock_menu = gtk_menu_item_new_with_label ("");
197   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (lock_menu)->child),
198                                    "_Lock Screen Now");
199   gtk_widget_add_accelerator (lock_menu, "activate_item", file_menu_accels,
200                               tmp_key, 0, 0);
201   gtk_widget_set_name (lock_menu, "lock_menu");
202   gtk_widget_ref (lock_menu);
203   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_menu", lock_menu,
204                             (GtkDestroyNotify) gtk_widget_unref);
205   gtk_widget_show (lock_menu);
206   gtk_container_add (GTK_CONTAINER (file_menu), lock_menu);
207   gtk_tooltips_set_tip (tooltips, lock_menu, "Lock the screen now (even if \"Require Password\" is unchecked.)", NULL);
208
209   kill_menu = gtk_menu_item_new_with_label ("");
210   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (kill_menu)->child),
211                                    "_Kill Daemon");
212   gtk_widget_add_accelerator (kill_menu, "activate_item", file_menu_accels,
213                               tmp_key, 0, 0);
214   gtk_widget_set_name (kill_menu, "kill_menu");
215   gtk_widget_ref (kill_menu);
216   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "kill_menu", kill_menu,
217                             (GtkDestroyNotify) gtk_widget_unref);
218   gtk_widget_show (kill_menu);
219   gtk_container_add (GTK_CONTAINER (file_menu), kill_menu);
220   gtk_tooltips_set_tip (tooltips, kill_menu, "Tell the running XScreenSaver daemon to exit.", NULL);
221
222   restart = gtk_menu_item_new_with_label ("");
223   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (restart)->child),
224                                    "_Restart Daemon");
225   gtk_widget_add_accelerator (restart, "activate_item", file_menu_accels,
226                               tmp_key, 0, 0);
227   gtk_widget_set_name (restart, "restart");
228   gtk_widget_ref (restart);
229   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "restart", restart,
230                             (GtkDestroyNotify) gtk_widget_unref);
231   gtk_widget_show (restart);
232   gtk_container_add (GTK_CONTAINER (file_menu), restart);
233   gtk_tooltips_set_tip (tooltips, restart, "Kill and re-launch the XScreenSaver daemon.", NULL);
234
235   separator1 = gtk_menu_item_new ();
236   gtk_widget_set_name (separator1, "separator1");
237   gtk_widget_ref (separator1);
238   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "separator1", separator1,
239                             (GtkDestroyNotify) gtk_widget_unref);
240   gtk_widget_show (separator1);
241   gtk_container_add (GTK_CONTAINER (file_menu), separator1);
242   gtk_widget_set_sensitive (separator1, FALSE);
243
244   exit_menu = gtk_menu_item_new_with_label ("");
245   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (exit_menu)->child),
246                                    "_Exit");
247   gtk_widget_add_accelerator (exit_menu, "activate_item", file_menu_accels,
248                               tmp_key, 0, 0);
249   gtk_widget_set_name (exit_menu, "exit_menu");
250   gtk_widget_ref (exit_menu);
251   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "exit_menu", exit_menu,
252                             (GtkDestroyNotify) gtk_widget_unref);
253   gtk_widget_show (exit_menu);
254   gtk_container_add (GTK_CONTAINER (file_menu), exit_menu);
255   gtk_tooltips_set_tip (tooltips, exit_menu, "Exit the xscreensaver-demo program (but leave the XScreenSaver daemon running in the background.)", NULL);
256
257   edit = gtk_menu_item_new_with_label ("");
258   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (edit)->child),
259                                    "_Edit");
260   gtk_widget_add_accelerator (edit, "activate_item", accel_group,
261                               tmp_key, GDK_MOD1_MASK, 0);
262   gtk_widget_set_name (edit, "edit");
263   gtk_widget_ref (edit);
264   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "edit", edit,
265                             (GtkDestroyNotify) gtk_widget_unref);
266   gtk_widget_show (edit);
267   gtk_container_add (GTK_CONTAINER (menubar), edit);
268
269   edit_menu = gtk_menu_new ();
270   gtk_widget_set_name (edit_menu, "edit_menu");
271   gtk_widget_ref (edit_menu);
272   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "edit_menu", edit_menu,
273                             (GtkDestroyNotify) gtk_widget_unref);
274   gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit), edit_menu);
275   edit_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (edit_menu));
276
277   cut_menu = gtk_menu_item_new_with_label ("");
278   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (cut_menu)->child),
279                                    "C_ut");
280   gtk_widget_add_accelerator (cut_menu, "activate_item", edit_menu_accels,
281                               tmp_key, 0, 0);
282   gtk_widget_set_name (cut_menu, "cut_menu");
283   gtk_widget_ref (cut_menu);
284   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cut_menu", cut_menu,
285                             (GtkDestroyNotify) gtk_widget_unref);
286   gtk_widget_show (cut_menu);
287   gtk_container_add (GTK_CONTAINER (edit_menu), cut_menu);
288
289   copy_menu = gtk_menu_item_new_with_label ("");
290   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (copy_menu)->child),
291                                    "_Copy");
292   gtk_widget_add_accelerator (copy_menu, "activate_item", edit_menu_accels,
293                               tmp_key, 0, 0);
294   gtk_widget_set_name (copy_menu, "copy_menu");
295   gtk_widget_ref (copy_menu);
296   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "copy_menu", copy_menu,
297                             (GtkDestroyNotify) gtk_widget_unref);
298   gtk_widget_show (copy_menu);
299   gtk_container_add (GTK_CONTAINER (edit_menu), copy_menu);
300
301   paste_menu = gtk_menu_item_new_with_label ("");
302   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (paste_menu)->child),
303                                    "_Paste");
304   gtk_widget_add_accelerator (paste_menu, "activate_item", edit_menu_accels,
305                               tmp_key, 0, 0);
306   gtk_widget_set_name (paste_menu, "paste_menu");
307   gtk_widget_ref (paste_menu);
308   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "paste_menu", paste_menu,
309                             (GtkDestroyNotify) gtk_widget_unref);
310   gtk_widget_show (paste_menu);
311   gtk_container_add (GTK_CONTAINER (edit_menu), paste_menu);
312
313   help = gtk_menu_item_new_with_label ("");
314   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (help)->child),
315                                    "_Help");
316   gtk_widget_add_accelerator (help, "activate_item", accel_group,
317                               tmp_key, GDK_MOD1_MASK, 0);
318   gtk_widget_set_name (help, "help");
319   gtk_widget_ref (help);
320   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help", help,
321                             (GtkDestroyNotify) gtk_widget_unref);
322   gtk_widget_show (help);
323   gtk_container_add (GTK_CONTAINER (menubar), help);
324
325   help_menu = gtk_menu_new ();
326   gtk_widget_set_name (help_menu, "help_menu");
327   gtk_widget_ref (help_menu);
328   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help_menu", help_menu,
329                             (GtkDestroyNotify) gtk_widget_unref);
330   gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu);
331   help_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (help_menu));
332
333   about_menu = gtk_menu_item_new_with_label ("");
334   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (about_menu)->child),
335                                    "_About...");
336   gtk_widget_add_accelerator (about_menu, "activate_item", help_menu_accels,
337                               tmp_key, 0, 0);
338   gtk_widget_set_name (about_menu, "about_menu");
339   gtk_widget_ref (about_menu);
340   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "about_menu", about_menu,
341                             (GtkDestroyNotify) gtk_widget_unref);
342   gtk_widget_show (about_menu);
343   gtk_container_add (GTK_CONTAINER (help_menu), about_menu);
344   gtk_tooltips_set_tip (tooltips, about_menu, "Display version information.", NULL);
345
346   doc_menu = gtk_menu_item_new_with_label ("");
347   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (doc_menu)->child),
348                                    "_Documentation...");
349   gtk_widget_add_accelerator (doc_menu, "activate_item", help_menu_accels,
350                               tmp_key, 0, 0);
351   gtk_widget_set_name (doc_menu, "doc_menu");
352   gtk_widget_ref (doc_menu);
353   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "doc_menu", doc_menu,
354                             (GtkDestroyNotify) gtk_widget_unref);
355   gtk_widget_show (doc_menu);
356   gtk_container_add (GTK_CONTAINER (help_menu), doc_menu);
357   gtk_tooltips_set_tip (tooltips, doc_menu, "Go to the documentation on the XScreenSaver web page.", NULL);
358
359   notebook = gtk_notebook_new ();
360   gtk_widget_set_name (notebook, "notebook");
361   gtk_widget_ref (notebook);
362   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "notebook", notebook,
363                             (GtkDestroyNotify) gtk_widget_unref);
364   gtk_widget_show (notebook);
365   gtk_box_pack_start (GTK_BOX (outer_vbox), notebook, TRUE, TRUE, 0);
366
367   demos_hbox = gtk_hbox_new (FALSE, 5);
368   gtk_widget_set_name (demos_hbox, "demos_hbox");
369   gtk_widget_ref (demos_hbox);
370   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demos_hbox", demos_hbox,
371                             (GtkDestroyNotify) gtk_widget_unref);
372   gtk_widget_show (demos_hbox);
373   gtk_container_add (GTK_CONTAINER (notebook), demos_hbox);
374
375   list_vbox = gtk_vbox_new (FALSE, 5);
376   gtk_widget_set_name (list_vbox, "list_vbox");
377   gtk_widget_ref (list_vbox);
378   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list_vbox", list_vbox,
379                             (GtkDestroyNotify) gtk_widget_unref);
380   gtk_widget_show (list_vbox);
381   gtk_box_pack_start (GTK_BOX (demos_hbox), list_vbox, FALSE, FALSE, 0);
382   gtk_container_set_border_width (GTK_CONTAINER (list_vbox), 10);
383
384   scroller = gtk_scrolled_window_new (NULL, NULL);
385   gtk_widget_set_name (scroller, "scroller");
386   gtk_widget_ref (scroller);
387   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "scroller", scroller,
388                             (GtkDestroyNotify) gtk_widget_unref);
389   gtk_widget_show (scroller);
390   gtk_box_pack_start (GTK_BOX (list_vbox), scroller, TRUE, TRUE, 0);
391   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
392
393   viewport = gtk_viewport_new (NULL, NULL);
394   gtk_widget_set_name (viewport, "viewport");
395   gtk_widget_ref (viewport);
396   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "viewport", viewport,
397                             (GtkDestroyNotify) gtk_widget_unref);
398   gtk_widget_show (viewport);
399   gtk_container_add (GTK_CONTAINER (scroller), viewport);
400   gtk_container_set_border_width (GTK_CONTAINER (viewport), 1);
401
402   list = gtk_list_new ();
403   gtk_widget_set_name (list, "list");
404   gtk_widget_ref (list);
405   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list", list,
406                             (GtkDestroyNotify) gtk_widget_unref);
407   gtk_widget_show (list);
408   gtk_container_add (GTK_CONTAINER (viewport), list);
409
410   centering_hbox = gtk_hbox_new (TRUE, 0);
411   gtk_widget_set_name (centering_hbox, "centering_hbox");
412   gtk_widget_ref (centering_hbox);
413   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "centering_hbox", centering_hbox,
414                             (GtkDestroyNotify) gtk_widget_unref);
415   gtk_widget_show (centering_hbox);
416   gtk_box_pack_start (GTK_BOX (list_vbox), centering_hbox, FALSE, TRUE, 0);
417
418   next_prev_hbox = gtk_hbox_new (FALSE, 0);
419   gtk_widget_set_name (next_prev_hbox, "next_prev_hbox");
420   gtk_widget_ref (next_prev_hbox);
421   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next_prev_hbox", next_prev_hbox,
422                             (GtkDestroyNotify) gtk_widget_unref);
423   gtk_widget_show (next_prev_hbox);
424   gtk_box_pack_start (GTK_BOX (centering_hbox), next_prev_hbox, FALSE, FALSE, 0);
425
426   next = gtk_button_new_with_label ("\\/");
427   gtk_widget_set_name (next, "next");
428   gtk_widget_ref (next);
429   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next", next,
430                             (GtkDestroyNotify) gtk_widget_unref);
431   gtk_widget_show (next);
432   gtk_box_pack_start (GTK_BOX (next_prev_hbox), next, FALSE, FALSE, 0);
433   GTK_WIDGET_SET_FLAGS (next, GTK_CAN_DEFAULT);
434   gtk_tooltips_set_tip (tooltips, next, "Run the next demo in this list in full-screen mode (click the mouse to return.)", NULL);
435
436   prev = gtk_button_new_with_label ("/\\");
437   gtk_widget_set_name (prev, "prev");
438   gtk_widget_ref (prev);
439   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prev", prev,
440                             (GtkDestroyNotify) gtk_widget_unref);
441   gtk_widget_show (prev);
442   gtk_box_pack_start (GTK_BOX (next_prev_hbox), prev, FALSE, FALSE, 0);
443   GTK_WIDGET_SET_FLAGS (prev, GTK_CAN_DEFAULT);
444   gtk_tooltips_set_tip (tooltips, prev, "Run the previous demo in this list in full-screen mode (click the mouse to return.)", NULL);
445
446   opts_vbox = gtk_vbox_new (FALSE, 0);
447   gtk_widget_set_name (opts_vbox, "opts_vbox");
448   gtk_widget_ref (opts_vbox);
449   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "opts_vbox", opts_vbox,
450                             (GtkDestroyNotify) gtk_widget_unref);
451   gtk_widget_show (opts_vbox);
452   gtk_box_pack_start (GTK_BOX (demos_hbox), opts_vbox, TRUE, TRUE, 0);
453   gtk_container_set_border_width (GTK_CONTAINER (opts_vbox), 10);
454
455   frame = gtk_frame_new (NULL);
456   gtk_widget_set_name (frame, "frame");
457   gtk_widget_ref (frame);
458   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "frame", frame,
459                             (GtkDestroyNotify) gtk_widget_unref);
460   gtk_widget_show (frame);
461   gtk_box_pack_start (GTK_BOX (opts_vbox), frame, TRUE, TRUE, 0);
462
463   doc = gtk_label_new ("");
464   gtk_widget_set_name (doc, "doc");
465   gtk_widget_ref (doc);
466   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "doc", doc,
467                             (GtkDestroyNotify) gtk_widget_unref);
468   gtk_widget_show (doc);
469   gtk_container_add (GTK_CONTAINER (frame), doc);
470   gtk_label_set_justify (GTK_LABEL (doc), GTK_JUSTIFY_LEFT);
471   gtk_label_set_line_wrap (GTK_LABEL (doc), TRUE);
472   gtk_misc_set_alignment (GTK_MISC (doc), 0, 0);
473   gtk_misc_set_padding (GTK_MISC (doc), 10, 10);
474
475   opts_vbox2 = gtk_vbox_new (FALSE, 2);
476   gtk_widget_set_name (opts_vbox2, "opts_vbox2");
477   gtk_widget_ref (opts_vbox2);
478   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "opts_vbox2", opts_vbox2,
479                             (GtkDestroyNotify) gtk_widget_unref);
480   gtk_widget_show (opts_vbox2);
481   gtk_box_pack_start (GTK_BOX (opts_vbox), opts_vbox2, FALSE, TRUE, 0);
482
483   cmd_label = gtk_label_new ("Command Line:");
484   gtk_widget_set_name (cmd_label, "cmd_label");
485   gtk_widget_ref (cmd_label);
486   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmd_label", cmd_label,
487                             (GtkDestroyNotify) gtk_widget_unref);
488   gtk_widget_show (cmd_label);
489   gtk_box_pack_start (GTK_BOX (opts_vbox2), cmd_label, FALSE, FALSE, 0);
490   gtk_label_set_justify (GTK_LABEL (cmd_label), GTK_JUSTIFY_LEFT);
491   gtk_misc_set_alignment (GTK_MISC (cmd_label), 0, 1);
492   gtk_misc_set_padding (GTK_MISC (cmd_label), 0, 2);
493
494   cmd_text = gtk_entry_new ();
495   gtk_widget_set_name (cmd_text, "cmd_text");
496   gtk_widget_ref (cmd_text);
497   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmd_text", cmd_text,
498                             (GtkDestroyNotify) gtk_widget_unref);
499   gtk_widget_show (cmd_text);
500   gtk_box_pack_start (GTK_BOX (opts_vbox2), cmd_text, FALSE, TRUE, 0);
501
502   opts_hbox3 = gtk_hbox_new (FALSE, 0);
503   gtk_widget_set_name (opts_hbox3, "opts_hbox3");
504   gtk_widget_ref (opts_hbox3);
505   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "opts_hbox3", opts_hbox3,
506                             (GtkDestroyNotify) gtk_widget_unref);
507   gtk_widget_show (opts_hbox3);
508   gtk_box_pack_start (GTK_BOX (opts_vbox2), opts_hbox3, FALSE, TRUE, 4);
509   gtk_container_set_border_width (GTK_CONTAINER (opts_hbox3), 4);
510
511   enabled = gtk_check_button_new_with_label ("Enabled");
512   gtk_widget_set_name (enabled, "enabled");
513   gtk_widget_ref (enabled);
514   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "enabled", enabled,
515                             (GtkDestroyNotify) gtk_widget_unref);
516   gtk_widget_show (enabled);
517   gtk_box_pack_start (GTK_BOX (opts_hbox3), enabled, FALSE, FALSE, 0);
518   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enabled), TRUE);
519
520   visual = gtk_label_new ("Visual:");
521   gtk_widget_set_name (visual, "visual");
522   gtk_widget_ref (visual);
523   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "visual", visual,
524                             (GtkDestroyNotify) gtk_widget_unref);
525   gtk_widget_show (visual);
526   gtk_box_pack_start (GTK_BOX (opts_hbox3), visual, FALSE, FALSE, 0);
527   gtk_label_set_justify (GTK_LABEL (visual), GTK_JUSTIFY_RIGHT);
528   gtk_misc_set_alignment (GTK_MISC (visual), 1, 0.5);
529   gtk_misc_set_padding (GTK_MISC (visual), 10, 0);
530
531   visual_combo = gtk_combo_new ();
532   gtk_widget_set_name (visual_combo, "visual_combo");
533   gtk_widget_ref (visual_combo);
534   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "visual_combo", visual_combo,
535                             (GtkDestroyNotify) gtk_widget_unref);
536   gtk_widget_show (visual_combo);
537   gtk_box_pack_start (GTK_BOX (opts_hbox3), visual_combo, FALSE, FALSE, 0);
538   visual_combo_items = g_list_append (visual_combo_items, "Any");
539   visual_combo_items = g_list_append (visual_combo_items, "Best");
540   visual_combo_items = g_list_append (visual_combo_items, "Default");
541   visual_combo_items = g_list_append (visual_combo_items, "Default-N");
542   visual_combo_items = g_list_append (visual_combo_items, "GL");
543   visual_combo_items = g_list_append (visual_combo_items, "TrueColor");
544   visual_combo_items = g_list_append (visual_combo_items, "PseudoColor");
545   visual_combo_items = g_list_append (visual_combo_items, "StaticGray");
546   visual_combo_items = g_list_append (visual_combo_items, "GrayScale");
547   visual_combo_items = g_list_append (visual_combo_items, "DirectColor");
548   visual_combo_items = g_list_append (visual_combo_items, "Color");
549   visual_combo_items = g_list_append (visual_combo_items, "Gray");
550   visual_combo_items = g_list_append (visual_combo_items, "Mono");
551   gtk_combo_set_popdown_strings (GTK_COMBO (visual_combo), visual_combo_items);
552   g_list_free (visual_combo_items);
553
554   combo_entry1 = GTK_COMBO (visual_combo)->entry;
555   gtk_widget_set_name (combo_entry1, "combo_entry1");
556   gtk_widget_ref (combo_entry1);
557   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "combo_entry1", combo_entry1,
558                             (GtkDestroyNotify) gtk_widget_unref);
559   gtk_widget_show (combo_entry1);
560   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);
561   gtk_entry_set_text (GTK_ENTRY (combo_entry1), "Any");
562
563   demo_hline = gtk_hseparator_new ();
564   gtk_widget_set_name (demo_hline, "demo_hline");
565   gtk_widget_ref (demo_hline);
566   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_hline", demo_hline,
567                             (GtkDestroyNotify) gtk_widget_unref);
568   gtk_widget_show (demo_hline);
569   gtk_box_pack_start (GTK_BOX (opts_vbox), demo_hline, FALSE, FALSE, 5);
570
571   demo_manual_hbox = gtk_hbutton_box_new ();
572   gtk_widget_set_name (demo_manual_hbox, "demo_manual_hbox");
573   gtk_widget_ref (demo_manual_hbox);
574   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_manual_hbox", demo_manual_hbox,
575                             (GtkDestroyNotify) gtk_widget_unref);
576   gtk_widget_show (demo_manual_hbox);
577   gtk_box_pack_start (GTK_BOX (opts_vbox), demo_manual_hbox, FALSE, TRUE, 0);
578
579   demo = gtk_button_new_with_label ("Demo");
580   gtk_widget_set_name (demo, "demo");
581   gtk_widget_ref (demo);
582   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo", demo,
583                             (GtkDestroyNotify) gtk_widget_unref);
584   gtk_widget_show (demo);
585   gtk_container_add (GTK_CONTAINER (demo_manual_hbox), demo);
586   GTK_WIDGET_SET_FLAGS (demo, GTK_CAN_DEFAULT);
587   gtk_tooltips_set_tip (tooltips, demo, "Run this one in full-screen mode (click the mouse to return.)", NULL);
588
589   manual = gtk_button_new_with_label ("Documentation...");
590   gtk_widget_set_name (manual, "manual");
591   gtk_widget_ref (manual);
592   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "manual", manual,
593                             (GtkDestroyNotify) gtk_widget_unref);
594   gtk_widget_show (manual);
595   gtk_container_add (GTK_CONTAINER (demo_manual_hbox), manual);
596   GTK_WIDGET_SET_FLAGS (manual, GTK_CAN_DEFAULT);
597   gtk_tooltips_set_tip (tooltips, manual, "Click here to read the manual for this display mode, if it has one.", NULL);
598
599   demo_tab = gtk_label_new ("Graphics Demos");
600   gtk_widget_set_name (demo_tab, "demo_tab");
601   gtk_widget_ref (demo_tab);
602   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_tab", demo_tab,
603                             (GtkDestroyNotify) gtk_widget_unref);
604   gtk_widget_show (demo_tab);
605   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), demo_tab);
606
607   options_vbox = gtk_vbox_new (FALSE, 0);
608   gtk_widget_set_name (options_vbox, "options_vbox");
609   gtk_widget_ref (options_vbox);
610   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_vbox", options_vbox,
611                             (GtkDestroyNotify) gtk_widget_unref);
612   gtk_widget_show (options_vbox);
613   gtk_container_add (GTK_CONTAINER (notebook), options_vbox);
614
615   options_table = gtk_table_new (1, 2, TRUE);
616   gtk_widget_set_name (options_table, "options_table");
617   gtk_widget_ref (options_table);
618   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table", options_table,
619                             (GtkDestroyNotify) gtk_widget_unref);
620   gtk_widget_show (options_table);
621   gtk_box_pack_start (GTK_BOX (options_vbox), options_table, FALSE, FALSE, 0);
622
623   options_table_2 = gtk_table_new (2, 1, FALSE);
624   gtk_widget_set_name (options_table_2, "options_table_2");
625   gtk_widget_ref (options_table_2);
626   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table_2", options_table_2,
627                             (GtkDestroyNotify) gtk_widget_unref);
628   gtk_widget_show (options_table_2);
629   gtk_table_attach (GTK_TABLE (options_table), options_table_2, 1, 2, 0, 1,
630                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
631                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
632
633   dpms_frame = gtk_frame_new ("Display Power Management:");
634   gtk_widget_set_name (dpms_frame, "dpms_frame");
635   gtk_widget_ref (dpms_frame);
636   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_frame", dpms_frame,
637                             (GtkDestroyNotify) gtk_widget_unref);
638   gtk_widget_show (dpms_frame);
639   gtk_table_attach (GTK_TABLE (options_table_2), dpms_frame, 0, 1, 0, 1,
640                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
641                     (GtkAttachOptions) (GTK_FILL), 0, 0);
642   gtk_container_set_border_width (GTK_CONTAINER (dpms_frame), 10);
643
644   dpms_table = gtk_table_new (4, 3, FALSE);
645   gtk_widget_set_name (dpms_table, "dpms_table");
646   gtk_widget_ref (dpms_table);
647   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_table", dpms_table,
648                             (GtkDestroyNotify) gtk_widget_unref);
649   gtk_widget_show (dpms_table);
650   gtk_container_add (GTK_CONTAINER (dpms_frame), dpms_table);
651   gtk_container_set_border_width (GTK_CONTAINER (dpms_table), 10);
652   gtk_table_set_row_spacings (GTK_TABLE (dpms_table), 2);
653   gtk_table_set_col_spacings (GTK_TABLE (dpms_table), 10);
654
655   dpms_off_text = gtk_entry_new_with_max_length (8);
656   gtk_widget_set_name (dpms_off_text, "dpms_off_text");
657   gtk_widget_ref (dpms_off_text);
658   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_text", dpms_off_text,
659                             (GtkDestroyNotify) gtk_widget_unref);
660   gtk_widget_show (dpms_off_text);
661   gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_text, 1, 2, 3, 4,
662                     (GtkAttachOptions) (0),
663                     (GtkAttachOptions) (0), 0, 0);
664   gtk_tooltips_set_tip (tooltips, dpms_off_text, "How long until the monitor powers down (if Power Management is enabled).", NULL);
665
666   dpms_suspend_text = gtk_entry_new_with_max_length (8);
667   gtk_widget_set_name (dpms_suspend_text, "dpms_suspend_text");
668   gtk_widget_ref (dpms_suspend_text);
669   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_text", dpms_suspend_text,
670                             (GtkDestroyNotify) gtk_widget_unref);
671   gtk_widget_show (dpms_suspend_text);
672   gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_text, 1, 2, 2, 3,
673                     (GtkAttachOptions) (0),
674                     (GtkAttachOptions) (0), 0, 0);
675   gtk_tooltips_set_tip (tooltips, dpms_suspend_text, "How long until the monitor goes into power-saving mode (if Power Management is enabled).", NULL);
676
677   dpms_standby_text = gtk_entry_new_with_max_length (8);
678   gtk_widget_set_name (dpms_standby_text, "dpms_standby_text");
679   gtk_widget_ref (dpms_standby_text);
680   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_text", dpms_standby_text,
681                             (GtkDestroyNotify) gtk_widget_unref);
682   gtk_widget_show (dpms_standby_text);
683   gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_text, 1, 2, 1, 2,
684                     (GtkAttachOptions) (0),
685                     (GtkAttachOptions) (0), 0, 0);
686   gtk_tooltips_set_tip (tooltips, dpms_standby_text, "How long before the monitor goes completely black (if Power Management is enabled).", NULL);
687
688   dpms_standby_label = gtk_label_new ("Standby After:");
689   gtk_widget_set_name (dpms_standby_label, "dpms_standby_label");
690   gtk_widget_ref (dpms_standby_label);
691   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_label", dpms_standby_label,
692                             (GtkDestroyNotify) gtk_widget_unref);
693   gtk_widget_show (dpms_standby_label);
694   gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_label, 0, 1, 1, 2,
695                     (GtkAttachOptions) (GTK_FILL),
696                     (GtkAttachOptions) (0), 0, 0);
697   gtk_label_set_justify (GTK_LABEL (dpms_standby_label), GTK_JUSTIFY_RIGHT);
698   gtk_misc_set_alignment (GTK_MISC (dpms_standby_label), 1, 0.5);
699
700   dpms_off_label = gtk_label_new ("Off After:");
701   gtk_widget_set_name (dpms_off_label, "dpms_off_label");
702   gtk_widget_ref (dpms_off_label);
703   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_label", dpms_off_label,
704                             (GtkDestroyNotify) gtk_widget_unref);
705   gtk_widget_show (dpms_off_label);
706   gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_label, 0, 1, 3, 4,
707                     (GtkAttachOptions) (GTK_FILL),
708                     (GtkAttachOptions) (0), 0, 0);
709   gtk_label_set_justify (GTK_LABEL (dpms_off_label), GTK_JUSTIFY_RIGHT);
710   gtk_misc_set_alignment (GTK_MISC (dpms_off_label), 1, 0.5);
711
712   dpms_suspend_label = gtk_label_new ("Suspend After:");
713   gtk_widget_set_name (dpms_suspend_label, "dpms_suspend_label");
714   gtk_widget_ref (dpms_suspend_label);
715   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_label", dpms_suspend_label,
716                             (GtkDestroyNotify) gtk_widget_unref);
717   gtk_widget_show (dpms_suspend_label);
718   gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_label, 0, 1, 2, 3,
719                     (GtkAttachOptions) (GTK_FILL),
720                     (GtkAttachOptions) (0), 0, 0);
721   gtk_label_set_justify (GTK_LABEL (dpms_suspend_label), GTK_JUSTIFY_RIGHT);
722   gtk_misc_set_alignment (GTK_MISC (dpms_suspend_label), 1, 0.5);
723
724   dpms_dummy = gtk_label_new ("");
725   gtk_widget_set_name (dpms_dummy, "dpms_dummy");
726   gtk_widget_ref (dpms_dummy);
727   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_dummy", dpms_dummy,
728                             (GtkDestroyNotify) gtk_widget_unref);
729   gtk_widget_show (dpms_dummy);
730   gtk_table_attach (GTK_TABLE (dpms_table), dpms_dummy, 2, 3, 3, 4,
731                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
732                     (GtkAttachOptions) (0), 0, 0);
733   gtk_label_set_justify (GTK_LABEL (dpms_dummy), GTK_JUSTIFY_LEFT);
734
735   dpms_button_eventbox = gtk_event_box_new ();
736   gtk_widget_set_name (dpms_button_eventbox, "dpms_button_eventbox");
737   gtk_widget_ref (dpms_button_eventbox);
738   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button_eventbox", dpms_button_eventbox,
739                             (GtkDestroyNotify) gtk_widget_unref);
740   gtk_widget_show (dpms_button_eventbox);
741   gtk_table_attach (GTK_TABLE (dpms_table), dpms_button_eventbox, 0, 3, 0, 1,
742                     (GtkAttachOptions) (GTK_FILL),
743                     (GtkAttachOptions) (GTK_FILL), 0, 0);
744   gtk_tooltips_set_tip (tooltips, dpms_button_eventbox, "Whether the monitor should be powered down after a while.", NULL);
745
746   dpms_button = gtk_check_button_new_with_label ("Power Management Enabled");
747   gtk_widget_set_name (dpms_button, "dpms_button");
748   gtk_widget_ref (dpms_button);
749   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button", dpms_button,
750                             (GtkDestroyNotify) gtk_widget_unref);
751   gtk_widget_show (dpms_button);
752   gtk_container_add (GTK_CONTAINER (dpms_button_eventbox), dpms_button);
753   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dpms_button), TRUE);
754
755   cmap_frame = gtk_frame_new ("Colormaps:");
756   gtk_widget_set_name (cmap_frame, "cmap_frame");
757   gtk_widget_ref (cmap_frame);
758   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_frame", cmap_frame,
759                             (GtkDestroyNotify) gtk_widget_unref);
760   gtk_widget_show (cmap_frame);
761   gtk_table_attach (GTK_TABLE (options_table_2), cmap_frame, 0, 1, 1, 2,
762                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
763                     (GtkAttachOptions) (GTK_FILL), 0, 0);
764   gtk_container_set_border_width (GTK_CONTAINER (cmap_frame), 10);
765
766   cmap_table = gtk_table_new (5, 3, FALSE);
767   gtk_widget_set_name (cmap_table, "cmap_table");
768   gtk_widget_ref (cmap_table);
769   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_table", cmap_table,
770                             (GtkDestroyNotify) gtk_widget_unref);
771   gtk_widget_show (cmap_table);
772   gtk_container_add (GTK_CONTAINER (cmap_frame), cmap_table);
773   gtk_container_set_border_width (GTK_CONTAINER (cmap_table), 10);
774   gtk_table_set_row_spacings (GTK_TABLE (cmap_table), 2);
775   gtk_table_set_col_spacings (GTK_TABLE (cmap_table), 10);
776
777   fade_text = gtk_entry_new_with_max_length (8);
778   gtk_widget_set_name (fade_text, "fade_text");
779   gtk_widget_ref (fade_text);
780   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_text", fade_text,
781                             (GtkDestroyNotify) gtk_widget_unref);
782   gtk_widget_show (fade_text);
783   gtk_table_attach (GTK_TABLE (cmap_table), fade_text, 1, 2, 4, 5,
784                     (GtkAttachOptions) (0),
785                     (GtkAttachOptions) (0), 0, 0);
786   gtk_tooltips_set_tip (tooltips, fade_text, "How long it should take for the screen to fade in and out.", NULL);
787
788   cmap_dummy = gtk_label_new ("");
789   gtk_widget_set_name (cmap_dummy, "cmap_dummy");
790   gtk_widget_ref (cmap_dummy);
791   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_dummy", cmap_dummy,
792                             (GtkDestroyNotify) gtk_widget_unref);
793   gtk_widget_show (cmap_dummy);
794   gtk_table_attach (GTK_TABLE (cmap_table), cmap_dummy, 2, 3, 4, 5,
795                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
796                     (GtkAttachOptions) (0), 0, 0);
797   gtk_label_set_justify (GTK_LABEL (cmap_dummy), GTK_JUSTIFY_LEFT);
798
799   fade_label = gtk_label_new ("Fade Duration:");
800   gtk_widget_set_name (fade_label, "fade_label");
801   gtk_widget_ref (fade_label);
802   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_label", fade_label,
803                             (GtkDestroyNotify) gtk_widget_unref);
804   gtk_widget_show (fade_label);
805   gtk_table_attach (GTK_TABLE (cmap_table), fade_label, 0, 1, 4, 5,
806                     (GtkAttachOptions) (GTK_FILL),
807                     (GtkAttachOptions) (0), 0, 0);
808   gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_RIGHT);
809   gtk_misc_set_alignment (GTK_MISC (fade_label), 1, 0.5);
810
811   install_button_eventbox = gtk_event_box_new ();
812   gtk_widget_set_name (install_button_eventbox, "install_button_eventbox");
813   gtk_widget_ref (install_button_eventbox);
814   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button_eventbox", install_button_eventbox,
815                             (GtkDestroyNotify) gtk_widget_unref);
816   gtk_widget_show (install_button_eventbox);
817   gtk_table_attach (GTK_TABLE (cmap_table), install_button_eventbox, 0, 3, 0, 1,
818                     (GtkAttachOptions) (GTK_FILL),
819                     (GtkAttachOptions) (GTK_FILL), 0, 0);
820   gtk_tooltips_set_tip (tooltips, install_button_eventbox, "Whether to install a private colormap when running in 8-bit mode on the default Visual.", NULL);
821
822   install_button = gtk_check_button_new_with_label ("Install Colormap");
823   gtk_widget_set_name (install_button, "install_button");
824   gtk_widget_ref (install_button);
825   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button", install_button,
826                             (GtkDestroyNotify) gtk_widget_unref);
827   gtk_widget_show (install_button);
828   gtk_container_add (GTK_CONTAINER (install_button_eventbox), install_button);
829
830   fade_button_eventbox = gtk_event_box_new ();
831   gtk_widget_set_name (fade_button_eventbox, "fade_button_eventbox");
832   gtk_widget_ref (fade_button_eventbox);
833   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button_eventbox", fade_button_eventbox,
834                             (GtkDestroyNotify) gtk_widget_unref);
835   gtk_widget_show (fade_button_eventbox);
836   gtk_table_attach (GTK_TABLE (cmap_table), fade_button_eventbox, 0, 3, 2, 3,
837                     (GtkAttachOptions) (GTK_FILL),
838                     (GtkAttachOptions) (GTK_FILL), 0, 0);
839   gtk_tooltips_set_tip (tooltips, fade_button_eventbox, "Whether the screen should slowly fade to black when the screen saver activates.", NULL);
840
841   fade_button = gtk_check_button_new_with_label ("Fade To Black When Blanking");
842   gtk_widget_set_name (fade_button, "fade_button");
843   gtk_widget_ref (fade_button);
844   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button", fade_button,
845                             (GtkDestroyNotify) gtk_widget_unref);
846   gtk_widget_show (fade_button);
847   gtk_container_add (GTK_CONTAINER (fade_button_eventbox), fade_button);
848
849   unfade_button_eventbox = gtk_event_box_new ();
850   gtk_widget_set_name (unfade_button_eventbox, "unfade_button_eventbox");
851   gtk_widget_ref (unfade_button_eventbox);
852   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button_eventbox", unfade_button_eventbox,
853                             (GtkDestroyNotify) gtk_widget_unref);
854   gtk_widget_show (unfade_button_eventbox);
855   gtk_table_attach (GTK_TABLE (cmap_table), unfade_button_eventbox, 0, 3, 3, 4,
856                     (GtkAttachOptions) (GTK_FILL),
857                     (GtkAttachOptions) (GTK_FILL), 0, 0);
858   gtk_tooltips_set_tip (tooltips, unfade_button_eventbox, "Whether the screen should slowly fade in from black when the screen saver deactivates.", NULL);
859
860   unfade_button = gtk_check_button_new_with_label ("Fade From Black When Unblanking");
861   gtk_widget_set_name (unfade_button, "unfade_button");
862   gtk_widget_ref (unfade_button);
863   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button", unfade_button,
864                             (GtkDestroyNotify) gtk_widget_unref);
865   gtk_widget_show (unfade_button);
866   gtk_container_add (GTK_CONTAINER (unfade_button_eventbox), unfade_button);
867
868   cmap_hr = gtk_hseparator_new ();
869   gtk_widget_set_name (cmap_hr, "cmap_hr");
870   gtk_widget_ref (cmap_hr);
871   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hr", cmap_hr,
872                             (GtkDestroyNotify) gtk_widget_unref);
873   gtk_widget_show (cmap_hr);
874   gtk_table_attach (GTK_TABLE (cmap_table), cmap_hr, 0, 3, 1, 2,
875                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
876                     (GtkAttachOptions) (GTK_FILL), 0, 2);
877
878   options_table_1 = gtk_table_new (3, 1, FALSE);
879   gtk_widget_set_name (options_table_1, "options_table_1");
880   gtk_widget_ref (options_table_1);
881   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table_1", options_table_1,
882                             (GtkDestroyNotify) gtk_widget_unref);
883   gtk_widget_show (options_table_1);
884   gtk_table_attach (GTK_TABLE (options_table), options_table_1, 0, 1, 0, 1,
885                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
886                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
887
888   grab_frame = gtk_frame_new ("Image Manipulation:");
889   gtk_widget_set_name (grab_frame, "grab_frame");
890   gtk_widget_ref (grab_frame);
891   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_frame", grab_frame,
892                             (GtkDestroyNotify) gtk_widget_unref);
893   gtk_widget_show (grab_frame);
894   gtk_table_attach (GTK_TABLE (options_table_1), grab_frame, 0, 1, 1, 2,
895                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
896                     (GtkAttachOptions) (GTK_FILL), 0, 0);
897   gtk_container_set_border_width (GTK_CONTAINER (grab_frame), 10);
898
899   grab_table = gtk_table_new (4, 3, FALSE);
900   gtk_widget_set_name (grab_table, "grab_table");
901   gtk_widget_ref (grab_table);
902   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_table", grab_table,
903                             (GtkDestroyNotify) gtk_widget_unref);
904   gtk_widget_show (grab_table);
905   gtk_container_add (GTK_CONTAINER (grab_frame), grab_table);
906   gtk_container_set_border_width (GTK_CONTAINER (grab_table), 10);
907
908   grab_image_eventbox = gtk_event_box_new ();
909   gtk_widget_set_name (grab_image_eventbox, "grab_image_eventbox");
910   gtk_widget_ref (grab_image_eventbox);
911   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_image_eventbox", grab_image_eventbox,
912                             (GtkDestroyNotify) gtk_widget_unref);
913   gtk_widget_show (grab_image_eventbox);
914   gtk_table_attach (GTK_TABLE (grab_table), grab_image_eventbox, 0, 3, 2, 3,
915                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
916                     (GtkAttachOptions) (GTK_FILL), 0, 0);
917   gtk_tooltips_set_tip (tooltips, grab_image_eventbox, "Whether the image-manipulating modes should operate on random images loaded from disk.", NULL);
918
919   grab_image_button = gtk_check_button_new_with_label ("Choose Random Image:");
920   gtk_widget_set_name (grab_image_button, "grab_image_button");
921   gtk_widget_ref (grab_image_button);
922   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_image_button", grab_image_button,
923                             (GtkDestroyNotify) gtk_widget_unref);
924   gtk_widget_show (grab_image_button);
925   gtk_container_add (GTK_CONTAINER (grab_image_eventbox), grab_image_button);
926
927   image_browse_button = gtk_button_new_with_label ("Browse");
928   gtk_widget_set_name (image_browse_button, "image_browse_button");
929   gtk_widget_ref (image_browse_button);
930   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_browse_button", image_browse_button,
931                             (GtkDestroyNotify) gtk_widget_unref);
932   gtk_widget_show (image_browse_button);
933   gtk_table_attach (GTK_TABLE (grab_table), image_browse_button, 2, 3, 3, 4,
934                     (GtkAttachOptions) (0),
935                     (GtkAttachOptions) (0), 4, 0);
936
937   grab_video_eventbox = gtk_event_box_new ();
938   gtk_widget_set_name (grab_video_eventbox, "grab_video_eventbox");
939   gtk_widget_ref (grab_video_eventbox);
940   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_video_eventbox", grab_video_eventbox,
941                             (GtkDestroyNotify) gtk_widget_unref);
942   gtk_widget_show (grab_video_eventbox);
943   gtk_table_attach (GTK_TABLE (grab_table), grab_video_eventbox, 0, 3, 1, 2,
944                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
945                     (GtkAttachOptions) (GTK_FILL), 0, 0);
946   gtk_tooltips_set_tip (tooltips, grab_video_eventbox, "Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one).", NULL);
947
948   grab_video_button = gtk_check_button_new_with_label ("Grab Video Frames");
949   gtk_widget_set_name (grab_video_button, "grab_video_button");
950   gtk_widget_ref (grab_video_button);
951   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_video_button", grab_video_button,
952                             (GtkDestroyNotify) gtk_widget_unref);
953   gtk_widget_show (grab_video_button);
954   gtk_container_add (GTK_CONTAINER (grab_video_eventbox), grab_video_button);
955
956   grab_desk_eventbox = gtk_event_box_new ();
957   gtk_widget_set_name (grab_desk_eventbox, "grab_desk_eventbox");
958   gtk_widget_ref (grab_desk_eventbox);
959   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_desk_eventbox", grab_desk_eventbox,
960                             (GtkDestroyNotify) gtk_widget_unref);
961   gtk_widget_show (grab_desk_eventbox);
962   gtk_table_attach (GTK_TABLE (grab_table), grab_desk_eventbox, 0, 3, 0, 1,
963                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
964                     (GtkAttachOptions) (GTK_FILL), 0, 0);
965   gtk_tooltips_set_tip (tooltips, grab_desk_eventbox, "Whether the image-manipulating modes should be allowed to operate on an image of your desktop.", NULL);
966
967   grab_desk_button = gtk_check_button_new_with_label ("Grab Desktop Images");
968   gtk_widget_set_name (grab_desk_button, "grab_desk_button");
969   gtk_widget_ref (grab_desk_button);
970   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_desk_button", grab_desk_button,
971                             (GtkDestroyNotify) gtk_widget_unref);
972   gtk_widget_show (grab_desk_button);
973   gtk_container_add (GTK_CONTAINER (grab_desk_eventbox), grab_desk_button);
974
975   grab_dummy = gtk_label_new ("");
976   gtk_widget_set_name (grab_dummy, "grab_dummy");
977   gtk_widget_ref (grab_dummy);
978   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_dummy", grab_dummy,
979                             (GtkDestroyNotify) gtk_widget_unref);
980   gtk_widget_show (grab_dummy);
981   gtk_table_attach (GTK_TABLE (grab_table), grab_dummy, 0, 1, 3, 4,
982                     (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
983                     (GtkAttachOptions) (GTK_SHRINK), 0, 0);
984   gtk_label_set_justify (GTK_LABEL (grab_dummy), GTK_JUSTIFY_LEFT);
985   gtk_misc_set_padding (GTK_MISC (grab_dummy), 8, 0);
986
987   image_text = gtk_entry_new ();
988   gtk_widget_set_name (image_text, "image_text");
989   gtk_widget_ref (image_text);
990   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_text", image_text,
991                             (GtkDestroyNotify) gtk_widget_unref);
992   gtk_widget_show (image_text);
993   gtk_table_attach (GTK_TABLE (grab_table), image_text, 1, 2, 3, 4,
994                     (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
995                     (GtkAttachOptions) (0), 0, 0);
996   gtk_tooltips_set_tip (tooltips, image_text, "The directory from which images will be randomly chosen.", NULL);
997
998   blanking_frame = gtk_frame_new ("Blanking and Locking:");
999   gtk_widget_set_name (blanking_frame, "blanking_frame");
1000   gtk_widget_ref (blanking_frame);
1001   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_frame", blanking_frame,
1002                             (GtkDestroyNotify) gtk_widget_unref);
1003   gtk_widget_show (blanking_frame);
1004   gtk_table_attach (GTK_TABLE (options_table_1), blanking_frame, 0, 1, 0, 1,
1005                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1006                     (GtkAttachOptions) (GTK_FILL), 0, 0);
1007   gtk_container_set_border_width (GTK_CONTAINER (blanking_frame), 10);
1008
1009   blanking_table = gtk_table_new (5, 3, FALSE);
1010   gtk_widget_set_name (blanking_table, "blanking_table");
1011   gtk_widget_ref (blanking_table);
1012   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_table", blanking_table,
1013                             (GtkDestroyNotify) gtk_widget_unref);
1014   gtk_widget_show (blanking_table);
1015   gtk_container_add (GTK_CONTAINER (blanking_frame), blanking_table);
1016   gtk_container_set_border_width (GTK_CONTAINER (blanking_table), 10);
1017   gtk_table_set_row_spacings (GTK_TABLE (blanking_table), 2);
1018   gtk_table_set_col_spacings (GTK_TABLE (blanking_table), 10);
1019
1020   lock_text = gtk_entry_new_with_max_length (8);
1021   gtk_widget_set_name (lock_text, "lock_text");
1022   gtk_widget_ref (lock_text);
1023   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_text", lock_text,
1024                             (GtkDestroyNotify) gtk_widget_unref);
1025   gtk_widget_show (lock_text);
1026   gtk_table_attach (GTK_TABLE (blanking_table), lock_text, 1, 2, 4, 5,
1027                     (GtkAttachOptions) (0),
1028                     (GtkAttachOptions) (0), 0, 0);
1029   gtk_tooltips_set_tip (tooltips, lock_text, "How long after the screen saver has activated until a password will be required (if  `Require Password' is also set.)", NULL);
1030
1031   cycle_text = gtk_entry_new_with_max_length (8);
1032   gtk_widget_set_name (cycle_text, "cycle_text");
1033   gtk_widget_ref (cycle_text);
1034   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_text", cycle_text,
1035                             (GtkDestroyNotify) gtk_widget_unref);
1036   gtk_widget_show (cycle_text);
1037   gtk_table_attach (GTK_TABLE (blanking_table), cycle_text, 1, 2, 1, 2,
1038                     (GtkAttachOptions) (0),
1039                     (GtkAttachOptions) (0), 0, 0);
1040   gtk_tooltips_set_tip (tooltips, cycle_text, "How long each demo will be run before moving on to another.", NULL);
1041
1042   timeout_text = gtk_entry_new_with_max_length (8);
1043   gtk_widget_set_name (timeout_text, "timeout_text");
1044   gtk_widget_ref (timeout_text);
1045   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_text", timeout_text,
1046                             (GtkDestroyNotify) gtk_widget_unref);
1047   gtk_widget_show (timeout_text);
1048   gtk_table_attach (GTK_TABLE (blanking_table), timeout_text, 1, 2, 0, 1,
1049                     (GtkAttachOptions) (0),
1050                     (GtkAttachOptions) (0), 0, 0);
1051   gtk_tooltips_set_tip (tooltips, timeout_text, "How long until the screen saver activates and begins running demos.", NULL);
1052
1053   timeout_label = gtk_label_new ("Blank After:");
1054   gtk_widget_set_name (timeout_label, "timeout_label");
1055   gtk_widget_ref (timeout_label);
1056   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label,
1057                             (GtkDestroyNotify) gtk_widget_unref);
1058   gtk_widget_show (timeout_label);
1059   gtk_table_attach (GTK_TABLE (blanking_table), timeout_label, 0, 1, 0, 1,
1060                     (GtkAttachOptions) (GTK_FILL),
1061                     (GtkAttachOptions) (0), 0, 0);
1062   gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT);
1063   gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5);
1064
1065   cycle_label = gtk_label_new ("Cycle After:");
1066   gtk_widget_set_name (cycle_label, "cycle_label");
1067   gtk_widget_ref (cycle_label);
1068   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label,
1069                             (GtkDestroyNotify) gtk_widget_unref);
1070   gtk_widget_show (cycle_label);
1071   gtk_table_attach (GTK_TABLE (blanking_table), cycle_label, 0, 1, 1, 2,
1072                     (GtkAttachOptions) (GTK_FILL),
1073                     (GtkAttachOptions) (0), 0, 0);
1074   gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT);
1075   gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5);
1076
1077   lock_label = gtk_label_new ("Lock After:");
1078   gtk_widget_set_name (lock_label, "lock_label");
1079   gtk_widget_ref (lock_label);
1080   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_label", lock_label,
1081                             (GtkDestroyNotify) gtk_widget_unref);
1082   gtk_widget_show (lock_label);
1083   gtk_table_attach (GTK_TABLE (blanking_table), lock_label, 0, 1, 4, 5,
1084                     (GtkAttachOptions) (GTK_FILL),
1085                     (GtkAttachOptions) (0), 0, 0);
1086   gtk_label_set_justify (GTK_LABEL (lock_label), GTK_JUSTIFY_RIGHT);
1087   gtk_misc_set_alignment (GTK_MISC (lock_label), 1, 0.5);
1088
1089   blanking_dummy = gtk_label_new ("");
1090   gtk_widget_set_name (blanking_dummy, "blanking_dummy");
1091   gtk_widget_ref (blanking_dummy);
1092   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_dummy", blanking_dummy,
1093                             (GtkDestroyNotify) gtk_widget_unref);
1094   gtk_widget_show (blanking_dummy);
1095   gtk_table_attach (GTK_TABLE (blanking_table), blanking_dummy, 2, 3, 4, 5,
1096                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1097                     (GtkAttachOptions) (0), 0, 0);
1098   gtk_label_set_justify (GTK_LABEL (blanking_dummy), GTK_JUSTIFY_LEFT);
1099
1100   lock_button_eventbox = gtk_event_box_new ();
1101   gtk_widget_set_name (lock_button_eventbox, "lock_button_eventbox");
1102   gtk_widget_ref (lock_button_eventbox);
1103   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button_eventbox", lock_button_eventbox,
1104                             (GtkDestroyNotify) gtk_widget_unref);
1105   gtk_widget_show (lock_button_eventbox);
1106   gtk_table_attach (GTK_TABLE (blanking_table), lock_button_eventbox, 0, 3, 3, 4,
1107                     (GtkAttachOptions) (GTK_FILL),
1108                     (GtkAttachOptions) (GTK_FILL), 0, 0);
1109   gtk_tooltips_set_tip (tooltips, lock_button_eventbox, "Whether a password should be required to unblank the screen.", NULL);
1110
1111   lock_button = gtk_check_button_new_with_label ("Require Password");
1112   gtk_widget_set_name (lock_button, "lock_button");
1113   gtk_widget_ref (lock_button);
1114   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button,
1115                             (GtkDestroyNotify) gtk_widget_unref);
1116   gtk_widget_show (lock_button);
1117   gtk_container_add (GTK_CONTAINER (lock_button_eventbox), lock_button);
1118
1119   blanking_hr = gtk_hseparator_new ();
1120   gtk_widget_set_name (blanking_hr, "blanking_hr");
1121   gtk_widget_ref (blanking_hr);
1122   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_hr", blanking_hr,
1123                             (GtkDestroyNotify) gtk_widget_unref);
1124   gtk_widget_show (blanking_hr);
1125   gtk_table_attach (GTK_TABLE (blanking_table), blanking_hr, 0, 3, 2, 3,
1126                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1127                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 2);
1128
1129   diag_frame = gtk_frame_new ("Diagnostics:");
1130   gtk_widget_set_name (diag_frame, "diag_frame");
1131   gtk_widget_ref (diag_frame);
1132   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_frame", diag_frame,
1133                             (GtkDestroyNotify) gtk_widget_unref);
1134   gtk_widget_show (diag_frame);
1135   gtk_table_attach (GTK_TABLE (options_table_1), diag_frame, 0, 1, 2, 3,
1136                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1137                     (GtkAttachOptions) (GTK_FILL), 0, 0);
1138   gtk_container_set_border_width (GTK_CONTAINER (diag_frame), 10);
1139
1140   diag_table = gtk_table_new (3, 1, FALSE);
1141   gtk_widget_set_name (diag_table, "diag_table");
1142   gtk_widget_ref (diag_table);
1143   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_table", diag_table,
1144                             (GtkDestroyNotify) gtk_widget_unref);
1145   gtk_widget_show (diag_table);
1146   gtk_container_add (GTK_CONTAINER (diag_frame), diag_table);
1147   gtk_container_set_border_width (GTK_CONTAINER (diag_table), 10);
1148   gtk_table_set_row_spacings (GTK_TABLE (diag_table), 2);
1149   gtk_table_set_col_spacings (GTK_TABLE (diag_table), 10);
1150
1151   splash_button_eventbox = gtk_event_box_new ();
1152   gtk_widget_set_name (splash_button_eventbox, "splash_button_eventbox");
1153   gtk_widget_ref (splash_button_eventbox);
1154   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button_eventbox", splash_button_eventbox,
1155                             (GtkDestroyNotify) gtk_widget_unref);
1156   gtk_widget_show (splash_button_eventbox);
1157   gtk_table_attach (GTK_TABLE (diag_table), splash_button_eventbox, 0, 1, 2, 3,
1158                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1159                     (GtkAttachOptions) (0), 0, 0);
1160   gtk_tooltips_set_tip (tooltips, splash_button_eventbox, "Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.", NULL);
1161
1162   splash_button = gtk_check_button_new_with_label ("Display Splash Screen at Startup");
1163   gtk_widget_set_name (splash_button, "splash_button");
1164   gtk_widget_ref (splash_button);
1165   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button", splash_button,
1166                             (GtkDestroyNotify) gtk_widget_unref);
1167   gtk_widget_show (splash_button);
1168   gtk_container_add (GTK_CONTAINER (splash_button_eventbox), splash_button);
1169   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (splash_button), TRUE);
1170
1171   capture_button_eventbox = gtk_event_box_new ();
1172   gtk_widget_set_name (capture_button_eventbox, "capture_button_eventbox");
1173   gtk_widget_ref (capture_button_eventbox);
1174   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button_eventbox", capture_button_eventbox,
1175                             (GtkDestroyNotify) gtk_widget_unref);
1176   gtk_widget_show (capture_button_eventbox);
1177   gtk_table_attach (GTK_TABLE (diag_table), capture_button_eventbox, 0, 1, 1, 2,
1178                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1179                     (GtkAttachOptions) (0), 0, 0);
1180   gtk_tooltips_set_tip (tooltips, capture_button_eventbox, "Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.", NULL);
1181
1182   capture_button = gtk_check_button_new_with_label ("Display Subprocess Errors");
1183   gtk_widget_set_name (capture_button, "capture_button");
1184   gtk_widget_ref (capture_button);
1185   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button", capture_button,
1186                             (GtkDestroyNotify) gtk_widget_unref);
1187   gtk_widget_show (capture_button);
1188   gtk_container_add (GTK_CONTAINER (capture_button_eventbox), capture_button);
1189
1190   verbose_button_eventbox = gtk_event_box_new ();
1191   gtk_widget_set_name (verbose_button_eventbox, "verbose_button_eventbox");
1192   gtk_widget_ref (verbose_button_eventbox);
1193   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button_eventbox", verbose_button_eventbox,
1194                             (GtkDestroyNotify) gtk_widget_unref);
1195   gtk_widget_show (verbose_button_eventbox);
1196   gtk_table_attach (GTK_TABLE (diag_table), verbose_button_eventbox, 0, 1, 0, 1,
1197                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1198                     (GtkAttachOptions) (0), 0, 0);
1199   gtk_tooltips_set_tip (tooltips, verbose_button_eventbox, "Whether the daemon should print lots of debugging information.", NULL);
1200
1201   verbose_button = gtk_check_button_new_with_label ("Verbose Diagnostics");
1202   gtk_widget_set_name (verbose_button, "verbose_button");
1203   gtk_widget_ref (verbose_button);
1204   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button", verbose_button,
1205                             (GtkDestroyNotify) gtk_widget_unref);
1206   gtk_widget_show (verbose_button);
1207   gtk_container_add (GTK_CONTAINER (verbose_button_eventbox), verbose_button);
1208
1209   options_tab = gtk_label_new ("Screensaver Options");
1210   gtk_widget_set_name (options_tab, "options_tab");
1211   gtk_widget_ref (options_tab);
1212   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_tab", options_tab,
1213                             (GtkDestroyNotify) gtk_widget_unref);
1214   gtk_widget_show (options_tab);
1215   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), options_tab);
1216
1217   gtk_signal_connect (GTK_OBJECT (activate_menu), "activate",
1218                       GTK_SIGNAL_FUNC (activate_menu_cb),
1219                       NULL);
1220   gtk_signal_connect (GTK_OBJECT (lock_menu), "activate",
1221                       GTK_SIGNAL_FUNC (lock_menu_cb),
1222                       NULL);
1223   gtk_signal_connect (GTK_OBJECT (kill_menu), "activate",
1224                       GTK_SIGNAL_FUNC (kill_menu_cb),
1225                       NULL);
1226   gtk_signal_connect (GTK_OBJECT (restart), "activate",
1227                       GTK_SIGNAL_FUNC (restart_menu_cb),
1228                       NULL);
1229   gtk_signal_connect (GTK_OBJECT (exit_menu), "activate",
1230                       GTK_SIGNAL_FUNC (exit_menu_cb),
1231                       NULL);
1232   gtk_signal_connect (GTK_OBJECT (cut_menu), "activate",
1233                       GTK_SIGNAL_FUNC (cut_menu_cb),
1234                       NULL);
1235   gtk_signal_connect (GTK_OBJECT (copy_menu), "activate",
1236                       GTK_SIGNAL_FUNC (copy_menu_cb),
1237                       NULL);
1238   gtk_signal_connect (GTK_OBJECT (paste_menu), "activate",
1239                       GTK_SIGNAL_FUNC (paste_menu_cb),
1240                       NULL);
1241   gtk_signal_connect (GTK_OBJECT (about_menu), "activate",
1242                       GTK_SIGNAL_FUNC (about_menu_cb),
1243                       NULL);
1244   gtk_signal_connect (GTK_OBJECT (doc_menu), "activate",
1245                       GTK_SIGNAL_FUNC (doc_menu_cb),
1246                       NULL);
1247   gtk_signal_connect (GTK_OBJECT (notebook), "switch_page",
1248                       GTK_SIGNAL_FUNC (pref_changed_cb),
1249                       NULL);
1250   gtk_signal_connect (GTK_OBJECT (next), "clicked",
1251                       GTK_SIGNAL_FUNC (run_next_cb),
1252                       NULL);
1253   gtk_signal_connect (GTK_OBJECT (prev), "clicked",
1254                       GTK_SIGNAL_FUNC (run_prev_cb),
1255                       NULL);
1256   gtk_signal_connect (GTK_OBJECT (enabled), "toggled",
1257                       GTK_SIGNAL_FUNC (enabled_cb),
1258                       NULL);
1259   gtk_signal_connect (GTK_OBJECT (demo), "clicked",
1260                       GTK_SIGNAL_FUNC (run_this_cb),
1261                       NULL);
1262   gtk_signal_connect (GTK_OBJECT (manual), "clicked",
1263                       GTK_SIGNAL_FUNC (manual_cb),
1264                       NULL);
1265   gtk_signal_connect (GTK_OBJECT (dpms_off_text), "activate",
1266                       GTK_SIGNAL_FUNC (pref_changed_cb),
1267                       NULL);
1268   gtk_signal_connect (GTK_OBJECT (dpms_off_text), "focus_out_event",
1269                       GTK_SIGNAL_FUNC (pref_changed_cb),
1270                       NULL);
1271   gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "activate",
1272                       GTK_SIGNAL_FUNC (pref_changed_cb),
1273                       NULL);
1274   gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "focus_out_event",
1275                       GTK_SIGNAL_FUNC (pref_changed_cb),
1276                       NULL);
1277   gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "activate",
1278                       GTK_SIGNAL_FUNC (pref_changed_cb),
1279                       NULL);
1280   gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "focus_out_event",
1281                       GTK_SIGNAL_FUNC (pref_changed_cb),
1282                       NULL);
1283   gtk_signal_connect (GTK_OBJECT (dpms_button), "toggled",
1284                       GTK_SIGNAL_FUNC (pref_changed_cb),
1285                       NULL);
1286   gtk_signal_connect (GTK_OBJECT (fade_text), "activate",
1287                       GTK_SIGNAL_FUNC (pref_changed_cb),
1288                       NULL);
1289   gtk_signal_connect (GTK_OBJECT (fade_text), "focus_out_event",
1290                       GTK_SIGNAL_FUNC (pref_changed_cb),
1291                       NULL);
1292   gtk_signal_connect (GTK_OBJECT (install_button), "toggled",
1293                       GTK_SIGNAL_FUNC (pref_changed_cb),
1294                       NULL);
1295   gtk_signal_connect (GTK_OBJECT (fade_button), "toggled",
1296                       GTK_SIGNAL_FUNC (pref_changed_cb),
1297                       NULL);
1298   gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled",
1299                       GTK_SIGNAL_FUNC (pref_changed_cb),
1300                       NULL);
1301   gtk_signal_connect (GTK_OBJECT (grab_image_button), "toggled",
1302                       GTK_SIGNAL_FUNC (pref_changed_cb),
1303                       NULL);
1304   gtk_signal_connect (GTK_OBJECT (image_browse_button), "clicked",
1305                       GTK_SIGNAL_FUNC (browse_image_dir_cb),
1306                       NULL);
1307   gtk_signal_connect (GTK_OBJECT (grab_video_button), "toggled",
1308                       GTK_SIGNAL_FUNC (pref_changed_cb),
1309                       NULL);
1310   gtk_signal_connect (GTK_OBJECT (grab_desk_button), "toggled",
1311                       GTK_SIGNAL_FUNC (pref_changed_cb),
1312                       NULL);
1313   gtk_signal_connect (GTK_OBJECT (image_text), "activate",
1314                       GTK_SIGNAL_FUNC (pref_changed_cb),
1315                       NULL);
1316   gtk_signal_connect (GTK_OBJECT (image_text), "focus_out_event",
1317                       GTK_SIGNAL_FUNC (pref_changed_cb),
1318                       NULL);
1319   gtk_signal_connect (GTK_OBJECT (lock_text), "activate",
1320                       GTK_SIGNAL_FUNC (pref_changed_cb),
1321                       NULL);
1322   gtk_signal_connect (GTK_OBJECT (lock_text), "focus_out_event",
1323                       GTK_SIGNAL_FUNC (pref_changed_cb),
1324                       NULL);
1325   gtk_signal_connect (GTK_OBJECT (cycle_text), "activate",
1326                       GTK_SIGNAL_FUNC (pref_changed_cb),
1327                       NULL);
1328   gtk_signal_connect (GTK_OBJECT (cycle_text), "focus_out_event",
1329                       GTK_SIGNAL_FUNC (pref_changed_cb),
1330                       NULL);
1331   gtk_signal_connect (GTK_OBJECT (timeout_text), "activate",
1332                       GTK_SIGNAL_FUNC (pref_changed_cb),
1333                       NULL);
1334   gtk_signal_connect (GTK_OBJECT (timeout_text), "focus_out_event",
1335                       GTK_SIGNAL_FUNC (pref_changed_cb),
1336                       NULL);
1337   gtk_signal_connect (GTK_OBJECT (lock_button), "toggled",
1338                       GTK_SIGNAL_FUNC (pref_changed_cb),
1339                       NULL);
1340   gtk_signal_connect (GTK_OBJECT (splash_button), "toggled",
1341                       GTK_SIGNAL_FUNC (pref_changed_cb),
1342                       NULL);
1343   gtk_signal_connect (GTK_OBJECT (capture_button), "toggled",
1344                       GTK_SIGNAL_FUNC (pref_changed_cb),
1345                       NULL);
1346   gtk_signal_connect (GTK_OBJECT (verbose_button), "toggled",
1347                       GTK_SIGNAL_FUNC (pref_changed_cb),
1348                       NULL);
1349
1350   gtk_widget_grab_default (next);
1351   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "tooltips", tooltips);
1352
1353   gtk_window_add_accel_group (GTK_WINDOW (xscreensaver_demo), accel_group);
1354
1355   return xscreensaver_demo;
1356 }
1357