Skip to content

Commit

Permalink
Fix delete NB Browse, Tables page by page index if layer was deleted
Browse files Browse the repository at this point in the history
  • Loading branch information
tmszi committed Sep 30, 2023
1 parent bd0b03c commit 086b5b2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 11 deletions.
7 changes: 5 additions & 2 deletions gui/wxpython/dbmgr/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -1023,13 +1023,13 @@ def DeletePage(self, layer):
if layer not in self.layers:
return False

GNotebook.DeletePage(self, self.layers.index(layer))
GNotebook.DeleteNBPage(self, self.layers.index(layer))

self.layers.remove(layer)
del self.layerPage[layer]

if self.GetSelection() >= 0:
self.selLayer = self.layers[self.GetSelection()]
self.selLayer = self.layers[-1]
else:
self.selLayer = None

Expand Down Expand Up @@ -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()
Expand Down
43 changes: 34 additions & 9 deletions gui/wxpython/gui_core/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,15 +132,35 @@ 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"]

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"]
Expand All @@ -157,12 +177,9 @@ def InsertPage(self, *args, **kwargs):
def DeletePage(self, page):
"""Delete page
That method works correctly if AddPage() and InsertPage() method
was used with name parameter argument.
:param page: name
:param str|int page: page name or page index position
:return: True if page was deleted, False if not exists
:return bool: True if page was deleted, False if not exists
"""
delPageIndex = self.GetPageIndexByName(page)
if delPageIndex != -1:
Expand Down Expand Up @@ -219,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)):
Expand Down Expand Up @@ -263,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

Expand Down

0 comments on commit 086b5b2

Please sign in to comment.