changeset 2506:8ec296cc949c

Fix #492: Shortcut to Hide all sidebars simultaneously https://github.com/BestImageViewer/geeqie/issues/492 Menu item to toggle hiding info, sort, and files panes. Default key is backtick.
author Colin Clark <colin.clark@cclark.uk>
date Tue, 20 Jun 2017 11:11:55 +0100
parents d01e5b8e80d9
children e9c4c1876d31
files doc/docbook/GuideMainWindowMenus.xml src/layout_util.c src/options.c src/typedefs.h
diffstat 4 files changed, 60 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/doc/docbook/GuideMainWindowMenus.xml	Sun Jun 18 11:03:09 2017 +0100
+++ b/doc/docbook/GuideMainWindowMenus.xml	Tue Jun 20 11:11:55 2017 +0100
@@ -1354,6 +1354,14 @@
       </varlistentry>
       <varlistentry>
         <term>
+          <guimenu>Hide Bars</guimenu>
+        </term>
+        <listitem>
+          <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>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
           <guimenu>Toggle slideshow</guimenu>
         </term>
         <listitem>
--- a/src/layout_util.c	Sun Jun 18 11:03:09 2017 +0100
+++ b/src/layout_util.c	Tue Jun 20 11:11:55 2017 +0100
@@ -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 @@
 	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 @@
   { "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 @@
 "      <separator/>"
 "      <menuitem action='SBar'/>"
 "      <menuitem action='SBarSort'/>"
+"      <menuitem action='HideBars'/>"
 "      <menuitem action='ShowInfoPixel'/>"
 "      <placeholder name='ToolsSection'/>"
 "      <separator/>"
@@ -2940,6 +2950,39 @@
 	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);
--- a/src/options.c	Sun Jun 18 11:03:09 2017 +0100
+++ b/src/options.c	Tue Jun 20 11:11:55 2017 +0100
@@ -255,6 +255,7 @@
 	options->image_overlay.histogram_mode = 1;
 	options->image_overlay.state = OSD_SHOW_NOTHING;
 	options->animate = FALSE;
+	options->bars_state.hidden = FALSE;
 	return options;
 }
 
--- a/src/typedefs.h	Sun Jun 18 11:03:09 2017 +0100
+++ b/src/typedefs.h	Tue Jun 20 11:11:55 2017 +0100
@@ -629,6 +629,14 @@
 	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;