Fix #492: Shortcut to Hide all sidebars simultaneously
authorColin Clark <colin.clark@cclark.uk>
Tue, 20 Jun 2017 10:11:55 +0000 (11:11 +0100)
committerColin Clark <colin.clark@cclark.uk>
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 edfec79..a0ee585 100644 (file)
           <para>Toggles display of the Sort Manager sidebar.</para>\r
         </listitem>\r
       </varlistentry>\r
           <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
       <varlistentry>\r
         <term>\r
           <guimenu>Toggle slideshow</guimenu>\r
index 2f340b5..4495b1e 100644 (file)
@@ -64,6 +64,7 @@
 
 static gboolean layout_bar_enabled(LayoutWindow *lw);
 static gboolean layout_bar_sort_enabled(LayoutWindow *lw);
 
 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);
 
 /*
 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);
 }
 
        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;
 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  },
   { "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},
   { "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'/>"
 "      <separator/>"
 "      <menuitem action='SBar'/>"
 "      <menuitem action='SBarSort'/>"
+"      <menuitem action='HideBars'/>"
 "      <menuitem action='ShowInfoPixel'/>"
 "      <placeholder name='ToolsSection'/>"
 "      <separator/>"
 "      <menuitem action='ShowInfoPixel'/>"
 "      <placeholder name='ToolsSection'/>"
 "      <separator/>"
@@ -2940,6 +2950,39 @@ void layout_bar_sort_toggle(LayoutWindow *lw)
        layout_util_sync_views(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);
 void layout_bars_new_image(LayoutWindow *lw)
 {
        layout_bar_new_image(lw);
index 817969d..24656c3 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->image_overlay.histogram_mode = 1;
        options->image_overlay.state = OSD_SHOW_NOTHING;
        options->animate = FALSE;
+       options->bars_state.hidden = FALSE;
        return options;
 }
 
        return options;
 }
 
index 61b2bc2..ccc3c2b 100644 (file)
@@ -629,6 +629,14 @@ struct _LayoutOptions
        gboolean tools_hidden;
        gboolean toolbar_hidden;
 
        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;
 
        gchar *home_path;
        gchar *last_path;