[eog] Have GSettings use enum for transparency style



commit e8f2f6ecdd99dc5dce35a044e84738fe73f937e0
Author: Felix Riemann <friemann gnome org>
Date:   Wed Jul 28 22:54:28 2010 +0200

    Have GSettings use enum for transparency style
    
    Removes quite a bit of code. Makes it unavailable for
    gsettings-data-convert though.

 data/eog.convert                     |    1 -
 data/org.gnome.eog.gschema.xml.in.in |    4 +-
 src/eog-preferences-dialog.c         |   59 +++++++++++++--------------------
 src/eog-scroll-view.c                |   35 +-------------------
 4 files changed, 27 insertions(+), 72 deletions(-)
---
diff --git a/data/eog.convert b/data/eog.convert
index 4f95606..675ede9 100644
--- a/data/eog.convert
+++ b/data/eog.convert
@@ -25,7 +25,6 @@ extrapolate=/apps/eog/view/extrapolate
 interpolate=/apps/eog/view/interpolate
 scroll-wheel-zoom=/apps/eog/view/scroll_wheel_zoom
 trans-color=/apps/eog/view/trans_color
-transparency=/apps/eog/view/transparency
 use-background-color=/apps/eog/view/use-background-color
 zoom-multiplier=/apps/eog/view/zoom_multiplier
 
diff --git a/data/org.gnome.eog.gschema.xml.in.in b/data/org.gnome.eog.gschema.xml.in.in
index 521c49d..862bde2 100644
--- a/data/org.gnome.eog.gschema.xml.in.in
+++ b/data/org.gnome.eog.gschema.xml.in.in
@@ -26,8 +26,8 @@
       <_summary>Extrapolate Image</_summary>
       <_description>Whether the image should be extrapolated on zoom-in. This leads to blurry quality and is somewhat slower than non-extrapolated images.</_description>
     </key>
-    <key name="transparency" type="s">
-      <default>'CHECK_PATTERN'</default>
+    <key name="transparency" enum="org.gnome.eog.EogTransparencyStyle">
+      <default>'checked'</default>
       <_summary>Transparency indicator</_summary>
       <_description>Determines how transparency should be indicated. Valid values are CHECK_PATTERN, COLOR and NONE. If COLOR is choosen, then the trans-color key determines the used color value.</_description>
     </key>
diff --git a/src/eog-preferences-dialog.c b/src/eog-preferences-dialog.c
index 1db3988..f6afb83 100644
--- a/src/eog-preferences-dialog.c
+++ b/src/eog-preferences-dialog.c
@@ -28,6 +28,7 @@
 
 #include "eog-preferences-dialog.h"
 #include "eog-plugin-manager.h"
+#include "eog-scroll-view.h"
 #include "eog-util.h"
 #include "eog-config-keys.h"
 
@@ -92,21 +93,17 @@ pd_color_to_string_mapping (const GValue       *value,
 }
 
 static void
-pd_radio_toggle_cb (GtkWidget *widget, gpointer data)
+pd_transp_radio_toggle_cb (GtkWidget *widget, gpointer data)
 {
-	char *key = NULL;
-	char *value = NULL;
+	gpointer value = NULL;
 
 	if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
 	    return;
 
-	key = g_object_get_data (G_OBJECT (widget), GCONF_OBJECT_KEY);
 	value = g_object_get_data (G_OBJECT (widget), GCONF_OBJECT_VALUE);
 
-	if (key == NULL || value == NULL)
-		return;
-
-	g_settings_set_string (G_SETTINGS (data), key, value);
+	g_settings_set_enum (G_SETTINGS (data), EOG_CONF_VIEW_TRANSPARENCY,
+			     GPOINTER_TO_INT (value));
 }
 
 static void
