summaryrefslogtreecommitdiff
path: root/src/eom-preferences-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eom-preferences-dialog.c')
-rw-r--r--src/eom-preferences-dialog.c307
1 files changed, 85 insertions, 222 deletions
diff --git a/src/eom-preferences-dialog.c b/src/eom-preferences-dialog.c
index 1eaa605..e11847b 100644
--- a/src/eom-preferences-dialog.c
+++ b/src/eom-preferences-dialog.c
@@ -35,65 +35,26 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <gtk/gtk.h>
-#include <mateconf/mateconf-client.h>
+#include <gio/gio.h>
#define EOM_PREFERENCES_DIALOG_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_PREFERENCES_DIALOG, EomPreferencesDialogPrivate))
G_DEFINE_TYPE (EomPreferencesDialog, eom_preferences_dialog, EOM_TYPE_DIALOG);
-enum {
- PROP_0,
- PROP_MATECONF_CLIENT,
-};
-
-#define MATECONF_OBJECT_KEY "MATECONF_KEY"
-#define MATECONF_OBJECT_VALUE "MATECONF_VALUE"
-#define TOGGLE_INVERT_VALUE "TOGGLE_INVERT_VALUE"
+#define GSETTINGS_OBJECT_KEY "GSETTINGS_KEY"
+#define GSETTINGS_OBJECT_VALUE "GSETTINGS_VALUE"
struct _EomPreferencesDialogPrivate {
- MateConfClient *client;
+ GSettings *view_settings;
+ GSettings *ui_settings;
+ GSettings *fullscreen_settings;
};
static GObject *instance = NULL;
static void
-pd_check_toggle_cb (GtkWidget *widget, gpointer data)
-{
- char *key = NULL;
- gboolean invert = FALSE;
- gboolean value;
-
- key = g_object_get_data (G_OBJECT (widget), MATECONF_OBJECT_KEY);
- invert = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), TOGGLE_INVERT_VALUE));
-
- value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
-
- if (key == NULL) return;
-
- mateconf_client_set_bool (MATECONF_CLIENT (data),
- key,
- (invert) ? !value : value,
- NULL);
-}
-
-static void
-pd_spin_button_changed_cb (GtkWidget *widget, gpointer data)
-{
- char *key = NULL;
-
- key = g_object_get_data (G_OBJECT (widget), MATECONF_OBJECT_KEY);
-
- if (key == NULL) return;
-
- mateconf_client_set_int (MATECONF_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)
+pd_color_change_cb (GtkColorButton *button, GSettings *settings)
{
GdkColor color;
char *key = NULL;
@@ -106,20 +67,17 @@ pd_color_change_cb (GtkColorButton *button, gpointer data)
color.green / 256,
color.blue / 256);
- key = g_object_get_data (G_OBJECT (button), MATECONF_OBJECT_KEY);
+ key = g_object_get_data (G_OBJECT (button), GSETTINGS_OBJECT_KEY);
if (key == NULL || value == NULL)
return;
- mateconf_client_set_string (MATECONF_CLIENT (data),
- key,
- value,
- NULL);
+ g_settings_set_string (settings, key, value);
g_free (value);
}
static void
-pd_radio_toggle_cb (GtkWidget *widget, gpointer data)
+pd_radio_toggle_cb (GtkWidget *widget, GSettings *settings)
{
char *key = NULL;
char *value = NULL;
@@ -127,16 +85,13 @@ pd_radio_toggle_cb (GtkWidget *widget, gpointer data)
if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
return;
- key = g_object_get_data (G_OBJECT (widget), MATECONF_OBJECT_KEY);
- value = g_object_get_data (G_OBJECT (widget), MATECONF_OBJECT_VALUE);
+ key = g_object_get_data (G_OBJECT (widget), GSETTINGS_OBJECT_KEY);
+ value = g_object_get_data (G_OBJECT (widget), GSETTINGS_OBJECT_VALUE);
if (key == NULL || value == NULL)
return;
- mateconf_client_set_string (MATECONF_CLIENT (data),
- key,
- value,
- NULL);
+ g_settings_set_string (settings, key, value);
}
static void
@@ -152,36 +107,6 @@ eom_preferences_response_cb (GtkDialog *dlg, gint res_id, gpointer data)
}
}
-static void
-eom_preferences_dialog_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EomPreferencesDialog *pref_dlg = EOM_PREFERENCES_DIALOG (object);
-
- switch (prop_id) {
- case PROP_MATECONF_CLIENT:
- pref_dlg->priv->client = g_value_get_object (value);
- break;
- }
-}
-
-static void
-eom_preferences_dialog_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EomPreferencesDialog *pref_dlg = EOM_PREFERENCES_DIALOG (object);
-
- switch (prop_id) {
- case PROP_MATECONF_CLIENT:
- g_value_set_object (value, pref_dlg->priv->client);
- break;
- }
-}
-
static GObject *
eom_preferences_dialog_constructor (GType type,
guint n_construct_properties,
@@ -222,8 +147,8 @@ eom_preferences_dialog_constructor (GType type,
"interpolate_check", &interpolate_check,
"extrapolate_check", &extrapolate_check,
"autorotate_check", &autorotate_check,
- "bg_color_check", &bg_color_check,
- "bg_color_button", &bg_color_button,
+ "bg_color_check", &bg_color_check,
+ "bg_color_button", &bg_color_button,
"color_radio", &color_radio,
"checkpattern_radio", &checkpattern_radio,
"background_radio", &background_radio,
@@ -239,61 +164,29 @@ eom_preferences_dialog_constructor (GType type,
G_CALLBACK (eom_preferences_response_cb),
dlg);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (interpolate_check),
- mateconf_client_get_bool (priv->client,
- EOM_CONF_VIEW_INTERPOLATE,
- NULL));
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (extrapolate_check),
- mateconf_client_get_bool (priv->client,
- EOM_CONF_VIEW_EXTRAPOLATE,
- NULL));
-
- g_object_set_data (G_OBJECT (interpolate_check),
- MATECONF_OBJECT_KEY,
- EOM_CONF_VIEW_INTERPOLATE);
-
- g_object_set_data (G_OBJECT (extrapolate_check),
- MATECONF_OBJECT_KEY,
- EOM_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),
- mateconf_client_get_bool (priv->client,
- EOM_CONF_VIEW_AUTOROTATE,
- NULL));
-
- g_object_set_data (G_OBJECT (autorotate_check),
- MATECONF_OBJECT_KEY,
- EOM_CONF_VIEW_AUTOROTATE);
-
- g_signal_connect (G_OBJECT (autorotate_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bg_color_check),
- mateconf_client_get_bool (priv->client,
- EOM_CONF_VIEW_USE_BG_COLOR, NULL));
- g_object_set_data (G_OBJECT (bg_color_check),
- MATECONF_OBJECT_KEY,
- EOM_CONF_VIEW_USE_BG_COLOR);
- g_signal_connect (G_OBJECT (bg_color_check),
- "toggled", G_CALLBACK (pd_check_toggle_cb),
- priv->client);
-
- value = mateconf_client_get_string (priv->client,
- EOM_CONF_VIEW_BACKGROUND_COLOR,
- NULL);
+ g_settings_bind (priv->view_settings,
+ EOM_CONF_VIEW_INTERPOLATE,
+ G_OBJECT (interpolate_check),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->view_settings,
+ EOM_CONF_VIEW_EXTRAPOLATE,
+ G_OBJECT (extrapolate_check),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->view_settings,
+ EOM_CONF_VIEW_AUTOROTATE,
+ G_OBJECT (autorotate_check),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->view_settings,
+ EOM_CONF_VIEW_USE_BG_COLOR,
+ G_OBJECT (bg_color_check),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ value = g_settings_get_string (priv->view_settings,
+ EOM_CONF_VIEW_BACKGROUND_COLOR);
if (gdk_color_parse (value, &color)){
gtk_color_button_set_color (GTK_COLOR_BUTTON (bg_color_button),
&color);
@@ -301,58 +194,55 @@ eom_preferences_dialog_constructor (GType type,
g_free (value);
g_object_set_data (G_OBJECT (bg_color_button),
- MATECONF_OBJECT_KEY,
+ GSETTINGS_OBJECT_KEY,
EOM_CONF_VIEW_BACKGROUND_COLOR);
g_signal_connect (G_OBJECT (bg_color_button),
"color-set",
G_CALLBACK (pd_color_change_cb),
- priv->client);
-
-
+ priv->view_settings);
g_object_set_data (G_OBJECT (color_radio),
- MATECONF_OBJECT_KEY,
+ GSETTINGS_OBJECT_KEY,
EOM_CONF_VIEW_TRANSPARENCY);
g_object_set_data (G_OBJECT (color_radio),
- MATECONF_OBJECT_VALUE,
+ GSETTINGS_OBJECT_VALUE,
"COLOR");
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),
- MATECONF_OBJECT_KEY,
+ GSETTINGS_OBJECT_KEY,
EOM_CONF_VIEW_TRANSPARENCY);
g_object_set_data (G_OBJECT (checkpattern_radio),
- MATECONF_OBJECT_VALUE,
+ GSETTINGS_OBJECT_VALUE,
"CHECK_PATTERN");
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),
- MATECONF_OBJECT_KEY,
+ GSETTINGS_OBJECT_KEY,
EOM_CONF_VIEW_TRANSPARENCY);
g_object_set_data (G_OBJECT (background_radio),
- MATECONF_OBJECT_VALUE,
+ GSETTINGS_OBJECT_VALUE,
"NONE");
g_signal_connect (G_OBJECT (background_radio),
"toggled",
G_CALLBACK (pd_radio_toggle_cb),
- priv->client);
+ priv->view_settings);
- value = mateconf_client_get_string (priv->client,
- EOM_CONF_VIEW_TRANSPARENCY,
- NULL);
+ value = g_settings_get_string (priv->view_settings,
+ EOM_CONF_VIEW_TRANSPARENCY);
if (g_ascii_strcasecmp (value, "COLOR") == 0) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radio), TRUE);
@@ -366,9 +256,8 @@ eom_preferences_dialog_constructor (GType type,
g_free (value);
- value = mateconf_client_get_string (priv->client,
- EOM_CONF_VIEW_TRANS_COLOR,
- NULL);
+ value = g_settings_get_string (priv->view_settings,
+ EOM_CONF_VIEW_TRANS_COLOR);
if (gdk_color_parse (value, &color)) {
gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button),
@@ -376,57 +265,33 @@ eom_preferences_dialog_constructor (GType type,
}
g_object_set_data (G_OBJECT (color_button),
- MATECONF_OBJECT_KEY,
+ GSETTINGS_OBJECT_KEY,
EOM_CONF_VIEW_TRANS_COLOR);
g_signal_connect (G_OBJECT (color_button),
"color-set",
G_CALLBACK (pd_color_change_cb),
- priv->client);
+ priv->view_settings);
g_free (value);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (upscale_check),
- mateconf_client_get_bool (priv->client,
- EOM_CONF_FULLSCREEN_UPSCALE,
- NULL));
+ g_settings_bind (priv->fullscreen_settings,
+ EOM_CONF_FULLSCREEN_UPSCALE,
+ G_OBJECT (upscale_check),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
- g_object_set_data (G_OBJECT (upscale_check),
- MATECONF_OBJECT_KEY,
- EOM_CONF_FULLSCREEN_UPSCALE);
+ g_settings_bind (priv->fullscreen_settings,
+ EOM_CONF_FULLSCREEN_LOOP,
+ G_OBJECT (loop_check),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
- g_signal_connect (G_OBJECT (upscale_check),
- "toggled",
- G_CALLBACK (pd_check_toggle_cb),
- priv->client);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (loop_check),
- mateconf_client_get_bool (priv->client,
- EOM_CONF_FULLSCREEN_LOOP,
- NULL));
-
- g_object_set_data (G_OBJECT (loop_check),
- MATECONF_OBJECT_KEY,
- EOM_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),
- mateconf_client_get_int (priv->client,
- EOM_CONF_FULLSCREEN_SECONDS,
- NULL));
-
- g_object_set_data (G_OBJECT (seconds_spin),
- MATECONF_OBJECT_KEY,
- EOM_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,
+ EOM_CONF_FULLSCREEN_SECONDS,
+ G_OBJECT (seconds_spin),
+ "value",
+ G_SETTINGS_BIND_DEFAULT);
plugin_manager = eom_plugin_manager_new ();
@@ -444,25 +309,22 @@ eom_preferences_dialog_constructor (GType type,
}
static void
+eom_preferences_dialog_dispose (EomPreferencesDialog *pref_dlg)
+{
+ pref_dlg->priv = EOM_PREFERENCES_DIALOG_GET_PRIVATE (pref_dlg);
+
+ g_object_unref (pref_dlg->priv->view_settings);
+ g_object_unref (pref_dlg->priv->fullscreen_settings);
+ g_object_unref (pref_dlg->priv->ui_settings);
+}
+
+static void
eom_preferences_dialog_class_init (EomPreferencesDialogClass *class)
{
GObjectClass *g_object_class = (GObjectClass *) class;
g_object_class->constructor = eom_preferences_dialog_constructor;
- g_object_class->set_property = eom_preferences_dialog_set_property;
- g_object_class->get_property = eom_preferences_dialog_get_property;
-
- g_object_class_install_property (g_object_class,
- PROP_MATECONF_CLIENT,
- g_param_spec_object ("mateconf-client",
- "MateConf Client",
- "MateConf Client",
- MATECONF_TYPE_CLIENT,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_NAME |
- G_PARAM_STATIC_NICK |
- G_PARAM_STATIC_BLURB));
+ g_object_class->dispose = eom_preferences_dialog_dispose;
g_type_class_add_private (g_object_class, sizeof (EomPreferencesDialogPrivate));
}
@@ -472,16 +334,17 @@ eom_preferences_dialog_init (EomPreferencesDialog *pref_dlg)
{
pref_dlg->priv = EOM_PREFERENCES_DIALOG_GET_PRIVATE (pref_dlg);
- pref_dlg->priv->client = NULL;
+ pref_dlg->priv->view_settings = g_settings_new (EOM_CONF_VIEW_SCHEMA);
+ pref_dlg->priv->fullscreen_settings = g_settings_new (EOM_CONF_FULLSCREEN_SCHEMA);
+ pref_dlg->priv->ui_settings = g_settings_new (EOM_CONF_UI_SCHEMA);
}
GObject *
-eom_preferences_dialog_get_instance (GtkWindow *parent, MateConfClient *client)
+eom_preferences_dialog_get_instance (GtkWindow *parent)
{
if (instance == NULL) {
instance = g_object_new (EOM_TYPE_PREFERENCES_DIALOG,
"parent-window", parent,
- "mateconf-client", client,
NULL);
}