diff --git a/gui/builtinAdditionPanes/boosterView.py b/gui/builtinAdditionPanes/boosterView.py index e571526755..8fde281bd0 100644 --- a/gui/builtinAdditionPanes/boosterView.py +++ b/gui/builtinAdditionPanes/boosterView.py @@ -212,7 +212,7 @@ def spawnMenu(self, event): mainBooster = booster sourceContext = "boosterItem" itemContext = None if mainBooster is None else "Booster" - menu = ContextMenu.getMenu(mainBooster, selection, (sourceContext, itemContext)) + menu = ContextMenu.getMenu(self, mainBooster, selection, (sourceContext, itemContext)) if menu: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/cargoView.py b/gui/builtinAdditionPanes/cargoView.py index 08714260f5..b6d672f3b9 100644 --- a/gui/builtinAdditionPanes/cargoView.py +++ b/gui/builtinAdditionPanes/cargoView.py @@ -200,7 +200,7 @@ def spawnMenu(self, event): mainCargo = cargo sourceContext = "cargoItem" itemContext = None if mainCargo is None else Market.getInstance().getCategoryByItem(mainCargo.item).name - menu = ContextMenu.getMenu(mainCargo, selection, (sourceContext, itemContext)) + menu = ContextMenu.getMenu(self, mainCargo, selection, (sourceContext, itemContext)) if menu: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/commandView.py b/gui/builtinAdditionPanes/commandView.py index 41f1eb0f79..b1f71b3f17 100644 --- a/gui/builtinAdditionPanes/commandView.py +++ b/gui/builtinAdditionPanes/commandView.py @@ -197,7 +197,7 @@ def spawnMenu(self, event): if mainCommandFit is not None: contexts.append(('commandFit', 'Command Fit')) contexts.append(('commandView',)) - menu = ContextMenu.getMenu(mainCommandFit, selection, *contexts) + menu = ContextMenu.getMenu(self, mainCommandFit, selection, *contexts) if menu: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/droneView.py b/gui/builtinAdditionPanes/droneView.py index 2c7774309b..e4a435cb5c 100644 --- a/gui/builtinAdditionPanes/droneView.py +++ b/gui/builtinAdditionPanes/droneView.py @@ -323,7 +323,7 @@ def spawnMenu(self, event): selection = self.getSelectedDrones() sourceContext = "droneItem" itemContext = None if mainDrone is None else Market.getInstance().getCategoryByItem(mainDrone.item).name - menu = ContextMenu.getMenu(mainDrone, selection, (sourceContext, itemContext)) + menu = ContextMenu.getMenu(self, mainDrone, selection, (sourceContext, itemContext)) if menu: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/fighterView.py b/gui/builtinAdditionPanes/fighterView.py index 2c55fdd0a6..bbc2ed1899 100644 --- a/gui/builtinAdditionPanes/fighterView.py +++ b/gui/builtinAdditionPanes/fighterView.py @@ -361,7 +361,7 @@ def spawnMenu(self, event): mainFighter = fighter sourceContext = "fighterItem" itemContext = None if mainFighter is None else Market.getInstance().getCategoryByItem(mainFighter.item).name - menu = ContextMenu.getMenu(mainFighter, selection, (sourceContext, itemContext)) + menu = ContextMenu.getMenu(self, mainFighter, selection, (sourceContext, itemContext)) if menu: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/implantView.py b/gui/builtinAdditionPanes/implantView.py index 21734378d2..a39b41e7f6 100644 --- a/gui/builtinAdditionPanes/implantView.py +++ b/gui/builtinAdditionPanes/implantView.py @@ -278,7 +278,7 @@ def spawnMenu(self, event): sourceContext1 = "implantItem" if fit.implantSource == ImplantLocation.FIT else "implantItemChar" sourceContext2 = "implantView" if fit.implantSource == ImplantLocation.FIT else "implantViewChar" itemContext = None if mainImplant is None else Market.getInstance().getCategoryByItem(mainImplant.item).name - menu = ContextMenu.getMenu(mainImplant, selection, (sourceContext1, itemContext), (sourceContext2, itemContext)) + menu = ContextMenu.getMenu(self, mainImplant, selection, (sourceContext1, itemContext), (sourceContext2, itemContext)) if menu: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/projectedView.py b/gui/builtinAdditionPanes/projectedView.py index b9be7295db..dab2be7d45 100644 --- a/gui/builtinAdditionPanes/projectedView.py +++ b/gui/builtinAdditionPanes/projectedView.py @@ -325,7 +325,7 @@ def spawnMenu(self, event): contexts.append(('projected',)) selection = self.getSelectedProjectors() - menu = ContextMenu.getMenu(mainItem, selection, *contexts) + menu = ContextMenu.getMenu(self, mainItem, selection, *contexts) if menu is not None: self.PopupMenu(menu) diff --git a/gui/builtinContextMenus/ammoToDmgPattern.py b/gui/builtinContextMenus/ammoToDmgPattern.py index f1e0892a0d..fe7daa0e9a 100644 --- a/gui/builtinContextMenus/ammoToDmgPattern.py +++ b/gui/builtinContextMenus/ammoToDmgPattern.py @@ -14,7 +14,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if not self.settings.get('ammoPattern'): return False @@ -30,15 +30,15 @@ def display(self, srcContext, mainItem): return False - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Set {} as Damage Pattern".format(itmContext if itmContext is not None else "Item") - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() Fit.getInstance().setAsPattern(fitID, mainItem) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) - def getBitmap(self, context, mainItem): + def getBitmap(self, callingWindow, context, mainItem): return None diff --git a/gui/builtinContextMenus/boosterSideEffects.py b/gui/builtinContextMenus/boosterSideEffects.py index a392c3ff08..8377b9ed10 100644 --- a/gui/builtinContextMenus/boosterSideEffects.py +++ b/gui/builtinContextMenus/boosterSideEffects.py @@ -12,7 +12,7 @@ class BoosterSideEffects(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if self.mainFrame.getActiveFit() is None or srcContext not in "boosterItem": return False @@ -27,7 +27,7 @@ def display(self, srcContext, mainItem): return False - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Side Effects" def addEffect(self, menu, ability): @@ -39,7 +39,7 @@ def addEffect(self, menu, ability): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, mainItem, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.effectIds = {} diff --git a/gui/builtinContextMenus/cargoAdd.py b/gui/builtinContextMenus/cargoAdd.py index 833d2ab567..a2e3d30f40 100644 --- a/gui/builtinContextMenus/cargoAdd.py +++ b/gui/builtinContextMenus/cargoAdd.py @@ -9,7 +9,7 @@ class AddToCargo(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc"): return False @@ -25,10 +25,10 @@ def display(self, srcContext, mainItem): return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Add {} to Cargo".format(itmContext) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() typeID = int(mainItem.ID) command = cmd.GuiAddCargoCommand(fitID=fitID, itemID=typeID, amount=1) diff --git a/gui/builtinContextMenus/cargoAddAmmo.py b/gui/builtinContextMenus/cargoAddAmmo.py index 7925623115..41bc6b9c40 100644 --- a/gui/builtinContextMenus/cargoAddAmmo.py +++ b/gui/builtinContextMenus/cargoAddAmmo.py @@ -8,7 +8,7 @@ class AddToCargoAmmo(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False @@ -20,10 +20,10 @@ def display(self, srcContext, mainItem): return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Add {0} to Cargo (x1000)".format(itmContext) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() typeID = int(mainItem.ID) command = cmd.GuiAddCargoCommand(fitID=fitID, itemID=typeID, amount=1000) diff --git a/gui/builtinContextMenus/commandFitAdd.py b/gui/builtinContextMenus/commandFitAdd.py index 2ed52ee6ff..88dd41318d 100644 --- a/gui/builtinContextMenus/commandFitAdd.py +++ b/gui/builtinContextMenus/commandFitAdd.py @@ -40,13 +40,13 @@ def populateFits(cls, evt): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): if self.mainFrame.getActiveFit() is None or len(self.__class__.commandFits) == 0 or srcContext != "commandView": return False return True - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return "Command Fits" def addFit(self, menu, fit, includeShip=False): @@ -57,7 +57,7 @@ def addFit(self, menu, fit, includeShip=False): menu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.fitMenuItemIds = {} diff --git a/gui/builtinContextMenus/damagePatternChange.py b/gui/builtinContextMenus/damagePatternChange.py index c0f2a336e9..e88e6d7d2b 100644 --- a/gui/builtinContextMenus/damagePatternChange.py +++ b/gui/builtinContextMenus/damagePatternChange.py @@ -16,14 +16,14 @@ class ChangeDamagePattern(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext == "resistancesViewFull" @property def enabled(self): return self.mainFrame.getActiveFit() is not None - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): sDP = import_DamagePattern.getInstance() sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() @@ -75,7 +75,7 @@ def addPattern(self, rootMenu, pattern): menuItem.SetBitmap(bitmap) return menuItem - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False if self.m[i] not in self.subMenus: diff --git a/gui/builtinContextMenus/droneAddStack.py b/gui/builtinContextMenus/droneAddStack.py index 5f97be520d..ba38bff88c 100644 --- a/gui/builtinContextMenus/droneAddStack.py +++ b/gui/builtinContextMenus/droneAddStack.py @@ -10,7 +10,7 @@ class DroneAddStack(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext not in ('marketItemGroup', 'marketItemMisc'): return False @@ -32,11 +32,11 @@ def display(self, srcContext, mainItem): self.amount = amount return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return 'Add {} to Drone Bay{}'.format( itmContext, '' if self.amount == 1 else ' (x{})'.format(self.amount)) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): command = cmd.GuiAddLocalDroneCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(mainItem.ID), diff --git a/gui/builtinContextMenus/droneSplitStack.py b/gui/builtinContextMenus/droneSplitStack.py index 66850656a2..2638433c33 100644 --- a/gui/builtinContextMenus/droneSplitStack.py +++ b/gui/builtinContextMenus/droneSplitStack.py @@ -14,7 +14,7 @@ class DroneSplitStack(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext != "droneItem": return False @@ -23,10 +23,10 @@ def display(self, srcContext, mainItem): return mainItem.amount > 1 - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Split {} Stack".format(itmContext) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): dlg = DroneStackSplit(self.mainFrame, mainItem.amount) if dlg.ShowModal() == wx.ID_OK: diff --git a/gui/builtinContextMenus/envEffectAdd.py b/gui/builtinContextMenus/envEffectAdd.py index ce832c6fab..d797b7f246 100644 --- a/gui/builtinContextMenus/envEffectAdd.py +++ b/gui/builtinContextMenus/envEffectAdd.py @@ -26,13 +26,13 @@ class AddEnvironmentEffect(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext == "projected" - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return "Add Environmental Effect" - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False # Wormholes diff --git a/gui/builtinContextMenus/factorReload.py b/gui/builtinContextMenus/factorReload.py index c3074f559d..bcf0883ef0 100644 --- a/gui/builtinContextMenus/factorReload.py +++ b/gui/builtinContextMenus/factorReload.py @@ -12,17 +12,17 @@ class FactorReload(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext == "firepowerViewFull" @property def enabled(self): return self.mainFrame.getActiveFit() is not None - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return "Factor in Reload Time" - def activate(self, fullContext, i): + def activate(self, callingWindow, fullContext, i): fitIDs = Fit.getInstance().toggleFactorReload() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=tuple(fitIDs))) diff --git a/gui/builtinContextMenus/fighterAbilities.py b/gui/builtinContextMenus/fighterAbilities.py index 2cc9967c71..fbe811c661 100644 --- a/gui/builtinContextMenus/fighterAbilities.py +++ b/gui/builtinContextMenus/fighterAbilities.py @@ -14,7 +14,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.isProjected = None - def display(self, srcContext, mainItem, selection): + def display(self, callingWindow, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext not in ("fighterItem", "projectedFighter"): return False @@ -26,7 +26,7 @@ def display(self, srcContext, mainItem, selection): self.isProjected = True if srcContext == "projectedFighter" else False return True - def getText(self, itmContext, mainItem, selection): + def getText(self, callingWindow, itmContext, mainItem, selection): return "Abilities" def addAbility(self, menu, ability): @@ -37,7 +37,7 @@ def addAbility(self, menu, ability): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.abilityIds = {} diff --git a/gui/builtinContextMenus/fitAddCurrentlyOpen.py b/gui/builtinContextMenus/fitAddCurrentlyOpen.py index 05a503c5f4..67bfe0c583 100644 --- a/gui/builtinContextMenus/fitAddCurrentlyOpen.py +++ b/gui/builtinContextMenus/fitAddCurrentlyOpen.py @@ -13,17 +13,17 @@ class AddCurrentlyOpenFit(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): if self.mainFrame.getActiveFit() is None or srcContext not in ('projected', 'commandView'): return False return True - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return 'Add Currently Open Fit' - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): self.fitLookup = {} self.context = context sFit = Fit.getInstance() diff --git a/gui/builtinContextMenus/fitOpenNewTab.py b/gui/builtinContextMenus/fitOpenNewTab.py index f05bbed89a..ca2671d54e 100644 --- a/gui/builtinContextMenus/fitOpenNewTab.py +++ b/gui/builtinContextMenus/fitOpenNewTab.py @@ -11,7 +11,7 @@ class OpenFitInNewTab(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("projectedFit", "commandFit"): return False @@ -24,10 +24,10 @@ def display(self, srcContext, mainItem): return False return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Open Fit in New Tab" - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): wx.PostEvent(self.mainFrame, FitSelected(fitID=mainItem.ID, startup=2)) diff --git a/gui/builtinContextMenus/fitSystemSecurity.py b/gui/builtinContextMenus/fitSystemSecurity.py index d92b3a9023..f84668824e 100644 --- a/gui/builtinContextMenus/fitSystemSecurity.py +++ b/gui/builtinContextMenus/fitSystemSecurity.py @@ -21,7 +21,7 @@ class FitSystemSecurityMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): if srcContext != "fittingShip": return False @@ -33,7 +33,7 @@ def display(self, srcContext): return True - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return "Citadel System Security" def addOption(self, menu, optionLabel): @@ -43,7 +43,7 @@ def addOption(self, menu, optionLabel): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) msw = True if "wxMSW" in wx.PlatformInfo else False diff --git a/gui/builtinContextMenus/graphDmgApplyProjected.py b/gui/builtinContextMenus/graphDmgApplyProjected.py index 23603ee4bb..cef5d2f908 100644 --- a/gui/builtinContextMenus/graphDmgApplyProjected.py +++ b/gui/builtinContextMenus/graphDmgApplyProjected.py @@ -13,13 +13,13 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext == 'dmgStatsGraph' - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return 'Apply Attacker Webs and TPs' - def activate(self, fullContext, i): + def activate(self, callingWindow, fullContext, i): self.settings.set('applyProjected', not self.settings.get('applyProjected')) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) diff --git a/gui/builtinContextMenus/graphDmgDroneMode.py b/gui/builtinContextMenus/graphDmgDroneMode.py index 53827c3116..8c4767518c 100644 --- a/gui/builtinContextMenus/graphDmgDroneMode.py +++ b/gui/builtinContextMenus/graphDmgDroneMode.py @@ -16,10 +16,10 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext == 'dmgStatsGraph' - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return 'Drone Mode' def handleModeSwitch(self, event): @@ -29,7 +29,7 @@ def handleModeSwitch(self, event): self.settings.set('mobileDroneMode', option) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): m = wx.Menu() if "wxMSW" in wx.PlatformInfo: bindmenu = rootMenu diff --git a/gui/builtinContextMenus/graphDmgIgnoreResists.py b/gui/builtinContextMenus/graphDmgIgnoreResists.py index 765c3b384f..b98eccb4aa 100644 --- a/gui/builtinContextMenus/graphDmgIgnoreResists.py +++ b/gui/builtinContextMenus/graphDmgIgnoreResists.py @@ -13,13 +13,13 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext == 'dmgStatsGraph' - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return 'Ignore Target Resists' - def activate(self, fullContext, i): + def activate(self, callingWindow, fullContext, i): self.settings.set('ignoreResists', not self.settings.get('ignoreResists')) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) diff --git a/gui/builtinContextMenus/implantSetAdd.py b/gui/builtinContextMenus/implantSetAdd.py index 92e5e1b24d..703e80fe45 100644 --- a/gui/builtinContextMenus/implantSetAdd.py +++ b/gui/builtinContextMenus/implantSetAdd.py @@ -14,7 +14,7 @@ class AddImplantSet(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): sIS = s_ImplantSets.getInstance() implantSets = sIS.getImplantSetList() @@ -23,10 +23,10 @@ def display(self, srcContext, mainItem): return False return srcContext in ("implantView", "implantEditor") - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Add Implant Set" - def getSubMenu(self, context, mainItem, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): """ A note on the mainItem here: Most context menus act on a fit, so it's easy enough to get the active fit from the MainFrame instance. There's never been a reason to get info from another window, so there's not common diff --git a/gui/builtinContextMenus/itemAmountChange.py b/gui/builtinContextMenus/itemAmountChange.py index 8b487735f4..8926000ed1 100644 --- a/gui/builtinContextMenus/itemAmountChange.py +++ b/gui/builtinContextMenus/itemAmountChange.py @@ -18,7 +18,7 @@ class ChangeItemAmount(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("droneItem", "projectedDrone", "cargoItem", "projectedFit", "fighterItem", "projectedFighter"): return False @@ -27,10 +27,10 @@ def display(self, srcContext, mainItem): return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Change {0} Quantity".format(itmContext) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() srcContext = fullContext[0] if isinstance(mainItem, es_Fit): diff --git a/gui/builtinContextMenus/itemFill.py b/gui/builtinContextMenus/itemFill.py index c172227f27..b60fbf28a9 100644 --- a/gui/builtinContextMenus/itemFill.py +++ b/gui/builtinContextMenus/itemFill.py @@ -10,7 +10,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if not self.settings.get('moduleFill'): return False @@ -28,10 +28,10 @@ def display(self, srcContext, mainItem): return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Fill With Module" - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(mainItem.ID))) diff --git a/gui/builtinContextMenus/itemMarketJump.py b/gui/builtinContextMenus/itemMarketJump.py index 68b51024d1..5bdbd1f685 100644 --- a/gui/builtinContextMenus/itemMarketJump.py +++ b/gui/builtinContextMenus/itemMarketJump.py @@ -7,7 +7,7 @@ class JumpToMarketItem(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): validContexts = ("marketItemMisc", "fittingModule", "fittingCharge", "droneItem", "implantItem", "boosterItem", @@ -36,10 +36,10 @@ def display(self, srcContext, mainItem): doit = not mainItem.isEmpty if srcContext == "fittingModule" else True return doit - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "{0} Market Group".format(itmContext if itmContext is not None else "Item") - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] if srcContext in ("fittingCharge", "projectedCharge"): item = mainItem.charge diff --git a/gui/builtinContextMenus/itemProject.py b/gui/builtinContextMenus/itemProject.py index cc5a588cd0..df7ee78e8a 100644 --- a/gui/builtinContextMenus/itemProject.py +++ b/gui/builtinContextMenus/itemProject.py @@ -11,7 +11,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if not self.settings.get('project'): return False @@ -30,10 +30,10 @@ def display(self, srcContext, mainItem): return mainItem.isType("projected") - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Project {0} onto Fit".format(itmContext) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() if mainItem.isModule: success = self.mainFrame.command.Submit(cmd.GuiAddProjectedModuleCommand(fitID=fitID, itemID=mainItem.ID)) diff --git a/gui/builtinContextMenus/itemRemove.py b/gui/builtinContextMenus/itemRemove.py index 0b8fd69098..607d3c2c4d 100644 --- a/gui/builtinContextMenus/itemRemove.py +++ b/gui/builtinContextMenus/itemRemove.py @@ -18,7 +18,7 @@ class RemoveItem(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem, selection): + def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ( "fittingModule", "droneItem", "implantItem", "boosterItem", @@ -35,12 +35,12 @@ def display(self, srcContext, mainItem, selection): self.srcContext = srcContext return True - def getText(self, itmContext, mainItem, selection): + def getText(self, callingWindow, itmContext, mainItem, selection): return 'Remove {}{}'.format( itmContext if itmContext is not None else 'Item', ' Stack' if self.srcContext in ('droneItem', 'projectedDrone', 'cargoItem', 'projectedFit') else '') - def activate(self, fullContext, mainItem, selection, i): + def activate(self, callingWindow, fullContext, mainItem, selection, i): handlerMap = { 'fittingModule': self.__handleModule, 'droneItem': self.__handleDrone, diff --git a/gui/builtinContextMenus/itemStats.py b/gui/builtinContextMenus/itemStats.py index 414b22eebc..5306ea284b 100644 --- a/gui/builtinContextMenus/itemStats.py +++ b/gui/builtinContextMenus/itemStats.py @@ -11,7 +11,7 @@ class ItemStats(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext not in ( "marketItemGroup", "marketItemMisc", "fittingModule", "fittingCharge", @@ -31,10 +31,10 @@ def display(self, srcContext, mainItem): return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "{} Stats".format(itmContext if itmContext is not None else "Item") - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] if srcContext == "fittingShip": fitID = self.mainFrame.getActiveFit() diff --git a/gui/builtinContextMenus/itemVariationChange.py b/gui/builtinContextMenus/itemVariationChange.py index d445c27d43..290606e256 100644 --- a/gui/builtinContextMenus/itemVariationChange.py +++ b/gui/builtinContextMenus/itemVariationChange.py @@ -16,7 +16,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, mainItem, selection): + def display(self, callingWindow, srcContext, mainItem, selection): if not self.settings.get('metaSwap'): return False @@ -45,10 +45,10 @@ def display(self, srcContext, mainItem, selection): self.selection = selection return True - def getText(self, itmContext, mainItem, selection): + def getText(self, callingWindow, itmContext, mainItem, selection): return 'Variations' - def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): self.moduleLookup = {} sFit = Fit.getInstance() fit = sFit.getFit(self.mainFrame.getActiveFit()) diff --git a/gui/builtinContextMenus/moduleAmmoChange.py b/gui/builtinContextMenus/moduleAmmoChange.py index 9c557fc47e..a6eff62198 100644 --- a/gui/builtinContextMenus/moduleAmmoChange.py +++ b/gui/builtinContextMenus/moduleAmmoChange.py @@ -22,7 +22,7 @@ def __init__(self): # Format: {type ID: set(loadable, charges)} self.loadableCharges = {} - def display(self, srcContext, mainItem, selection): + def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ("fittingModule", "projectedModule"): return False @@ -38,7 +38,7 @@ def display(self, srcContext, mainItem, selection): self.srcContext = srcContext return True - def getText(self, itmContext, mainItem, selection): + def getText(self, callingWindow, itmContext, mainItem, selection): return "Charge" def getChargesForMod(self, mod): @@ -130,7 +130,7 @@ def addSeperator(m, text): m.Append(id_, '─ %s ─' % text) m.Enable(id_, False) - def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False m = wx.Menu() self.chargeIds = {} diff --git a/gui/builtinContextMenus/moduleFill.py b/gui/builtinContextMenus/moduleFill.py index 3d21aed152..8983c9b24d 100644 --- a/gui/builtinContextMenus/moduleFill.py +++ b/gui/builtinContextMenus/moduleFill.py @@ -11,7 +11,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if not self.settings.get('moduleFill'): return False @@ -21,10 +21,10 @@ def display(self, srcContext, mainItem): return srcContext == "fittingModule" - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Fill With {0}".format(itmContext if itmContext is not None else "Module") - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] fitID = self.mainFrame.getActiveFit() diff --git a/gui/builtinContextMenus/moduleMutations.py b/gui/builtinContextMenus/moduleMutations.py index ee4b36d4c0..51a2343a43 100644 --- a/gui/builtinContextMenus/moduleMutations.py +++ b/gui/builtinContextMenus/moduleMutations.py @@ -13,7 +13,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.eventIDs = {} - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if srcContext != "fittingModule" or self.mainFrame.getActiveFit() is None: return False @@ -26,10 +26,10 @@ def display(self, srcContext, mainItem): return True - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Apply Mutaplasmid" if not mainItem.isMutated else "Revert to {}".format(mainItem.baseItem.name) - def getSubMenu(self, context, mainItem, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): if mainItem.isMutated: return None @@ -58,7 +58,7 @@ def handleMenu(self, event): self.mainFrame.command.Submit(GuiConvertMutatedLocalModuleCommand( fitID=fitID, position=position, mutaplasmid=mutaplasmid)) - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if mainItem in fit.modules: @@ -66,7 +66,7 @@ def activate(self, fullContext, mainItem, i): self.mainFrame.command.Submit(GuiRevertMutatedLocalModuleCommand( fitID=fitID, position=position)) - def getBitmap(self, context, mainItem): + def getBitmap(self, callingWindow, context, mainItem): return None diff --git a/gui/builtinContextMenus/moduleSpool.py b/gui/builtinContextMenus/moduleSpool.py index 488e14f551..6d2e3aa465 100644 --- a/gui/builtinContextMenus/moduleSpool.py +++ b/gui/builtinContextMenus/moduleSpool.py @@ -19,7 +19,7 @@ def __init__(self): self.settings = ContextMenuSettings.getInstance() self.resetId = None - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if not self.settings.get('spoolup'): return False @@ -34,10 +34,10 @@ def display(self, srcContext, mainItem): return self.mod.item.group.name in ("Precursor Weapon", "Mutadaptive Remote Armor Repairer") - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Spoolup Cycles" - def getSubMenu(self, context, mainItem, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): m = wx.Menu() if "wxMSW" in wx.PlatformInfo: bindmenu = rootMenu diff --git a/gui/builtinContextMenus/priceOptions.py b/gui/builtinContextMenus/priceOptions.py index 18d918bdb6..e1d4cfddd2 100644 --- a/gui/builtinContextMenus/priceOptions.py +++ b/gui/builtinContextMenus/priceOptions.py @@ -24,13 +24,13 @@ def label(self): def optionName(self): raise NotImplementedError() - def display(self, srcContext): + def display(self, callingWindow, srcContext): return srcContext in ("priceViewFull", "priceViewMinimal") - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return self.label - def activate(self, fullContext, i): + def activate(self, callingWindow, fullContext, i): self.settings.set(self.optionName, not self.settings.get(self.optionName)) fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) diff --git a/gui/builtinContextMenus/shipJump.py b/gui/builtinContextMenus/shipJump.py index f4c1ca038a..b7130a2196 100644 --- a/gui/builtinContextMenus/shipJump.py +++ b/gui/builtinContextMenus/shipJump.py @@ -12,7 +12,7 @@ class JumpToShip(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): if srcContext != "fittingShip": return False fitTabSelected = self.mainFrame.notebookBrowsers.GetSelection() == 1 @@ -28,10 +28,10 @@ def display(self, srcContext): return True return False - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return "Open in Fitting Browser" - def activate(self, fullContext, i): + def activate(self, callingWindow, fullContext, i): fitID = self.mainFrame.getActiveFit() ship = Fit.getInstance().getFit(fitID).ship self.mainFrame.notebookBrowsers.SetSelection(1) diff --git a/gui/builtinContextMenus/shipModeChange.py b/gui/builtinContextMenus/shipModeChange.py index 4e73905317..1f6b78a8ba 100644 --- a/gui/builtinContextMenus/shipModeChange.py +++ b/gui/builtinContextMenus/shipModeChange.py @@ -12,7 +12,7 @@ class ChangeShipTacticalMode(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): if self.mainFrame.getActiveFit() is None or srcContext != "fittingShip": return False @@ -25,7 +25,7 @@ def display(self, srcContext): return srcContext == "fittingShip" and self.modes is not None - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): return "Tactical Mode" def addMode(self, menu, mode): @@ -36,7 +36,7 @@ def addMode(self, menu, mode): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.modeIds = {} diff --git a/gui/builtinContextMenus/skillAffectors.py b/gui/builtinContextMenus/skillAffectors.py index c171f29cfd..d72f07a780 100644 --- a/gui/builtinContextMenus/skillAffectors.py +++ b/gui/builtinContextMenus/skillAffectors.py @@ -17,7 +17,7 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, mainItem): + def display(self, callingWindow, srcContext, mainItem): if not self.settings.get('changeAffectingSkills'): return False @@ -70,7 +70,7 @@ def display(self, srcContext, mainItem): self.skills = sorted(skills, key=lambda x: x.item.name) return len(self.skills) > 0 - def getText(self, itmContext, mainItem): + def getText(self, callingWindow, itmContext, mainItem): return "Change %s Skills" % itmContext def addSkill(self, rootMenu, skill, i): @@ -85,7 +85,7 @@ def addSkill(self, rootMenu, skill, i): rootMenu.Bind(wx.EVT_MENU, self.handleSkillChange, menuItem) return menuItem - def getSubMenu(self, context, mainItem, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.skillIds = {} sub = wx.Menu() diff --git a/gui/builtinContextMenus/targetProfile.py b/gui/builtinContextMenus/targetProfile.py index 7a578f250b..7fea77b8a9 100644 --- a/gui/builtinContextMenus/targetProfile.py +++ b/gui/builtinContextMenus/targetProfile.py @@ -16,7 +16,7 @@ class TargetProfile(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext): + def display(self, callingWindow, srcContext): if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull": return False @@ -26,7 +26,7 @@ def display(self, srcContext): return len(self.patterns) > 0 - def getText(self, itmContext): + def getText(self, callingWindow, itmContext): # We take into consideration just target resists, so call menu item accordingly return "Target Resists" @@ -63,7 +63,7 @@ def addPattern(self, rootMenu, pattern): item.SetBitmap(bitmap) return item - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.patternIds = {} self.subMenus = OrderedDict() diff --git a/gui/builtinItemStatsViews/itemAffectedBy.py b/gui/builtinItemStatsViews/itemAffectedBy.py index 1273569530..8c9ac60354 100644 --- a/gui/builtinItemStatsViews/itemAffectedBy.py +++ b/gui/builtinItemStatsViews/itemAffectedBy.py @@ -83,7 +83,7 @@ def spawnMenu(self, event): type_ = stuff.__class__.__name__ contexts.append(("itemStats", type_)) stuff = stuff if type_ != "Skill" else stuff.item - menu = ContextMenu.getMenu(stuff, (stuff,), *contexts) + menu = ContextMenu.getMenu(self, stuff, (stuff,), *contexts) self.PopupMenu(menu) def ExpandCollapseTree(self): diff --git a/gui/builtinMarketBrowser/itemView.py b/gui/builtinMarketBrowser/itemView.py index 304c86573d..62166e1044 100644 --- a/gui/builtinMarketBrowser/itemView.py +++ b/gui/builtinMarketBrowser/itemView.py @@ -248,7 +248,7 @@ def contextMenu(self, event): sourceContext = "marketItemMisc" if self.marketBrowser.mode in ("search", "recent") else "marketItemGroup" itemContext = sMkt.getCategoryByItem(item).name - menu = ContextMenu.getMenu(item, (item,), (sourceContext, itemContext)) + menu = ContextMenu.getMenu(self, item, (item,), (sourceContext, itemContext)) self.PopupMenu(menu) def populate(self, items): diff --git a/gui/builtinShipBrowser/shipItem.py b/gui/builtinShipBrowser/shipItem.py index 9a61780a06..e9806fef0c 100644 --- a/gui/builtinShipBrowser/shipItem.py +++ b/gui/builtinShipBrowser/shipItem.py @@ -108,7 +108,7 @@ def OnShowPopup(self, event): pos = event.GetPosition() pos = self.ScreenToClient(pos) contexts = [("baseShip", "Ship Basic")] - menu = ContextMenu.getMenu(self.baseItem, (self.baseItem,), *contexts) + menu = ContextMenu.getMenu(self, self.baseItem, (self.baseItem,), *contexts) self.PopupMenu(menu, pos) def OnTimer(self, event): diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 49c193e4b5..efeb8211a9 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -669,7 +669,7 @@ def spawnMenu(self, event): contexts.append(fullContext) contexts.append(("fittingShip", "Ship" if not fit.isStructure else "Citadel")) - menu = ContextMenu.getMenu(mainMod, selection, *contexts) + menu = ContextMenu.getMenu(self, mainMod, selection, *contexts) self.PopupMenu(menu) def click(self, event): diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 19ef5adb5d..0d2eb83f61 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -603,18 +603,13 @@ def spawnMenu(self, event): srcContext = "skillItem" itemContext = "Skill" context = (srcContext, itemContext) - menu = ContextMenu.getMenu(eveItem, [eveItem], context) + menu = ContextMenu.getMenu(self, eveItem, [eveItem], context) char = self.charEditor.entityEditor.getActiveEntity() if char.name not in ("All 0", "All 5"): menu.AppendSeparator() menu.Append(self.idUnlearned, "Unlearn") for level in range(6): menu.Append(self.idLevels[level], "Level %d" % level) - # Doesn't make sense to have these menu items here, as they do not revert skill changes - # done in an editor - because these changes are persisted anyway - # menu.AppendSeparator() - # menu.Append(self.revertID, "Revert") - # menu.Append(self.saveID, "Save") menu.Bind(wx.EVT_MENU, self.changeLevel) self.PopupMenu(menu) @@ -718,7 +713,7 @@ def spawnMenu(self, event): # fuck good coding practices, passing a pointer to the character editor here for [reasons] =D # (see implantSets context class for info) item = self.Parent.Parent - menu = ContextMenu.getMenu(item, (item,), *context) + menu = ContextMenu.getMenu(self, item, (item,), *context) if menu: self.PopupMenu(menu) diff --git a/gui/contextMenu.py b/gui/contextMenu.py index 6e6a4f4620..d1cf1c97f1 100644 --- a/gui/contextMenu.py +++ b/gui/contextMenu.py @@ -38,20 +38,21 @@ def register(cls): ContextMenu.menus.append(cls) @classmethod - def hasMenu(cls, mainItem, selection, *fullContexts): + def hasMenu(cls, callingWindow, mainItem, selection, *fullContexts): for i, fullContext in enumerate(fullContexts): srcContext = fullContext[0] for menuHandler in cls.menus: m = menuHandler() - if m._baseDisplay(srcContext, mainItem, selection): + if m._baseDisplay(callingWindow, srcContext, mainItem, selection): return True return False @classmethod - def getMenu(cls, mainItem, selection, *fullContexts): + def getMenu(cls, callingWindow, mainItem, selection, *fullContexts): """ getMenu returns a menu that is used with wx.PopupMenu. + callingWindow: window (in wx' sense) which requested menu mainItem: usually, provides item which was clicked. Useful for single- item actions when user has multiple items selected selection: provides a list of what was selected. If only 1 item was @@ -85,22 +86,22 @@ def getMenu(cls, mainItem, selection, *fullContexts): for menuHandler in cls.menus: # loop through registered menus m = menuHandler() - if m._baseDisplay(srcContext, mainItem, selection): + if m._baseDisplay(callingWindow, srcContext, mainItem, selection): display_amount += 1 - texts = m._baseGetText(itemContext, mainItem, selection) + texts = m._baseGetText(callingWindow, itemContext, mainItem, selection) if isinstance(texts, str): texts = (texts,) - bitmap = m._baseGetBitmap(srcContext, mainItem, selection) + bitmap = m._baseGetBitmap(callingWindow, srcContext, mainItem, selection) multiple = not isinstance(bitmap, wx.Bitmap) for it, text in enumerate(texts): id = ContextMenu.nextID() check = m.checked rootItem = wx.MenuItem(rootMenu, id, text, kind=wx.ITEM_NORMAL if m.checked is None else wx.ITEM_CHECK) - rootMenu.info[id] = (m, fullContext, it) + rootMenu.info[id] = (m, callingWindow, fullContext, it) - sub = m._baseGetSubMenu(srcContext, mainItem, selection, rootMenu, it, rootItem) + sub = m._baseGetSubMenu(callingWindow, srcContext, mainItem, selection, rootMenu, it, rootItem) if sub is None: # if there is no sub menu, bind the handler to the rootItem @@ -152,13 +153,13 @@ def handler(event): menu = event.EventObject stuff = menu.info.get(event.Id) if stuff is not None: - menuHandler, context, i = stuff + menuHandler, callingWindow, context, i = stuff selection = menu.selection mainItem = menu.mainItem if not hasattr(selection, "__iter__"): selection = (selection,) - menuHandler._baseActivate(context, mainItem, selection, i) + menuHandler._baseActivate(callingWindow, context, mainItem, selection, i) else: event.Skip() @@ -190,15 +191,15 @@ def enabled(self): return True @abstractmethod - def _baseDisplay(self, context, mainItem, selection): + def _baseDisplay(self, callingWindow, context, mainItem, selection): raise NotImplementedError @abstractmethod - def _baseGetBitmap(self, context, mainItem, selection): + def _baseGetBitmap(self, callingWindow, context, mainItem, selection): raise NotImplementedError @abstractmethod - def _baseGetText(self, context, mainItem, selection): + def _baseGetText(self, callingWindow, context, mainItem, selection): """ getText should be implemented in child classes, and should return either a string that will make up a menu item label or a list of strings which @@ -209,11 +210,11 @@ def _baseGetText(self, context, mainItem, selection): raise NotImplementedError @abstractmethod - def _baseGetSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): raise NotImplementedError @abstractmethod - def _baseActivate(self, fullContext, mainItem, selection, i): + def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): raise NotImplementedError @@ -224,36 +225,36 @@ class ContextMenuUnconditional(ContextMenu, metaclass=ABCMeta): """ @abstractmethod - def display(self, context): + def display(self, callingWindow, context): raise NotImplementedError - def getBitmap(self, context): + def getBitmap(self, callingWindow, context): return @abstractmethod - def getText(self, context): + def getText(self, callingWindow, context): raise NotImplementedError - def getSubMenu(self, context, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): return - def activate(self, fullContext, i): + def activate(self, callingWindow, fullContext, i): return - def _baseDisplay(self, context, mainItem, selection): - return self.display(context) + def _baseDisplay(self, callingWindow, context, mainItem, selection): + return self.display(callingWindow, context) - def _baseGetBitmap(self, context, mainItem, selection): - return self.getBitmap(context) + def _baseGetBitmap(self, callingWindow, context, mainItem, selection): + return self.getBitmap(callingWindow, context) - def _baseGetText(self, context, mainItem, selection): - return self.getText(context) + def _baseGetText(self, callingWindow, context, mainItem, selection): + return self.getText(callingWindow, context) - def _baseGetSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): - return self.getSubMenu(context, rootMenu, i, pitem) + def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): + return self.getSubMenu(callingWindow, context, rootMenu, i, pitem) - def _baseActivate(self, fullContext, mainItem, selection, i): - return self.activate(fullContext, i) + def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): + return self.activate(callingWindow, fullContext, i) class ContextMenuSingle(ContextMenu, metaclass=ABCMeta): @@ -263,36 +264,36 @@ class ContextMenuSingle(ContextMenu, metaclass=ABCMeta): """ @abstractmethod - def display(self, context, mainItem): + def display(self, callingWindow, context, mainItem): raise NotImplementedError - def getBitmap(self, context, mainItem): + def getBitmap(self, callingWindow, context, mainItem): return @abstractmethod - def getText(self, context, mainItem): + def getText(self, callingWindow, context, mainItem): raise NotImplementedError - def getSubMenu(self, context, mainItem, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): return - def activate(self, fullContext, mainItem, i): + def activate(self, callingWindow, fullContext, mainItem, i): return - def _baseDisplay(self, context, mainItem, selection): - return self.display(context, mainItem) + def _baseDisplay(self, callingWindow, context, mainItem, selection): + return self.display(callingWindow, context, mainItem) - def _baseGetBitmap(self, context, mainItem, selection): - return self.getBitmap(context, mainItem) + def _baseGetBitmap(self, callingWindow, context, mainItem, selection): + return self.getBitmap(callingWindow, context, mainItem) - def _baseGetText(self, context, mainItem, selection): - return self.getText(context, mainItem) + def _baseGetText(self, callingWindow, context, mainItem, selection): + return self.getText(callingWindow, context, mainItem) - def _baseGetSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): - return self.getSubMenu(context, mainItem, rootMenu, i, pitem) + def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): + return self.getSubMenu(callingWindow, context, mainItem, rootMenu, i, pitem) - def _baseActivate(self, fullContext, mainItem, selection, i): - return self.activate(fullContext, mainItem, i) + def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): + return self.activate(callingWindow, fullContext, mainItem, i) class ContextMenuSelection(ContextMenu, metaclass=ABCMeta): @@ -302,41 +303,41 @@ class ContextMenuSelection(ContextMenu, metaclass=ABCMeta): """ @abstractmethod - def display(self, context, selection): + def display(self, callingWindow, context, selection): raise NotImplementedError - def getBitmap(self, context, selection): + def getBitmap(self, callingWindow, context, selection): return @abstractmethod - def getText(self, context, selection): + def getText(self, callingWindow, context, selection): raise NotImplementedError - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, selection, rootMenu, i, pitem): return - def activate(self, fullContext, selection, i): + def activate(self, callingWindow, fullContext, selection, i): return - def _baseDisplay(self, context, mainItem, selection): + def _baseDisplay(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) - return self.display(context, selection) + return self.display(callingWindow, context, selection) - def _baseGetBitmap(self, context, mainItem, selection): + def _baseGetBitmap(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) - return self.getBitmap(context, selection) + return self.getBitmap(callingWindow, context, selection) - def _baseGetText(self, context, mainItem, selection): + def _baseGetText(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) - return self.getText(context, selection) + return self.getText(callingWindow, context, selection) - def _baseGetSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): selection = self.__getSelection(selection, mainItem) - return self.getSubMenu(context, selection, rootMenu, i, pitem) + return self.getSubMenu(callingWindow, context, selection, rootMenu, i, pitem) - def _baseActivate(self, fullContext, mainItem, selection, i): + def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): selection = self.__getSelection(selection, mainItem) - return self.activate(fullContext, selection, i) + return self.activate(callingWindow, fullContext, selection, i) def __getSelection(self, selection, mainItem): if mainItem is not None and mainItem not in selection: @@ -351,41 +352,41 @@ class ContextMenuCombined(ContextMenu, metaclass=ABCMeta): """ @abstractmethod - def display(self, context, mainItem, selection): + def display(self, callingWindow, context, mainItem, selection): raise NotImplementedError - def getBitmap(self, context, mainItem, selection): + def getBitmap(self, callingWindow, context, mainItem, selection): return @abstractmethod - def getText(self, context, mainItem, selection): + def getText(self, callingWindow, context, mainItem, selection): raise NotImplementedError - def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): return - def activate(self, fullContext, mainItem, selection, i): + def activate(self, callingWindow, fullContext, mainItem, selection, i): return - def _baseDisplay(self, context, mainItem, selection): + def _baseDisplay(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) - return self.display(context, mainItem, selection) + return self.display(callingWindow, context, mainItem, selection) - def _baseGetBitmap(self, context, mainItem, selection): + def _baseGetBitmap(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) - return self.getBitmap(context, mainItem, selection) + return self.getBitmap(callingWindow, context, mainItem, selection) - def _baseGetText(self, context, mainItem, selection): + def _baseGetText(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) - return self.getText(context, mainItem, selection) + return self.getText(callingWindow, context, mainItem, selection) - def _baseGetSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): + def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): selection = self.__getSelection(selection, mainItem) - return self.getSubMenu(context, mainItem, selection, rootMenu, i, pitem) + return self.getSubMenu(callingWindow, context, mainItem, selection, rootMenu, i, pitem) - def _baseActivate(self, fullContext, mainItem, selection, i): + def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): selection = self.__getSelection(selection, mainItem) - return self.activate(fullContext, mainItem, selection, i) + return self.activate(callingWindow, fullContext, mainItem, selection, i) def __getSelection(self, selection, mainItem): if mainItem is not None and mainItem not in selection: diff --git a/gui/graphFrame/panel.py b/gui/graphFrame/panel.py index 03283117f7..43402baa60 100644 --- a/gui/graphFrame/panel.py +++ b/gui/graphFrame/panel.py @@ -163,7 +163,7 @@ def updateControls(self, layout=True): self._updateInputs(storeInputs=False) # Context icon - self.contextIcon.Show(ContextMenu.hasMenu(None, None, (view.internalName,))) + self.contextIcon.Show(ContextMenu.hasMenu(self, None, None, (view.internalName,))) if layout: self.graphFrame.Layout() @@ -346,7 +346,7 @@ def _setVectorDefaults(self): def contextMenuHandler(self, event): viewName = self.graphFrame.getView().internalName - menu = ContextMenu.getMenu(None, None, (viewName,)) + menu = ContextMenu.getMenu(self, None, None, (viewName,)) if menu is not None: self.PopupMenu(menu) event.Skip() diff --git a/gui/statsPane.py b/gui/statsPane.py index d067e2fc63..1c586bea7f 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -132,19 +132,18 @@ def __init__(self, parent): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) - @staticmethod - def contextHandler(contentPanel, tp): + def contextHandler(self, contentPanel, tp): viewName = contentPanel.viewName def handler(event): - menu = ContextMenu.getMenu(None, None, (viewName,)) + menu = ContextMenu.getMenu(self, None, None, (viewName,)) if menu is not None: contentPanel.PopupMenu(menu) event.Skip() - if ContextMenu.hasMenu(None, None, (viewName,)): + if ContextMenu.hasMenu(self, None, None, (viewName,)): sizer = tp.GetHeaderContentSizer() sizer.AddStretchSpacer() # Add menu