+GtkWidget*
+create_xscreensaver_settings_dialog (void)
+{
+ GtkWidget *xscreensaver_settings_dialog;
+ GtkWidget *dialog_vbox;
+ GtkWidget *dialog_top_table;
+ GtkWidget *opt_frame;
+ GtkWidget *opt_notebook;
+ GtkWidget *settings_vbox;
+ GtkWidget *std_label;
+ GtkWidget *opt_table;
+ GtkWidget *cmd_logo;
+ GtkWidget *visual_hbox;
+ GtkWidget *visual;
+ GtkWidget *visual_combo;
+ GList *visual_combo_items = NULL;
+ GtkWidget *combo_entry1;
+ GtkWidget *cmd_label;
+ GtkWidget *cmd_text;
+ GtkWidget *adv_label;
+ GtkWidget *doc_frame;
+ GtkWidget *doc_vbox;
+ GtkWidget *doc;
+ GtkWidget *doc_hbuttonbox;
+ GtkWidget *manual;
+ GtkWidget *dialog_action_area;
+ GtkWidget *actionarea_hbox;
+ GtkWidget *dialog_hbuttonbox;
+ GtkWidget *adv_button;
+ GtkWidget *std_button;
+ GtkWidget *reset_button;
+ GtkWidget *ok_cancel_hbuttonbox;
+ GtkWidget *ok_button;
+ GtkWidget *cancel_button;
+ GtkTooltips *tooltips;
+
+ tooltips = gtk_tooltips_new ();
+
+ xscreensaver_settings_dialog = gtk_dialog_new ();
+ gtk_widget_set_name (xscreensaver_settings_dialog, "xscreensaver_settings_dialog");
+ gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "xscreensaver_settings_dialog", xscreensaver_settings_dialog);
+ gtk_window_set_title (GTK_WINDOW (xscreensaver_settings_dialog), _("XScreenSaver: Mode-Specific Settings"));
+ GTK_WINDOW (xscreensaver_settings_dialog)->type = GTK_WINDOW_DIALOG;
+ gtk_window_set_modal (GTK_WINDOW (xscreensaver_settings_dialog), TRUE);
+ gtk_window_set_policy (GTK_WINDOW (xscreensaver_settings_dialog), TRUE, TRUE, FALSE);
+ gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_settings_dialog), "settings", "XScreenSaver");
+
+ dialog_vbox = GTK_DIALOG (xscreensaver_settings_dialog)->vbox;
+ gtk_widget_set_name (dialog_vbox, "dialog_vbox");
+ gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_vbox", dialog_vbox);
+ gtk_widget_show (dialog_vbox);
+
+ dialog_top_table = gtk_table_new (1, 2, FALSE);
+ gtk_widget_set_name (dialog_top_table, "dialog_top_table");
+ gtk_widget_ref (dialog_top_table);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_top_table", dialog_top_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (dialog_top_table);
+ gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_top_table, TRUE, TRUE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog_top_table), 8);
+ gtk_table_set_row_spacings (GTK_TABLE (dialog_top_table), 8);
+ gtk_table_set_col_spacings (GTK_TABLE (dialog_top_table), 8);
+
+ opt_frame = gtk_frame_new (_("Settings"));
+ gtk_widget_set_name (opt_frame, "opt_frame");
+ gtk_widget_ref (opt_frame);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_frame", opt_frame,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (opt_frame);
+ gtk_table_attach (GTK_TABLE (dialog_top_table), opt_frame, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 4, 8);
+
+ opt_notebook = gtk_notebook_new ();
+ gtk_widget_set_name (opt_notebook, "opt_notebook");
+ gtk_widget_ref (opt_notebook);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_notebook", opt_notebook,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (opt_notebook);
+ gtk_container_add (GTK_CONTAINER (opt_frame), opt_notebook);
+ gtk_container_set_border_width (GTK_CONTAINER (opt_notebook), 12);
+ gtk_notebook_set_show_border (GTK_NOTEBOOK (opt_notebook), FALSE);
+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (opt_notebook), GTK_POS_BOTTOM);
+
+ settings_vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_set_name (settings_vbox, "settings_vbox");
+ gtk_widget_ref (settings_vbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "settings_vbox", settings_vbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (settings_vbox);
+ gtk_container_add (GTK_CONTAINER (opt_notebook), settings_vbox);
+
+ std_label = gtk_label_new (_("Standard"));
+ gtk_widget_set_name (std_label, "std_label");
+ gtk_widget_ref (std_label);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "std_label", std_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (std_label);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (opt_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (opt_notebook), 0), std_label);
+
+ opt_table = gtk_table_new (4, 2, FALSE);
+ gtk_widget_set_name (opt_table, "opt_table");
+ gtk_widget_ref (opt_table);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_table", opt_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (opt_table);
+ gtk_container_add (GTK_CONTAINER (opt_notebook), opt_table);
+
+ cmd_logo = create_pixmap (xscreensaver_settings_dialog, "screensaver-cmndln.png");
+ gtk_widget_set_name (cmd_logo, "cmd_logo");
+ gtk_widget_ref (cmd_logo);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_logo", cmd_logo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (cmd_logo);
+ gtk_table_attach (GTK_TABLE (opt_table), cmd_logo, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+ gtk_misc_set_padding (GTK_MISC (cmd_logo), 4, 8);
+
+ visual_hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_set_name (visual_hbox, "visual_hbox");
+ gtk_widget_ref (visual_hbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual_hbox", visual_hbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (visual_hbox);
+ gtk_table_attach (GTK_TABLE (opt_table), visual_hbox, 1, 2, 3, 4,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+ visual = gtk_label_new (_("Visual:"));
+ gtk_widget_set_name (visual, "visual");
+ gtk_widget_ref (visual);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual", visual,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (visual);
+ gtk_box_pack_start (GTK_BOX (visual_hbox), visual, FALSE, FALSE, 0);
+ gtk_label_set_justify (GTK_LABEL (visual), GTK_JUSTIFY_RIGHT);
+ gtk_misc_set_alignment (GTK_MISC (visual), 1, 0.5);
+ gtk_misc_set_padding (GTK_MISC (visual), 4, 0);
+
+ visual_combo = gtk_combo_new ();
+ gtk_widget_set_name (visual_combo, "visual_combo");
+ gtk_widget_ref (visual_combo);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual_combo", visual_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (visual_combo);
+ gtk_box_pack_start (GTK_BOX (visual_hbox), visual_combo, FALSE, FALSE, 0);
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Any"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Best"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Default"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Default-N"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("GL"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("TrueColor"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("PseudoColor"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("StaticGray"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("GrayScale"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("DirectColor"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Color"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Gray"));
+ visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Mono"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (visual_combo), visual_combo_items);
+ g_list_free (visual_combo_items);
+
+ combo_entry1 = GTK_COMBO (visual_combo)->entry;
+ gtk_widget_set_name (combo_entry1, "combo_entry1");
+ gtk_widget_ref (combo_entry1);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "combo_entry1", combo_entry1,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (combo_entry1);
+ 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);
+ gtk_entry_set_text (GTK_ENTRY (combo_entry1), _("Any"));
+
+ cmd_label = gtk_label_new (_("Command Line:"));
+ gtk_widget_set_name (cmd_label, "cmd_label");
+ gtk_widget_ref (cmd_label);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_label", cmd_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (cmd_label);
+ gtk_table_attach (GTK_TABLE (opt_table), cmd_label, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_label_set_justify (GTK_LABEL (cmd_label), GTK_JUSTIFY_LEFT);
+ gtk_misc_set_alignment (GTK_MISC (cmd_label), 0, 1);
+ gtk_misc_set_padding (GTK_MISC (cmd_label), 0, 2);
+
+ cmd_text = gtk_entry_new ();
+ gtk_widget_set_name (cmd_text, "cmd_text");
+ gtk_widget_ref (cmd_text);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_text", cmd_text,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (cmd_text);
+ gtk_table_attach (GTK_TABLE (opt_table), cmd_text, 1, 2, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_set_usize (cmd_text, 80, -2);
+
+ adv_label = gtk_label_new (_("Advanced"));
+ gtk_widget_set_name (adv_label, "adv_label");
+ gtk_widget_ref (adv_label);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "adv_label", adv_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (adv_label);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (opt_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (opt_notebook), 1), adv_label);
+
+ doc_frame = gtk_frame_new (_("Description"));
+ gtk_widget_set_name (doc_frame, "doc_frame");
+ gtk_widget_ref (doc_frame);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_frame", doc_frame,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (doc_frame);
+ gtk_table_attach (GTK_TABLE (dialog_top_table), doc_frame, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 4, 8);
+
+ doc_vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_set_name (doc_vbox, "doc_vbox");
+ gtk_widget_ref (doc_vbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_vbox", doc_vbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (doc_vbox);
+ gtk_container_add (GTK_CONTAINER (doc_frame), doc_vbox);
+
+ doc = gtk_label_new ("");
+ gtk_widget_set_name (doc, "doc");
+ gtk_widget_ref (doc);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc", doc,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (doc);
+ gtk_box_pack_start (GTK_BOX (doc_vbox), doc, TRUE, TRUE, 0);
+ gtk_label_set_justify (GTK_LABEL (doc), GTK_JUSTIFY_LEFT);
+ gtk_label_set_line_wrap (GTK_LABEL (doc), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (doc), 0, 0);
+ gtk_misc_set_padding (GTK_MISC (doc), 10, 10);
+
+ doc_hbuttonbox = gtk_hbutton_box_new ();
+ gtk_widget_set_name (doc_hbuttonbox, "doc_hbuttonbox");
+ gtk_widget_ref (doc_hbuttonbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_hbuttonbox", doc_hbuttonbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (doc_hbuttonbox);
+ gtk_box_pack_end (GTK_BOX (doc_vbox), doc_hbuttonbox, FALSE, FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (doc_hbuttonbox), 4);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (doc_hbuttonbox), GTK_BUTTONBOX_END);
+
+ manual = gtk_button_new_with_label (_("Documentation..."));
+ gtk_widget_set_name (manual, "manual");
+ gtk_widget_ref (manual);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "manual", manual,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (manual);
+ gtk_container_add (GTK_CONTAINER (doc_hbuttonbox), manual);
+ STFU GTK_WIDGET_SET_FLAGS (manual, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip (tooltips, manual, _("Click here to read the manual for this display mode, if it has one."), NULL);
+
+ dialog_action_area = GTK_DIALOG (xscreensaver_settings_dialog)->action_area;
+ gtk_widget_set_name (dialog_action_area, "dialog_action_area");
+ gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_action_area", dialog_action_area);
+ gtk_widget_show (dialog_action_area);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area), 10);
+
+ actionarea_hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_set_name (actionarea_hbox, "actionarea_hbox");
+ gtk_widget_ref (actionarea_hbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "actionarea_hbox", actionarea_hbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (actionarea_hbox);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area), actionarea_hbox, TRUE, TRUE, 0);
+
+ dialog_hbuttonbox = gtk_hbutton_box_new ();
+ gtk_widget_set_name (dialog_hbuttonbox, "dialog_hbuttonbox");
+ gtk_widget_ref (dialog_hbuttonbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_hbuttonbox", dialog_hbuttonbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (dialog_hbuttonbox);
+ gtk_box_pack_start (GTK_BOX (actionarea_hbox), dialog_hbuttonbox, TRUE, TRUE, 0);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_hbuttonbox), GTK_BUTTONBOX_SPREAD);
+
+ adv_button = gtk_button_new_with_label (_("Advanced >>"));
+ gtk_widget_set_name (adv_button, "adv_button");
+ gtk_widget_ref (adv_button);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "adv_button", adv_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (adv_button);
+ gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), adv_button);
+ STFU GTK_WIDGET_SET_FLAGS (adv_button, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip (tooltips, adv_button, _("Edit the command line directly."), NULL);
+
+ std_button = gtk_button_new_with_label (_("Standard <<"));
+ gtk_widget_set_name (std_button, "std_button");
+ gtk_widget_ref (std_button);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "std_button", std_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (std_button);
+ gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), std_button);
+ STFU GTK_WIDGET_SET_FLAGS (std_button, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip (tooltips, std_button, _("Back to the graphical configuration options."), NULL);
+
+ reset_button = gtk_button_new_with_label (_("Reset to Defaults"));
+ gtk_widget_set_name (reset_button, "reset_button");
+ gtk_widget_ref (reset_button);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "reset_button", reset_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (reset_button);
+ gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), reset_button);
+ STFU GTK_WIDGET_SET_FLAGS (reset_button, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip (tooltips, reset_button, _("Reset this screen saver to the default settings."), NULL);
+
+ ok_cancel_hbuttonbox = gtk_hbutton_box_new ();
+ gtk_widget_set_name (ok_cancel_hbuttonbox, "ok_cancel_hbuttonbox");
+ gtk_widget_ref (ok_cancel_hbuttonbox);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "ok_cancel_hbuttonbox", ok_cancel_hbuttonbox,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (ok_cancel_hbuttonbox);
+ gtk_box_pack_start (GTK_BOX (actionarea_hbox), ok_cancel_hbuttonbox, TRUE, TRUE, 0);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (ok_cancel_hbuttonbox), GTK_BUTTONBOX_END);
+
+ ok_button = gtk_button_new_with_label (_("OK"));
+ gtk_widget_set_name (ok_button, "ok_button");
+ gtk_widget_ref (ok_button);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "ok_button", ok_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (ok_button);
+ gtk_container_add (GTK_CONTAINER (ok_cancel_hbuttonbox), ok_button);
+ STFU GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
+
+ cancel_button = gtk_button_new_with_label (_("Cancel"));
+ gtk_widget_set_name (cancel_button, "cancel_button");
+ gtk_widget_ref (cancel_button);
+ gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cancel_button", cancel_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (cancel_button);
+ gtk_container_add (GTK_CONTAINER (ok_cancel_hbuttonbox), cancel_button);
+ STFU GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT);
+
+ gtk_signal_connect (GTK_OBJECT (opt_notebook), "switch_page",
+ GTK_SIGNAL_FUNC (settings_switch_page_cb),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (manual), "clicked",
+ GTK_SIGNAL_FUNC (manual_cb),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (adv_button), "clicked",
+ GTK_SIGNAL_FUNC (settings_adv_cb),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (std_button), "clicked",
+ GTK_SIGNAL_FUNC (settings_std_cb),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (reset_button), "clicked",
+ GTK_SIGNAL_FUNC (settings_reset_cb),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (ok_button), "clicked",
+ GTK_SIGNAL_FUNC (settings_ok_cb),
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (settings_cancel_cb),
+ NULL);
+
+ gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "tooltips", tooltips);
+
+ return xscreensaver_settings_dialog;
+}
+