[eog] [GSettings] Convert EogPreferencesDialog to GSettings
- From: Felix Riemann <friemann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [eog] [GSettings] Convert EogPreferencesDialog to GSettings
- Date: Sun, 6 Jun 2010 14:42:20 +0000 (UTC)
commit 667693ec829779ae96cb2c9b2fb0e692796c1d2e
Author: Felix Riemann <friemann gnome org>
Date: Sun May 30 22:52:07 2010 +0200
[GSettings] Convert EogPreferencesDialog to GSettings
src/eog-preferences-dialog.c | 287 ++++++++++--------------------------------
src/eog-preferences-dialog.h | 4 +-
src/eog-window.c | 3 +-
3 files changed, 69 insertions(+), 225 deletions(-)
---
diff --git a/src/eog-preferences-dialog.c b/src/eog-preferences-dialog.c
index 75276ac..a2ea1d8 100644
--- a/src/eog-preferences-dialog.c
+++ b/src/eog-preferences-dialog.c
@@ -35,87 +35,60 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
#define EOG_PREFERENCES_DIALOG_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), EOG_TYPE_PREFERENCES_DIALOG, EogPreferencesDialogPrivate))
G_DEFINE_TYPE (EogPreferencesDialog, eog_preferences_dialog, EOG_TYPE_DIALOG);
-enum {
- PROP_0,
- PROP_GCONF_CLIENT,
-};
-
#define GCONF_OBJECT_KEY "GCONF_KEY"
#define GCONF_OBJECT_VALUE "GCONF_VALUE"
-#define TOGGLE_INVERT_VALUE "TOGGLE_INVERT_VALUE"
struct _EogPreferencesDialogPrivate {
- GConfClient *client;
+ GSettings *view_settings;
+ GSettings *fullscreen_settings;
};
static GObject *instance = NULL;
-static void
-pd_check_toggle_cb (GtkWidget *widget, gpointer data)
+static gboolean
+pd_string_to_color_mapping (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
{
- char *key = NULL;
- gboolean invert = FALSE;
- gboolean value;
-
- key = g_object_get_data (G_OBJECT (widget), GCONF_OBJECT_KEY);
- invert = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), TOGGLE_INVERT_VALUE));
+ GdkColor color;
- value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+ g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING), FALSE);
- if (key == NULL) return;
+ if (gdk_color_parse (g_variant_get_string (variant, NULL), &color)) {
+ g_value_set_boxed (value, &color);
+ return TRUE;
+ }
- gconf_client_set_bool (GCONF_CLIENT (data),
- key,
- (invert) ? !value : value,
- NULL);
+ return FALSE;
}
-static void
-pd_spin_button_changed_cb (GtkWidget *widget, gpointer data)
+static GVariant*
+pd_color_to_string_mapping (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
{
- char *key = NULL;
-
- key = g_object_get_data (G_OBJECT (widget), GCONF_OBJECT_KEY);
-
- if (key == NULL) return;
-
- gconf_client_set_int (GCONF_CLIENT (data),
- key,
- gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)),
- NULL);
-}
-
-static void
-pd_color_change_cb (GtkColorButton *button, gpointer data)
-{
- GdkColor color;
- char *key = NULL;
- char *value = NULL;
-
- gtk_color_button_get_color (button, &color);
-
- value = g_strdup_printf ("#%02X%02X%02X",
- color.red / 256,
- color.green / 256,
- color.blue / 256);
-
- key = g_object_get_data (G_OBJECT (button), GCONF_OBJECT_KEY);
-
- if (key == NULL || value == NULL)
- return;
-
- gconf_client_set_string (GCONF_CLIENT (data),
- key,
- value,
- NULL);
- g_free (value);
+ GVariant *variant = NULL;
+ GdkColor *color;
+ gchar *hex_val;
+
+ g_return_val_if_fail (G_VALUE_TYPE (value) == GDK_TYPE_COLOR, NULL);
+ g_return_val_if_fail (g_variant_type_equal (expected_type, G_VARIANT_TYPE_STRING), NULL);
+
+ color = g_value_get_boxed (value);
+ hex_val = g_strdup_printf ("#%02X%02X%02X",
+ color->red / 256,
+ color->green / 256,
+ color->blue / 256);
+ variant = g_variant_new_string (hex_val);
+ g_free (hex_val);
+
+ return variant;
}
static void
@@ -133,10 +106,7 @@ pd_radio_toggle_cb (GtkWidget *widget, gpointer data)
if (key == NULL || value == NULL)
return;
- gconf_client_set_string (GCONF_CLIENT (data),
- key,
- value,
- NULL);
+ g_settings_set_string (G_SETTINGS (data), key, value);
}
static void
@@ -152,36 +122,6 @@ eog_preferences_response_cb (GtkDialog *dlg, gint res_id, gpointer data)
}
}
-static void
-eog_preferences_dialog_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EogPreferencesDialog *pref_dlg = EOG_PREFERENCES_DIALOG (object);
-
- switch (prop_id) {
- case PROP_GCONF_CLIENT:
- pref_dlg->priv->client = g_value_get_object (value);
- break;
- }
-}
-
-static void
-eog_preferences_dialog_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EogPreferencesDialog *pref_dlg = EOG_PREFERENCES_DIALOG (object);
-
- switch (prop_id) {
- case PROP_GCONF_CLIENT:
- g_value_set_object (value, pref_dlg->priv->client);
- break;
- }
-}
-
static GObject *
eog_preferences_dialog_constructor (GType type,
guint n_construct_properties,
@@ -203,7 +143,6 @@ eog_preferences_dialog_constructor (GType type,
GtkWidget *plugin_manager;
GtkWidget *plugin_manager_container;
GObject *object;
- GdkColor color;
gchar *value;
object = G_OBJECT_CLASS (eog_preferences_dialog_parent_class)->constructor
@@ -211,6 +150,9 @@ eog_preferences_dialog_constructor (GType type,
priv = EOG_PREFERENCES_DIALOG (object)->priv;
+ priv->view_settings = g_settings_new ("org.gnome.eog.view");
+ priv->fullscreen_settings = g_settings_new ("org.gnome.eog.full_screen");
+
eog_dialog_construct (EOG_DIALOG (object),
"eog-preferences-dialog.ui",
"eog_preferences_dialog");
@@ -235,51 +177,18 @@ eog_preferences_dialog_constructor (GType type,
G_CALLBACK (eog_preferences_response_cb),
dlg);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (interpolate_check),
- gconf_client_get_bool (priv->client,
- EOG_CONF_VIEW_INTERPOLATE,
- NULL));
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (extrapolate_check),
- gconf_client_get_bool (priv->client,
- EOG_CONF_VIEW_EXTRAPOLATE,
- NULL));
+ g_settings_bind (priv->view_settings, "interpolate", interpolate_check,
+ "active", G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->view_settings, "extrapolate", extrapolate_check,
+ "active", G_SETTINGS_BIND_DEFAULT);
- g_object_set_data (G_OBJECT (interpolate_check),
- GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_INTERPOLATE);
-
- g_object_set_data (G_OBJECT (extrapolate_check),
- GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_EXTRAPOLATE);
-
- g_signal_connect (G_OBJECT (interpolate_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
-
- g_signal_connect (G_OBJECT (extrapolate_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (autorotate_check),
- gconf_client_get_bool (priv->client,
- EOG_CONF_VIEW_AUTOROTATE,
- NULL));
-
- g_object_set_data (G_OBJECT (autorotate_check),
- GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_AUTOROTATE);
-
- g_signal_connect (G_OBJECT (autorotate_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
+ g_settings_bind (priv->view_settings, "autorotate", autorotate_check,
+ "active", G_SETTINGS_BIND_DEFAULT);
g_object_set_data (G_OBJECT (color_radio),
GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_TRANSPARENCY);
+ //EOG_CONF_VIEW_TRANSPARENCY);
+ "transparency");
g_object_set_data (G_OBJECT (color_radio),
GCONF_OBJECT_VALUE,
@@ -288,11 +197,12 @@ eog_preferences_dialog_constructor (GType type,
g_signal_connect (G_OBJECT (color_radio),
"toggled",
G_CALLBACK (pd_radio_toggle_cb),
- priv->client);
+ priv->view_settings);
g_object_set_data (G_OBJECT (checkpattern_radio),
GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_TRANSPARENCY);
+ //EOG_CONF_VIEW_TRANSPARENCY);
+ "transparency");
g_object_set_data (G_OBJECT (checkpattern_radio),
GCONF_OBJECT_VALUE,
@@ -301,11 +211,12 @@ eog_preferences_dialog_constructor (GType type,
g_signal_connect (G_OBJECT (checkpattern_radio),
"toggled",
G_CALLBACK (pd_radio_toggle_cb),
- priv->client);
+ priv->view_settings);
g_object_set_data (G_OBJECT (background_radio),
GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_TRANSPARENCY);
+ //EOG_CONF_VIEW_TRANSPARENCY);
+ "transparency");
g_object_set_data (G_OBJECT (background_radio),
GCONF_OBJECT_VALUE,
@@ -314,11 +225,10 @@ eog_preferences_dialog_constructor (GType type,
g_signal_connect (G_OBJECT (background_radio),
"toggled",
G_CALLBACK (pd_radio_toggle_cb),
- priv->client);
+ priv->view_settings);
- value = gconf_client_get_string (priv->client,
- EOG_CONF_VIEW_TRANSPARENCY,
- NULL);
+ value = g_settings_get_string (priv->view_settings,
+ "transparency");
if (g_ascii_strcasecmp (value, "COLOR") == 0) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radio), TRUE);
@@ -332,67 +242,21 @@ eog_preferences_dialog_constructor (GType type,
g_free (value);
- value = gconf_client_get_string (priv->client,
- EOG_CONF_VIEW_TRANS_COLOR,
- NULL);
+ g_settings_bind_with_mapping (priv->view_settings, "trans_color",
+ color_button, "color",
+ G_SETTINGS_BIND_DEFAULT,
+ pd_string_to_color_mapping,
+ pd_color_to_string_mapping,
+ NULL, NULL);
- if (gdk_color_parse (value, &color)) {
- gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button),
- &color);
- }
-
- g_object_set_data (G_OBJECT (color_button),
- GCONF_OBJECT_KEY,
- EOG_CONF_VIEW_TRANS_COLOR);
-
- g_signal_connect (G_OBJECT (color_button),
- "color-set",
- G_CALLBACK (pd_color_change_cb),
- priv->client);
-
- g_free (value);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (upscale_check),
- gconf_client_get_bool (priv->client,
- EOG_CONF_FULLSCREEN_UPSCALE,
- NULL));
+ g_settings_bind (priv->fullscreen_settings, "upscale", upscale_check,
+ "active", G_SETTINGS_BIND_DEFAULT);
- g_object_set_data (G_OBJECT (upscale_check),
- GCONF_OBJECT_KEY,
- EOG_CONF_FULLSCREEN_UPSCALE);
-
- g_signal_connect (G_OBJECT (upscale_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
+ g_settings_bind (priv->fullscreen_settings, "loop", loop_check,
+ "active", G_SETTINGS_BIND_DEFAULT);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (loop_check),
- gconf_client_get_bool (priv->client,
- EOG_CONF_FULLSCREEN_LOOP,
- NULL));
-
- g_object_set_data (G_OBJECT (loop_check),
- GCONF_OBJECT_KEY,
- EOG_CONF_FULLSCREEN_LOOP);
-
- g_signal_connect (G_OBJECT (loop_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
-
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (seconds_spin),
- gconf_client_get_int (priv->client,
- EOG_CONF_FULLSCREEN_SECONDS,
- NULL));
-
- g_object_set_data (G_OBJECT (seconds_spin),
- GCONF_OBJECT_KEY,
- EOG_CONF_FULLSCREEN_SECONDS);
-
- g_signal_connect (G_OBJECT (seconds_spin),
- "value-changed",
- G_CALLBACK (pd_spin_button_changed_cb),
- priv->client);
+ g_settings_bind (priv->fullscreen_settings, "seconds", seconds_spin,
+ "value", G_SETTINGS_BIND_DEFAULT);
plugin_manager = eog_plugin_manager_new ();
@@ -415,20 +279,6 @@ eog_preferences_dialog_class_init (EogPreferencesDialogClass *class)
GObjectClass *g_object_class = (GObjectClass *) class;
g_object_class->constructor = eog_preferences_dialog_constructor;
- g_object_class->set_property = eog_preferences_dialog_set_property;
- g_object_class->get_property = eog_preferences_dialog_get_property;
-
- g_object_class_install_property (g_object_class,
- PROP_GCONF_CLIENT,
- g_param_spec_object ("gconf-client",
- "GConf Client",
- "GConf Client",
- GCONF_TYPE_CLIENT,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_NAME |
- G_PARAM_STATIC_NICK |
- G_PARAM_STATIC_BLURB));
g_type_class_add_private (g_object_class, sizeof (EogPreferencesDialogPrivate));
}
@@ -437,17 +287,14 @@ static void
eog_preferences_dialog_init (EogPreferencesDialog *pref_dlg)
{
pref_dlg->priv = EOG_PREFERENCES_DIALOG_GET_PRIVATE (pref_dlg);
-
- pref_dlg->priv->client = NULL;
}
GObject *
-eog_preferences_dialog_get_instance (GtkWindow *parent, GConfClient *client)
+eog_preferences_dialog_get_instance (GtkWindow *parent)
{
if (instance == NULL) {
instance = g_object_new (EOG_TYPE_PREFERENCES_DIALOG,
"parent-window", parent,
- "gconf-client", client,
NULL);
}
diff --git a/src/eog-preferences-dialog.h b/src/eog-preferences-dialog.h
index c02215f..c955acc 100644
--- a/src/eog-preferences-dialog.h
+++ b/src/eog-preferences-dialog.h
@@ -29,7 +29,6 @@
#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
G_BEGIN_DECLS
@@ -58,8 +57,7 @@ G_GNUC_INTERNAL
GType eog_preferences_dialog_get_type (void) G_GNUC_CONST;
G_GNUC_INTERNAL
-GObject *eog_preferences_dialog_get_instance (GtkWindow *parent,
- GConfClient *client);
+GObject *eog_preferences_dialog_get_instance (GtkWindow *parent);
G_END_DECLS
diff --git a/src/eog-window.c b/src/eog-window.c
index 81f35a5..ea0a17d 100644
--- a/src/eog-window.c
+++ b/src/eog-window.c
@@ -2553,8 +2553,7 @@ eog_window_cmd_preferences (GtkAction *action, gpointer user_data)
window = EOG_WINDOW (user_data);
- pref_dlg = eog_preferences_dialog_get_instance (GTK_WINDOW (window),
- window->priv->client);
+ pref_dlg = eog_preferences_dialog_get_instance (GTK_WINDOW (window));
eog_dialog_show (EOG_DIALOG (pref_dlg));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]