e2c9be771cd5166c0e72da060cf75de2374d1343
[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 #include "demo-Gtk-support.h"
20
21 GtkWidget*
22 create_xscreensaver_demo (void)
23 {
24   GtkWidget *xscreensaver_demo;
25   GtkWidget *outer_vbox;
26   GtkWidget *menubar;
27   guint tmp_key;
28   GtkWidget *file;
29   GtkWidget *file_menu;
30   GtkAccelGroup *file_menu_accels;
31   GtkWidget *activate_menu;
32   GtkWidget *lock_menu;
33   GtkWidget *kill_menu;
34   GtkWidget *restart;
35   GtkWidget *separator1;
36   GtkWidget *exit_menu;
37   GtkWidget *help;
38   GtkWidget *help_menu;
39   GtkAccelGroup *help_menu_accels;
40   GtkWidget *about_menu;
41   GtkWidget *doc_menu;
42   GtkWidget *notebook;
43   GtkWidget *demos_table;
44   GtkWidget *blanking_table;
45   GtkWidget *cycle_label;
46   GtkWidget *lock_button_eventbox;
47   GtkWidget *lock_button;
48   GtkWidget *timeout_label;
49   GtkObject *timeout_spinbutton_adj;
50   GtkWidget *timeout_spinbutton;
51   GtkWidget *timeout_mlabel;
52   GtkWidget *cycle_mlabel;
53   GtkWidget *lock_mlabel;
54   GtkObject *lock_spinbutton_adj;
55   GtkWidget *lock_spinbutton;
56   GtkObject *cycle_spinbutton_adj;
57   GtkWidget *cycle_spinbutton;
58   GtkWidget *demo_manual_hbbox;
59   GtkWidget *demo;
60   GtkWidget *settings;
61   GtkWidget *list_vbox;
62   GtkWidget *mode_hbox;
63   GtkWidget *mode_label;
64   GtkWidget *mode_menu;
65   GtkWidget *mode_menu_menu;
66   GtkWidget *glade_menuitem;
67   GtkWidget *col_head_hbox;
68   GtkWidget *use_col_frame;
69   GtkWidget *use_label;
70   GtkWidget *saver_col_frame;
71   GtkWidget *saver_label;
72   GtkWidget *scroller;
73   GtkWidget *viewport;
74   GtkWidget *list;
75   GtkWidget *centering_hbox;
76   GtkWidget *next_prev_hbox;
77   GtkWidget *next;
78   GtkWidget *prev;
79   GtkWidget *preview_frame;
80   GtkWidget *preview_aspectframe;
81   GtkWidget *preview;
82   GtkWidget *demo_tab;
83   GtkWidget *options_table;
84   GtkWidget *diag_frame;
85   GtkWidget *diag_hbox;
86   GtkWidget *diag_logo;
87   GtkWidget *diag_vbox;
88   GtkWidget *verbose_button_eventbox;
89   GtkWidget *verbose_button;
90   GtkWidget *capture_button_eventbox;
91   GtkWidget *capture_button;
92   GtkWidget *splash_button_eventbox;
93   GtkWidget *splash_button;
94   GtkWidget *cmap_frame;
95   GtkWidget *cmap_hbox;
96   GtkWidget *cmap_logo;
97   GtkWidget *cmap_vbox;
98   GtkWidget *install_button_eventbox;
99   GtkWidget *install_button;
100   GtkWidget *cmap_hr;
101   GtkWidget *fade_button_eventbox;
102   GtkWidget *fade_button;
103   GtkWidget *unfade_button_eventbox;
104   GtkWidget *unfade_button;
105   GtkWidget *fade_hbox;
106   GtkWidget *fade_dummy;
107   GtkWidget *fade_label;
108   GtkObject *fade_spinbutton_adj;
109   GtkWidget *fade_spinbutton;
110   GtkWidget *fade_sec_label;
111   GtkWidget *dpms_frame;
112   GtkWidget *dpms_hbox;
113   GtkWidget *dpms_logo;
114   GtkWidget *dpms_vbox;
115   GtkWidget *dpms_button_eventbox;
116   GtkWidget *dpms_button;
117   GtkWidget *dpms_table;
118   GtkObject *dpms_standby_spinbutton_adj;
119   GtkWidget *dpms_standby_spinbutton;
120   GtkWidget *dpms_standby_mlabel;
121   GtkWidget *dpms_suspend_mlabel;
122   GtkWidget *dpms_off_mlabel;
123   GtkWidget *dpms_off_label;
124   GtkWidget *dpms_suspend_label;
125   GtkWidget *dpms_standby_label;
126   GtkObject *dpms_suspend_spinbutton_adj;
127   GtkWidget *dpms_suspend_spinbutton;
128   GtkObject *dpms_off_spinbutton_adj;
129   GtkWidget *dpms_off_spinbutton;
130   GtkWidget *grab_frame;
131   GtkWidget *grab_hbox;
132   GtkWidget *img_logo;
133   GtkWidget *grab_vbox;
134   GtkWidget *grab_desk_eventbox;
135   GtkWidget *grab_desk_button;
136   GtkWidget *grab_video_eventbox;
137   GtkWidget *grab_video_button;
138   GtkWidget *grab_image_eventbox;
139   GtkWidget *grab_image_button;
140   GtkWidget *image_hbox;
141   GtkWidget *grab_dummy;
142   GtkWidget *image_text;
143   GtkWidget *image_browse_button;
144   GtkWidget *options_tab;
145   GtkAccelGroup *accel_group;
146   GtkTooltips *tooltips;
147
148   tooltips = gtk_tooltips_new ();
149
150   accel_group = gtk_accel_group_new ();
151
152   xscreensaver_demo = gtk_window_new (GTK_WINDOW_TOPLEVEL);
153   gtk_widget_set_name (xscreensaver_demo, "xscreensaver_demo");
154   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "xscreensaver_demo", xscreensaver_demo);
155   gtk_window_set_title (GTK_WINDOW (xscreensaver_demo), _("XScreenSaver"));
156   gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_demo), "xscreensaver", "XScreenSaver");
157
158   outer_vbox = gtk_vbox_new (FALSE, 5);
159   gtk_widget_set_name (outer_vbox, "outer_vbox");
160   gtk_widget_ref (outer_vbox);
161   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "outer_vbox", outer_vbox,
162                             (GtkDestroyNotify) gtk_widget_unref);
163   gtk_widget_show (outer_vbox);
164   gtk_container_add (GTK_CONTAINER (xscreensaver_demo), outer_vbox);
165
166   menubar = gtk_menu_bar_new ();
167   gtk_widget_set_name (menubar, "menubar");
168   gtk_widget_ref (menubar);
169   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "menubar", menubar,
170                             (GtkDestroyNotify) gtk_widget_unref);
171   gtk_widget_show (menubar);
172   gtk_box_pack_start (GTK_BOX (outer_vbox), menubar, FALSE, FALSE, 0);
173
174   file = gtk_menu_item_new_with_label ("");
175   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (file)->child),
176                                    _("_File"));
177   gtk_widget_add_accelerator (file, "activate_item", accel_group,
178                               tmp_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
179   gtk_widget_set_name (file, "file");
180   gtk_widget_ref (file);
181   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file", file,
182                             (GtkDestroyNotify) gtk_widget_unref);
183   gtk_widget_show (file);
184   gtk_container_add (GTK_CONTAINER (menubar), file);
185
186   file_menu = gtk_menu_new ();
187   gtk_widget_set_name (file_menu, "file_menu");
188   gtk_widget_ref (file_menu);
189   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file_menu", file_menu,
190                             (GtkDestroyNotify) gtk_widget_unref);
191   gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), file_menu);
192   file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file_menu));
193
194   activate_menu = gtk_menu_item_new_with_label ("");
195   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (activate_menu)->child),
196                                    _("_Blank Screen Now"));
197   gtk_widget_add_accelerator (activate_menu, "activate_item", file_menu_accels,
198                               tmp_key, 0, 0);
199   gtk_widget_set_name (activate_menu, "activate_menu");
200   gtk_widget_ref (activate_menu);
201   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "activate_menu", activate_menu,
202                             (GtkDestroyNotify) gtk_widget_unref);
203   gtk_widget_show (activate_menu);
204   gtk_container_add (GTK_CONTAINER (file_menu), activate_menu);
205   gtk_tooltips_set_tip (tooltips, activate_menu, _("Activate the XScreenSaver daemon now (locking the screen if so configured.)"), NULL);
206
207   lock_menu = gtk_menu_item_new_with_label ("");
208   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (lock_menu)->child),
209                                    _("_Lock Screen Now"));
210   gtk_widget_add_accelerator (lock_menu, "activate_item", file_menu_accels,
211                               tmp_key, 0, 0);
212   gtk_widget_set_name (lock_menu, "lock_menu");
213   gtk_widget_ref (lock_menu);
214   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_menu", lock_menu,
215                             (GtkDestroyNotify) gtk_widget_unref);
216   gtk_widget_show (lock_menu);
217   gtk_container_add (GTK_CONTAINER (file_menu), lock_menu);
218   gtk_tooltips_set_tip (tooltips, lock_menu, _("Lock the screen now (even if \"Lock Screen\" is unchecked.)"), NULL);
219
220   kill_menu = gtk_menu_item_new_with_label ("");
221   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (kill_menu)->child),
222                                    _("_Kill Daemon"));
223   gtk_widget_add_accelerator (kill_menu, "activate_item", file_menu_accels,
224                               tmp_key, 0, 0);
225   gtk_widget_set_name (kill_menu, "kill_menu");
226   gtk_widget_ref (kill_menu);
227   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "kill_menu", kill_menu,
228                             (GtkDestroyNotify) gtk_widget_unref);
229   gtk_widget_show (kill_menu);
230   gtk_container_add (GTK_CONTAINER (file_menu), kill_menu);
231   gtk_tooltips_set_tip (tooltips, kill_menu, _("Tell the running XScreenSaver daemon to exit."), NULL);
232
233   restart = gtk_menu_item_new_with_label ("");
234   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (restart)->child),
235                                    _("_Restart Daemon"));
236   gtk_widget_add_accelerator (restart, "activate_item", file_menu_accels,
237                               tmp_key, 0, 0);
238   gtk_widget_set_name (restart, "restart");
239   gtk_widget_ref (restart);
240   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "restart", restart,
241                             (GtkDestroyNotify) gtk_widget_unref);
242   gtk_widget_show (restart);
243   gtk_container_add (GTK_CONTAINER (file_menu), restart);
244   gtk_tooltips_set_tip (tooltips, restart, _("Kill and re-launch the XScreenSaver daemon."), NULL);
245
246   separator1 = gtk_menu_item_new ();
247   gtk_widget_set_name (separator1, "separator1");
248   gtk_widget_ref (separator1);
249   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "separator1", separator1,
250                             (GtkDestroyNotify) gtk_widget_unref);
251   gtk_widget_show (separator1);
252   gtk_container_add (GTK_CONTAINER (file_menu), separator1);
253   gtk_widget_set_sensitive (separator1, FALSE);
254
255   exit_menu = gtk_menu_item_new_with_label ("");
256   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (exit_menu)->child),
257                                    _("_Exit"));
258   gtk_widget_add_accelerator (exit_menu, "activate_item", file_menu_accels,
259                               tmp_key, 0, 0);
260   gtk_widget_set_name (exit_menu, "exit_menu");
261   gtk_widget_ref (exit_menu);
262   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "exit_menu", exit_menu,
263                             (GtkDestroyNotify) gtk_widget_unref);
264   gtk_widget_show (exit_menu);
265   gtk_container_add (GTK_CONTAINER (file_menu), exit_menu);
266   gtk_tooltips_set_tip (tooltips, exit_menu, _("Exit the xscreensaver-demo program (but leave the XScreenSaver daemon running in the background.)"), NULL);
267
268   help = gtk_menu_item_new_with_label ("");
269   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (help)->child),
270                                    _("_Help"));
271   gtk_widget_add_accelerator (help, "activate_item", accel_group,
272                               tmp_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
273   gtk_widget_set_name (help, "help");
274   gtk_widget_ref (help);
275   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help", help,
276                             (GtkDestroyNotify) gtk_widget_unref);
277   gtk_widget_show (help);
278   gtk_container_add (GTK_CONTAINER (menubar), help);
279
280   help_menu = gtk_menu_new ();
281   gtk_widget_set_name (help_menu, "help_menu");
282   gtk_widget_ref (help_menu);
283   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help_menu", help_menu,
284                             (GtkDestroyNotify) gtk_widget_unref);
285   gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu);
286   help_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (help_menu));
287
288   about_menu = gtk_menu_item_new_with_label ("");
289   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (about_menu)->child),
290                                    _("_About..."));
291   gtk_widget_add_accelerator (about_menu, "activate_item", help_menu_accels,
292                               tmp_key, 0, 0);
293   gtk_widget_set_name (about_menu, "about_menu");
294   gtk_widget_ref (about_menu);
295   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "about_menu", about_menu,
296                             (GtkDestroyNotify) gtk_widget_unref);
297   gtk_widget_show (about_menu);
298   gtk_container_add (GTK_CONTAINER (help_menu), about_menu);
299   gtk_tooltips_set_tip (tooltips, about_menu, _("Display version information."), NULL);
300
301   doc_menu = gtk_menu_item_new_with_label ("");
302   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (doc_menu)->child),
303                                    _("_Documentation..."));
304   gtk_widget_add_accelerator (doc_menu, "activate_item", help_menu_accels,
305                               tmp_key, 0, 0);
306   gtk_widget_set_name (doc_menu, "doc_menu");
307   gtk_widget_ref (doc_menu);
308   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "doc_menu", doc_menu,
309                             (GtkDestroyNotify) gtk_widget_unref);
310   gtk_widget_show (doc_menu);
311   gtk_container_add (GTK_CONTAINER (help_menu), doc_menu);
312   gtk_tooltips_set_tip (tooltips, doc_menu, _("Go to the documentation on the XScreenSaver web page."), NULL);
313
314   notebook = gtk_notebook_new ();
315   gtk_widget_set_name (notebook, "notebook");
316   gtk_widget_ref (notebook);
317   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "notebook", notebook,
318                             (GtkDestroyNotify) gtk_widget_unref);
319   gtk_widget_show (notebook);
320   gtk_box_pack_start (GTK_BOX (outer_vbox), notebook, TRUE, TRUE, 0);
321
322   demos_table = gtk_table_new (2, 2, FALSE);
323   gtk_widget_set_name (demos_table, "demos_table");
324   gtk_widget_ref (demos_table);
325   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demos_table", demos_table,
326                             (GtkDestroyNotify) gtk_widget_unref);
327   gtk_widget_show (demos_table);
328   gtk_container_add (GTK_CONTAINER (notebook), demos_table);
329   gtk_container_set_border_width (GTK_CONTAINER (demos_table), 10);
330
331   blanking_table = gtk_table_new (3, 4, FALSE);
332   gtk_widget_set_name (blanking_table, "blanking_table");
333   gtk_widget_ref (blanking_table);
334   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_table", blanking_table,
335                             (GtkDestroyNotify) gtk_widget_unref);
336   gtk_widget_show (blanking_table);
337   gtk_table_attach (GTK_TABLE (demos_table), blanking_table, 0, 1, 1, 2,
338                     (GtkAttachOptions) (GTK_FILL),
339                     (GtkAttachOptions) (GTK_FILL), 0, 0);
340   gtk_table_set_row_spacings (GTK_TABLE (blanking_table), 2);
341
342   cycle_label = gtk_label_new (_("Cycle After"));
343   gtk_widget_set_name (cycle_label, "cycle_label");
344   gtk_widget_ref (cycle_label);
345   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label,
346                             (GtkDestroyNotify) gtk_widget_unref);
347   gtk_widget_show (cycle_label);
348   gtk_table_attach (GTK_TABLE (blanking_table), cycle_label, 1, 2, 1, 2,
349                     (GtkAttachOptions) (GTK_FILL),
350                     (GtkAttachOptions) (0), 0, 0);
351   gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT);
352   gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5);
353   gtk_misc_set_padding (GTK_MISC (cycle_label), 8, 0);
354
355   lock_button_eventbox = gtk_event_box_new ();
356   gtk_widget_set_name (lock_button_eventbox, "lock_button_eventbox");
357   gtk_widget_ref (lock_button_eventbox);
358   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button_eventbox", lock_button_eventbox,
359                             (GtkDestroyNotify) gtk_widget_unref);
360   gtk_widget_show (lock_button_eventbox);
361   gtk_table_attach (GTK_TABLE (blanking_table), lock_button_eventbox, 0, 2, 2, 3,
362                     (GtkAttachOptions) (GTK_FILL),
363                     (GtkAttachOptions) (0), 0, 0);
364   gtk_tooltips_set_tip (tooltips, lock_button_eventbox, _("Whether a password should be required to un-blank the screen."), NULL);
365
366   lock_button = gtk_check_button_new_with_label (_("Lock Screen After"));
367   gtk_widget_set_name (lock_button, "lock_button");
368   gtk_widget_ref (lock_button);
369   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button,
370                             (GtkDestroyNotify) gtk_widget_unref);
371   gtk_widget_show (lock_button);
372   gtk_container_add (GTK_CONTAINER (lock_button_eventbox), lock_button);
373
374   timeout_label = gtk_label_new (_("Blank After"));
375   gtk_widget_set_name (timeout_label, "timeout_label");
376   gtk_widget_ref (timeout_label);
377   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label,
378                             (GtkDestroyNotify) gtk_widget_unref);
379   gtk_widget_show (timeout_label);
380   gtk_table_attach (GTK_TABLE (blanking_table), timeout_label, 1, 2, 0, 1,
381                     (GtkAttachOptions) (GTK_FILL),
382                     (GtkAttachOptions) (0), 0, 0);
383   gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT);
384   gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5);
385   gtk_misc_set_padding (GTK_MISC (timeout_label), 8, 0);
386
387   timeout_spinbutton_adj = gtk_adjustment_new (0, 1, 720, 1, 30, 30);
388   timeout_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (timeout_spinbutton_adj), 15, 0);
389   gtk_widget_set_name (timeout_spinbutton, "timeout_spinbutton");
390   gtk_widget_ref (timeout_spinbutton);
391   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_spinbutton", timeout_spinbutton,
392                             (GtkDestroyNotify) gtk_widget_unref);
393   gtk_widget_show (timeout_spinbutton);
394   gtk_table_attach (GTK_TABLE (blanking_table), timeout_spinbutton, 2, 3, 0, 1,
395                     (GtkAttachOptions) (GTK_FILL),
396                     (GtkAttachOptions) (0), 0, 0);
397   gtk_tooltips_set_tip (tooltips, timeout_spinbutton, _("How long before the monitor goes completely black."), NULL);
398   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (timeout_spinbutton), TRUE);
399   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (timeout_spinbutton), TRUE);
400
401   timeout_mlabel = gtk_label_new (_("minutes"));
402   gtk_widget_set_name (timeout_mlabel, "timeout_mlabel");
403   gtk_widget_ref (timeout_mlabel);
404   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_mlabel", timeout_mlabel,
405                             (GtkDestroyNotify) gtk_widget_unref);
406   gtk_widget_show (timeout_mlabel);
407   gtk_table_attach (GTK_TABLE (blanking_table), timeout_mlabel, 3, 4, 0, 1,
408                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
409                     (GtkAttachOptions) (0), 0, 0);
410   gtk_label_set_justify (GTK_LABEL (timeout_mlabel), GTK_JUSTIFY_LEFT);
411   gtk_misc_set_alignment (GTK_MISC (timeout_mlabel), 0, 0.5);
412
413   cycle_mlabel = gtk_label_new (_("minutes"));
414   gtk_widget_set_name (cycle_mlabel, "cycle_mlabel");
415   gtk_widget_ref (cycle_mlabel);
416   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_mlabel", cycle_mlabel,
417                             (GtkDestroyNotify) gtk_widget_unref);
418   gtk_widget_show (cycle_mlabel);
419   gtk_table_attach (GTK_TABLE (blanking_table), cycle_mlabel, 3, 4, 1, 2,
420                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
421                     (GtkAttachOptions) (0), 0, 0);
422   gtk_label_set_justify (GTK_LABEL (cycle_mlabel), GTK_JUSTIFY_LEFT);
423   gtk_misc_set_alignment (GTK_MISC (cycle_mlabel), 0, 0.5);
424
425   lock_mlabel = gtk_label_new (_("minutes"));
426   gtk_widget_set_name (lock_mlabel, "lock_mlabel");
427   gtk_widget_ref (lock_mlabel);
428   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_mlabel", lock_mlabel,
429                             (GtkDestroyNotify) gtk_widget_unref);
430   gtk_widget_show (lock_mlabel);
431   gtk_table_attach (GTK_TABLE (blanking_table), lock_mlabel, 3, 4, 2, 3,
432                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
433                     (GtkAttachOptions) (0), 0, 0);
434   gtk_label_set_justify (GTK_LABEL (lock_mlabel), GTK_JUSTIFY_LEFT);
435   gtk_misc_set_alignment (GTK_MISC (lock_mlabel), 0, 0.5);
436
437   lock_spinbutton_adj = gtk_adjustment_new (0, 0, 720, 1, 30, 30);
438   lock_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (lock_spinbutton_adj), 15, 0);
439   gtk_widget_set_name (lock_spinbutton, "lock_spinbutton");
440   gtk_widget_ref (lock_spinbutton);
441   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_spinbutton", lock_spinbutton,
442                             (GtkDestroyNotify) gtk_widget_unref);
443   gtk_widget_show (lock_spinbutton);
444   gtk_table_attach (GTK_TABLE (blanking_table), lock_spinbutton, 2, 3, 2, 3,
445                     (GtkAttachOptions) (GTK_FILL),
446                     (GtkAttachOptions) (0), 0, 10);
447   gtk_tooltips_set_tip (tooltips, lock_spinbutton, _("How long before the monitor goes completely black."), NULL);
448   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (lock_spinbutton), TRUE);
449   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (lock_spinbutton), TRUE);
450
451   cycle_spinbutton_adj = gtk_adjustment_new (0, 1, 720, 1, 30, 30);
452   cycle_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (cycle_spinbutton_adj), 15, 0);
453   gtk_widget_set_name (cycle_spinbutton, "cycle_spinbutton");
454   gtk_widget_ref (cycle_spinbutton);
455   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_spinbutton", cycle_spinbutton,
456                             (GtkDestroyNotify) gtk_widget_unref);
457   gtk_widget_show (cycle_spinbutton);
458   gtk_table_attach (GTK_TABLE (blanking_table), cycle_spinbutton, 2, 3, 1, 2,
459                     (GtkAttachOptions) (GTK_FILL),
460                     (GtkAttachOptions) (0), 0, 0);
461   gtk_tooltips_set_tip (tooltips, cycle_spinbutton, _("How long before the monitor goes completely black."), NULL);
462   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (cycle_spinbutton), TRUE);
463   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (cycle_spinbutton), TRUE);
464
465   demo_manual_hbbox = gtk_hbutton_box_new ();
466   gtk_widget_set_name (demo_manual_hbbox, "demo_manual_hbbox");
467   gtk_widget_ref (demo_manual_hbbox);
468   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_manual_hbbox", demo_manual_hbbox,
469                             (GtkDestroyNotify) gtk_widget_unref);
470   gtk_widget_show (demo_manual_hbbox);
471   gtk_table_attach (GTK_TABLE (demos_table), demo_manual_hbbox, 1, 2, 1, 2,
472                     (GtkAttachOptions) (GTK_FILL),
473                     (GtkAttachOptions) (GTK_FILL), 0, 0);
474   gtk_button_box_set_layout (GTK_BUTTON_BOX (demo_manual_hbbox), GTK_BUTTONBOX_SPREAD);
475
476   demo = gtk_button_new_with_label (_("Preview"));
477   gtk_widget_set_name (demo, "demo");
478   gtk_widget_ref (demo);
479   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo", demo,
480                             (GtkDestroyNotify) gtk_widget_unref);
481   gtk_widget_show (demo);
482   gtk_container_add (GTK_CONTAINER (demo_manual_hbbox), demo);
483   GTK_WIDGET_SET_FLAGS (demo, GTK_CAN_DEFAULT);
484   gtk_tooltips_set_tip (tooltips, demo, _("Demo the selected screen saver in full-screen mode (click the mouse to return.)"), NULL);
485
486   settings = gtk_button_new_with_label (_("Settings..."));
487   gtk_widget_set_name (settings, "settings");
488   gtk_widget_ref (settings);
489   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "settings", settings,
490                             (GtkDestroyNotify) gtk_widget_unref);
491   gtk_widget_show (settings);
492   gtk_container_add (GTK_CONTAINER (demo_manual_hbbox), settings);
493   GTK_WIDGET_SET_FLAGS (settings, GTK_CAN_DEFAULT);
494   gtk_tooltips_set_tip (tooltips, settings, _("Customization and explanation of the selected screen saver."), NULL);
495
496   list_vbox = gtk_vbox_new (FALSE, 0);
497   gtk_widget_set_name (list_vbox, "list_vbox");
498   gtk_widget_ref (list_vbox);
499   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list_vbox", list_vbox,
500                             (GtkDestroyNotify) gtk_widget_unref);
501   gtk_widget_show (list_vbox);
502   gtk_table_attach (GTK_TABLE (demos_table), list_vbox, 0, 1, 0, 1,
503                     (GtkAttachOptions) (GTK_FILL),
504                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
505   gtk_container_set_border_width (GTK_CONTAINER (list_vbox), 10);
506
507   mode_hbox = gtk_hbox_new (FALSE, 0);
508   gtk_widget_set_name (mode_hbox, "mode_hbox");
509   gtk_widget_ref (mode_hbox);
510   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "mode_hbox", mode_hbox,
511                             (GtkDestroyNotify) gtk_widget_unref);
512   gtk_widget_show (mode_hbox);
513   gtk_box_pack_start (GTK_BOX (list_vbox), mode_hbox, FALSE, TRUE, 10);
514
515   mode_label = gtk_label_new (_("Mode:"));
516   gtk_widget_set_name (mode_label, "mode_label");
517   gtk_widget_ref (mode_label);
518   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "mode_label", mode_label,
519                             (GtkDestroyNotify) gtk_widget_unref);
520   gtk_widget_show (mode_label);
521   gtk_box_pack_start (GTK_BOX (mode_hbox), mode_label, FALSE, FALSE, 0);
522   gtk_label_set_justify (GTK_LABEL (mode_label), GTK_JUSTIFY_LEFT);
523   gtk_misc_set_alignment (GTK_MISC (mode_label), 0, 0.5);
524
525   mode_menu = gtk_option_menu_new ();
526   gtk_widget_set_name (mode_menu, "mode_menu");
527   gtk_widget_ref (mode_menu);
528   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "mode_menu", mode_menu,
529                             (GtkDestroyNotify) gtk_widget_unref);
530   gtk_widget_show (mode_menu);
531   gtk_box_pack_start (GTK_BOX (mode_hbox), mode_menu, FALSE, FALSE, 4);
532   mode_menu_menu = gtk_menu_new ();
533   glade_menuitem = gtk_menu_item_new_with_label (_("Disable Screen Saver"));
534   gtk_widget_show (glade_menuitem);
535   gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
536   glade_menuitem = gtk_menu_item_new_with_label (_("Blank Screen Only"));
537   gtk_widget_show (glade_menuitem);
538   gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
539   glade_menuitem = gtk_menu_item_new_with_label (_("Only One Screen Saver"));
540   gtk_widget_show (glade_menuitem);
541   gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
542   glade_menuitem = gtk_menu_item_new_with_label (_("Random Screen Saver"));
543   gtk_widget_show (glade_menuitem);
544   gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
545   gtk_option_menu_set_menu (GTK_OPTION_MENU (mode_menu), mode_menu_menu);
546   gtk_option_menu_set_history (GTK_OPTION_MENU (mode_menu), 3);
547
548   col_head_hbox = gtk_hbox_new (FALSE, 0);
549   gtk_widget_set_name (col_head_hbox, "col_head_hbox");
550   gtk_widget_ref (col_head_hbox);
551   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "col_head_hbox", col_head_hbox,
552                             (GtkDestroyNotify) gtk_widget_unref);
553   gtk_widget_show (col_head_hbox);
554   gtk_box_pack_start (GTK_BOX (list_vbox), col_head_hbox, FALSE, TRUE, 0);
555
556   use_col_frame = gtk_frame_new (NULL);
557   gtk_widget_set_name (use_col_frame, "use_col_frame");
558   gtk_widget_ref (use_col_frame);
559   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "use_col_frame", use_col_frame,
560                             (GtkDestroyNotify) gtk_widget_unref);
561   gtk_widget_show (use_col_frame);
562   gtk_box_pack_start (GTK_BOX (col_head_hbox), use_col_frame, FALSE, FALSE, 0);
563   gtk_frame_set_shadow_type (GTK_FRAME (use_col_frame), GTK_SHADOW_OUT);
564
565   use_label = gtk_label_new (_("Use"));
566   gtk_widget_set_name (use_label, "use_label");
567   gtk_widget_ref (use_label);
568   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "use_label", use_label,
569                             (GtkDestroyNotify) gtk_widget_unref);
570   gtk_widget_show (use_label);
571   gtk_container_add (GTK_CONTAINER (use_col_frame), use_label);
572   gtk_label_set_justify (GTK_LABEL (use_label), GTK_JUSTIFY_LEFT);
573   gtk_misc_set_alignment (GTK_MISC (use_label), 0, 0.5);
574   gtk_misc_set_padding (GTK_MISC (use_label), 3, 0);
575
576   saver_col_frame = gtk_frame_new (NULL);
577   gtk_widget_set_name (saver_col_frame, "saver_col_frame");
578   gtk_widget_ref (saver_col_frame);
579   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "saver_col_frame", saver_col_frame,
580                             (GtkDestroyNotify) gtk_widget_unref);
581   gtk_widget_show (saver_col_frame);
582   gtk_box_pack_start (GTK_BOX (col_head_hbox), saver_col_frame, TRUE, TRUE, 0);
583   gtk_frame_set_shadow_type (GTK_FRAME (saver_col_frame), GTK_SHADOW_OUT);
584
585   saver_label = gtk_label_new (_("Screen Saver"));
586   gtk_widget_set_name (saver_label, "saver_label");
587   gtk_widget_ref (saver_label);
588   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "saver_label", saver_label,
589                             (GtkDestroyNotify) gtk_widget_unref);
590   gtk_widget_show (saver_label);
591   gtk_container_add (GTK_CONTAINER (saver_col_frame), saver_label);
592   gtk_label_set_justify (GTK_LABEL (saver_label), GTK_JUSTIFY_LEFT);
593   gtk_misc_set_alignment (GTK_MISC (saver_label), 0, 0.5);
594   gtk_misc_set_padding (GTK_MISC (saver_label), 6, 0);
595
596   scroller = gtk_scrolled_window_new (NULL, NULL);
597   gtk_widget_set_name (scroller, "scroller");
598   gtk_widget_ref (scroller);
599   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "scroller", scroller,
600                             (GtkDestroyNotify) gtk_widget_unref);
601   gtk_widget_show (scroller);
602   gtk_box_pack_start (GTK_BOX (list_vbox), scroller, TRUE, TRUE, 0);
603   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
604
605   viewport = gtk_viewport_new (NULL, NULL);
606   gtk_widget_set_name (viewport, "viewport");
607   gtk_widget_ref (viewport);
608   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "viewport", viewport,
609                             (GtkDestroyNotify) gtk_widget_unref);
610   gtk_widget_show (viewport);
611   gtk_container_add (GTK_CONTAINER (scroller), viewport);
612   gtk_container_set_border_width (GTK_CONTAINER (viewport), 1);
613
614   list = gtk_list_new ();
615   gtk_widget_set_name (list, "list");
616   gtk_widget_ref (list);
617   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list", list,
618                             (GtkDestroyNotify) gtk_widget_unref);
619   gtk_widget_show (list);
620   gtk_container_add (GTK_CONTAINER (viewport), list);
621
622   centering_hbox = gtk_hbox_new (TRUE, 0);
623   gtk_widget_set_name (centering_hbox, "centering_hbox");
624   gtk_widget_ref (centering_hbox);
625   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "centering_hbox", centering_hbox,
626                             (GtkDestroyNotify) gtk_widget_unref);
627   gtk_widget_show (centering_hbox);
628   gtk_box_pack_end (GTK_BOX (list_vbox), centering_hbox, FALSE, TRUE, 0);
629
630   next_prev_hbox = gtk_hbox_new (FALSE, 0);
631   gtk_widget_set_name (next_prev_hbox, "next_prev_hbox");
632   gtk_widget_ref (next_prev_hbox);
633   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next_prev_hbox", next_prev_hbox,
634                             (GtkDestroyNotify) gtk_widget_unref);
635   gtk_widget_show (next_prev_hbox);
636   gtk_box_pack_start (GTK_BOX (centering_hbox), next_prev_hbox, FALSE, FALSE, 0);
637
638   next = gtk_button_new_with_label (_("\\/"));
639   gtk_widget_set_name (next, "next");
640   gtk_widget_ref (next);
641   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next", next,
642                             (GtkDestroyNotify) gtk_widget_unref);
643   gtk_widget_show (next);
644   gtk_box_pack_start (GTK_BOX (next_prev_hbox), next, FALSE, FALSE, 0);
645   GTK_WIDGET_SET_FLAGS (next, GTK_CAN_DEFAULT);
646   gtk_tooltips_set_tip (tooltips, next, _("Run the next screen saver in the list in full-screen mode (click the mouse to return.)"), NULL);
647
648   prev = gtk_button_new_with_label (_("/\\"));
649   gtk_widget_set_name (prev, "prev");
650   gtk_widget_ref (prev);
651   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prev", prev,
652                             (GtkDestroyNotify) gtk_widget_unref);
653   gtk_widget_show (prev);
654   gtk_box_pack_start (GTK_BOX (next_prev_hbox), prev, FALSE, FALSE, 0);
655   GTK_WIDGET_SET_FLAGS (prev, GTK_CAN_DEFAULT);
656   gtk_tooltips_set_tip (tooltips, prev, _("Run the previous screen saver in the list in full-screen mode (click the mouse to return.)"), NULL);
657
658   preview_frame = gtk_frame_new (_("Description"));
659   gtk_widget_set_name (preview_frame, "preview_frame");
660   gtk_widget_ref (preview_frame);
661   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "preview_frame", preview_frame,
662                             (GtkDestroyNotify) gtk_widget_unref);
663   gtk_widget_show (preview_frame);
664   gtk_table_attach (GTK_TABLE (demos_table), preview_frame, 1, 2, 0, 1,
665                     (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
666                     (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 6);
667
668   preview_aspectframe = gtk_aspect_frame_new (NULL, 0.5, 0.5, 1.33, FALSE);
669   gtk_widget_set_name (preview_aspectframe, "preview_aspectframe");
670   gtk_widget_ref (preview_aspectframe);
671   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "preview_aspectframe", preview_aspectframe,
672                             (GtkDestroyNotify) gtk_widget_unref);
673   gtk_widget_show (preview_aspectframe);
674   gtk_container_add (GTK_CONTAINER (preview_frame), preview_aspectframe);
675   gtk_container_set_border_width (GTK_CONTAINER (preview_aspectframe), 8);
676
677   preview = gtk_drawing_area_new ();
678   gtk_widget_set_name (preview, "preview");
679   gtk_widget_ref (preview);
680   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "preview", preview,
681                             (GtkDestroyNotify) gtk_widget_unref);
682   gtk_widget_show (preview);
683   gtk_container_add (GTK_CONTAINER (preview_aspectframe), preview);
684
685   demo_tab = gtk_label_new (_("Display Modes"));
686   gtk_widget_set_name (demo_tab, "demo_tab");
687   gtk_widget_ref (demo_tab);
688   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_tab", demo_tab,
689                             (GtkDestroyNotify) gtk_widget_unref);
690   gtk_widget_show (demo_tab);
691   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), demo_tab);
692
693   options_table = gtk_table_new (2, 2, TRUE);
694   gtk_widget_set_name (options_table, "options_table");
695   gtk_widget_ref (options_table);
696   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table", options_table,
697                             (GtkDestroyNotify) gtk_widget_unref);
698   gtk_widget_show (options_table);
699   gtk_container_add (GTK_CONTAINER (notebook), options_table);
700
701   diag_frame = gtk_frame_new (_("Diagnostics"));
702   gtk_widget_set_name (diag_frame, "diag_frame");
703   gtk_widget_ref (diag_frame);
704   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_frame", diag_frame,
705                             (GtkDestroyNotify) gtk_widget_unref);
706   gtk_widget_show (diag_frame);
707   gtk_table_attach (GTK_TABLE (options_table), diag_frame, 0, 1, 1, 2,
708                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
709                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
710   gtk_container_set_border_width (GTK_CONTAINER (diag_frame), 10);
711
712   diag_hbox = gtk_hbox_new (FALSE, 8);
713   gtk_widget_set_name (diag_hbox, "diag_hbox");
714   gtk_widget_ref (diag_hbox);
715   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_hbox", diag_hbox,
716                             (GtkDestroyNotify) gtk_widget_unref);
717   gtk_widget_show (diag_hbox);
718   gtk_container_add (GTK_CONTAINER (diag_frame), diag_hbox);
719   gtk_container_set_border_width (GTK_CONTAINER (diag_hbox), 8);
720
721   diag_logo = create_pixmap (xscreensaver_demo, "screensaver-diagnostic.png");
722   gtk_widget_set_name (diag_logo, "diag_logo");
723   gtk_widget_ref (diag_logo);
724   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_logo", diag_logo,
725                             (GtkDestroyNotify) gtk_widget_unref);
726   gtk_widget_show (diag_logo);
727   gtk_box_pack_start (GTK_BOX (diag_hbox), diag_logo, FALSE, FALSE, 0);
728   gtk_misc_set_alignment (GTK_MISC (diag_logo), 0.5, 0);
729
730   diag_vbox = gtk_vbox_new (FALSE, 0);
731   gtk_widget_set_name (diag_vbox, "diag_vbox");
732   gtk_widget_ref (diag_vbox);
733   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_vbox", diag_vbox,
734                             (GtkDestroyNotify) gtk_widget_unref);
735   gtk_widget_show (diag_vbox);
736   gtk_box_pack_start (GTK_BOX (diag_hbox), diag_vbox, TRUE, TRUE, 0);
737
738   verbose_button_eventbox = gtk_event_box_new ();
739   gtk_widget_set_name (verbose_button_eventbox, "verbose_button_eventbox");
740   gtk_widget_ref (verbose_button_eventbox);
741   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button_eventbox", verbose_button_eventbox,
742                             (GtkDestroyNotify) gtk_widget_unref);
743   gtk_widget_show (verbose_button_eventbox);
744   gtk_box_pack_start (GTK_BOX (diag_vbox), verbose_button_eventbox, FALSE, FALSE, 0);
745   gtk_tooltips_set_tip (tooltips, verbose_button_eventbox, _("Whether the daemon should print lots of debugging information."), NULL);
746
747   verbose_button = gtk_check_button_new_with_label (_("Verbose Diagnostics"));
748   gtk_widget_set_name (verbose_button, "verbose_button");
749   gtk_widget_ref (verbose_button);
750   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button", verbose_button,
751                             (GtkDestroyNotify) gtk_widget_unref);
752   gtk_widget_show (verbose_button);
753   gtk_container_add (GTK_CONTAINER (verbose_button_eventbox), verbose_button);
754
755   capture_button_eventbox = gtk_event_box_new ();
756   gtk_widget_set_name (capture_button_eventbox, "capture_button_eventbox");
757   gtk_widget_ref (capture_button_eventbox);
758   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button_eventbox", capture_button_eventbox,
759                             (GtkDestroyNotify) gtk_widget_unref);
760   gtk_widget_show (capture_button_eventbox);
761   gtk_box_pack_start (GTK_BOX (diag_vbox), capture_button_eventbox, FALSE, FALSE, 0);
762   gtk_tooltips_set_tip (tooltips, capture_button_eventbox, _("Whether any error output of the display modes should be redirected to the screen."), NULL);
763
764   capture_button = gtk_check_button_new_with_label (_("Display Subprocess Errors"));
765   gtk_widget_set_name (capture_button, "capture_button");
766   gtk_widget_ref (capture_button);
767   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button", capture_button,
768                             (GtkDestroyNotify) gtk_widget_unref);
769   gtk_widget_show (capture_button);
770   gtk_container_add (GTK_CONTAINER (capture_button_eventbox), capture_button);
771
772   splash_button_eventbox = gtk_event_box_new ();
773   gtk_widget_set_name (splash_button_eventbox, "splash_button_eventbox");
774   gtk_widget_ref (splash_button_eventbox);
775   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button_eventbox", splash_button_eventbox,
776                             (GtkDestroyNotify) gtk_widget_unref);
777   gtk_widget_show (splash_button_eventbox);
778   gtk_box_pack_start (GTK_BOX (diag_vbox), splash_button_eventbox, FALSE, FALSE, 0);
779   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);
780
781   splash_button = gtk_check_button_new_with_label (_("Display Splash Screen at Startup"));
782   gtk_widget_set_name (splash_button, "splash_button");
783   gtk_widget_ref (splash_button);
784   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button", splash_button,
785                             (GtkDestroyNotify) gtk_widget_unref);
786   gtk_widget_show (splash_button);
787   gtk_container_add (GTK_CONTAINER (splash_button_eventbox), splash_button);
788   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (splash_button), TRUE);
789
790   cmap_frame = gtk_frame_new (_("Colormaps"));
791   gtk_widget_set_name (cmap_frame, "cmap_frame");
792   gtk_widget_ref (cmap_frame);
793   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_frame", cmap_frame,
794                             (GtkDestroyNotify) gtk_widget_unref);
795   gtk_widget_show (cmap_frame);
796   gtk_table_attach (GTK_TABLE (options_table), cmap_frame, 1, 2, 1, 2,
797                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
798                     (GtkAttachOptions) (GTK_FILL), 0, 0);
799   gtk_container_set_border_width (GTK_CONTAINER (cmap_frame), 10);
800
801   cmap_hbox = gtk_hbox_new (FALSE, 8);
802   gtk_widget_set_name (cmap_hbox, "cmap_hbox");
803   gtk_widget_ref (cmap_hbox);
804   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hbox", cmap_hbox,
805                             (GtkDestroyNotify) gtk_widget_unref);
806   gtk_widget_show (cmap_hbox);
807   gtk_container_add (GTK_CONTAINER (cmap_frame), cmap_hbox);
808   gtk_container_set_border_width (GTK_CONTAINER (cmap_hbox), 8);
809
810   cmap_logo = create_pixmap (xscreensaver_demo, "screensaver-colorselector.png");
811   gtk_widget_set_name (cmap_logo, "cmap_logo");
812   gtk_widget_ref (cmap_logo);
813   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_logo", cmap_logo,
814                             (GtkDestroyNotify) gtk_widget_unref);
815   gtk_widget_show (cmap_logo);
816   gtk_box_pack_start (GTK_BOX (cmap_hbox), cmap_logo, FALSE, FALSE, 0);
817   gtk_misc_set_alignment (GTK_MISC (cmap_logo), 0.5, 0);
818
819   cmap_vbox = gtk_vbox_new (FALSE, 0);
820   gtk_widget_set_name (cmap_vbox, "cmap_vbox");
821   gtk_widget_ref (cmap_vbox);
822   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_vbox", cmap_vbox,
823                             (GtkDestroyNotify) gtk_widget_unref);
824   gtk_widget_show (cmap_vbox);
825   gtk_box_pack_start (GTK_BOX (cmap_hbox), cmap_vbox, TRUE, TRUE, 0);
826
827   install_button_eventbox = gtk_event_box_new ();
828   gtk_widget_set_name (install_button_eventbox, "install_button_eventbox");
829   gtk_widget_ref (install_button_eventbox);
830   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button_eventbox", install_button_eventbox,
831                             (GtkDestroyNotify) gtk_widget_unref);
832   gtk_widget_show (install_button_eventbox);
833   gtk_box_pack_start (GTK_BOX (cmap_vbox), install_button_eventbox, FALSE, FALSE, 0);
834   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);
835
836   install_button = gtk_check_button_new_with_label (_("Install Colormap"));
837   gtk_widget_set_name (install_button, "install_button");
838   gtk_widget_ref (install_button);
839   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button", install_button,
840                             (GtkDestroyNotify) gtk_widget_unref);
841   gtk_widget_show (install_button);
842   gtk_container_add (GTK_CONTAINER (install_button_eventbox), install_button);
843
844   cmap_hr = gtk_hseparator_new ();
845   gtk_widget_set_name (cmap_hr, "cmap_hr");
846   gtk_widget_ref (cmap_hr);
847   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hr", cmap_hr,
848                             (GtkDestroyNotify) gtk_widget_unref);
849   gtk_widget_show (cmap_hr);
850   gtk_box_pack_start (GTK_BOX (cmap_vbox), cmap_hr, FALSE, FALSE, 4);
851
852   fade_button_eventbox = gtk_event_box_new ();
853   gtk_widget_set_name (fade_button_eventbox, "fade_button_eventbox");
854   gtk_widget_ref (fade_button_eventbox);
855   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button_eventbox", fade_button_eventbox,
856                             (GtkDestroyNotify) gtk_widget_unref);
857   gtk_widget_show (fade_button_eventbox);
858   gtk_box_pack_start (GTK_BOX (cmap_vbox), fade_button_eventbox, FALSE, FALSE, 0);
859   gtk_tooltips_set_tip (tooltips, fade_button_eventbox, _("Whether the screen should slowly fade to black when the screen saver activates."), NULL);
860
861   fade_button = gtk_check_button_new_with_label (_("Fade To Black When Blanking"));
862   gtk_widget_set_name (fade_button, "fade_button");
863   gtk_widget_ref (fade_button);
864   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button", fade_button,
865                             (GtkDestroyNotify) gtk_widget_unref);
866   gtk_widget_show (fade_button);
867   gtk_container_add (GTK_CONTAINER (fade_button_eventbox), fade_button);
868
869   unfade_button_eventbox = gtk_event_box_new ();
870   gtk_widget_set_name (unfade_button_eventbox, "unfade_button_eventbox");
871   gtk_widget_ref (unfade_button_eventbox);
872   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button_eventbox", unfade_button_eventbox,
873                             (GtkDestroyNotify) gtk_widget_unref);
874   gtk_widget_show (unfade_button_eventbox);
875   gtk_box_pack_start (GTK_BOX (cmap_vbox), unfade_button_eventbox, FALSE, FALSE, 0);
876   gtk_tooltips_set_tip (tooltips, unfade_button_eventbox, _("Whether the screen should slowly fade in from black when the screen saver deactivates."), NULL);
877
878   unfade_button = gtk_check_button_new_with_label (_("Fade From Black When Unblanking"));
879   gtk_widget_set_name (unfade_button, "unfade_button");
880   gtk_widget_ref (unfade_button);
881   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button", unfade_button,
882                             (GtkDestroyNotify) gtk_widget_unref);
883   gtk_widget_show (unfade_button);
884   gtk_container_add (GTK_CONTAINER (unfade_button_eventbox), unfade_button);
885
886   fade_hbox = gtk_hbox_new (FALSE, 0);
887   gtk_widget_set_name (fade_hbox, "fade_hbox");
888   gtk_widget_ref (fade_hbox);
889   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_hbox", fade_hbox,
890                             (GtkDestroyNotify) gtk_widget_unref);
891   gtk_widget_show (fade_hbox);
892   gtk_box_pack_start (GTK_BOX (cmap_vbox), fade_hbox, FALSE, FALSE, 0);
893
894   fade_dummy = gtk_label_new ("");
895   gtk_widget_set_name (fade_dummy, "fade_dummy");
896   gtk_widget_ref (fade_dummy);
897   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_dummy", fade_dummy,
898                             (GtkDestroyNotify) gtk_widget_unref);
899   gtk_widget_show (fade_dummy);
900   gtk_box_pack_start (GTK_BOX (fade_hbox), fade_dummy, FALSE, FALSE, 0);
901   gtk_label_set_justify (GTK_LABEL (fade_dummy), GTK_JUSTIFY_LEFT);
902   gtk_misc_set_padding (GTK_MISC (fade_dummy), 3, 0);
903
904   fade_label = gtk_label_new (_("Fade Duration"));
905   gtk_widget_set_name (fade_label, "fade_label");
906   gtk_widget_ref (fade_label);
907   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_label", fade_label,
908                             (GtkDestroyNotify) gtk_widget_unref);
909   gtk_widget_show (fade_label);
910   gtk_box_pack_start (GTK_BOX (fade_hbox), fade_label, FALSE, FALSE, 10);
911   gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_LEFT);
912   gtk_misc_set_alignment (GTK_MISC (fade_label), 0, 0.5);
913
914   fade_spinbutton_adj = gtk_adjustment_new (0, 0, 10, 1, 1, 1);
915   fade_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (fade_spinbutton_adj), 1, 0);
916   gtk_widget_set_name (fade_spinbutton, "fade_spinbutton");
917   gtk_widget_ref (fade_spinbutton);
918   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_spinbutton", fade_spinbutton,
919                             (GtkDestroyNotify) gtk_widget_unref);
920   gtk_widget_show (fade_spinbutton);
921   gtk_box_pack_start (GTK_BOX (fade_hbox), fade_spinbutton, FALSE, FALSE, 0);
922   gtk_tooltips_set_tip (tooltips, fade_spinbutton, _("How long it should take for the screen to fade in and out."), NULL);
923   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fade_spinbutton), TRUE);
924   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (fade_spinbutton), TRUE);
925
926   fade_sec_label = gtk_label_new (_("seconds"));
927   gtk_widget_set_name (fade_sec_label, "fade_sec_label");
928   gtk_widget_ref (fade_sec_label);
929   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_sec_label", fade_sec_label,
930                             (GtkDestroyNotify) gtk_widget_unref);
931   gtk_widget_show (fade_sec_label);
932   gtk_box_pack_start (GTK_BOX (fade_hbox), fade_sec_label, FALSE, FALSE, 0);
933   gtk_label_set_justify (GTK_LABEL (fade_sec_label), GTK_JUSTIFY_LEFT);
934   gtk_misc_set_alignment (GTK_MISC (fade_sec_label), 0, 0.5);
935
936   dpms_frame = gtk_frame_new (_("Display Power Management"));
937   gtk_widget_set_name (dpms_frame, "dpms_frame");
938   gtk_widget_ref (dpms_frame);
939   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_frame", dpms_frame,
940                             (GtkDestroyNotify) gtk_widget_unref);
941   gtk_widget_show (dpms_frame);
942   gtk_table_attach (GTK_TABLE (options_table), dpms_frame, 1, 2, 0, 1,
943                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
944                     (GtkAttachOptions) (GTK_FILL), 0, 0);
945   gtk_container_set_border_width (GTK_CONTAINER (dpms_frame), 10);
946
947   dpms_hbox = gtk_hbox_new (FALSE, 8);
948   gtk_widget_set_name (dpms_hbox, "dpms_hbox");
949   gtk_widget_ref (dpms_hbox);
950   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_hbox", dpms_hbox,
951                             (GtkDestroyNotify) gtk_widget_unref);
952   gtk_widget_show (dpms_hbox);
953   gtk_container_add (GTK_CONTAINER (dpms_frame), dpms_hbox);
954   gtk_container_set_border_width (GTK_CONTAINER (dpms_hbox), 8);
955
956   dpms_logo = create_pixmap (xscreensaver_demo, "screensaver-power.png");
957   gtk_widget_set_name (dpms_logo, "dpms_logo");
958   gtk_widget_ref (dpms_logo);
959   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_logo", dpms_logo,
960                             (GtkDestroyNotify) gtk_widget_unref);
961   gtk_widget_show (dpms_logo);
962   gtk_box_pack_start (GTK_BOX (dpms_hbox), dpms_logo, FALSE, FALSE, 0);
963   gtk_misc_set_alignment (GTK_MISC (dpms_logo), 0.5, 0);
964
965   dpms_vbox = gtk_vbox_new (FALSE, 0);
966   gtk_widget_set_name (dpms_vbox, "dpms_vbox");
967   gtk_widget_ref (dpms_vbox);
968   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_vbox", dpms_vbox,
969                             (GtkDestroyNotify) gtk_widget_unref);
970   gtk_widget_show (dpms_vbox);
971   gtk_box_pack_start (GTK_BOX (dpms_hbox), dpms_vbox, FALSE, FALSE, 0);
972
973   dpms_button_eventbox = gtk_event_box_new ();
974   gtk_widget_set_name (dpms_button_eventbox, "dpms_button_eventbox");
975   gtk_widget_ref (dpms_button_eventbox);
976   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button_eventbox", dpms_button_eventbox,
977                             (GtkDestroyNotify) gtk_widget_unref);
978   gtk_widget_show (dpms_button_eventbox);
979   gtk_box_pack_start (GTK_BOX (dpms_vbox), dpms_button_eventbox, FALSE, FALSE, 0);
980   gtk_tooltips_set_tip (tooltips, dpms_button_eventbox, _("Whether the monitor should be powered down after a while."), NULL);
981
982   dpms_button = gtk_check_button_new_with_label (_("Power Management Enabled"));
983   gtk_widget_set_name (dpms_button, "dpms_button");
984   gtk_widget_ref (dpms_button);
985   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button", dpms_button,
986                             (GtkDestroyNotify) gtk_widget_unref);
987   gtk_widget_show (dpms_button);
988   gtk_container_add (GTK_CONTAINER (dpms_button_eventbox), dpms_button);
989   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dpms_button), TRUE);
990
991   dpms_table = gtk_table_new (3, 3, FALSE);
992   gtk_widget_set_name (dpms_table, "dpms_table");
993   gtk_widget_ref (dpms_table);
994   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_table", dpms_table,
995                             (GtkDestroyNotify) gtk_widget_unref);
996   gtk_widget_show (dpms_table);
997   gtk_box_pack_start (GTK_BOX (dpms_vbox), dpms_table, FALSE, FALSE, 0);
998   gtk_table_set_row_spacings (GTK_TABLE (dpms_table), 2);
999
1000   dpms_standby_spinbutton_adj = gtk_adjustment_new (0, 0, 1440, 1, 30, 30);
1001   dpms_standby_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (dpms_standby_spinbutton_adj), 15, 0);
1002   gtk_widget_set_name (dpms_standby_spinbutton, "dpms_standby_spinbutton");
1003   gtk_widget_ref (dpms_standby_spinbutton);
1004   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_spinbutton", dpms_standby_spinbutton,
1005                             (GtkDestroyNotify) gtk_widget_unref);
1006   gtk_widget_show (dpms_standby_spinbutton);
1007   gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_spinbutton, 1, 2, 0, 1,
1008                     (GtkAttachOptions) (GTK_FILL),
1009                     (GtkAttachOptions) (0), 0, 0);
1010   gtk_tooltips_set_tip (tooltips, dpms_standby_spinbutton, _("How long before the monitor goes completely black."), NULL);
1011   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dpms_standby_spinbutton), TRUE);
1012   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (dpms_standby_spinbutton), TRUE);
1013
1014   dpms_standby_mlabel = gtk_label_new (_("minutes"));
1015   gtk_widget_set_name (dpms_standby_mlabel, "dpms_standby_mlabel");
1016   gtk_widget_ref (dpms_standby_mlabel);
1017   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_mlabel", dpms_standby_mlabel,
1018                             (GtkDestroyNotify) gtk_widget_unref);
1019   gtk_widget_show (dpms_standby_mlabel);
1020   gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_mlabel, 2, 3, 0, 1,
1021                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1022                     (GtkAttachOptions) (0), 0, 0);
1023   gtk_label_set_justify (GTK_LABEL (dpms_standby_mlabel), GTK_JUSTIFY_LEFT);
1024   gtk_misc_set_alignment (GTK_MISC (dpms_standby_mlabel), 0, 0.5);
1025
1026   dpms_suspend_mlabel = gtk_label_new (_("minutes"));
1027   gtk_widget_set_name (dpms_suspend_mlabel, "dpms_suspend_mlabel");
1028   gtk_widget_ref (dpms_suspend_mlabel);
1029   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_mlabel", dpms_suspend_mlabel,
1030                             (GtkDestroyNotify) gtk_widget_unref);
1031   gtk_widget_show (dpms_suspend_mlabel);
1032   gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_mlabel, 2, 3, 1, 2,
1033                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1034                     (GtkAttachOptions) (0), 0, 0);
1035   gtk_label_set_justify (GTK_LABEL (dpms_suspend_mlabel), GTK_JUSTIFY_LEFT);
1036   gtk_misc_set_alignment (GTK_MISC (dpms_suspend_mlabel), 0, 0.5);
1037
1038   dpms_off_mlabel = gtk_label_new (_("minutes"));
1039   gtk_widget_set_name (dpms_off_mlabel, "dpms_off_mlabel");
1040   gtk_widget_ref (dpms_off_mlabel);
1041   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_mlabel", dpms_off_mlabel,
1042                             (GtkDestroyNotify) gtk_widget_unref);
1043   gtk_widget_show (dpms_off_mlabel);
1044   gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_mlabel, 2, 3, 2, 3,
1045                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1046                     (GtkAttachOptions) (0), 0, 0);
1047   gtk_label_set_justify (GTK_LABEL (dpms_off_mlabel), GTK_JUSTIFY_LEFT);
1048   gtk_misc_set_alignment (GTK_MISC (dpms_off_mlabel), 0, 0.5);
1049
1050   dpms_off_label = gtk_label_new (_("Off After"));
1051   gtk_widget_set_name (dpms_off_label, "dpms_off_label");
1052   gtk_widget_ref (dpms_off_label);
1053   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_label", dpms_off_label,
1054                             (GtkDestroyNotify) gtk_widget_unref);
1055   gtk_widget_show (dpms_off_label);
1056   gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_label, 0, 1, 2, 3,
1057                     (GtkAttachOptions) (GTK_FILL),
1058                     (GtkAttachOptions) (0), 0, 0);
1059   gtk_label_set_justify (GTK_LABEL (dpms_off_label), GTK_JUSTIFY_RIGHT);
1060   gtk_misc_set_alignment (GTK_MISC (dpms_off_label), 1, 0.5);
1061   gtk_misc_set_padding (GTK_MISC (dpms_off_label), 10, 0);
1062
1063   dpms_suspend_label = gtk_label_new (_("Suspend After"));
1064   gtk_widget_set_name (dpms_suspend_label, "dpms_suspend_label");
1065   gtk_widget_ref (dpms_suspend_label);
1066   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_label", dpms_suspend_label,
1067                             (GtkDestroyNotify) gtk_widget_unref);
1068   gtk_widget_show (dpms_suspend_label);
1069   gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_label, 0, 1, 1, 2,
1070                     (GtkAttachOptions) (GTK_FILL),
1071                     (GtkAttachOptions) (0), 0, 0);
1072   gtk_label_set_justify (GTK_LABEL (dpms_suspend_label), GTK_JUSTIFY_RIGHT);
1073   gtk_misc_set_alignment (GTK_MISC (dpms_suspend_label), 1, 0.5);
1074   gtk_misc_set_padding (GTK_MISC (dpms_suspend_label), 10, 0);
1075
1076   dpms_standby_label = gtk_label_new (_("Standby After"));
1077   gtk_widget_set_name (dpms_standby_label, "dpms_standby_label");
1078   gtk_widget_ref (dpms_standby_label);
1079   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_label", dpms_standby_label,
1080                             (GtkDestroyNotify) gtk_widget_unref);
1081   gtk_widget_show (dpms_standby_label);
1082   gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_label, 0, 1, 0, 1,
1083                     (GtkAttachOptions) (GTK_FILL),
1084                     (GtkAttachOptions) (0), 0, 0);
1085   gtk_label_set_justify (GTK_LABEL (dpms_standby_label), GTK_JUSTIFY_RIGHT);
1086   gtk_misc_set_alignment (GTK_MISC (dpms_standby_label), 1, 0.5);
1087   gtk_misc_set_padding (GTK_MISC (dpms_standby_label), 10, 0);
1088
1089   dpms_suspend_spinbutton_adj = gtk_adjustment_new (0, 0, 1440, 1, 30, 30);
1090   dpms_suspend_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (dpms_suspend_spinbutton_adj), 15, 0);
1091   gtk_widget_set_name (dpms_suspend_spinbutton, "dpms_suspend_spinbutton");
1092   gtk_widget_ref (dpms_suspend_spinbutton);
1093   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_spinbutton", dpms_suspend_spinbutton,
1094                             (GtkDestroyNotify) gtk_widget_unref);
1095   gtk_widget_show (dpms_suspend_spinbutton);
1096   gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_spinbutton, 1, 2, 1, 2,
1097                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1098                     (GtkAttachOptions) (0), 0, 0);
1099   gtk_tooltips_set_tip (tooltips, dpms_suspend_spinbutton, _("How long until the monitor goes into power-saving mode."), NULL);
1100   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dpms_suspend_spinbutton), TRUE);
1101   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (dpms_suspend_spinbutton), TRUE);
1102
1103   dpms_off_spinbutton_adj = gtk_adjustment_new (0, 0, 1440, 1, 30, 30);
1104   dpms_off_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (dpms_off_spinbutton_adj), 15, 0);
1105   gtk_widget_set_name (dpms_off_spinbutton, "dpms_off_spinbutton");
1106   gtk_widget_ref (dpms_off_spinbutton);
1107   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_spinbutton", dpms_off_spinbutton,
1108                             (GtkDestroyNotify) gtk_widget_unref);
1109   gtk_widget_show (dpms_off_spinbutton);
1110   gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_spinbutton, 1, 2, 2, 3,
1111                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1112                     (GtkAttachOptions) (0), 0, 0);
1113   gtk_tooltips_set_tip (tooltips, dpms_off_spinbutton, _("How long until the monitor powers down."), NULL);
1114   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dpms_off_spinbutton), TRUE);
1115   gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (dpms_off_spinbutton), TRUE);
1116
1117   grab_frame = gtk_frame_new (_("Image Manipulation"));
1118   gtk_widget_set_name (grab_frame, "grab_frame");
1119   gtk_widget_ref (grab_frame);
1120   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_frame", grab_frame,
1121                             (GtkDestroyNotify) gtk_widget_unref);
1122   gtk_widget_show (grab_frame);
1123   gtk_table_attach (GTK_TABLE (options_table), grab_frame, 0, 1, 0, 1,
1124                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1125                     (GtkAttachOptions) (GTK_FILL), 0, 0);
1126   gtk_container_set_border_width (GTK_CONTAINER (grab_frame), 10);
1127
1128   grab_hbox = gtk_hbox_new (FALSE, 8);
1129   gtk_widget_set_name (grab_hbox, "grab_hbox");
1130   gtk_widget_ref (grab_hbox);
1131   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_hbox", grab_hbox,
1132                             (GtkDestroyNotify) gtk_widget_unref);
1133   gtk_widget_show (grab_hbox);
1134   gtk_container_add (GTK_CONTAINER (grab_frame), grab_hbox);
1135   gtk_container_set_border_width (GTK_CONTAINER (grab_hbox), 8);
1136
1137   img_logo = create_pixmap (xscreensaver_demo, "screensaver-snap.png");
1138   gtk_widget_set_name (img_logo, "img_logo");
1139   gtk_widget_ref (img_logo);
1140   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "img_logo", img_logo,
1141                             (GtkDestroyNotify) gtk_widget_unref);
1142   gtk_widget_show (img_logo);
1143   gtk_box_pack_start (GTK_BOX (grab_hbox), img_logo, FALSE, FALSE, 0);
1144   gtk_misc_set_alignment (GTK_MISC (img_logo), 0.5, 0);
1145
1146   grab_vbox = gtk_vbox_new (FALSE, 0);
1147   gtk_widget_set_name (grab_vbox, "grab_vbox");
1148   gtk_widget_ref (grab_vbox);
1149   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_vbox", grab_vbox,
1150                             (GtkDestroyNotify) gtk_widget_unref);
1151   gtk_widget_show (grab_vbox);
1152   gtk_box_pack_start (GTK_BOX (grab_hbox), grab_vbox, TRUE, TRUE, 0);
1153
1154   grab_desk_eventbox = gtk_event_box_new ();
1155   gtk_widget_set_name (grab_desk_eventbox, "grab_desk_eventbox");
1156   gtk_widget_ref (grab_desk_eventbox);
1157   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_desk_eventbox", grab_desk_eventbox,
1158                             (GtkDestroyNotify) gtk_widget_unref);
1159   gtk_widget_show (grab_desk_eventbox);
1160   gtk_box_pack_start (GTK_BOX (grab_vbox), grab_desk_eventbox, FALSE, FALSE, 0);
1161   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);
1162
1163   grab_desk_button = gtk_check_button_new_with_label (_("Grab Desktop Images"));
1164   gtk_widget_set_name (grab_desk_button, "grab_desk_button");
1165   gtk_widget_ref (grab_desk_button);
1166   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_desk_button", grab_desk_button,
1167                             (GtkDestroyNotify) gtk_widget_unref);
1168   gtk_widget_show (grab_desk_button);
1169   gtk_container_add (GTK_CONTAINER (grab_desk_eventbox), grab_desk_button);
1170
1171   grab_video_eventbox = gtk_event_box_new ();
1172   gtk_widget_set_name (grab_video_eventbox, "grab_video_eventbox");
1173   gtk_widget_ref (grab_video_eventbox);
1174   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_video_eventbox", grab_video_eventbox,
1175                             (GtkDestroyNotify) gtk_widget_unref);
1176   gtk_widget_show (grab_video_eventbox);
1177   gtk_box_pack_start (GTK_BOX (grab_vbox), grab_video_eventbox, FALSE, FALSE, 0);
1178   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);
1179
1180   grab_video_button = gtk_check_button_new_with_label (_("Grab Video Frames"));
1181   gtk_widget_set_name (grab_video_button, "grab_video_button");
1182   gtk_widget_ref (grab_video_button);
1183   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_video_button", grab_video_button,
1184                             (GtkDestroyNotify) gtk_widget_unref);
1185   gtk_widget_show (grab_video_button);
1186   gtk_container_add (GTK_CONTAINER (grab_video_eventbox), grab_video_button);
1187
1188   grab_image_eventbox = gtk_event_box_new ();
1189   gtk_widget_set_name (grab_image_eventbox, "grab_image_eventbox");
1190   gtk_widget_ref (grab_image_eventbox);
1191   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_image_eventbox", grab_image_eventbox,
1192                             (GtkDestroyNotify) gtk_widget_unref);
1193   gtk_widget_show (grab_image_eventbox);
1194   gtk_box_pack_start (GTK_BOX (grab_vbox), grab_image_eventbox, FALSE, FALSE, 0);
1195   gtk_tooltips_set_tip (tooltips, grab_image_eventbox, _("Whether the image-manipulating modes should operate on random images loaded from disk."), NULL);
1196
1197   grab_image_button = gtk_check_button_new_with_label (_("Choose Random Image:"));
1198   gtk_widget_set_name (grab_image_button, "grab_image_button");
1199   gtk_widget_ref (grab_image_button);
1200   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_image_button", grab_image_button,
1201                             (GtkDestroyNotify) gtk_widget_unref);
1202   gtk_widget_show (grab_image_button);
1203   gtk_container_add (GTK_CONTAINER (grab_image_eventbox), grab_image_button);
1204
1205   image_hbox = gtk_hbox_new (FALSE, 0);
1206   gtk_widget_set_name (image_hbox, "image_hbox");
1207   gtk_widget_ref (image_hbox);
1208   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_hbox", image_hbox,
1209                             (GtkDestroyNotify) gtk_widget_unref);
1210   gtk_widget_show (image_hbox);
1211   gtk_box_pack_start (GTK_BOX (grab_vbox), image_hbox, FALSE, FALSE, 0);
1212
1213   grab_dummy = gtk_label_new ("");
1214   gtk_widget_set_name (grab_dummy, "grab_dummy");
1215   gtk_widget_ref (grab_dummy);
1216   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_dummy", grab_dummy,
1217                             (GtkDestroyNotify) gtk_widget_unref);
1218   gtk_widget_show (grab_dummy);
1219   gtk_box_pack_start (GTK_BOX (image_hbox), grab_dummy, FALSE, FALSE, 0);
1220   gtk_label_set_justify (GTK_LABEL (grab_dummy), GTK_JUSTIFY_LEFT);
1221   gtk_misc_set_padding (GTK_MISC (grab_dummy), 8, 0);
1222
1223   image_text = gtk_entry_new ();
1224   gtk_widget_set_name (image_text, "image_text");
1225   gtk_widget_ref (image_text);
1226   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_text", image_text,
1227                             (GtkDestroyNotify) gtk_widget_unref);
1228   gtk_widget_show (image_text);
1229   gtk_box_pack_start (GTK_BOX (image_hbox), image_text, TRUE, TRUE, 0);
1230   gtk_tooltips_set_tip (tooltips, image_text, _("The directory from which images will be randomly chosen."), NULL);
1231
1232   image_browse_button = gtk_button_new_with_label (_("Browse"));
1233   gtk_widget_set_name (image_browse_button, "image_browse_button");
1234   gtk_widget_ref (image_browse_button);
1235   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_browse_button", image_browse_button,
1236                             (GtkDestroyNotify) gtk_widget_unref);
1237   gtk_widget_show (image_browse_button);
1238   gtk_box_pack_start (GTK_BOX (image_hbox), image_browse_button, FALSE, FALSE, 4);
1239
1240   options_tab = gtk_label_new (_("Advanced"));
1241   gtk_widget_set_name (options_tab, "options_tab");
1242   gtk_widget_ref (options_tab);
1243   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_tab", options_tab,
1244                             (GtkDestroyNotify) gtk_widget_unref);
1245   gtk_widget_show (options_tab);
1246   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), options_tab);
1247
1248   gtk_signal_connect (GTK_OBJECT (activate_menu), "activate",
1249                       GTK_SIGNAL_FUNC (activate_menu_cb),
1250                       NULL);
1251   gtk_signal_connect (GTK_OBJECT (lock_menu), "activate",
1252                       GTK_SIGNAL_FUNC (lock_menu_cb),
1253                       NULL);
1254   gtk_signal_connect (GTK_OBJECT (kill_menu), "activate",
1255                       GTK_SIGNAL_FUNC (kill_menu_cb),
1256                       NULL);
1257   gtk_signal_connect (GTK_OBJECT (restart), "activate",
1258                       GTK_SIGNAL_FUNC (restart_menu_cb),
1259                       NULL);
1260   gtk_signal_connect (GTK_OBJECT (exit_menu), "activate",
1261                       GTK_SIGNAL_FUNC (exit_menu_cb),
1262                       NULL);
1263   gtk_signal_connect (GTK_OBJECT (about_menu), "activate",
1264                       GTK_SIGNAL_FUNC (about_menu_cb),
1265                       NULL);
1266   gtk_signal_connect (GTK_OBJECT (doc_menu), "activate",
1267                       GTK_SIGNAL_FUNC (doc_menu_cb),
1268                       NULL);
1269   gtk_signal_connect (GTK_OBJECT (notebook), "switch_page",
1270                       GTK_SIGNAL_FUNC (switch_page_cb),
1271                       NULL);
1272   gtk_signal_connect (GTK_OBJECT (lock_button), "toggled",
1273                       GTK_SIGNAL_FUNC (pref_changed_cb),
1274                       NULL);
1275   gtk_signal_connect (GTK_OBJECT (timeout_spinbutton), "activate",
1276                       GTK_SIGNAL_FUNC (pref_changed_cb),
1277                       NULL);
1278   gtk_signal_connect (GTK_OBJECT (timeout_spinbutton), "focus_out_event",
1279                       GTK_SIGNAL_FUNC (pref_changed_cb),
1280                       NULL);
1281   gtk_signal_connect (GTK_OBJECT (timeout_spinbutton), "changed",
1282                       GTK_SIGNAL_FUNC (pref_changed_cb),
1283                       NULL);
1284   gtk_signal_connect (GTK_OBJECT (lock_spinbutton), "activate",
1285                       GTK_SIGNAL_FUNC (pref_changed_cb),
1286                       NULL);
1287   gtk_signal_connect (GTK_OBJECT (lock_spinbutton), "focus_out_event",
1288                       GTK_SIGNAL_FUNC (pref_changed_cb),
1289                       NULL);
1290   gtk_signal_connect (GTK_OBJECT (lock_spinbutton), "changed",
1291                       GTK_SIGNAL_FUNC (pref_changed_cb),
1292                       NULL);
1293   gtk_signal_connect (GTK_OBJECT (cycle_spinbutton), "activate",
1294                       GTK_SIGNAL_FUNC (pref_changed_cb),
1295                       NULL);
1296   gtk_signal_connect (GTK_OBJECT (cycle_spinbutton), "focus_out_event",
1297                       GTK_SIGNAL_FUNC (pref_changed_cb),
1298                       NULL);
1299   gtk_signal_connect (GTK_OBJECT (cycle_spinbutton), "changed",
1300                       GTK_SIGNAL_FUNC (pref_changed_cb),
1301                       NULL);
1302   gtk_signal_connect (GTK_OBJECT (demo), "clicked",
1303                       GTK_SIGNAL_FUNC (run_this_cb),
1304                       NULL);
1305   gtk_signal_connect (GTK_OBJECT (settings), "clicked",
1306                       GTK_SIGNAL_FUNC (settings_cb),
1307                       NULL);
1308   gtk_signal_connect (GTK_OBJECT (next), "clicked",
1309                       GTK_SIGNAL_FUNC (run_next_cb),
1310                       NULL);
1311   gtk_signal_connect (GTK_OBJECT (prev), "clicked",
1312                       GTK_SIGNAL_FUNC (run_prev_cb),
1313                       NULL);
1314   gtk_signal_connect (GTK_OBJECT (verbose_button), "toggled",
1315                       GTK_SIGNAL_FUNC (pref_changed_cb),
1316                       NULL);
1317   gtk_signal_connect (GTK_OBJECT (capture_button), "toggled",
1318                       GTK_SIGNAL_FUNC (pref_changed_cb),
1319                       NULL);
1320   gtk_signal_connect (GTK_OBJECT (splash_button), "toggled",
1321                       GTK_SIGNAL_FUNC (pref_changed_cb),
1322                       NULL);
1323   gtk_signal_connect (GTK_OBJECT (install_button), "toggled",
1324                       GTK_SIGNAL_FUNC (pref_changed_cb),
1325                       NULL);
1326   gtk_signal_connect (GTK_OBJECT (fade_button), "toggled",
1327                       GTK_SIGNAL_FUNC (pref_changed_cb),
1328                       NULL);
1329   gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled",
1330                       GTK_SIGNAL_FUNC (pref_changed_cb),
1331                       NULL);
1332   gtk_signal_connect (GTK_OBJECT (fade_spinbutton), "activate",
1333                       GTK_SIGNAL_FUNC (pref_changed_cb),
1334                       NULL);
1335   gtk_signal_connect (GTK_OBJECT (fade_spinbutton), "focus_out_event",
1336                       GTK_SIGNAL_FUNC (pref_changed_cb),
1337                       NULL);
1338   gtk_signal_connect (GTK_OBJECT (fade_spinbutton), "changed",
1339                       GTK_SIGNAL_FUNC (pref_changed_cb),
1340                       NULL);
1341   gtk_signal_connect (GTK_OBJECT (dpms_button), "toggled",
1342                       GTK_SIGNAL_FUNC (pref_changed_cb),
1343                       NULL);
1344   gtk_signal_connect (GTK_OBJECT (dpms_standby_spinbutton), "activate",
1345                       GTK_SIGNAL_FUNC (pref_changed_cb),
1346                       NULL);
1347   gtk_signal_connect (GTK_OBJECT (dpms_standby_spinbutton), "focus_out_event",
1348                       GTK_SIGNAL_FUNC (pref_changed_cb),
1349                       NULL);
1350   gtk_signal_connect (GTK_OBJECT (dpms_standby_spinbutton), "changed",
1351                       GTK_SIGNAL_FUNC (pref_changed_cb),
1352                       NULL);
1353   gtk_signal_connect (GTK_OBJECT (dpms_suspend_spinbutton), "activate",
1354                       GTK_SIGNAL_FUNC (pref_changed_cb),
1355                       NULL);
1356   gtk_signal_connect (GTK_OBJECT (dpms_suspend_spinbutton), "focus_out_event",
1357                       GTK_SIGNAL_FUNC (pref_changed_cb),
1358                       NULL);
1359   gtk_signal_connect (GTK_OBJECT (dpms_suspend_spinbutton), "changed",
1360                       GTK_SIGNAL_FUNC (pref_changed_cb),
1361                       NULL);
1362   gtk_signal_connect (GTK_OBJECT (dpms_off_spinbutton), "activate",
1363                       GTK_SIGNAL_FUNC (pref_changed_cb),
1364                       NULL);
1365   gtk_signal_connect (GTK_OBJECT (dpms_off_spinbutton), "focus_out_event",
1366                       GTK_SIGNAL_FUNC (pref_changed_cb),
1367                       NULL);
1368   gtk_signal_connect (GTK_OBJECT (dpms_off_spinbutton), "changed",
1369                       GTK_SIGNAL_FUNC (pref_changed_cb),
1370                       NULL);
1371   gtk_signal_connect (GTK_OBJECT (grab_desk_button), "toggled",
1372                       GTK_SIGNAL_FUNC (pref_changed_cb),
1373                       NULL);
1374   gtk_signal_connect (GTK_OBJECT (grab_video_button), "toggled",
1375                       GTK_SIGNAL_FUNC (pref_changed_cb),
1376                       NULL);
1377   gtk_signal_connect (GTK_OBJECT (grab_image_button), "toggled",
1378                       GTK_SIGNAL_FUNC (pref_changed_cb),
1379                       NULL);
1380   gtk_signal_connect (GTK_OBJECT (image_text), "activate",
1381                       GTK_SIGNAL_FUNC (pref_changed_cb),
1382                       NULL);
1383   gtk_signal_connect (GTK_OBJECT (image_text), "focus_out_event",
1384                       GTK_SIGNAL_FUNC (pref_changed_cb),
1385                       NULL);
1386   gtk_signal_connect (GTK_OBJECT (image_browse_button), "clicked",
1387                       GTK_SIGNAL_FUNC (browse_image_dir_cb),
1388                       NULL);
1389
1390   gtk_widget_grab_default (next);
1391   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "tooltips", tooltips);
1392
1393   gtk_window_add_accel_group (GTK_WINDOW (xscreensaver_demo), accel_group);
1394
1395   return xscreensaver_demo;
1396 }
1397
1398 GtkWidget*
1399 create_xscreensaver_settings_dialog (void)
1400 {
1401   GtkWidget *xscreensaver_settings_dialog;
1402   GtkWidget *dialog_vbox;
1403   GtkWidget *dialog_top_table;
1404   GtkWidget *opt_frame;
1405   GtkWidget *opt_notebook;
1406   GtkWidget *settings_vbox;
1407   GtkWidget *std_label;
1408   GtkWidget *opt_table;
1409   GtkWidget *cmd_logo;
1410   GtkWidget *visual_hbox;
1411   GtkWidget *visual;
1412   GtkWidget *visual_combo;
1413   GList *visual_combo_items = NULL;
1414   GtkWidget *combo_entry1;
1415   GtkWidget *cmd_label;
1416   GtkWidget *cmd_text;
1417   GtkWidget *adv_label;
1418   GtkWidget *doc_frame;
1419   GtkWidget *doc_vbox;
1420   GtkWidget *doc;
1421   GtkWidget *doc_hbuttonbox;
1422   GtkWidget *manual;
1423   GtkWidget *dialog_action_area;
1424   GtkWidget *actionarea_hbox;
1425   GtkWidget *dialog_hbuttonbox;
1426   GtkWidget *adv_button;
1427   GtkWidget *std_button;
1428   GtkWidget *ok_cancel_hbuttonbox;
1429   GtkWidget *ok_button;
1430   GtkWidget *cancel_button;
1431   GtkTooltips *tooltips;
1432
1433   tooltips = gtk_tooltips_new ();
1434
1435   xscreensaver_settings_dialog = gtk_dialog_new ();
1436   gtk_widget_set_name (xscreensaver_settings_dialog, "xscreensaver_settings_dialog");
1437   gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "xscreensaver_settings_dialog", xscreensaver_settings_dialog);
1438   gtk_window_set_title (GTK_WINDOW (xscreensaver_settings_dialog), _("XScreenSaver: Mode-Specific Settings"));
1439   GTK_WINDOW (xscreensaver_settings_dialog)->type = GTK_WINDOW_DIALOG;
1440   gtk_window_set_modal (GTK_WINDOW (xscreensaver_settings_dialog), TRUE);
1441   gtk_window_set_policy (GTK_WINDOW (xscreensaver_settings_dialog), TRUE, TRUE, FALSE);
1442   gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_settings_dialog), "settings", "XScreenSaver");
1443
1444   dialog_vbox = GTK_DIALOG (xscreensaver_settings_dialog)->vbox;
1445   gtk_widget_set_name (dialog_vbox, "dialog_vbox");
1446   gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_vbox", dialog_vbox);
1447   gtk_widget_show (dialog_vbox);
1448
1449   dialog_top_table = gtk_table_new (1, 2, FALSE);
1450   gtk_widget_set_name (dialog_top_table, "dialog_top_table");
1451   gtk_widget_ref (dialog_top_table);
1452   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_top_table", dialog_top_table,
1453                             (GtkDestroyNotify) gtk_widget_unref);
1454   gtk_widget_show (dialog_top_table);
1455   gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_top_table, TRUE, TRUE, 0);
1456   gtk_container_set_border_width (GTK_CONTAINER (dialog_top_table), 8);
1457   gtk_table_set_row_spacings (GTK_TABLE (dialog_top_table), 8);
1458   gtk_table_set_col_spacings (GTK_TABLE (dialog_top_table), 8);
1459
1460   opt_frame = gtk_frame_new (_("Settings"));
1461   gtk_widget_set_name (opt_frame, "opt_frame");
1462   gtk_widget_ref (opt_frame);
1463   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_frame", opt_frame,
1464                             (GtkDestroyNotify) gtk_widget_unref);
1465   gtk_widget_show (opt_frame);
1466   gtk_table_attach (GTK_TABLE (dialog_top_table), opt_frame, 0, 1, 0, 1,
1467                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1468                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 4, 8);
1469
1470   opt_notebook = gtk_notebook_new ();
1471   gtk_widget_set_name (opt_notebook, "opt_notebook");
1472   gtk_widget_ref (opt_notebook);
1473   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_notebook", opt_notebook,
1474                             (GtkDestroyNotify) gtk_widget_unref);
1475   gtk_widget_show (opt_notebook);
1476   gtk_container_add (GTK_CONTAINER (opt_frame), opt_notebook);
1477   gtk_container_set_border_width (GTK_CONTAINER (opt_notebook), 12);
1478   gtk_notebook_set_show_border (GTK_NOTEBOOK (opt_notebook), FALSE);
1479   gtk_notebook_set_tab_pos (GTK_NOTEBOOK (opt_notebook), GTK_POS_BOTTOM);
1480
1481   settings_vbox = gtk_vbox_new (FALSE, 0);
1482   gtk_widget_set_name (settings_vbox, "settings_vbox");
1483   gtk_widget_ref (settings_vbox);
1484   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "settings_vbox", settings_vbox,
1485                             (GtkDestroyNotify) gtk_widget_unref);
1486   gtk_widget_show (settings_vbox);
1487   gtk_container_add (GTK_CONTAINER (opt_notebook), settings_vbox);
1488
1489   std_label = gtk_label_new (_("Standard"));
1490   gtk_widget_set_name (std_label, "std_label");
1491   gtk_widget_ref (std_label);
1492   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "std_label", std_label,
1493                             (GtkDestroyNotify) gtk_widget_unref);
1494   gtk_widget_show (std_label);
1495   gtk_notebook_set_tab_label (GTK_NOTEBOOK (opt_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (opt_notebook), 0), std_label);
1496
1497   opt_table = gtk_table_new (4, 2, FALSE);
1498   gtk_widget_set_name (opt_table, "opt_table");
1499   gtk_widget_ref (opt_table);
1500   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_table", opt_table,
1501                             (GtkDestroyNotify) gtk_widget_unref);
1502   gtk_widget_show (opt_table);
1503   gtk_container_add (GTK_CONTAINER (opt_notebook), opt_table);
1504
1505   cmd_logo = create_pixmap (xscreensaver_settings_dialog, "screensaver-cmndln.png");
1506   gtk_widget_set_name (cmd_logo, "cmd_logo");
1507   gtk_widget_ref (cmd_logo);
1508   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_logo", cmd_logo,
1509                             (GtkDestroyNotify) gtk_widget_unref);
1510   gtk_widget_show (cmd_logo);
1511   gtk_table_attach (GTK_TABLE (opt_table), cmd_logo, 0, 1, 0, 1,
1512                     (GtkAttachOptions) (GTK_FILL),
1513                     (GtkAttachOptions) (GTK_FILL), 0, 0);
1514   gtk_misc_set_padding (GTK_MISC (cmd_logo), 4, 8);
1515
1516   visual_hbox = gtk_hbox_new (FALSE, 0);
1517   gtk_widget_set_name (visual_hbox, "visual_hbox");
1518   gtk_widget_ref (visual_hbox);
1519   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual_hbox", visual_hbox,
1520                             (GtkDestroyNotify) gtk_widget_unref);
1521   gtk_widget_show (visual_hbox);
1522   gtk_table_attach (GTK_TABLE (opt_table), visual_hbox, 1, 2, 3, 4,
1523                     (GtkAttachOptions) (GTK_FILL),
1524                     (GtkAttachOptions) (GTK_FILL), 0, 0);
1525
1526   visual = gtk_label_new (_("Visual:"));
1527   gtk_widget_set_name (visual, "visual");
1528   gtk_widget_ref (visual);
1529   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual", visual,
1530                             (GtkDestroyNotify) gtk_widget_unref);
1531   gtk_widget_show (visual);
1532   gtk_box_pack_start (GTK_BOX (visual_hbox), visual, FALSE, FALSE, 0);
1533   gtk_label_set_justify (GTK_LABEL (visual), GTK_JUSTIFY_RIGHT);
1534   gtk_misc_set_alignment (GTK_MISC (visual), 1, 0.5);
1535   gtk_misc_set_padding (GTK_MISC (visual), 4, 0);
1536
1537   visual_combo = gtk_combo_new ();
1538   gtk_widget_set_name (visual_combo, "visual_combo");
1539   gtk_widget_ref (visual_combo);
1540   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual_combo", visual_combo,
1541                             (GtkDestroyNotify) gtk_widget_unref);
1542   gtk_widget_show (visual_combo);
1543   gtk_box_pack_start (GTK_BOX (visual_hbox), visual_combo, FALSE, FALSE, 0);
1544   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Any"));
1545   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Best"));
1546   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Default"));
1547   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Default-N"));
1548   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("GL"));
1549   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("TrueColor"));
1550   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("PseudoColor"));
1551   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("StaticGray"));
1552   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("GrayScale"));
1553   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("DirectColor"));
1554   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Color"));
1555   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Gray"));
1556   visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Mono"));
1557   gtk_combo_set_popdown_strings (GTK_COMBO (visual_combo), visual_combo_items);
1558   g_list_free (visual_combo_items);
1559
1560   combo_entry1 = GTK_COMBO (visual_combo)->entry;
1561   gtk_widget_set_name (combo_entry1, "combo_entry1");
1562   gtk_widget_ref (combo_entry1);
1563   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "combo_entry1", combo_entry1,
1564                             (GtkDestroyNotify) gtk_widget_unref);
1565   gtk_widget_show (combo_entry1);
1566   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);
1567   gtk_entry_set_text (GTK_ENTRY (combo_entry1), _("Any"));
1568
1569   cmd_label = gtk_label_new (_("Command Line:"));
1570   gtk_widget_set_name (cmd_label, "cmd_label");
1571   gtk_widget_ref (cmd_label);
1572   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_label", cmd_label,
1573                             (GtkDestroyNotify) gtk_widget_unref);
1574   gtk_widget_show (cmd_label);
1575   gtk_table_attach (GTK_TABLE (opt_table), cmd_label, 1, 2, 1, 2,
1576                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1577                     (GtkAttachOptions) (0), 0, 0);
1578   gtk_label_set_justify (GTK_LABEL (cmd_label), GTK_JUSTIFY_LEFT);
1579   gtk_misc_set_alignment (GTK_MISC (cmd_label), 0, 1);
1580   gtk_misc_set_padding (GTK_MISC (cmd_label), 0, 2);
1581
1582   cmd_text = gtk_entry_new ();
1583   gtk_widget_set_name (cmd_text, "cmd_text");
1584   gtk_widget_ref (cmd_text);
1585   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_text", cmd_text,
1586                             (GtkDestroyNotify) gtk_widget_unref);
1587   gtk_widget_show (cmd_text);
1588   gtk_table_attach (GTK_TABLE (opt_table), cmd_text, 1, 2, 2, 3,
1589                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1590                     (GtkAttachOptions) (0), 0, 0);
1591   gtk_widget_set_usize (cmd_text, 80, -2);
1592
1593   adv_label = gtk_label_new (_("Advanced"));
1594   gtk_widget_set_name (adv_label, "adv_label");
1595   gtk_widget_ref (adv_label);
1596   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "adv_label", adv_label,
1597                             (GtkDestroyNotify) gtk_widget_unref);
1598   gtk_widget_show (adv_label);
1599   gtk_notebook_set_tab_label (GTK_NOTEBOOK (opt_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (opt_notebook), 1), adv_label);
1600
1601   doc_frame = gtk_frame_new (_("Description"));
1602   gtk_widget_set_name (doc_frame, "doc_frame");
1603   gtk_widget_ref (doc_frame);
1604   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_frame", doc_frame,
1605                             (GtkDestroyNotify) gtk_widget_unref);
1606   gtk_widget_show (doc_frame);
1607   gtk_table_attach (GTK_TABLE (dialog_top_table), doc_frame, 1, 2, 0, 1,
1608                     (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
1609                     (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 4, 8);
1610
1611   doc_vbox = gtk_vbox_new (FALSE, 0);
1612   gtk_widget_set_name (doc_vbox, "doc_vbox");
1613   gtk_widget_ref (doc_vbox);
1614   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_vbox", doc_vbox,
1615                             (GtkDestroyNotify) gtk_widget_unref);
1616   gtk_widget_show (doc_vbox);
1617   gtk_container_add (GTK_CONTAINER (doc_frame), doc_vbox);
1618
1619   doc = gtk_label_new ("");
1620   gtk_widget_set_name (doc, "doc");
1621   gtk_widget_ref (doc);
1622   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc", doc,
1623                             (GtkDestroyNotify) gtk_widget_unref);
1624   gtk_widget_show (doc);
1625   gtk_box_pack_start (GTK_BOX (doc_vbox), doc, TRUE, TRUE, 0);
1626   gtk_label_set_justify (GTK_LABEL (doc), GTK_JUSTIFY_LEFT);
1627   gtk_label_set_line_wrap (GTK_LABEL (doc), TRUE);
1628   gtk_misc_set_alignment (GTK_MISC (doc), 0, 0);
1629   gtk_misc_set_padding (GTK_MISC (doc), 10, 10);
1630
1631   doc_hbuttonbox = gtk_hbutton_box_new ();
1632   gtk_widget_set_name (doc_hbuttonbox, "doc_hbuttonbox");
1633   gtk_widget_ref (doc_hbuttonbox);
1634   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_hbuttonbox", doc_hbuttonbox,
1635                             (GtkDestroyNotify) gtk_widget_unref);
1636   gtk_widget_show (doc_hbuttonbox);
1637   gtk_box_pack_end (GTK_BOX (doc_vbox), doc_hbuttonbox, FALSE, FALSE, 0);
1638   gtk_container_set_border_width (GTK_CONTAINER (doc_hbuttonbox), 4);
1639   gtk_button_box_set_layout (GTK_BUTTON_BOX (doc_hbuttonbox), GTK_BUTTONBOX_END);
1640
1641   manual = gtk_button_new_with_label (_("Documentation..."));
1642   gtk_widget_set_name (manual, "manual");
1643   gtk_widget_ref (manual);
1644   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "manual", manual,
1645                             (GtkDestroyNotify) gtk_widget_unref);
1646   gtk_widget_show (manual);
1647   gtk_container_add (GTK_CONTAINER (doc_hbuttonbox), manual);
1648   GTK_WIDGET_SET_FLAGS (manual, GTK_CAN_DEFAULT);
1649   gtk_tooltips_set_tip (tooltips, manual, _("Click here to read the manual for this display mode, if it has one."), NULL);
1650
1651   dialog_action_area = GTK_DIALOG (xscreensaver_settings_dialog)->action_area;
1652   gtk_widget_set_name (dialog_action_area, "dialog_action_area");
1653   gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_action_area", dialog_action_area);
1654   gtk_widget_show (dialog_action_area);
1655   gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area), 10);
1656
1657   actionarea_hbox = gtk_hbox_new (FALSE, 0);
1658   gtk_widget_set_name (actionarea_hbox, "actionarea_hbox");
1659   gtk_widget_ref (actionarea_hbox);
1660   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "actionarea_hbox", actionarea_hbox,
1661                             (GtkDestroyNotify) gtk_widget_unref);
1662   gtk_widget_show (actionarea_hbox);
1663   gtk_box_pack_start (GTK_BOX (dialog_action_area), actionarea_hbox, TRUE, TRUE, 0);
1664
1665   dialog_hbuttonbox = gtk_hbutton_box_new ();
1666   gtk_widget_set_name (dialog_hbuttonbox, "dialog_hbuttonbox");
1667   gtk_widget_ref (dialog_hbuttonbox);
1668   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_hbuttonbox", dialog_hbuttonbox,
1669                             (GtkDestroyNotify) gtk_widget_unref);
1670   gtk_widget_show (dialog_hbuttonbox);
1671   gtk_box_pack_start (GTK_BOX (actionarea_hbox), dialog_hbuttonbox, TRUE, TRUE, 0);
1672   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_hbuttonbox), GTK_BUTTONBOX_SPREAD);
1673
1674   adv_button = gtk_button_new_with_label (_("Advanced >>"));
1675   gtk_widget_set_name (adv_button, "adv_button");
1676   gtk_widget_ref (adv_button);
1677   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "adv_button", adv_button,
1678                             (GtkDestroyNotify) gtk_widget_unref);
1679   gtk_widget_show (adv_button);
1680   gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), adv_button);
1681   GTK_WIDGET_SET_FLAGS (adv_button, GTK_CAN_DEFAULT);
1682   gtk_tooltips_set_tip (tooltips, adv_button, _("Edit the command line directly."), NULL);
1683
1684   std_button = gtk_button_new_with_label (_("Standard <<"));
1685   gtk_widget_set_name (std_button, "std_button");
1686   gtk_widget_ref (std_button);
1687   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "std_button", std_button,
1688                             (GtkDestroyNotify) gtk_widget_unref);
1689   gtk_widget_show (std_button);
1690   gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), std_button);
1691   GTK_WIDGET_SET_FLAGS (std_button, GTK_CAN_DEFAULT);
1692   gtk_tooltips_set_tip (tooltips, std_button, _("Back to the graphical configuration options."), NULL);
1693
1694   ok_cancel_hbuttonbox = gtk_hbutton_box_new ();
1695   gtk_widget_set_name (ok_cancel_hbuttonbox, "ok_cancel_hbuttonbox");
1696   gtk_widget_ref (ok_cancel_hbuttonbox);
1697   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "ok_cancel_hbuttonbox", ok_cancel_hbuttonbox,
1698                             (GtkDestroyNotify) gtk_widget_unref);
1699   gtk_widget_show (ok_cancel_hbuttonbox);
1700   gtk_box_pack_start (GTK_BOX (actionarea_hbox), ok_cancel_hbuttonbox, TRUE, TRUE, 0);
1701   gtk_button_box_set_layout (GTK_BUTTON_BOX (ok_cancel_hbuttonbox), GTK_BUTTONBOX_END);
1702
1703   ok_button = gtk_button_new_with_label (_("OK"));
1704   gtk_widget_set_name (ok_button, "ok_button");
1705   gtk_widget_ref (ok_button);
1706   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "ok_button", ok_button,
1707                             (GtkDestroyNotify) gtk_widget_unref);
1708   gtk_widget_show (ok_button);
1709   gtk_container_add (GTK_CONTAINER (ok_cancel_hbuttonbox), ok_button);
1710   GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
1711
1712   cancel_button = gtk_button_new_with_label (_("Cancel"));
1713   gtk_widget_set_name (cancel_button, "cancel_button");
1714   gtk_widget_ref (cancel_button);
1715   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cancel_button", cancel_button,
1716                             (GtkDestroyNotify) gtk_widget_unref);
1717   gtk_widget_show (cancel_button);
1718   gtk_container_add (GTK_CONTAINER (ok_cancel_hbuttonbox), cancel_button);
1719   GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT);
1720
1721   gtk_signal_connect (GTK_OBJECT (opt_notebook), "switch_page",
1722                       GTK_SIGNAL_FUNC (settings_switch_page_cb),
1723                       NULL);
1724   gtk_signal_connect (GTK_OBJECT (manual), "clicked",
1725                       GTK_SIGNAL_FUNC (manual_cb),
1726                       NULL);
1727   gtk_signal_connect (GTK_OBJECT (adv_button), "clicked",
1728                       GTK_SIGNAL_FUNC (settings_adv_cb),
1729                       NULL);
1730   gtk_signal_connect (GTK_OBJECT (std_button), "clicked",
1731                       GTK_SIGNAL_FUNC (settings_std_cb),
1732                       NULL);
1733   gtk_signal_connect (GTK_OBJECT (ok_button), "clicked",
1734                       GTK_SIGNAL_FUNC (settings_ok_cb),
1735                       NULL);
1736   gtk_signal_connect (GTK_OBJECT (cancel_button), "clicked",
1737                       GTK_SIGNAL_FUNC (settings_cancel_cb),
1738                       NULL);
1739
1740   gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "tooltips", tooltips);
1741
1742   return xscreensaver_settings_dialog;
1743 }
1744