diff options
-rw-r--r-- | capplets/screensaver/ChangeLog | 13 | ||||
-rw-r--r-- | capplets/screensaver/prefs-widget.c | 133 | ||||
-rw-r--r-- | capplets/screensaver/screensaver-prefs-dialog.c | 10 | ||||
-rw-r--r-- | capplets/screensaver/screensaver-properties.glade | 12 | ||||
-rw-r--r-- | capplets/screensaver/screensaver-properties.glade.h | 1 |
5 files changed, 132 insertions, 37 deletions
diff --git a/capplets/screensaver/ChangeLog b/capplets/screensaver/ChangeLog index 44b53f9ec..1e0c1e433 100644 --- a/capplets/screensaver/ChangeLog +++ b/capplets/screensaver/ChangeLog @@ -1,4 +1,17 @@ 2001-07-03 Richard Hestilow <hestilow@ximian.com> + + * prefs-widget.c: + (add_select_cb, screensaver_add_cb, screensaver_remove_cb): Added. + (prefs_widget_init): Connect to "Add" and "Remove" + + * screensaver-prefs-dialog.c (get_basic_screensaver_widget): Replace + confusing stuff with ultra-simple dialog. + + * screensaver-properties.glade[.h]: Remove "Demo" popup item, as it + is on the settings dialogs and is not easy to manage with + menu selection anyway. (Too much mouse movement). + +2001-07-03 Richard Hestilow <hestilow@ximian.com> * screensaver-properties.glade[.h]: Added. diff --git a/capplets/screensaver/prefs-widget.c b/capplets/screensaver/prefs-widget.c index 5e410a1d3..284f14bf2 100644 --- a/capplets/screensaver/prefs-widget.c +++ b/capplets/screensaver/prefs-widget.c @@ -5,6 +5,7 @@ #include "prefs-widget.h" #include "preview.h" #include "screensaver-prefs-dialog.h" +#include "selection-dialog.h" #include "rc-parse.h" #include <gal/e-table/e-table.h> #include <gal/e-table/e-table-simple.h> @@ -65,28 +66,37 @@ static void popup_item_menu (ETable *table, int row, int col, GdkEvent *event, PrefsWidget *prefs_widget); -static void about_cb (GtkWidget *widget, - PrefsWidget *prefs_widget); -static void settings_cb (GtkWidget *button, - PrefsWidget *widget); -static void pwr_manage_toggled_cb (GtkWidget *button, - PrefsWidget *prefs_widget); -static void pwr_conf_cb (GtkWidget *button, - PrefsWidget *prefs_widget); -static void pwr_conf_button_cb (GnomeDialog *dlg, - gint button, - PrefsWidget *prefs_widget); -static void pwr_save_prefs (PrefsWidget *prefs_widget); -static void pwr_restore_prefs (PrefsWidget *prefs_widget); -static time_t pwr_get_toggled_entry (PrefsWidget *prefs_widget, - const gchar *enable_str, - const gchar *entry_str); -static void pwr_set_toggled_entry (PrefsWidget *prefs_widget, - const gchar *enable_str, - const gchar *entry_str, - time_t value); - -static const gchar *table_compute_state (SelectionMode mode); +static void about_cb (GtkWidget *widget, + PrefsWidget *prefs_widget); +static void settings_cb (GtkWidget *button, + PrefsWidget *widget); +static void pwr_manage_toggled_cb (GtkWidget *button, + PrefsWidget *prefs_widget); +static void pwr_conf_cb (GtkWidget *button, + PrefsWidget *prefs_widget); +static void pwr_conf_button_cb (GnomeDialog *dlg, + gint button, + PrefsWidget *prefs_widget); +static void pwr_save_prefs (PrefsWidget *prefs_widget); +static void pwr_restore_prefs (PrefsWidget *prefs_widget); +static time_t pwr_get_toggled_entry (PrefsWidget *prefs_widget, + const gchar *enable_str, + const gchar *entry_str); +static void pwr_set_toggled_entry (PrefsWidget *prefs_widget, + const gchar *enable_str, + const gchar *entry_str, + time_t value); + +static const gchar *table_compute_state (SelectionMode mode); + +static void add_select_cb (GtkWidget *widget, + Screensaver *saver, + PrefsWidget *prefs_widget); +static void screensaver_add_cb (GtkWidget *button, + PrefsWidget *prefs_widget); +static void screensaver_remove_cb (GtkWidget *button, + PrefsWidget *prefs_widget); + /* Model declarations */ static int model_col_count (ETableModel *etm, void *data); static int model_row_count (ETableModel *etm, void *data); @@ -282,6 +292,16 @@ prefs_widget_init (PrefsWidget *prefs_widget) gtk_signal_connect (GTK_OBJECT (widget), "activate", GTK_SIGNAL_FUNC (settings_cb), prefs_widget); + + widget = WID ("popup_add"); + gtk_signal_connect (GTK_OBJECT (widget), "activate", + GTK_SIGNAL_FUNC (screensaver_add_cb), + prefs_widget); + + widget = WID ("popup_remove"); + gtk_signal_connect (GTK_OBJECT (widget), "activate", + GTK_SIGNAL_FUNC (screensaver_remove_cb), + prefs_widget); } static void @@ -502,7 +522,7 @@ set_random_timeout (PrefsWidget *prefs_widget, gboolean do_random) static const gchar * table_compute_state (SelectionMode mode) { - if (mode == SM_ONE_SCREENSAVER_ONLY) + if (mode != SM_CHOOSE_FROM_LIST) return "<ETableState><column source=\"1\"/><grouping></grouping></ETableState>"; else return "<ETableState><column source=\"0\"/><column source=\"1\"/><grouping></grouping></ETableState>"; } @@ -945,3 +965,70 @@ pwr_state_changed_cb (GtkWidget *widget, PrefsWidget *prefs_widget) gnome_dialog_set_sensitive (GNOME_DIALOG (dlg), GNOME_OK, TRUE); state_changed_cb (widget, prefs_widget); } + +static void +screensaver_add_cb (GtkWidget *button, PrefsWidget *prefs_widget) +{ + GtkWidget *dialog; + + dialog = selection_dialog_new (prefs_widget); + + gtk_signal_connect (GTK_OBJECT (dialog), "ok-clicked", + GTK_SIGNAL_FUNC (add_select_cb), prefs_widget); +} + +static void +screensaver_remove_cb (GtkWidget *button, PrefsWidget *prefs_widget) +{ + Screensaver *rm; + GList *l; + gint row; + + if (!prefs_widget->selected_saver) return; + + rm = prefs_widget->selected_saver; + + /* Find another screensaver to select */ + row = 0; + for (l = prefs_widget->screensavers; l != NULL; l = l->next) + { + if (l->data == rm) + break; + row++; + } + + prefs_widget->screensavers = + screensaver_remove (rm, prefs_widget->screensavers); + screensaver_destroy (rm); + + if (!prefs_widget->screensavers) + prefs_widget->selected_saver = NULL; + else + { + if (row < 0) + row = 0; + else + row--; + + e_selection_model_select_single_row ( + E_SELECTION_MODEL (E_TABLE (prefs_widget->priv->table)->selection), row); + } + + state_changed_cb (button, prefs_widget); +} + +static void +add_select_cb (GtkWidget *widget, Screensaver *saver, + PrefsWidget *prefs_widget) +{ + gint row; + + prefs_widget->screensavers = + screensaver_add (saver, prefs_widget->screensavers); + + row = g_list_length (prefs_widget->screensavers) - 1; + e_selection_model_select_single_row ( + E_SELECTION_MODEL (E_TABLE (prefs_widget->priv->table)->selection), row); + + settings_cb (widget, prefs_widget); +} diff --git a/capplets/screensaver/screensaver-prefs-dialog.c b/capplets/screensaver/screensaver-prefs-dialog.c index efb18779a..78b50b34e 100644 --- a/capplets/screensaver/screensaver-prefs-dialog.c +++ b/capplets/screensaver/screensaver-prefs-dialog.c @@ -285,7 +285,7 @@ screensaver_prefs_dialog_new (Screensaver *saver) xmlDocGetRootElement (dialog->argument_doc); } - if (dialog->cli_args_db && dialog->argument_data) { + if (dialog->cli_args_db && dialog->argument_data && dialog->argument_data->childs && dialog->argument_data->childs->next) { settings_widget = get_screensaver_widget (dialog); } else { @@ -1357,6 +1357,13 @@ get_basic_screensaver_widget (ScreensaverPrefsDialog *dialog) vbox = gtk_vbox_new (FALSE, 10); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); + label = gtk_label_new (_("There are no configurable settings for this screensaver.")); + + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 5); + gtk_widget_show (label); + +#if 0 if (dialog->saver->name) { label = gtk_label_new (_("Cannot find the data to configure this " \ @@ -1412,6 +1419,7 @@ get_basic_screensaver_widget (ScreensaverPrefsDialog *dialog) gtk_box_pack_start (GTK_BOX (vbox), dialog->visual_combo, TRUE, FALSE, 5); +#endif return vbox; } diff --git a/capplets/screensaver/screensaver-properties.glade b/capplets/screensaver/screensaver-properties.glade index c13d37211..731bc3c7a 100644 --- a/capplets/screensaver/screensaver-properties.glade +++ b/capplets/screensaver/screensaver-properties.glade @@ -550,18 +550,6 @@ screensaver. </label> </widget> <widget> - <class>GtkMenuItem</class> - <name>popup_demo</name> - <signal> - <name>activate</name> - <handler>on_demo1_activate</handler> - <last_modification_time>Thu, 28 Jun 2001 16:18:44 GMT</last_modification_time> - </signal> - <label>_Demo</label> - <right_justify>False</right_justify> - </widget> - - <widget> <class>GtkPixmapMenuItem</class> <name>popup_about</name> <signal> diff --git a/capplets/screensaver/screensaver-properties.glade.h b/capplets/screensaver/screensaver-properties.glade.h index d8152d0f4..bb7cff99f 100644 --- a/capplets/screensaver/screensaver-properties.glade.h +++ b/capplets/screensaver/screensaver-properties.glade.h @@ -19,7 +19,6 @@ gchar *s = N_("There are no configurable settings for this\n" gchar *s = N_("_Add"); gchar *s = N_("_Settings"); gchar *s = N_("_Remove"); -gchar *s = N_("_Demo"); gchar *s = N_("_About this screensaver..."); gchar *s = N_("window1"); gchar *s = N_("minutes"); |