[gthumb] keep the zoom buttons on the headerbar if the tool allow to zoom the image



commit 35e2aba417bef1efcfc3ecf744207c6ff13322c3
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Feb 26 11:26:40 2017 +0100

    keep the zoom buttons on the headerbar if the tool allow to zoom the image

 extensions/file_tools/gth-file-tool-resize.c    |    1 +
 extensions/file_tools/gth-file-tool-sharpen.c   |    1 +
 extensions/image_viewer/gth-image-viewer-page.c |    6 +++---
 gthumb/gth-browser.c                            |   19 ++++++++++++++++++-
 gthumb/gth-browser.h                            |    1 +
 gthumb/gth-file-tool.c                          |   17 +++++++++++++++++
 gthumb/gth-file-tool.h                          |    3 +++
 7 files changed, 44 insertions(+), 4 deletions(-)
---
diff --git a/extensions/file_tools/gth-file-tool-resize.c b/extensions/file_tools/gth-file-tool-resize.c
index a4473db..bfd6371 100644
--- a/extensions/file_tools/gth-file-tool-resize.c
+++ b/extensions/file_tools/gth-file-tool-resize.c
@@ -832,4 +832,5 @@ gth_file_tool_resize_init (GthFileToolResize *self)
        self->priv->preview = NULL;
        self->priv->new_image = NULL;
        gth_file_tool_construct (GTH_FILE_TOOL (self), "image-resize-symbolic", _("Resize"), 
GTH_TOOLBOX_SECTION_FORMAT);
+       gth_file_tool_set_zoomable (GTH_FILE_TOOL (self), TRUE);
 }
diff --git a/extensions/file_tools/gth-file-tool-sharpen.c b/extensions/file_tools/gth-file-tool-sharpen.c
index cbd6938..71e9f03 100644
--- a/extensions/file_tools/gth-file-tool-sharpen.c
+++ b/extensions/file_tools/gth-file-tool-sharpen.c
@@ -435,4 +435,5 @@ gth_file_tool_sharpen_init (GthFileToolSharpen *self)
                                 "image-sharpen-symbolic",
                                 _("Enhance Focus"),
                                 GTH_TOOLBOX_SECTION_COLORS);
+       gth_file_tool_set_zoomable (GTH_FILE_TOOL (self), TRUE);
 }
diff --git a/extensions/image_viewer/gth-image-viewer-page.c b/extensions/image_viewer/gth-image-viewer-page.c
index 1a2353b..732876c 100644
--- a/extensions/image_viewer/gth-image-viewer-page.c
+++ b/extensions/image_viewer/gth-image-viewer-page.c
@@ -921,14 +921,14 @@ gth_image_viewer_page_real_activate (GthViewerPage *base,
 
        self->priv->buttons[0] =
                        gth_browser_add_header_bar_button (browser,
-                                                          GTH_BROWSER_HEADER_SECTION_VIEWER_VIEW,
+                                                          GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM,
                                                           "view-zoom-original-symbolic",
                                                           _("Set to actual size"),
                                                           "win.image-zoom-100",
                                                           NULL);
        self->priv->buttons[1] =
                        gth_browser_add_header_bar_button (browser,
-                                                          GTH_BROWSER_HEADER_SECTION_VIEWER_VIEW,
+                                                          GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM,
                                                           "view-zoom-fit-symbolic",
                                                           _("Fit to window if larger"),
                                                           "win.image-zoom-fit-if-larger",
@@ -937,7 +937,7 @@ gth_image_viewer_page_real_activate (GthViewerPage *base,
        self->priv->builder = gtk_builder_new_from_resource 
("/org/gnome/gThumb/image_viewer/data/ui/toolbar-zoom-menu.ui");
        self->priv->buttons[ZOOM_BUTTON] =
                        gth_browser_add_header_bar_menu_button (browser,
-                                                               GTH_BROWSER_HEADER_SECTION_VIEWER_VIEW,
+                                                               GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM,
                                                                "view-zoom-in-symbolic",
                                                                NULL,
                                                                _gtk_builder_get_widget (self->priv->builder, 
"zoom_popover"));
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index e9a24e6..54993fc 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -2409,6 +2409,16 @@ _gth_browser_update_header_bar_content (GthBrowser *browser)
        _gth_browser_update_header_section_visibility (browser, GTH_BROWSER_HEADER_SECTION_EDITOR_COMMANDS, 
section_visible);
        _gth_browser_update_header_section_visibility (browser, GTH_BROWSER_HEADER_SECTION_EDITOR_APPLY, 
section_visible);
 
+       section_visible = (page == GTH_BROWSER_PAGE_VIEWER);
+       if (active_tool) {
+               GtkWidget *toolbox;
+               GtkWidget *file_tool;
+
+               toolbox = gth_sidebar_get_toolbox (GTH_SIDEBAR (browser->priv->file_properties));
+               file_tool = gth_toolbox_get_active_tool (GTH_TOOLBOX (toolbox));
+               section_visible = gth_file_tool_get_zoomable (GTH_FILE_TOOL (file_tool));
+       }
+       _gth_browser_update_header_section_visibility (browser, GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM, 
section_visible);
        gtk_widget_set_visible (browser->priv->menu_button, ! ((page == GTH_BROWSER_PAGE_VIEWER) && 
active_tool));
 
        gth_browser_update_title (browser);
@@ -4458,11 +4468,13 @@ gth_browser_init (GthBrowser *browser)
                gtk_widget_set_margin_right 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_BROWSER_VIEW], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_left 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_EDIT], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_right 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_EDIT], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
