Disable fit add on pages based on context (ship vs citadel)

This commit is contained in:
blitzmann
2016-07-04 01:03:30 -04:00
parent 3734be21d6
commit fe8c3a4957
12 changed files with 77 additions and 26 deletions

View File

@@ -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()