summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--capplets/screensaver/ChangeLog13
-rw-r--r--capplets/screensaver/prefs-widget.c133
-rw-r--r--capplets/screensaver/screensaver-prefs-dialog.c10
-rw-r--r--capplets/screensaver/screensaver-properties.glade12
-rw-r--r--capplets/screensaver/screensaver-properties.glade.h1
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");