From 777f9f71d1f9c0a30597fe7d5df201e7621fcb20 Mon Sep 17 00:00:00 2001 From: Tomas Zigo <50632337+tmszi@users.noreply.github.com> Date: Tue, 3 Oct 2023 21:05:39 +0200 Subject: [PATCH] wxGUI/dbmgr: fix removing map table layer and layer related Browse data and Manage tables page (tab) (#2422) --- gui/wxpython/dbmgr/base.py | 5 +++- gui/wxpython/gui_core/widgets.py | 41 +++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/gui/wxpython/dbmgr/base.py b/gui/wxpython/dbmgr/base.py index 70f349afd9b..7538ee8a450 100644 --- a/gui/wxpython/dbmgr/base.py +++ b/gui/wxpython/dbmgr/base.py @@ -1029,7 +1029,7 @@ def DeletePage(self, layer): del self.layerPage[layer] if self.GetSelection() >= 0: - self.selLayer = self.layers[self.GetSelection()] + self.selLayer = self.layers[-1] else: self.selLayer = None @@ -1361,6 +1361,9 @@ def OnSqlQuerySizeWrap(self, layer): def OnSqlQuerySize(self, event, layer): """Adapts SQL Query Simple tab on current width""" + if layer not in self.layers: + return + sqlNtb = event.GetEventObject() if not self.sqlBestSize: self.sqlBestSize = sqlNtb.GetBestSize() diff --git a/gui/wxpython/gui_core/widgets.py b/gui/wxpython/gui_core/widgets.py index 1b9ce6451c1..a1ead725b47 100644 --- a/gui/wxpython/gui_core/widgets.py +++ b/gui/wxpython/gui_core/widgets.py @@ -132,7 +132,17 @@ def BindPageChanged(self): self.widget.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnRemoveHighlight) def AddPage(self, *args, **kwargs): - """Add a new page""" + """Add a new page + + :param str name: use this param if notebooks has ability to + change position and then you must use page name + param arg to correctly delete notebook page. + If you do not use this parameter, make sure that + the notebooks does not have the ability to change + position, because in that case the deletion of + the page based on the position index would not + work correctly. + """ if "name" in kwargs: self.notebookPages[kwargs["name"]] = kwargs["page"] del kwargs["name"] @@ -140,7 +150,17 @@ def AddPage(self, *args, **kwargs): self.classObject.AddPage(self.widget, *args, **kwargs) def InsertPage(self, *args, **kwargs): - """Insert a new page""" + """Insert a new page + + :param str name: use this param if notebooks has ability to + change position and then you must use page name + param arg to correctly delete notebook page. + If you do not use this parameter, make sure that + the notebooks does not have the ability to change + position, because in that case the deletion of + the page based on the position index would not + work correctly. + """ if "name" in kwargs: self.notebookPages[kwargs["name"]] = kwargs["page"] del kwargs["name"] @@ -157,8 +177,9 @@ def InsertPage(self, *args, **kwargs): def DeletePage(self, page): """Delete page - :param page: name - :return: True if page was deleted, False if not exists + :param str|int page: page name or page index position + + :return bool: True if page was deleted, False if not exists """ delPageIndex = self.GetPageIndexByName(page) if delPageIndex != -1: @@ -215,8 +236,12 @@ def RemoveHighlight(self, page): def GetPageIndexByName(self, page): """Get notebook page index - :param page: name + :param str|int page: page name or page index position + + :return int: page index """ + if not self.notebookPages: + return page if page not in self.notebookPages: return -1 for pageIndex in range(self.classObject.GetPageCount(self.widget)): @@ -259,8 +284,12 @@ def BindPageChanged(self): def GetPageIndexByName(self, page): """Get notebook page index - :param page: name + :param str|int page: page name or page index position + + :return int: page index """ + if not self.notebookPages: + return page if page not in self.notebookPages: return -1