-               gtk_widget_set_margin_left 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_VIEW], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_left 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_OTHER_VIEW], 
GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
+               gtk_widget_set_margin_right 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_OTHER_VIEW], 
GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
+               gtk_widget_set_margin_right 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_left 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_COMMANDS], 
GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_left 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_OTHER_COMMANDS], 
GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_left 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_EDITOR_VIEW], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
+               gtk_widget_set_margin_right 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_EDITOR_VIEW], GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
                gtk_widget_set_margin_right 
(browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_EDITOR_COMMANDS], 
GTH_BROWSER_HEADER_BAR_BIG_MARGIN);
 
                gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_BROWSER_NAVIGATION]);
@@ -4475,6 +4487,11 @@ gth_browser_init (GthBrowser *browser)
                gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_EDITOR_NAVIGATION]);
                gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_EDITOR_VIEW]);
 
+               /* GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM is shared by the viewer and the editor */
+               gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM]);
+               gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_VIEW]);
+               gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_COMMANDS]);
+               gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), 
browser->priv->header_sections[GTH_BROWSER_HEADER_SECTION_VIEWER_OTHER_COMMANDS]);
 
                /* gears menu button */
 
diff --git a/gthumb/gth-browser.h b/gthumb/gth-browser.h
index 2c4c06e..9f76b1a 100644
--- a/gthumb/gth-browser.h
+++ b/gthumb/gth-browser.h
@@ -89,6 +89,7 @@ typedef enum { /*< skip >*/
        GTH_BROWSER_HEADER_SECTION_VIEWER_NAVIGATION,
        GTH_BROWSER_HEADER_SECTION_VIEWER_OTHER_VIEW,
        GTH_BROWSER_HEADER_SECTION_VIEWER_VIEW,
+       GTH_BROWSER_HEADER_SECTION_VIEWER_ZOOM, /* section shared by viewer and editor */
        GTH_BROWSER_HEADER_SECTION_VIEWER_COMMANDS,
        GTH_BROWSER_HEADER_SECTION_VIEWER_OTHER_COMMANDS,
        GTH_BROWSER_HEADER_SECTION_VIEWER_SIDEBAR,
diff --git a/gthumb/gth-file-tool.c b/gthumb/gth-file-tool.c
index d6b1017..d92a99b 100644
--- a/gthumb/gth-file-tool.c
+++ b/gthumb/gth-file-tool.c
@@ -39,6 +39,7 @@ struct _GthFileToolPrivate {
        const char              *options_title;
        GthToolboxSection        section;
        gboolean                 cancelled;
+       gboolean                 zoomable;
 };
 
 
@@ -152,6 +153,7 @@ gth_file_tool_init (GthFileTool *self)
        self->priv->icon_name = NULL;
        self->priv->options_title = NULL;
        self->priv->cancelled = FALSE;
+       self->priv->zoomable = FALSE;
        self->priv->section = GTH_TOOLBOX_SECTION_COLORS;
 
        /*gtk_button_set_relief (GTK_BUTTON (self), GTK_RELIEF_NONE);*/
@@ -231,6 +233,21 @@ gth_file_tool_is_cancelled (GthFileTool *self)
 
 
 void
+gth_file_tool_set_zoomable (GthFileTool *self,
+                           gboolean     zoomable)
+{
+       self->priv->zoomable = zoomable;
+}
+
+
+gboolean
+gth_file_tool_get_zoomable (GthFileTool *self)
+{
+       return self->priv->zoomable;
+}
+
+
+void
 gth_file_tool_update_sensitivity (GthFileTool *self)
 {
        GTH_FILE_TOOL_GET_CLASS (self)->update_sensitivity (self);
diff --git a/gthumb/gth-file-tool.h b/gthumb/gth-file-tool.h
index e7276e1..a4af3ba 100644
--- a/gthumb/gth-file-tool.h
+++ b/gthumb/gth-file-tool.h
@@ -74,6 +74,9 @@ const char *          gth_file_tool_get_icon_name             (GthFileTool            
*self);
 void                   gth_file_tool_activate                  (GthFileTool            *self);
 void                   gth_file_tool_cancel                    (GthFileTool            *self);
 gboolean               gth_file_tool_is_cancelled              (GthFileTool            *self);
+void                   gth_file_tool_set_zoomable              (GthFileTool            *self,
+                                                                gboolean                zoomable);
+gboolean               gth_file_tool_get_zoomable              (GthFileTool            *self);
 void                   gth_file_tool_update_sensitivity        (GthFileTool            *self);
 GtkWidget *            gth_file_tool_get_options               (GthFileTool            *self);
 const char *           gth_file_tool_get_options_title         (GthFileTool            *self);


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