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