@@ -145,7 +142,6 @@ eog_preferences_dialog_constructor (GType type,
 	GtkWidget *plugin_manager;
 	GtkWidget *plugin_manager_container;
 	GObject *object;
-	gchar *value;
 
 	object = G_OBJECT_CLASS (eog_preferences_dialog_parent_class)->constructor
 			(type, n_construct_properties, construct_params);
@@ -197,60 +193,51 @@ eog_preferences_dialog_constructor (GType type,
 				      pd_string_to_color_mapping,
 				      pd_color_to_string_mapping,
 				      NULL, NULL);
-	g_object_set_data (G_OBJECT (color_radio),
-			   GCONF_OBJECT_KEY,
-			   EOG_CONF_VIEW_TRANSPARENCY);
 
 	g_object_set_data (G_OBJECT (color_radio),
 			   GCONF_OBJECT_VALUE,
-			   "COLOR");
+			   GINT_TO_POINTER (EOG_TRANSP_COLOR));
 
 	g_signal_connect (G_OBJECT (color_radio),
 			  "toggled",
-			  G_CALLBACK (pd_radio_toggle_cb),
+			  G_CALLBACK (pd_transp_radio_toggle_cb),
 			  priv->view_settings);
 
 	g_object_set_data (G_OBJECT (checkpattern_radio),
-			   GCONF_OBJECT_KEY,
-			   EOG_CONF_VIEW_TRANSPARENCY);
-
-	g_object_set_data (G_OBJECT (checkpattern_radio),
 			   GCONF_OBJECT_VALUE,
-			   "CHECK_PATTERN");
+			   GINT_TO_POINTER (EOG_TRANSP_CHECKED));
 
 	g_signal_connect (G_OBJECT (checkpattern_radio),
 			  "toggled",
-			  G_CALLBACK (pd_radio_toggle_cb),
+			  G_CALLBACK (pd_transp_radio_toggle_cb),
 			  priv->view_settings);
 
 	g_object_set_data (G_OBJECT (background_radio),
-			   GCONF_OBJECT_KEY,
-			   EOG_CONF_VIEW_TRANSPARENCY);
-
-	g_object_set_data (G_OBJECT (background_radio),
 			   GCONF_OBJECT_VALUE,
-			   "NONE");
+			   GINT_TO_POINTER (EOG_TRANSP_BACKGROUND));
 
 	g_signal_connect (G_OBJECT (background_radio),
 			  "toggled",
-			  G_CALLBACK (pd_radio_toggle_cb),
+			  G_CALLBACK (pd_transp_radio_toggle_cb),
 			  priv->view_settings);
 
-	value = g_settings_get_string (priv->view_settings,
-				       EOG_CONF_VIEW_TRANSPARENCY);
-
-	if (g_ascii_strcasecmp (value, "COLOR") == 0) {
+	switch (g_settings_get_enum (priv->view_settings,
+				     EOG_CONF_VIEW_TRANSPARENCY))
+	{
+	case EOG_TRANSP_COLOR:
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radio), TRUE);
-	}
-	else if (g_ascii_strcasecmp (value, "CHECK_PATTERN") == 0) {
+		break;
+	case EOG_TRANSP_CHECKED:
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkpattern_radio), TRUE);
-	}
-	else {
+		break;
+	default:
+		// Log a warning and use EOG_TRANSP_BACKGROUND as fallback
+		g_warn_if_reached();
+	case EOG_TRANSP_BACKGROUND:
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (background_radio), TRUE);
+		break;
 	}
 
-	g_free (value);
-
 	g_settings_bind_with_mapping (priv->view_settings,
 				      EOG_CONF_VIEW_TRANS_COLOR,
 				      color_button, "color",
diff --git a/src/eog-scroll-view.c b/src/eog-scroll-view.c
index e7fcbc6..5a6ba4d 100644
--- a/src/eog-scroll-view.c
+++ b/src/eog-scroll-view.c
@@ -2259,34 +2259,6 @@ sv_color_to_string_mapping (const GValue       *value,
 	return variant;
 }
 
-static gboolean
-sv_string_to_transp_mapping (GValue   *value,
-			     GVariant *variant,
-			     gpointer  user_data)
-{
-	const gchar *str;
-
-	g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING), FALSE);
-
-	str = g_variant_get_string (variant, NULL);
-
-	if (!str)
-		return FALSE;
-
-	if (g_ascii_strcasecmp (str, "COLOR") == 0)
-		g_value_set_enum (value, EOG_TRANSP_COLOR);
-	else if (g_ascii_strcasecmp (str, "CHECK_PATTERN") == 0)
-		g_value_set_enum (value, EOG_TRANSP_CHECKED);
-	else if (g_ascii_strcasecmp (str, "NONE") == 0)
-		g_value_set_enum (value, EOG_TRANSP_BACKGROUND);
-	else
-		return FALSE;
-
-	return TRUE;
-}
-
-
-
 static void
 eog_scroll_view_init (EogScrollView *view)
 {
@@ -2400,11 +2372,8 @@ eog_scroll_view_init (EogScrollView *view)
 				      G_SETTINGS_BIND_GET,
 				      sv_string_to_color_mapping,
 				      sv_color_to_string_mapping, NULL, NULL);
-	g_settings_bind_with_mapping (settings, EOG_CONF_VIEW_TRANSPARENCY,
-				      view, "transparency-style",
-				      G_SETTINGS_BIND_GET,
-				      sv_string_to_transp_mapping,
-				      NULL, NULL, NULL);
+	g_settings_bind (settings, EOG_CONF_VIEW_TRANSPARENCY, view,
+			 "transparency-style", G_SETTINGS_BIND_GET);
 	g_settings_bind (settings, EOG_CONF_VIEW_EXTRAPOLATE, view,
 			 "antialiasing-in", G_SETTINGS_BIND_GET);
 	g_settings_bind (settings, EOG_CONF_VIEW_INTERPOLATE, view,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]