From 56d7363ff83effd121c7c8a0f0430d7b5d73807b Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Mon, 5 Jun 2023 12:39:40 +0200 Subject: [PATCH 1/8] issue in Fix method --- gui/wxpython/main_window/frame.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index eee07982bf4..24ac5ef4e55 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -195,13 +195,8 @@ def show_menu_errors(messages): except Exception: pass self.Layout() - if w <= globalvar.GM_WINDOW_SIZE[0] or h <= globalvar.GM_WINDOW_SIZE[1]: - self.Fit() else: self.Layout() - self.Fit() - # does center (of screen) make sense for lmgr? - self.Centre() self.Show() From 1c975eb23ec141cc8b9c85d920756ecabd41bdc5 Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Mon, 5 Jun 2023 14:02:08 +0200 Subject: [PATCH 2/8] simplification --- gui/wxpython/main_window/frame.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index 24ac5ef4e55..f6804096cc6 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -194,10 +194,8 @@ def show_menu_errors(messages): self.SetSize((w, h)) except Exception: pass - self.Layout() - else: - self.Layout() - + + self.Layout() self.Show() # load workspace file if requested From be5e3d1bb27ccc58403e2854317c986395585caa Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Fri, 9 Jun 2023 17:11:16 +0200 Subject: [PATCH 3/8] black --- gui/wxpython/main_window/frame.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index f6804096cc6..abed2c527b8 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -194,7 +194,7 @@ def show_menu_errors(messages): self.SetSize((w, h)) except Exception: pass - + self.Layout() self.Show() From 1f72774a9888d57c207b4c245388d5a5a05a054e Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Sun, 18 Jun 2023 08:43:26 +0200 Subject: [PATCH 4/8] Tomas's suggestions --- gui/wxpython/core/settings.py | 1 + gui/wxpython/gui_core/preferences.py | 27 ++++++++++++++--- gui/wxpython/main_window/frame.py | 43 ++++++++++++++++------------ 3 files changed, 49 insertions(+), 22 deletions(-) diff --git a/gui/wxpython/core/settings.py b/gui/wxpython/core/settings.py index 5f75a77ee54..7e19bf3b9db 100644 --- a/gui/wxpython/core/settings.py +++ b/gui/wxpython/core/settings.py @@ -143,6 +143,7 @@ def _defaultSettings(self): globalvar.MAP_WINDOW_SIZE[0], globalvar.MAP_WINDOW_SIZE[1], ), + "dimSingleWindow": "1,1,1,1" }, # workspace "workspace": { diff --git a/gui/wxpython/gui_core/preferences.py b/gui/wxpython/gui_core/preferences.py index 50c2c6f3334..a7da2e70960 100644 --- a/gui/wxpython/gui_core/preferences.py +++ b/gui/wxpython/gui_core/preferences.py @@ -1830,10 +1830,18 @@ def _updateSettings(self): # # update default window dimension # - if ( - self.settings.Get(group="general", key="defWindowPos", subkey="enabled") - is True - ): + single_window = self.settings.Get( + group="general", + key="defWindowPos", + subkey="enabled", + ) + windows_pos = self.settings.Get( + group="appearance", + key="singleWindow", + subkey="enabled", + ) + # Multiple windows mode + if windows_pos and not single_window: dim = "" # layer manager pos = self.parent.GetPosition() @@ -1856,6 +1864,17 @@ def _updateSettings(self): self.settings.Set( group="general", key="defWindowPos", subkey="dim", value=dim ) + # Single window mode + elif windows_pos and single_window: + pos = self.parent.GetPosition() + size = self.parent.GetSize() + dim = f"{pos[0]},{pos[1]},{size[0]},{size[1]}" + self.settings.Set( + group="general", + key="defWindowPos", + subkey="dimSingleWindow", + value=dim, + ) return True diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index abed2c527b8..3a0555632b7 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -103,7 +103,7 @@ def __init__( id=wx.ID_ANY, title=None, workspace=None, - size=wx.Display().GetGeometry().GetSize(), + size=wx.GetClientDisplayRect().GetSize(), style=wx.DEFAULT_FRAME_STYLE, **kwargs, ): @@ -179,23 +179,30 @@ def show_menu_errors(messages): # use default window layout ? if UserSettings.Get(group="general", key="defWindowPos", subkey="enabled"): - dim = UserSettings.Get(group="general", key="defWindowPos", subkey="dim") - try: - x, y = map(int, dim.split(",")[0:2]) - w, h = map(int, dim.split(",")[2:4]) - client_disp = wx.ClientDisplayRect() - if x == 1: - # Get client display x offset (OS panel) - x = client_disp[0] - if y == 1: - # Get client display y offset (OS panel) - y = client_disp[1] - self.SetPosition((x, y)) - self.SetSize((w, h)) - except Exception: - pass - - self.Layout() + single_window_dim = { + "group": "general", + "key": "defWindowPos", + "subkey": "dimSingleWindow", + } + dim = UserSettings.Get(**single_window_dim) + default_dim = UserSettings.Get(**single_window_dim, settings_type="default") + if dim != default_dim: + try: + x, y = map(int, dim.split(",")[0:2]) + w, h = map(int, dim.split(",")[2:4]) + client_disp = wx.ClientDisplayRect() + if x == 1: + # Get client display x offset (OS panel) + x = client_disp[0] + if y == 1: + # Get client display y offset (OS panel) + y = client_disp[1] + self.SetPosition((x, y)) + self.SetSize((w, h)) + except Exception: + pass + else: + self.Maximize(True) self.Show() # load workspace file if requested From 73fb223d05ff5250d2bc29d9eda98bc12fa57180 Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Sun, 18 Jun 2023 12:00:08 +0200 Subject: [PATCH 5/8] fixes updating default window dimension --- gui/wxpython/gui_core/preferences.py | 49 +++++++++++++--------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/gui/wxpython/gui_core/preferences.py b/gui/wxpython/gui_core/preferences.py index a7da2e70960..43f3d150044 100644 --- a/gui/wxpython/gui_core/preferences.py +++ b/gui/wxpython/gui_core/preferences.py @@ -1830,51 +1830,48 @@ def _updateSettings(self): # # update default window dimension # - single_window = self.settings.Get( + windows_pos = self.settings.Get( group="general", key="defWindowPos", subkey="enabled", ) - windows_pos = self.settings.Get( + single_window = self.settings.Get( group="appearance", key="singleWindow", subkey="enabled", ) - # Multiple windows mode - if windows_pos and not single_window: - dim = "" - # layer manager + if windows_pos: + # get dimension of main window pos = self.parent.GetPosition() size = self.parent.GetSize() - dim = "%d,%d,%d,%d" % (pos[0], pos[1], size[0], size[1]) - # opened displays + dim = f"{pos[0]},{pos[1]},{size[0]},{size[1]}" + + # extend dimension by dimensions of opened displays for mapdisp in self._giface.GetAllMapDisplays(): pos = mapdisp.GetPosition() size = mapdisp.GetSize() # window size must be larger than zero, not minimized - # when mapdisp is inside single window (panel has no IsIconized), don't save dim + # do not save dim when mapdisp is docked within single window if ( - hasattr(mapdisp, "IsIconized") - and not mapdisp.IsIconized() + not mapdisp.IsDocked() and (size[0] > 0 and size[1] > 0) ): - dim += ",%d,%d,%d,%d" % (pos[0], pos[1], size[0], size[1]) + dim += f",{pos[0]},{pos[1]},{size[0]},{size[1]}" - self.settings.Set( - group="general", key="defWindowPos", subkey="dim", value=dim - ) - # Single window mode - elif windows_pos and single_window: - pos = self.parent.GetPosition() - size = self.parent.GetSize() - dim = f"{pos[0]},{pos[1]},{size[0]},{size[1]}" - self.settings.Set( - group="general", - key="defWindowPos", - subkey="dimSingleWindow", - value=dim, - ) + if single_window: + # single window mode + self.settings.Set( + group="general", + key="defWindowPos", + subkey="dimSingleWindow", + value=dim, + ) + else: + # multi window mode + self.settings.Set( + group="general", key="defWindowPos", subkey="dim", value=dim + ) return True From 1a4f3213bac3cd91fdcfdbfceb76cf55f7863a87 Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Sun, 18 Jun 2023 12:27:55 +0200 Subject: [PATCH 6/8] black --- gui/wxpython/core/settings.py | 2 +- gui/wxpython/gui_core/preferences.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/gui/wxpython/core/settings.py b/gui/wxpython/core/settings.py index 7e19bf3b9db..e4c961607fb 100644 --- a/gui/wxpython/core/settings.py +++ b/gui/wxpython/core/settings.py @@ -143,7 +143,7 @@ def _defaultSettings(self): globalvar.MAP_WINDOW_SIZE[0], globalvar.MAP_WINDOW_SIZE[1], ), - "dimSingleWindow": "1,1,1,1" + "dimSingleWindow": "1,1,1,1", }, # workspace "workspace": { diff --git a/gui/wxpython/gui_core/preferences.py b/gui/wxpython/gui_core/preferences.py index 43f3d150044..c0feef6195d 100644 --- a/gui/wxpython/gui_core/preferences.py +++ b/gui/wxpython/gui_core/preferences.py @@ -1853,10 +1853,7 @@ def _updateSettings(self): # window size must be larger than zero, not minimized # do not save dim when mapdisp is docked within single window - if ( - not mapdisp.IsDocked() - and (size[0] > 0 and size[1] > 0) - ): + if not mapdisp.IsDocked() and (size[0] > 0 and size[1] > 0): dim += f",{pos[0]},{pos[1]},{size[0]},{size[1]}" if single_window: From 12de5f60651707ae0a59a9d8b27ca02fa5ab2af2 Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Tue, 20 Jun 2023 18:29:07 +0200 Subject: [PATCH 7/8] Anna's patch --- gui/wxpython/gui_core/preferences.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gui/wxpython/gui_core/preferences.py b/gui/wxpython/gui_core/preferences.py index c0feef6195d..2fbc1aefa04 100644 --- a/gui/wxpython/gui_core/preferences.py +++ b/gui/wxpython/gui_core/preferences.py @@ -1853,7 +1853,9 @@ def _updateSettings(self): # window size must be larger than zero, not minimized # do not save dim when mapdisp is docked within single window - if not mapdisp.IsDocked() and (size[0] > 0 and size[1] > 0): + if (not mapdisp.IsDockable() or not mapdisp.IsDocked()) and ( + size[0] > 0 and size[1] > 0 + ): dim += f",{pos[0]},{pos[1]},{size[0]},{size[1]}" if single_window: From f505365840ad62ee4fade04c2d0558ce72671e49 Mon Sep 17 00:00:00 2001 From: lindakladivova Date: Tue, 20 Jun 2023 18:53:14 +0200 Subject: [PATCH 8/8] maximized could be reached in the first run --- gui/wxpython/main_window/frame.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index 3a0555632b7..5d7a46de8da 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -186,10 +186,10 @@ def show_menu_errors(messages): } dim = UserSettings.Get(**single_window_dim) default_dim = UserSettings.Get(**single_window_dim, settings_type="default") + if dim != default_dim: try: - x, y = map(int, dim.split(",")[0:2]) - w, h = map(int, dim.split(",")[2:4]) + x, y, w, h = map(int, dim.split(",")[:4]) client_disp = wx.ClientDisplayRect() if x == 1: # Get client display x offset (OS panel) @@ -203,6 +203,8 @@ def show_menu_errors(messages): pass else: self.Maximize(True) + else: + self.Maximize(True) self.Show() # load workspace file if requested