Fix #492: Shortcut to Hide all sidebars simultaneously
authorColin Clark <[email protected]>
Tue, 20 Jun 2017 10:11:55 +0000 (11:11 +0100)
committerColin Clark <[email protected]>
Tue, 20 Jun 2017 10:11:55 +0000 (11:11 +0100)
https://github.com/BestImageViewer/geeqie/issues/492

Menu item to toggle hiding info, sort, and files panes.
Default key is backtick.

doc/docbook/GuideMainWindowMenus.xml
src/layout_util.c
src/options.c
src/typedefs.h

index edfec796038f981f77fcc9fede038f35ea2cf819..a0ee5858435b8c20284b79dfaf7d3b32c1ca0002 100644 (file)
           <para>Toggles display of the Sort Manager sidebar.</para>\r
         </listitem>\r
       </varlistentry>\r
+      <varlistentry>\r
+        <term>\r
+          <guimenu>Hide Bars</guimenu>\r
+        </term>\r
+        <listitem>\r
+          <para>This item is intended to be used by its shortcut key - by default this is the backtick key. When pressed, the info sidebar, sort manager and file list will be hidden (if displayed). Pressing backtick again will revert the display to its previous layout.</para>\r
+        </listitem>\r
+      </varlistentry>\r
       <varlistentry>\r
         <term>\r
           <guimenu>Toggle slideshow</guimenu>\r
index 2f340b5f464f5ed80af26cb9e12ff4d124bc6caf..4495b1e1ddd8453cd3cb8914760f901a9e610b2c 100644 (file)
@@ -64,6 +64,7 @@
 
 static gboolean layout_bar_enabled(LayoutWindow *lw);
 static gboolean layout_bar_sort_enabled(LayoutWindow *lw);
+static void layout_bars_hide_toggle(LayoutWindow *lw);
 static void layout_util_sync_views(LayoutWindow *lw);
 
 /*
@@ -996,6 +997,13 @@ static void layout_menu_bar_sort_cb(GtkToggleAction *action, gpointer data)
        layout_bar_sort_toggle(lw);
 }
 
+static void layout_menu_hide_bars_cb(GtkToggleAction *action, gpointer data)
+{
+       LayoutWindow *lw = data;
+
+       layout_bars_hide_toggle(lw);
+}
+
 static void layout_menu_slideshow_cb(GtkToggleAction *action, gpointer data)
 {
        LayoutWindow *lw = data;
@@ -1804,6 +1812,7 @@ static GtkToggleActionEntry menu_toggle_entries[] = {
   { "HideToolbar",     NULL,                   N_("Hide tool_bar"),                    NULL,                   N_("Hide toolbar"),                     CB(layout_menu_toolbar_cb),      FALSE  },
   { "SBar",            NULL,                   N_("_Info sidebar"),                    "<control>K",           N_("Info sidebar"),                     CB(layout_menu_bar_cb),          FALSE  },
   { "SBarSort",                NULL,                   N_("Sort _manager"),                    "<shift>S",             N_("Sort manager"),                     CB(layout_menu_bar_sort_cb),     FALSE  },
+  { "HideBars",                NULL,                   N_("Hide Bars"),                        "grave",                N_("Hide Bars"),                        CB(layout_menu_hide_bars_cb),    FALSE  },
   { "SlideShow",       GTK_STOCK_MEDIA_PLAY,   N_("Toggle _slideshow"),                "S",                    N_("Toggle slideshow"),                 CB(layout_menu_slideshow_cb),    FALSE  },
   { "UseColorProfiles",        GTK_STOCK_SELECT_COLOR, N_("Use _color profiles"),              NULL,                   N_("Use color profiles"),               CB(layout_color_menu_enable_cb), FALSE},
   { "UseImageProfile", NULL,                   N_("Use profile from _image"),          NULL,                   N_("Use profile from image"),           CB(layout_color_menu_use_image_cb), FALSE},
@@ -2061,6 +2070,7 @@ static const gchar *menu_ui_description =
 "      <separator/>"
 "      <menuitem action='SBar'/>"
 "      <menuitem action='SBarSort'/>"
+"      <menuitem action='HideBars'/>"
 "      <menuitem action='ShowInfoPixel'/>"
 "      <placeholder name='ToolsSection'/>"
 "      <separator/>"
@@ -2940,6 +2950,39 @@ void layout_bar_sort_toggle(LayoutWindow *lw)
        layout_util_sync_views(lw);
 }
 
+static void layout_bars_hide_toggle(LayoutWindow *lw)
+{
+       if (lw->options.bars_state.hidden)
+               {
+               lw->options.bars_state.hidden = FALSE;
+               if (lw->options.bars_state.sort)
+                       {
+                       gtk_widget_show(lw->bar_sort);
+                       }
+               if (lw->options.bars_state.info)
+                       {
+                       gtk_widget_show(lw->bar);
+                       }
+               layout_tools_float_set(lw, lw->options.tools_float,
+                                                                       lw->options.bars_state.tools_hidden);
+               }
+       else
+               {
+               lw->options.bars_state.hidden = TRUE;
+               lw->options.bars_state.sort = layout_bar_sort_enabled(lw);
+               lw->options.bars_state.info = layout_bar_enabled(lw);
+               lw->options.bars_state.tools_float = lw->options.tools_float;
+               lw->options.bars_state.tools_hidden = lw->options.tools_hidden;
+
+               gtk_widget_hide(lw->bar);
+               if (lw->bar_sort)
+                       gtk_widget_hide(lw->bar_sort);
+               layout_tools_float_set(lw, lw->options.tools_float, TRUE);
+               }
+
+       layout_util_sync_views(lw);
+}
+
 void layout_bars_new_image(LayoutWindow *lw)
 {
        layout_bar_new_image(lw);
index 817969df132b40d305fd796ea0df1d9fc9a677ee..24656c331edcf1d566cfefa694fb208d3431955a 100644 (file)
@@ -255,6 +255,7 @@ LayoutOptions *init_layout_options(LayoutOptions *options)
        options->image_overlay.histogram_mode = 1;
        options->image_overlay.state = OSD_SHOW_NOTHING;
        options->animate = FALSE;
+       options->bars_state.hidden = FALSE;
        return options;
 }
 
index 61b2bc2cb7e5e9bd92db8334324787d29f99faa4..ccc3c2b4c1b2f721ef9694744632d078136f2014 100644 (file)
@@ -629,6 +629,14 @@ struct _LayoutOptions
        gboolean tools_hidden;
        gboolean toolbar_hidden;
 
+       struct {
+               gboolean info;
+               gboolean sort;
+               gboolean tools_float;
+               gboolean tools_hidden;
+               gboolean hidden;
+       } bars_state;
+
        gchar *home_path;
        gchar *last_path;