From a3dd8453c83802295cb4921939c2caf43c6fc712 Mon Sep 17 00:00:00 2001 From: Tomas Zigo Date: Wed, 13 Jul 2022 08:39:54 +0200 Subject: [PATCH 1/3] wxGUI/main_window: fix switches Map Display frame to full screen mode by keyboard shortcut Hides toolbars, statusbar and panes with keyboard shortcut F11 in single window mode. --- gui/wxpython/main_window/frame.py | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index 9701a296d10..9cf44ddc829 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -466,6 +466,11 @@ def CreateNewMapDisplay(giface, layertree): # set map display properties self._setUpMapDisplay(mapdisplay) + # extend shortcuts and create frame accelerator table + mapdisplay.shortcuts_table.append( + (self.OnFullScreen, wx.ACCEL_NORMAL, wx.WXK_F11) + ) + mapdisplay._initShortcuts() return mapdisplay # create layer tree (tree control for managing GIS layers) and put on @@ -503,6 +508,48 @@ def CreateNewMapDisplay(giface, layertree): return self.GetMapDisplay() + def ShowFullScreen(self, mapdisplay): + """Show fullscreen Map Display frame + + :param Window mapdisplay: current Map Display page + + :return bool: True if statusbar pane is shown + """ + for toolbar in mapdisplay.toolbars.keys(): + pane = mapdisplay._mgr.GetPane(mapdisplay.toolbars[toolbar]) + pane.Show(False if pane.IsShown() else True) + if self.statusbar: + pane = mapdisplay._mgr.GetPane("statusbar") + pane.Show(False if pane.IsShown() else True) + mapdisplay._mgr.Update() + return False if pane.IsShown() else True + + def ShowPanes(self, minimize): + """Show/hide datacatalog, layers, tools panes + + :param bool minimize: show/hide pane + + :return None + """ + for pane in ["datacatalog", "layers", "tools"]: + if minimize: + # Hide + self._auimgr.MinimizePane(self._auimgr.GetPane(pane)) + else: + # Show + self._auimgr.RestoreMinimizedPane(self._auimgr.GetPane(pane)) + + def OnFullScreen(self, event): + """Switches frame to fullscreen mode, hides toolbars, statusbar + and panes + """ + mapdisplay = self.mapnotebook.GetCurrentPage() + show = self.ShowFullScreen( + mapdisplay=mapdisplay, + ) + self.ShowPanes(minimize=show) + event.Skip() + def _setUpMapDisplay(self, mapdisplay): """Set up Map Display properties""" page = self.currentPage From 6cd972bdeed66f33146407c9dd0777194e8bacdd Mon Sep 17 00:00:00 2001 From: Tomas Zigo Date: Tue, 19 Dec 2023 10:12:00 +0100 Subject: [PATCH 2/3] Refactor code --- gui/wxpython/main_window/frame.py | 34 ++++++++++++++++++------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index 9cf44ddc829..628a4ecdae7 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -509,9 +509,9 @@ def CreateNewMapDisplay(giface, layertree): return self.GetMapDisplay() def ShowFullScreen(self, mapdisplay): - """Show fullscreen Map Display frame + """Switch Map Display frame to full-screen mode - :param Window mapdisplay: current Map Display page + :param object mapdisplay: current Map Display page instance :return bool: True if statusbar pane is shown """ @@ -525,29 +525,35 @@ def ShowFullScreen(self, mapdisplay): return False if pane.IsShown() else True def ShowPanes(self, minimize): - """Show/hide datacatalog, layers, tools panes + """Minimize/restore datacatalog, layers, tools pane - :param bool minimize: show/hide pane - - :return None + :param bool minimize: True if the pane is minimized """ for pane in ["datacatalog", "layers", "tools"]: + if pane == "tools": + notebooks = self._auimgr.GetNotebooks() + if notebooks: + notebook = notebooks[0] + pane = self._auimgr.GetPane(notebook) + else: + return + else: + pane = self._auimgr.GetPane(pane) + if minimize: - # Hide - self._auimgr.MinimizePane(self._auimgr.GetPane(pane)) + self._auimgr.MinimizePane(pane) else: - # Show - self._auimgr.RestoreMinimizedPane(self._auimgr.GetPane(pane)) + self._auimgr.RestoreMinimizedPane(pane) def OnFullScreen(self, event): - """Switches frame to fullscreen mode, hides toolbars, statusbar - and panes + """Switches Map Display frame to full-screen mode, hides toolbars, + statusbar and panes """ mapdisplay = self.mapnotebook.GetCurrentPage() - show = self.ShowFullScreen( + minimize = self.ShowFullScreen( mapdisplay=mapdisplay, ) - self.ShowPanes(minimize=show) + self.ShowPanes(minimize) event.Skip() def _setUpMapDisplay(self, mapdisplay): From e2f572f6f8749d64c83e2dd70dd0b3f871f688cb Mon Sep 17 00:00:00 2001 From: Tomas Zigo Date: Sat, 23 Dec 2023 06:09:38 +0100 Subject: [PATCH 3/3] Do not minimize floating pane --- gui/wxpython/main_window/frame.py | 37 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index 628a4ecdae7..4bc71c3bbb3 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -525,26 +525,39 @@ def ShowFullScreen(self, mapdisplay): return False if pane.IsShown() else True def ShowPanes(self, minimize): - """Minimize/restore datacatalog, layers, tools pane + """Minimize/restore docked datacatalog, layers, tools, console, + history, python pane :param bool minimize: True if the pane is minimized """ - for pane in ["datacatalog", "layers", "tools"]: - if pane == "tools": - notebooks = self._auimgr.GetNotebooks() - if notebooks: - notebook = notebooks[0] - pane = self._auimgr.GetPane(notebook) - else: - return - else: - pane = self._auimgr.GetPane(pane) - + # Notebooks panes + notebooks = self._auimgr.GetNotebooks() + for notebook in notebooks: + pane = self._auimgr.GetPane(notebook) if minimize: self._auimgr.MinimizePane(pane) else: self._auimgr.RestoreMinimizedPane(pane) + panes = [ + "datacatalog", + "layers", + "tools", + "console", + "history", + "python", + ] + for pane in panes: + pane = self._auimgr.GetPane(pane) + if ( + pane.dock_direction != aui.AUI_DOCK_NOTEBOOK_PAGE + and not pane.IsFloating() + ): + if minimize: + self._auimgr.MinimizePane(pane) + else: + self._auimgr.RestoreMinimizedPane(pane) + def OnFullScreen(self, event): """Switches Map Display frame to full-screen mode, hides toolbars, statusbar and panes