From 60e917a5d13e261cbf8d905296e526df82816337 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Wed, 28 Sep 2016 18:06:33 -0700 Subject: [PATCH] window: update zoom reset label to display current zoom --- src/resources/ui/sp-window.ui | 8 +++++++- src/sp-window.c | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/resources/ui/sp-window.ui b/src/resources/ui/sp-window.ui index f95a93a8..86e14e99 100644 --- a/src/resources/ui/sp-window.ui +++ b/src/resources/ui/sp-window.ui @@ -215,6 +215,7 @@ true + true horizontal 12 true @@ -240,8 +241,13 @@ zoom.zoom-one - 100% true + + + 5 + true + + diff --git a/src/sp-window.c b/src/sp-window.c index f1840a19..93e011c8 100644 --- a/src/sp-window.c +++ b/src/sp-window.c @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -52,6 +53,7 @@ struct _SpWindow GtkStack *view_stack; SpVisualizerView *visualizers; SpZoomManager *zoom_manager; + GtkLabel *zoom_one_label; guint stats_handler; @@ -715,6 +717,17 @@ sp_window_reset_paned (SpWindow *self) gtk_paned_set_position (self->paned, MAX (min_height, MIN (nat_height, 300))); } +static gboolean +zoom_level_to_string (GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data) +{ + gdouble percent = 100.0 * g_value_get_double (from_value); + g_value_take_string (to_value, g_strdup_printf ("%u%%", (guint)ceil (percent))); + return TRUE; +} + static void sp_window_destroy (GtkWidget *widget) { @@ -786,6 +799,8 @@ sp_window_class_init (SpWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, SpWindow, title); gtk_widget_class_bind_template_child (widget_class, SpWindow, view_stack); gtk_widget_class_bind_template_child (widget_class, SpWindow, visualizers); + gtk_widget_class_bind_template_child (widget_class, SpWindow, zoom_manager); + gtk_widget_class_bind_template_child (widget_class, SpWindow, zoom_one_label); } static void @@ -834,6 +849,10 @@ sp_window_init (SpWindow *self) self, G_CONNECT_SWAPPED); + g_object_bind_property_full (self->zoom_manager, "zoom", self->zoom_one_label, "label", + G_BINDING_SYNC_CREATE, + zoom_level_to_string, NULL, NULL, NULL); + /* * Setup actions for the window. */