diff --git a/gui/wxpython/dbmgr/base.py b/gui/wxpython/dbmgr/base.py index 9a13930db5c..7085eff58ed 100644 --- a/gui/wxpython/dbmgr/base.py +++ b/gui/wxpython/dbmgr/base.py @@ -1033,7 +1033,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 @@ -1365,6 +1365,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 5ba4b3b125d..cf0c7d9d089 100644 --- a/gui/wxpython/gui_core/widgets.py +++ b/gui/wxpython/gui_core/widgets.py @@ -133,7 +133,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"] @@ -141,7 +151,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"] @@ -156,8 +176,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: @@ -214,8 +235,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)): @@ -258,8 +283,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