summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eom-config-keys.h10
-rw-r--r--src/eom-plugin-engine.c2
-rw-r--r--src/eom-preferences-dialog.c110
-rw-r--r--src/eom-scroll-view.c64
-rw-r--r--src/eom-window.c74
5 files changed, 126 insertions, 134 deletions
diff --git a/src/eom-config-keys.h b/src/eom-config-keys.h
index bf743a3..f91295a 100644
--- a/src/eom-config-keys.h
+++ b/src/eom-config-keys.h
@@ -27,6 +27,12 @@
#ifndef __EOM_CONFIG_KEYS_H__
#define __EOM_CONFIG_KEYS_H__
+#define EOM_CONF_DOMAIN "org.mate.eom"
+#define EOM_CONF_FULLSCREEN EOM_CONF_DOMAIN".full-screen"
+#define EOM_CONF_PLUGINS EOM_CONF_DOMAIN".plugins"
+#define EOM_CONF_UI EOM_CONF_DOMAIN".ui"
+#define EOM_CONF_VIEW EOM_CONF_DOMAIN".view"
+
#define EOM_CONF_BACKGROUND_SCHEMA "org.mate.background"
#define EOM_CONF_BACKGROUND_FILE "picture-filename"
@@ -35,7 +41,6 @@
#define EOM_CONF_LOCKDOWN_CAN_PRINT "disable-printing"
#define EOM_CONF_LOCKDOWN_CAN_SETUP_PAGE "disable-print-setup"
-#define EOM_CONF_VIEW_SCHEMA "org.mate.eom.view"
#define EOM_CONF_VIEW_BACKGROUND_COLOR "background-color"
#define EOM_CONF_VIEW_INTERPOLATE "interpolate"
#define EOM_CONF_VIEW_EXTRAPOLATE "extrapolate"
@@ -46,13 +51,11 @@
#define EOM_CONF_VIEW_TRANS_COLOR "trans-color"
#define EOM_CONF_VIEW_USE_BG_COLOR "use-background-color"
-#define EOM_CONF_FULLSCREEN_SCHEMA "org.mate.eom.full-screen"
#define EOM_CONF_FULLSCREEN_RANDOM "random"
#define EOM_CONF_FULLSCREEN_LOOP "loop"
#define EOM_CONF_FULLSCREEN_UPSCALE "upscale"
#define EOM_CONF_FULLSCREEN_SECONDS "seconds"
-#define EOM_CONF_UI_SCHEMA "org.mate.eom.ui"
#define EOM_CONF_UI_TOOLBAR "toolbar"
#define EOM_CONF_UI_STATUSBAR "statusbar"
#define EOM_CONF_UI_IMAGE_COLLECTION "image-collection"
@@ -65,7 +68,6 @@
#define EOM_CONF_UI_FILECHOOSER_XDG_FALLBACK "filechooser-xdg-fallback"
#define EOM_CONF_UI_PROPSDIALOG_NETBOOK_MODE "propsdialog-netbook-mode"
-#define EOM_CONF_PLUGINS_SCHEMA "org.mate.eom.plugins"
#define EOM_CONF_PLUGINS_ACTIVE_PLUGINS "active-plugins"
#endif /* __EOM_CONFIG_KEYS_H__ */
diff --git a/src/eom-plugin-engine.c b/src/eom-plugin-engine.c
index b283ea4..11a59ea 100644
--- a/src/eom-plugin-engine.c
+++ b/src/eom-plugin-engine.c
@@ -395,7 +395,7 @@ eom_plugin_engine_init (void)
return FALSE;
}
- eom_plugin_engine_settings = g_settings_new (EOM_CONF_PLUGINS_SCHEMA);
+ eom_plugin_engine_settings = g_settings_new (EOM_CONF_PLUGINS);
g_signal_connect (eom_plugin_engine_settings,
"changed::" EOM_CONF_PLUGINS_ACTIVE_PLUGINS,
diff --git a/src/eom-preferences-dialog.c b/src/eom-preferences-dialog.c
index d551341..7039fb0 100644
--- a/src/eom-preferences-dialog.c
+++ b/src/eom-preferences-dialog.c
@@ -55,27 +55,45 @@ struct _EomPreferencesDialogPrivate {
static GObject *instance = NULL;
-static void
-pd_color_change_cb (MateColorButton *button, GSettings *settings)
+static gboolean
+pd_string_to_color_mapping (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
{
GdkColor color;
- char *key = NULL;
- char *value = NULL;
- mate_color_button_get_color (button, &color);
+ g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING), FALSE);
- value = g_strdup_printf ("#%02X%02X%02X",
- color.red / 256,
- color.green / 256,
- color.blue / 256);
+ if (gdk_color_parse (g_variant_get_string (variant, NULL), &color)) {
+ g_value_set_boxed (value, &color);
+ return TRUE;
+ }
- key = g_object_get_data (G_OBJECT (button), GSETTINGS_OBJECT_KEY);
+ return FALSE;
+}
- if (key == NULL || value == NULL)
- return;
+static GVariant*
+pd_color_to_string_mapping (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
- g_settings_set_string (settings, key, value);
- 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
@@ -147,6 +165,9 @@ eom_preferences_dialog_constructor (GType type,
priv = EOM_PREFERENCES_DIALOG (object)->priv;
+ priv->view_settings = g_settings_new (EOM_CONF_VIEW);
+ priv->fullscreen_settings = g_settings_new (EOM_CONF_FULLSCREEN);
+
eom_dialog_construct (EOM_DIALOG (object),
"eom-preferences-dialog.ui",
"eom_preferences_dialog");
@@ -195,22 +216,13 @@ eom_preferences_dialog_constructor (GType type,
"active",
G_SETTINGS_BIND_DEFAULT);
- value = g_settings_get_string (priv->view_settings,
- EOM_CONF_VIEW_BACKGROUND_COLOR);
- if (gdk_color_parse (value, &color)){
- mate_color_button_set_color (MATE_COLOR_BUTTON (bg_color_button),
- &color);
- }
- g_free (value);
-
- g_object_set_data (G_OBJECT (bg_color_button),
- 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->view_settings);
+ g_settings_bind_with_mapping (priv->view_settings,
+ EOM_CONF_VIEW_BACKGROUND_COLOR,
+ bg_color_button, "color",
+ G_SETTINGS_BIND_DEFAULT,
+ pd_string_to_color_mapping,
+ pd_color_to_string_mapping,
+ NULL, NULL);
g_object_set_data (G_OBJECT (color_radio),
GSETTINGS_OBJECT_KEY,
@@ -266,30 +278,16 @@ eom_preferences_dialog_constructor (GType type,
g_free (value);
- value = g_settings_get_string (priv->view_settings,
- EOM_CONF_VIEW_TRANS_COLOR);
-
- if (gdk_color_parse (value, &color)) {
- mate_color_button_set_color (MATE_COLOR_BUTTON (color_button),
- &color);
- }
-
- g_object_set_data (G_OBJECT (color_button),
- GSETTINGS_OBJECT_KEY,
- EOM_CONF_VIEW_TRANS_COLOR);
-
- g_signal_connect (G_OBJECT (color_button),
- "color-set",
- G_CALLBACK (pd_color_change_cb),
- priv->view_settings);
-
- g_free (value);
+ g_settings_bind_with_mapping (priv->view_settings,
+ EOM_CONF_VIEW_TRANS_COLOR,
+ color_button, "color",
+ G_SETTINGS_BIND_DEFAULT,
+ pd_string_to_color_mapping,
+ pd_color_to_string_mapping,
+ NULL, NULL);
- g_settings_bind (priv->fullscreen_settings,
- EOM_CONF_FULLSCREEN_UPSCALE,
- G_OBJECT (upscale_check),
- "active",
- G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->fullscreen_settings, EOM_CONF_FULLSCREEN_UPSCALE,
+ upscale_check, "active", G_SETTINGS_BIND_DEFAULT);
g_settings_bind (priv->fullscreen_settings,
EOM_CONF_FULLSCREEN_LOOP,
@@ -357,9 +355,9 @@ eom_preferences_dialog_init (EomPreferencesDialog *pref_dlg)
{
pref_dlg->priv = EOM_PREFERENCES_DIALOG_GET_PRIVATE (pref_dlg);
- 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);
+ pref_dlg->priv->view_settings = g_settings_new (EOM_CONF_VIEW);
+ pref_dlg->priv->fullscreen_settings = g_settings_new (EOM_CONF_FULLSCREEN);
+ pref_dlg->priv->ui_settings = g_settings_new (EOM_CONF_UI);
}
GObject *
diff --git a/src/eom-scroll-view.c b/src/eom-scroll-view.c
index 52bce7e..01f22af 100644
--- a/src/eom-scroll-view.c
+++ b/src/eom-scroll-view.c
@@ -10,6 +10,7 @@
#include <librsvg/rsvg.h>
#endif
+#include "eom-config-keys.h"
#include "eom-marshal.h"
#include "eom-scroll-view.h"
#include "eom-debug.h"
@@ -2383,12 +2384,54 @@ eom_scroll_view_scrollbars_visible (EomScrollView *view)
object creation/freeing
---------------------------------*/
+static gboolean
+sv_string_to_color_mapping (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GdkColor color;
+
+ g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING), FALSE);
+
+ if (gdk_color_parse (g_variant_get_string (variant, NULL), &color)) {
+ g_value_set_boxed (value, &color);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static GVariant*
+sv_color_to_string_mapping (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
+ 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
eom_scroll_view_init (EomScrollView *view)
{
+ GSettings *settings;
EomScrollViewPrivate *priv;
priv = view->priv = EOM_SCROLL_VIEW_GET_PRIVATE (view);
+ settings = g_settings_new (EOM_CONF_VIEW);
priv->zoom = 1.0;
priv->min_zoom = MIN_ZOOM_FACTOR;
@@ -2408,8 +2451,6 @@ eom_scroll_view_init (EomScrollView *view)
priv->cursor = EOM_SCROLL_VIEW_CURSOR_NORMAL;
priv->menu = NULL;
priv->background_color = NULL;
- priv->override_bg_color = NULL;
- priv->background_surface = NULL;
priv->hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0, 100, 0, 10, 10, 100));
g_signal_connect (priv->hadj, "value_changed",
@@ -2488,6 +2529,17 @@ eom_scroll_view_init (EomScrollView *view)
GTK_FILL, GTK_FILL,
0, 0);
+ g_settings_bind (settings, EOM_CONF_VIEW_USE_BG_COLOR, view,
+ "use-background-color", G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind_with_mapping (settings, EOM_CONF_VIEW_BACKGROUND_COLOR,
+ view, "background-color",
+ G_SETTINGS_BIND_DEFAULT,
+ sv_string_to_color_mapping,
+ sv_color_to_string_mapping, NULL, NULL);
+ g_object_unref (settings);
+
+ priv->override_bg_color = NULL;
+ priv->background_surface = NULL;
}
static void
@@ -2805,12 +2857,12 @@ _eom_scroll_view_update_bg_color (EomScrollView *view)
const GdkColor *selected;
EomScrollViewPrivate *priv = view->priv;
- if (priv->override_bg_color)
+ if (!priv->use_bg_color)
+ selected = NULL;
+ else if (priv->override_bg_color)
selected = priv->override_bg_color;
- else if (priv->use_bg_color)
- selected = priv->background_color;
else
- selected = NULL;
+ selected = priv->background_color;
if (priv->transp_style == EOM_TRANSP_BACKGROUND
&& priv->background_surface != NULL) {
diff --git a/src/eom-window.c b/src/eom-window.c
index 2fb032e..db585f9 100644
--- a/src/eom-window.c
+++ b/src/eom-window.c
@@ -269,7 +269,7 @@ static void
eom_window_transparency_changed_cb (GSettings *settings, gchar *key, gpointer user_data)
{
EomWindowPrivate *priv;
- char *value = NULL;
+ gchar *value = NULL;
g_return_if_fail (EOM_IS_WINDOW (user_data));
@@ -285,7 +285,7 @@ eom_window_transparency_changed_cb (GSettings *settings, gchar *key, gpointer us
return;
} else if (g_ascii_strcasecmp (value, "COLOR") == 0) {
GdkColor color;
- char *color_str;
+ gchar *color_str;
color_str = g_settings_get_string (priv->view_settings, EOM_CONF_VIEW_TRANS_COLOR);
if (gdk_color_parse (color_str, &color)) {
@@ -304,56 +304,12 @@ eom_window_transparency_changed_cb (GSettings *settings, gchar *key, gpointer us
}
static void
-eom_window_bg_color_changed_cb (GSettings *settings, gchar *key, gpointer user_data)
-{
- EomWindowPrivate *priv;
- GdkColor color;
- char *color_str;
-
- g_return_if_fail (EOM_IS_WINDOW (user_data));
-
- eom_debug (DEBUG_PREFERENCES);
-
- priv = EOM_WINDOW (user_data)->priv;
-
- g_return_if_fail (EOM_IS_SCROLL_VIEW (priv->view));
-
- color_str = g_settings_get_string (settings, key);
-
- if (gdk_color_parse (color_str, &color)) {
- eom_scroll_view_set_background_color (EOM_SCROLL_VIEW (priv->view), &color);
- }
- g_free (color_str);
-}
-
-static void
-eom_window_use_bg_color_changed_cb (GSettings *settings, gchar *key, gpointer user_data)
-{
- EomWindowPrivate *priv;
- gboolean use_bg_color = TRUE;
-
- eom_debug (DEBUG_PREFERENCES);
-
- g_return_if_fail (EOM_IS_WINDOW (user_data));
-
- priv = EOM_WINDOW (user_data)->priv;
-
- g_return_if_fail (EOM_IS_SCROLL_VIEW (priv->view));
-
- use_bg_color = g_settings_get_boolean (settings, key);
-
- eom_scroll_view_set_use_bg_color (EOM_SCROLL_VIEW (priv->view),
- use_bg_color);
-}
-
-
-static void
eom_window_trans_color_changed_cb (GSettings *settings, gchar *key, gpointer user_data)
{
EomWindowPrivate *priv;
GdkColor color;
- char *color_str;
- char *value;
+ gchar *color_str = NULL;
+ gchar *value = NULL;
g_return_if_fail (EOM_IS_WINDOW (user_data));
@@ -4543,12 +4499,6 @@ eom_window_construct_ui (EomWindow *window)
eom_window_interp_out_type_changed_cb (priv->view_settings,
EOM_CONF_VIEW_INTERPOLATE,
window);
- eom_window_bg_color_changed_cb (priv->view_settings,
- EOM_CONF_VIEW_BACKGROUND_COLOR,
- window);
- eom_window_use_bg_color_changed_cb (priv->view_settings,
- EOM_CONF_VIEW_USE_BG_COLOR,
- window);
eom_window_transparency_changed_cb (priv->view_settings,
EOM_CONF_VIEW_TRANSPARENCY,
window);
@@ -4589,9 +4539,9 @@ eom_window_init (EomWindow *window)
priv = window->priv = EOM_WINDOW_GET_PRIVATE (window);
- priv->view_settings = g_settings_new (EOM_CONF_VIEW_SCHEMA);
- priv->ui_settings = g_settings_new (EOM_CONF_UI_SCHEMA);
- priv->fullscreen_settings = g_settings_new (EOM_CONF_FULLSCREEN_SCHEMA);
+ priv->view_settings = g_settings_new (EOM_CONF_VIEW);
+ priv->ui_settings = g_settings_new (EOM_CONF_UI);
+ priv->fullscreen_settings = g_settings_new (EOM_CONF_FULLSCREEN);
priv->lockdown_settings = g_settings_new (EOM_CONF_LOCKDOWN_SCHEMA);
g_signal_connect (priv->view_settings,
@@ -4605,16 +4555,6 @@ eom_window_init (EomWindow *window)
window);
g_signal_connect (priv->view_settings,
- "changed::" EOM_CONF_VIEW_BACKGROUND_COLOR,
- G_CALLBACK (eom_window_bg_color_changed_cb),
- window);
-
- g_signal_connect (priv->view_settings,
- "changed::" EOM_CONF_VIEW_USE_BG_COLOR,
- G_CALLBACK (eom_window_use_bg_color_changed_cb),
- window);
-
- g_signal_connect (priv->view_settings,
"changed::" EOM_CONF_VIEW_TRANSPARENCY,
G_CALLBACK (eom_window_transparency_changed_cb),
window);