Merge branch 'master' into menu_overhaul

This commit is contained in:
DarkPhoenix
2019-04-09 12:18:35 +03:00
7 changed files with 53 additions and 19 deletions

View File

@@ -20,7 +20,11 @@ class DamagePattern(ContextMenu):
if not self.settings.get('damagePattern'):
return False
return srcContext == "resistancesViewFull" and self.mainFrame.getActiveFit() is not None
return srcContext == "resistancesViewFull"
@property
def enabled(self):
return self.mainFrame.getActiveFit() is not None
def getText(self, itmContext, selection):
sDP = import_DamagePattern.getInstance()
@@ -66,12 +70,12 @@ class DamagePattern(ContextMenu):
# determine active pattern
sFit = Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
f = sFit.getFit(fitID)
dp = f.damagePattern
if dp == pattern:
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
menuItem.SetBitmap(bitmap)
fit = sFit.getFit(fitID)
if fit:
dp = fit.damagePattern
if dp == pattern:
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
menuItem.SetBitmap(bitmap)
return menuItem
def getSubMenu(self, context, selection, rootMenu, i, pitem):
@@ -84,9 +88,9 @@ class DamagePattern(ContextMenu):
id = pitem.GetId()
self.patternIds[id] = self.singles[i]
rootMenu.Bind(wx.EVT_MENU, self.handlePatternSwitch, pitem)
if self.patternIds[id] == self.fit.damagePattern:
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
pitem.SetBitmap(bitmap)
if self.fit and self.patternIds[id] == self.fit.damagePattern:
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
pitem.SetBitmap(bitmap)
return False
sub = wx.Menu()

View File

@@ -16,7 +16,11 @@ class FactorReload(ContextMenu):
if not self.settings.get('factorReload'):
return False
return srcContext == "firepowerViewFull" and self.mainFrame.getActiveFit() is not None
return srcContext == "firepowerViewFull"
@property
def enabled(self):
return self.mainFrame.getActiveFit() is not None
def getText(self, itmContext, selection):
return "Factor in Reload Time"

View File

@@ -47,10 +47,10 @@ class FirepowerViewFull(StatsView):
parent = self.panel = contentPanel
self.headerPanel = headerPanel
hsizer = self.headerPanel.GetSizer()
hsizer = self.headerPanel.Parent.GetHeaderContentSizer()
self.stEff = wx.StaticText(self.headerPanel, wx.ID_ANY, "( Effective )")
hsizer.Add(self.stEff)
self.headerPanel.GetParent().AddToggleItem(self.stEff)
# self.headerPanel.GetParent().AddToggleItem(self.stEff)
panel = "full"

View File

@@ -55,9 +55,8 @@ class ResistancesViewFull(StatsView):
self.headerPanel = headerPanel
# Custom header EHP
headerContentSizer = wx.BoxSizer(wx.HORIZONTAL)
hsizer = headerPanel.GetSizer()
hsizer.Add(headerContentSizer, 0, 0, 0)
headerContentSizer = self.headerPanel.Parent.GetHeaderContentSizer()
self.stEff = wx.StaticText(headerPanel, wx.ID_ANY, "( Effective HP: ")
headerContentSizer.Add(self.stEff)
headerPanel.GetParent().AddToggleItem(self.stEff)

View File

@@ -33,6 +33,16 @@ class ContextMenu(object):
def register(cls):
ContextMenu.menus.append(cls)
@classmethod
def hasMenu(cls, selection, *fullContexts):
for i, fullContext in enumerate(fullContexts):
srcContext = fullContext[0]
for menuHandler in cls.menus:
m = menuHandler()
if m.display(srcContext, selection):
return True
return False
@classmethod
def getMenu(cls, selection, *fullContexts):
"""
@@ -117,6 +127,7 @@ class ContextMenu(object):
if check is not None:
rootItem.Check(check)
rootItem.Enable(m.enabled)
empty = False
@@ -186,6 +197,11 @@ class ContextMenu(object):
'''If menu item is toggleable, this should return bool value'''
return None
@property
def enabled(self):
'''If menu item is enabled. Allows an item to display, but not be selected'''
return True
# noinspection PyUnresolvedReferences
from gui.builtinContextMenus import ( # noqa: E402,F401
openFit,

View File

@@ -114,7 +114,7 @@ class StatsPane(wx.Panel):
tp.SetLabel(view.getHeaderText(None))
view.refreshPanel(None)
contentPanel.Bind(wx.EVT_CONTEXT_MENU, self.contextHandler(contentPanel))
contentPanel.Bind(wx.EVT_CONTEXT_MENU, self.contextHandler(contentPanel, tp))
mainSizer.Add(tp, 0, wx.EXPAND | wx.LEFT, 3)
if i < maxviews - 1:
@@ -130,14 +130,25 @@ class StatsPane(wx.Panel):
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
@staticmethod
def contextHandler(contentPanel):
def contextHandler(contentPanel, tp):
viewName = contentPanel.viewName
def handler(event):
menu = ContextMenu.getMenu(None, (viewName,))
if menu is not None:
contentPanel.PopupMenu(menu)
event.Skip()
if ContextMenu.hasMenu(None, (viewName,)):
sizer = tp.GetHeaderContentSizer()
sizer.AddStretchSpacer()
# Add menu
header_menu = wx.StaticText(tp.GetHeaderPanel(), wx.ID_ANY, "\u2630", size=wx.Size((10, -1)))
sizer.Add(header_menu , 0, wx.EXPAND | wx.RIGHT | wx.ALIGN_RIGHT, 5)
header_menu.Bind(wx.EVT_CONTEXT_MENU, handler)
header_menu.Bind(wx.EVT_LEFT_UP, handler)
return handler

View File

@@ -49,7 +49,7 @@ class TogglePanel (wx.Panel):
# Add a sizer for additional header items if we need it
self.hcontent_sizer = wx.BoxSizer(wx.HORIZONTAL)
header_sizer.Add(self.hcontent_sizer, 0, wx.RIGHT, 5)
header_sizer.Add(self.hcontent_sizer, 1, wx.RIGHT, 5)
# Create the content panel, set sizer, and add to main sizer
self.content_panel = wx.Panel(self)