[eog] Bind zoom multiplier to GSettings instead of setting it by hand



commit 0cadaebd5c7561991eceaf3ed9af32f50e63b1e9
Author: Felix Riemann <friemann gnome org>
Date:   Sat Jun 26 17:47:05 2010 +0200

    Bind zoom multiplier to GSettings instead of setting it by hand
    
    Another callback less in EogWindow.

 src/eog-scroll-view.c |   17 ++++++++++++++++-
 src/eog-window.c      |   32 ++------------------------------
 2 files changed, 18 insertions(+), 31 deletions(-)
---
diff --git a/src/eog-scroll-view.c b/src/eog-scroll-view.c
index 86942a2..d351418 100644
--- a/src/eog-scroll-view.c
+++ b/src/eog-scroll-view.c
@@ -76,7 +76,8 @@ static GtkTargetEntry target_table[] = {
 enum {
 	PROP_0,
 	PROP_USE_BG_COLOR,
-	PROP_BACKGROUND_COLOR
+	PROP_BACKGROUND_COLOR,
+	PROP_ZOOM_MULTIPLIER
 };
 
 /* Private part of the EogScrollView structure */
@@ -2325,6 +2326,9 @@ eog_scroll_view_get_property (GObject *object, guint property_id,
 		//FIXME: This doesn't really handle the NULL color.
 		g_value_set_boxed (value, priv->background_color);
 		break;
+	case PROP_ZOOM_MULTIPLIER:
+		g_value_set_double (value, priv->zoom_multiplier);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 	}
@@ -2352,6 +2356,9 @@ eog_scroll_view_set_property (GObject *object, guint property_id,
 		eog_scroll_view_set_background_color (view, color);
 		break;
 	}
+	case PROP_ZOOM_MULTIPLIER:
+		eog_scroll_view_set_zoom_multiplier (view, g_value_get_double (value));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 	}
@@ -2389,6 +2396,12 @@ eog_scroll_view_class_init (EogScrollViewClass *klass)
 		g_param_spec_boolean ("use-background-color", NULL, NULL, FALSE,
 				      G_PARAM_READWRITE | G_PARAM_STATIC_NAME));
 
+	g_object_class_install_property (
+		gobject_class, PROP_ZOOM_MULTIPLIER,
+		g_param_spec_double ("zoom-multiplier", NULL, NULL,
+				     -G_MAXDOUBLE, G_MAXDOUBLE, 0.05,
+				     G_PARAM_READWRITE | G_PARAM_STATIC_NAME));
+
 	view_signals [SIGNAL_ZOOM_CHANGED] =
 		g_signal_new ("zoom_changed",
 			      EOG_TYPE_SCROLL_VIEW,
@@ -2695,4 +2708,6 @@ eog_scroll_view_set_zoom_multiplier (EogScrollView *view,
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
         view->priv->zoom_multiplier = 1.0 + zoom_multiplier;
+
+	g_object_notify (G_OBJECT (view), "zoom-multiplier");
 }
diff --git a/src/eog-window.c b/src/eog-window.c
index 01d5a7e..22d5a95 100644
--- a/src/eog-window.c
+++ b/src/eog-window.c
@@ -286,28 +286,6 @@ eog_window_scroll_wheel_zoom_changed_cb (GSettings *settings,
 }
 
 static void
-eog_window_zoom_multiplier_changed_cb (GSettings *settings,
-				       gchar     *key,
-				       gpointer   user_data)
-{
-	EogWindowPrivate *priv;
-	gdouble multiplier = 0.05;
-
-	eog_debug (DEBUG_PREFERENCES);
-
-	g_return_if_fail (EOG_IS_WINDOW (user_data));
-
-	priv = EOG_WINDOW (user_data)->priv;
-
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
-
-	multiplier = g_settings_get_double (settings, key);
-
-	eog_scroll_view_set_zoom_multiplier (EOG_SCROLL_VIEW (priv->view),
-					     multiplier);
-}
-
-static void
 eog_window_transparency_changed_cb (GSettings *settings,
 				    gchar     *key,
 				    gpointer   user_data)
@@ -4333,6 +4311,8 @@ eog_window_construct_ui (EogWindow *window)
 			  "zoom_changed",
 			  G_CALLBACK (view_zoom_changed_cb),
 			  window);
+	g_settings_bind (priv->view_settings, EOG_CONF_VIEW_ZOOM_MULTIPLIER,
+			 priv->view, "zoom-multiplier", G_SETTINGS_BIND_GET);
 
 	view_popup = gtk_ui_manager_get_widget (priv->ui_mgr, "/ViewPopup");
 	eog_scroll_view_set_popup (EOG_SCROLL_VIEW (priv->view),
@@ -4393,9 +4373,6 @@ eog_window_construct_ui (EogWindow *window)
 	eog_window_scroll_wheel_zoom_changed_cb (priv->view_settings,
 						 EOG_CONF_VIEW_SCROLL_WHEEL_ZOOM
 						 , window);
-	eog_window_zoom_multiplier_changed_cb (priv->view_settings,
-					       EOG_CONF_VIEW_ZOOM_MULTIPLIER,
-					       window);
 	eog_window_transparency_changed_cb (priv->view_settings,
 					    EOG_CONF_VIEW_TRANSPARENCY, window);
 	eog_window_trans_color_changed_cb (priv->view_settings,
@@ -4462,11 +4439,6 @@ eog_window_init (EogWindow *window)
 			   window);
 
 	g_signal_connect (priv->view_settings,
-			  "changed::" EOG_CONF_VIEW_ZOOM_MULTIPLIER,
-			  (GCallback) eog_window_zoom_multiplier_changed_cb,
-			  window);
-
-	g_signal_connect (priv->view_settings,
 			  "changed::" EOG_CONF_VIEW_TRANSPARENCY,
 			  (GCallback) eog_window_transparency_changed_cb,
 			  window);



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