Merge branch 'master' into menu_overhaul
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user