Disable fit add on pages based on context (ship vs citadel)
This commit is contained in:
@@ -227,6 +227,15 @@ class PFNotebook(wx.Panel):
|
||||
self.activePage = tabWnd
|
||||
self.ShowActive(True)
|
||||
|
||||
def DisablePage(self, page, toggle):
|
||||
idx = self.GetPageIndex(page)
|
||||
|
||||
if toggle and page == self.activePage:
|
||||
# Set page to the first non-disabled page
|
||||
self.SetSelection(next(i for i, _ in enumerate(self.pages) if not self.tabsContainer.tabs[i].disabled))
|
||||
|
||||
self.tabsContainer.DisableTab(idx, toggle)
|
||||
|
||||
def SetSelection(self, page):
|
||||
oldsel = self.GetSelection()
|
||||
if oldsel != page:
|
||||
@@ -354,6 +363,7 @@ class PFTabRenderer:
|
||||
|
||||
self.inclination = inclination
|
||||
self.text = text
|
||||
self.disabled = False
|
||||
self.tabSize = (width, height)
|
||||
self.closeButton = closeButton
|
||||
self.selected = False
|
||||
@@ -548,7 +558,7 @@ class PFTabRenderer:
|
||||
mdc.DrawBitmap(self.tabBackBitmap, 0, 0, True)
|
||||
|
||||
if self.tabImg:
|
||||
bmp = wx.BitmapFromImage(self.tabImg)
|
||||
bmp = wx.BitmapFromImage(self.tabImg.ConvertToGreyscale() if self.disabled else self.tabImg)
|
||||
if self.contentWidth > 16: # @todo: is this conditional relevant anymore?
|
||||
# Draw tab icon
|
||||
mdc.DrawBitmap(bmp, self.leftWidth + self.padding - bmp.GetWidth()/2, (height - bmp.GetHeight())/2)
|
||||
@@ -591,6 +601,10 @@ class PFTabRenderer:
|
||||
bmp = wx.BitmapFromImage(img)
|
||||
self.tabBitmap = bmp
|
||||
|
||||
def __repr__(self):
|
||||
return "PFTabRenderer(text={}, disabled={}) at {}".format(
|
||||
self.text, self.disabled, hex(id(self))
|
||||
)
|
||||
|
||||
class PFAddRenderer:
|
||||
def __init__(self):
|
||||
@@ -848,6 +862,7 @@ class PFTabsContainer(wx.Panel):
|
||||
return True
|
||||
|
||||
if self.TabHitTest(tab, x, y):
|
||||
if tab.disabled: return
|
||||
tab.SetSelected(True)
|
||||
oldSelTab.SetSelected(False)
|
||||
|
||||
@@ -1186,6 +1201,13 @@ class PFTabsContainer(wx.Panel):
|
||||
for tab in self.tabs:
|
||||
tab.SetSelected(False)
|
||||
|
||||
def DisableTab(self, tab, disabled=True):
|
||||
tabRenderer = self.tabs[tab]
|
||||
tabRenderer.disabled = disabled
|
||||
|
||||
self.AdjustTabsSize()
|
||||
self.Refresh()
|
||||
|
||||
def DeleteTab(self, tab, external=False):
|
||||
tabRenderer = self.tabs[tab]
|
||||
wasSelected = tabRenderer.GetSelected()
|
||||
|
||||
Reference in New Issue
Block a user