From 19b1eb161b9d94ee82582e3390b7dee0ee60afa2 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Mon, 22 Apr 2019 17:01:53 +0300 Subject: [PATCH] Pass main item argument to context menu definitions --- gui/builtinContextMenus/ammoToDmgPattern.py | 8 ++--- gui/builtinContextMenus/boosterSideEffects.py | 6 ++-- gui/builtinContextMenus/cargoAdd.py | 6 ++-- gui/builtinContextMenus/cargoAddAmmo.py | 6 ++-- gui/builtinContextMenus/commandFitAdd.py | 6 ++-- .../damagePatternChange.py | 6 ++-- gui/builtinContextMenus/droneAddStack.py | 6 ++-- gui/builtinContextMenus/droneSplitStack.py | 6 ++-- gui/builtinContextMenus/envEffectAdd.py | 6 ++-- gui/builtinContextMenus/factorReload.py | 6 ++-- gui/builtinContextMenus/fighterAbilities.py | 6 ++-- .../fitAddCurrentlyOpen.py | 6 ++-- gui/builtinContextMenus/fitOpenNewTab.py | 6 ++-- gui/builtinContextMenus/implantSetAdd.py | 6 ++-- gui/builtinContextMenus/itemAmountChange.py | 6 ++-- gui/builtinContextMenus/itemFill.py | 6 ++-- gui/builtinContextMenus/itemMarketJump.py | 6 ++-- gui/builtinContextMenus/itemProject.py | 6 ++-- gui/builtinContextMenus/itemRemove.py | 6 ++-- gui/builtinContextMenus/itemStats.py | 6 ++-- .../itemVariationChange.py | 6 ++-- gui/builtinContextMenus/moduleAmmoChange.py | 6 ++-- gui/builtinContextMenus/moduleFill.py | 6 ++-- gui/builtinContextMenus/moduleMutations.py | 10 +++--- gui/builtinContextMenus/moduleSpool.py | 6 ++-- gui/builtinContextMenus/priceOptions.py | 6 ++-- gui/builtinContextMenus/shipJump.py | 6 ++-- gui/builtinContextMenus/shipModeChange.py | 6 ++-- gui/builtinContextMenus/skillAffectors.py | 6 ++-- gui/builtinContextMenus/targetResists.py | 6 ++-- gui/contextMenu.py | 32 +++++++++++-------- gui/display.py | 3 -- gui/statsPane.py | 2 +- 33 files changed, 112 insertions(+), 111 deletions(-) diff --git a/gui/builtinContextMenus/ammoToDmgPattern.py b/gui/builtinContextMenus/ammoToDmgPattern.py index 467a6ec10..241afee19 100644 --- a/gui/builtinContextMenus/ammoToDmgPattern.py +++ b/gui/builtinContextMenus/ammoToDmgPattern.py @@ -12,7 +12,7 @@ class AmmoToDmgPattern(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('ammoPattern'): return False @@ -26,17 +26,17 @@ class AmmoToDmgPattern(ContextMenu): return False - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Set {0} as Damage Pattern".format(itmContext if itmContext is not None else "Item") - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): item = selection[0] fit = self.mainFrame.getActiveFit() sFit = Fit.getInstance() sFit.setAsPattern(fit, item) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fit)) - def getBitmap(self, context, selection): + def getBitmap(self, context, mainItem, selection): return None diff --git a/gui/builtinContextMenus/boosterSideEffects.py b/gui/builtinContextMenus/boosterSideEffects.py index a17e16032..953d051df 100644 --- a/gui/builtinContextMenus/boosterSideEffects.py +++ b/gui/builtinContextMenus/boosterSideEffects.py @@ -14,7 +14,7 @@ class BoosterSideEffect(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): # if not self.settings.get('fighterAbilities'): # return False @@ -29,7 +29,7 @@ class BoosterSideEffect(ContextMenu): return False - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Side Effects" def addEffect(self, menu, ability): @@ -41,7 +41,7 @@ class BoosterSideEffect(ContextMenu): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, 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 d58c48c30..e4f5002e4 100644 --- a/gui/builtinContextMenus/cargoAdd.py +++ b/gui/builtinContextMenus/cargoAdd.py @@ -10,7 +10,7 @@ class AddToCargo(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if srcContext not in ("marketItemGroup", "marketItemMisc"): return False @@ -23,10 +23,10 @@ class AddToCargo(ContextMenu): return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Add {} to Cargo".format(itmContext) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): fitID = self.mainFrame.getActiveFit() typeID = int(selection[0].ID) diff --git a/gui/builtinContextMenus/cargoAddAmmo.py b/gui/builtinContextMenus/cargoAddAmmo.py index a34bcb82c..d2456003c 100644 --- a/gui/builtinContextMenus/cargoAddAmmo.py +++ b/gui/builtinContextMenus/cargoAddAmmo.py @@ -9,7 +9,7 @@ class AddToCargoAmmo(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False @@ -19,10 +19,10 @@ class AddToCargoAmmo(ContextMenu): ): return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Add {0} to Cargo (x1000)".format(itmContext) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): fitID = self.mainFrame.getActiveFit() typeID = int(selection[0].ID) self.mainFrame.command.Submit(cmd.GuiAddCargoCommand( diff --git a/gui/builtinContextMenus/commandFitAdd.py b/gui/builtinContextMenus/commandFitAdd.py index 32acec931..0be7479c3 100644 --- a/gui/builtinContextMenus/commandFitAdd.py +++ b/gui/builtinContextMenus/commandFitAdd.py @@ -41,13 +41,13 @@ class AddCommandFit(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or len(self.__class__.commandFits) == 0 or srcContext != "commandView": return False return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Command Fits" def addFit(self, menu, fit, includeShip=False): @@ -58,7 +58,7 @@ class AddCommandFit(ContextMenu): menu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, 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 d3b451933..6321acbce 100644 --- a/gui/builtinContextMenus/damagePatternChange.py +++ b/gui/builtinContextMenus/damagePatternChange.py @@ -17,14 +17,14 @@ class ChangeDamagePattern(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext == "resistancesViewFull" @property def enabled(self): return self.mainFrame.getActiveFit() is not None - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): sDP = import_DamagePattern.getInstance() sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() @@ -76,7 +76,7 @@ class ChangeDamagePattern(ContextMenu): menuItem.SetBitmap(bitmap) return menuItem - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, 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 f9739b59e..30f62497d 100644 --- a/gui/builtinContextMenus/droneAddStack.py +++ b/gui/builtinContextMenus/droneAddStack.py @@ -12,7 +12,7 @@ class DroneAddStack(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if srcContext not in ('marketItemGroup', 'marketItemMisc'): return False @@ -32,11 +32,11 @@ class DroneAddStack(ContextMenu): self.amount = amount return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return 'Add {} to Drone Bay{}'.format( itmContext, '' if self.amount == 1 else ' (x{})'.format(self.amount)) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): self.mainFrame.command.Submit(cmd.GuiAddLocalDroneCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(selection[0].ID), diff --git a/gui/builtinContextMenus/droneSplitStack.py b/gui/builtinContextMenus/droneSplitStack.py index 22b1fa04b..6e794bf41 100644 --- a/gui/builtinContextMenus/droneSplitStack.py +++ b/gui/builtinContextMenus/droneSplitStack.py @@ -15,13 +15,13 @@ class DroneSplitStack(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext == "droneItem" and selection[0].amount > 1 - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Split {0} Stack".format(itmContext) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): drone = selection[0] dlg = DroneStackSplit(self.mainFrame, drone.amount) diff --git a/gui/builtinContextMenus/envEffectAdd.py b/gui/builtinContextMenus/envEffectAdd.py index 11f02d713..4b510d582 100644 --- a/gui/builtinContextMenus/envEffectAdd.py +++ b/gui/builtinContextMenus/envEffectAdd.py @@ -28,13 +28,13 @@ class AddEnvironmentEffect(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext == "projected" - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Add Environmental Effect" - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, 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 be9fdb9f7..5cac3018c 100644 --- a/gui/builtinContextMenus/factorReload.py +++ b/gui/builtinContextMenus/factorReload.py @@ -13,17 +13,17 @@ class FactorReload(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext == "firepowerViewFull" @property def enabled(self): return self.mainFrame.getActiveFit() is not None - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Factor in Reload Time" - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): sFit = Fit.getInstance() sFit.serviceFittingOptions["useGlobalForceReload"] = not sFit.serviceFittingOptions["useGlobalForceReload"] fitID = self.mainFrame.getActiveFit() diff --git a/gui/builtinContextMenus/fighterAbilities.py b/gui/builtinContextMenus/fighterAbilities.py index f58c55126..5698c2b49 100644 --- a/gui/builtinContextMenus/fighterAbilities.py +++ b/gui/builtinContextMenus/fighterAbilities.py @@ -14,7 +14,7 @@ class FighterAbilities(ContextMenu): self.settings = ContextMenuSettings.getInstance() self.isProjected = None - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext not in ("fighterItem", "projectedFighter"): return False @@ -22,7 +22,7 @@ class FighterAbilities(ContextMenu): self.isProjected = True if srcContext == "projectedFighter" else False return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Abilities" def addAbility(self, menu, ability): @@ -33,7 +33,7 @@ class FighterAbilities(ContextMenu): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, 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 f812aedef..5acf41af9 100644 --- a/gui/builtinContextMenus/fitAddCurrentlyOpen.py +++ b/gui/builtinContextMenus/fitAddCurrentlyOpen.py @@ -12,17 +12,17 @@ class AddCurrentlyOpenFit(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext not in ('projected', 'commandView'): return False return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return 'Add Currently Open Fit' - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): self.fitLookup = {} self.context = context sFit = Fit.getInstance() diff --git a/gui/builtinContextMenus/fitOpenNewTab.py b/gui/builtinContextMenus/fitOpenNewTab.py index 8592e961a..77d406425 100644 --- a/gui/builtinContextMenus/fitOpenNewTab.py +++ b/gui/builtinContextMenus/fitOpenNewTab.py @@ -12,7 +12,7 @@ class OpenFitInNewTab(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if srcContext not in ("projectedFit", "commandFit"): return False currentFitID = self.mainFrame.getActiveFit() @@ -21,10 +21,10 @@ class OpenFitInNewTab(ContextMenu): return False return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Open Fit in New Tab" - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): fit = selection[0] wx.PostEvent(self.mainFrame, FitSelected(fitID=fit.ID, startup=2)) diff --git a/gui/builtinContextMenus/implantSetAdd.py b/gui/builtinContextMenus/implantSetAdd.py index b8fe8254c..69768b2bc 100644 --- a/gui/builtinContextMenus/implantSetAdd.py +++ b/gui/builtinContextMenus/implantSetAdd.py @@ -15,7 +15,7 @@ class addImplantSet(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): sIS = s_ImplantSets.getInstance() implantSets = sIS.getImplantSetList() @@ -24,10 +24,10 @@ class addImplantSet(ContextMenu): return False return srcContext in ("implantView", "implantEditor") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Add Implant Set" - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): """ A note on the selection 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 89fbc8c38..6daa44d12 100644 --- a/gui/builtinContextMenus/itemAmountChange.py +++ b/gui/builtinContextMenus/itemAmountChange.py @@ -19,13 +19,13 @@ class ChangeItemAmount(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext in ("droneItem", "projectedDrone", "cargoItem", "projectedFit", "fighterItem", "projectedFighter") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Change {0} Quantity".format(itmContext) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): thing = selection[0] mainFrame = gui.mainFrame.MainFrame.getInstance() fitID = mainFrame.getActiveFit() diff --git a/gui/builtinContextMenus/itemFill.py b/gui/builtinContextMenus/itemFill.py index 476fe2c3f..71ea59c4e 100644 --- a/gui/builtinContextMenus/itemFill.py +++ b/gui/builtinContextMenus/itemFill.py @@ -10,7 +10,7 @@ class FillWithItem(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('moduleFill'): return False if srcContext not in ('marketItemGroup', 'marketItemMisc'): @@ -22,10 +22,10 @@ class FillWithItem(ContextMenu): return False return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Fill With Module" - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(selection[0].ID))) diff --git a/gui/builtinContextMenus/itemMarketJump.py b/gui/builtinContextMenus/itemMarketJump.py index 049686f7c..76ea37831 100644 --- a/gui/builtinContextMenus/itemMarketJump.py +++ b/gui/builtinContextMenus/itemMarketJump.py @@ -9,7 +9,7 @@ class JumpToMarketItem(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): validContexts = ("marketItemMisc", "fittingModule", "fittingCharge", "droneItem", "implantItem", "boosterItem", @@ -35,10 +35,10 @@ class JumpToMarketItem(ContextMenu): doit = not selection[0].isEmpty if srcContext == "fittingModule" else True return doit - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "{0} Market Group".format(itmContext if itmContext is not None else "Item") - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): srcContext = fullContext[0] if srcContext in ("fittingCharge", "projectedCharge"): item = selection[0].charge diff --git a/gui/builtinContextMenus/itemProject.py b/gui/builtinContextMenus/itemProject.py index 9893773e4..441fba841 100644 --- a/gui/builtinContextMenus/itemProject.py +++ b/gui/builtinContextMenus/itemProject.py @@ -10,7 +10,7 @@ class ProjectItem(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('project'): return False @@ -27,10 +27,10 @@ class ProjectItem(ContextMenu): item = selection[0] return item.isType("projected") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Project {0} onto Fit".format(itmContext) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): fitID = self.mainFrame.getActiveFit() category = selection[0].category.name if category == 'Module': diff --git a/gui/builtinContextMenus/itemRemove.py b/gui/builtinContextMenus/itemRemove.py index fb4db2428..4289e110e 100644 --- a/gui/builtinContextMenus/itemRemove.py +++ b/gui/builtinContextMenus/itemRemove.py @@ -12,7 +12,7 @@ class RemoveItem(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext in ("fittingModule", "droneItem", "implantItem", "boosterItem", "projectedModule", "cargoItem", @@ -20,12 +20,12 @@ class RemoveItem(ContextMenu): "fighterItem", "projectedFighter", "commandFit") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return 'Remove {}{}'.format( itmContext if itmContext is not None else 'Item', ' Stack' if itmContext in ('Drone', 'Fit') else '') - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): srcContext = fullContext[0] sFit = Fit.getInstance() diff --git a/gui/builtinContextMenus/itemStats.py b/gui/builtinContextMenus/itemStats.py index 78c333e38..39ed8a931 100644 --- a/gui/builtinContextMenus/itemStats.py +++ b/gui/builtinContextMenus/itemStats.py @@ -13,7 +13,7 @@ class ItemStats(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext in ("marketItemGroup", "marketItemMisc", "fittingModule", "fittingCharge", "fittingShip", "baseShip", @@ -25,10 +25,10 @@ class ItemStats(ContextMenu): "implantItemChar", "projectedFighter", "fittingMode") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "{0} Stats".format(itmContext if itmContext is not None else "Item") - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): srcContext = fullContext[0] if srcContext == "fittingShip": fitID = self.mainFrame.getActiveFit() diff --git a/gui/builtinContextMenus/itemVariationChange.py b/gui/builtinContextMenus/itemVariationChange.py index 94e2841a8..8ccd2348d 100644 --- a/gui/builtinContextMenus/itemVariationChange.py +++ b/gui/builtinContextMenus/itemVariationChange.py @@ -14,7 +14,7 @@ class ChangeItemToVariation(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('metaSwap'): return False @@ -50,10 +50,10 @@ class ChangeItemToVariation(ContextMenu): return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return 'Variations' - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, 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 d00ecae44..ab075881a 100644 --- a/gui/builtinContextMenus/moduleAmmoChange.py +++ b/gui/builtinContextMenus/moduleAmmoChange.py @@ -21,7 +21,7 @@ class ChangeModuleAmmo(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "projectedModule"): return False @@ -56,7 +56,7 @@ class ChangeModuleAmmo(ContextMenu): self.context = srcContext return len(self.charges) > 0 - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Charge" def turretSorter(self, charge): @@ -133,7 +133,7 @@ class ChangeModuleAmmo(ContextMenu): m.Append(id_, '─ %s ─' % text) m.Enable(id_, False) - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, 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 2cf5717d2..0791d88a1 100644 --- a/gui/builtinContextMenus/moduleFill.py +++ b/gui/builtinContextMenus/moduleFill.py @@ -10,15 +10,15 @@ class FillWithModule(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('moduleFill'): return False return srcContext == "fittingModule" - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Fill With {0}".format(itmContext if itmContext is not None else "Module") - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): srcContext = fullContext[0] fitID = self.mainFrame.getActiveFit() diff --git a/gui/builtinContextMenus/moduleMutations.py b/gui/builtinContextMenus/moduleMutations.py index d92e0edcd..d69e9f2e2 100644 --- a/gui/builtinContextMenus/moduleMutations.py +++ b/gui/builtinContextMenus/moduleMutations.py @@ -14,7 +14,7 @@ class ChangeModuleMutation(ContextMenu): self.settings = ContextMenuSettings.getInstance() self.eventIDs = {} - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): # if not self.settings.get('ammoPattern'): # return False @@ -28,11 +28,11 @@ class ChangeModuleMutation(ContextMenu): return True - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): mod = selection[0] return "Apply Mutaplasmid" if not mod.isMutated else "Revert to {}".format(mod.baseItem.name) - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): if selection[0].isMutated: return None @@ -63,7 +63,7 @@ class ChangeModuleMutation(ContextMenu): self.mainFrame.command.Submit(GuiConvertMutatedLocalModuleCommand( fitID=fitID, position=position, mutaplasmid=mutaplasmid)) - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): mod = selection[0] fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) @@ -72,7 +72,7 @@ class ChangeModuleMutation(ContextMenu): self.mainFrame.command.Submit(GuiRevertMutatedLocalModuleCommand( fitID=fitID, position=position)) - def getBitmap(self, context, selection): + def getBitmap(self, context, mainItem, selection): return None diff --git a/gui/builtinContextMenus/moduleSpool.py b/gui/builtinContextMenus/moduleSpool.py index 1f783f2ed..58b3a047b 100644 --- a/gui/builtinContextMenus/moduleSpool.py +++ b/gui/builtinContextMenus/moduleSpool.py @@ -17,7 +17,7 @@ class ChangeModuleSpool(ContextMenu): self.cycleMap = {} self.resetId = None - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('spoolup'): return False @@ -29,10 +29,10 @@ class ChangeModuleSpool(ContextMenu): return self.mod.item.group.name in ("Precursor Weapon", "Mutadaptive Remote Armor Repairer") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Spoolup Cycles" - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, 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 69b1397b6..7e3555f25 100644 --- a/gui/builtinContextMenus/priceOptions.py +++ b/gui/builtinContextMenus/priceOptions.py @@ -24,13 +24,13 @@ class ItemGroupPrice(ContextMenu, metaclass=ABCMeta): def optionName(self): raise NotImplementedError() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): return srcContext in ("priceViewFull", "priceViewMinimal") - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return self.label - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): self.settings.set(self.optionName, not self.settings.get(self.optionName)) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit())) diff --git a/gui/builtinContextMenus/shipJump.py b/gui/builtinContextMenus/shipJump.py index 41b6769cc..cd4e9ad5d 100644 --- a/gui/builtinContextMenus/shipJump.py +++ b/gui/builtinContextMenus/shipJump.py @@ -13,7 +13,7 @@ class JumpToShip(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if srcContext != "fittingShip": return False fitTabSelected = self.mainFrame.notebookBrowsers.GetSelection() == 1 @@ -29,10 +29,10 @@ class JumpToShip(ContextMenu): return True return False - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Open in Fitting Browser" - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, 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 cd68462dd..a42362ff1 100644 --- a/gui/builtinContextMenus/shipModeChange.py +++ b/gui/builtinContextMenus/shipModeChange.py @@ -13,7 +13,7 @@ class ChangeShipTacticalMode(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext != "fittingShip": return False @@ -26,7 +26,7 @@ class ChangeShipTacticalMode(ContextMenu): return srcContext == "fittingShip" and self.modes is not None - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Tactical Mode" def addMode(self, menu, mode): @@ -37,7 +37,7 @@ class ChangeShipTacticalMode(ContextMenu): menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, 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 19a11b651..a228e0672 100644 --- a/gui/builtinContextMenus/skillAffectors.py +++ b/gui/builtinContextMenus/skillAffectors.py @@ -16,7 +16,7 @@ class ChangeAffectingSkills(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if not self.settings.get('changeAffectingSkills'): return False @@ -60,7 +60,7 @@ class ChangeAffectingSkills(ContextMenu): self.skills = sorted(skills, key=lambda x: x.item.name) return len(self.skills) > 0 - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Change %s Skills" % itmContext def addSkill(self, rootMenu, skill, i): @@ -75,7 +75,7 @@ class ChangeAffectingSkills(ContextMenu): rootMenu.Bind(wx.EVT_MENU, self.handleSkillChange, menuItem) return menuItem - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.skillIds = {} sub = wx.Menu() diff --git a/gui/builtinContextMenus/targetResists.py b/gui/builtinContextMenus/targetResists.py index 84df42d5f..f8a03568d 100644 --- a/gui/builtinContextMenus/targetResists.py +++ b/gui/builtinContextMenus/targetResists.py @@ -17,7 +17,7 @@ class TargetResists(ContextMenu): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = ContextMenuSettings.getInstance() - def display(self, srcContext, selection): + def display(self, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull": return False @@ -27,7 +27,7 @@ class TargetResists(ContextMenu): return len(self.patterns) > 0 - def getText(self, itmContext, selection): + def getText(self, itmContext, mainItem, selection): return "Target Resists" def handleResistSwitch(self, event): @@ -63,7 +63,7 @@ class TargetResists(ContextMenu): item.SetBitmap(bitmap) return item - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.patternIds = {} self.subMenus = OrderedDict() diff --git a/gui/contextMenu.py b/gui/contextMenu.py index 2d7a7efd7..14b50c157 100644 --- a/gui/contextMenu.py +++ b/gui/contextMenu.py @@ -34,20 +34,22 @@ class ContextMenu(object): ContextMenu.menus.append(cls) @classmethod - def hasMenu(cls, selection, *fullContexts): + def hasMenu(cls, mainItem, selection, *fullContexts): for i, fullContext in enumerate(fullContexts): srcContext = fullContext[0] for menuHandler in cls.menus: m = menuHandler() - if m.display(srcContext, selection): + if m.display(srcContext, mainItem, selection): return True return False @classmethod - def getMenu(cls, main, selection, *fullContexts): + def getMenu(cls, mainItem, selection, *fullContexts): """ getMenu returns a menu that is used with wx.PopupMenu. + 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 selected, it's is a 1-item list or tuple. Can also be None for contexts without selection, such as statsPane or projected view @@ -67,6 +69,7 @@ class ContextMenu(object): rootMenu = wx.Menu() rootMenu.info = {} rootMenu.selection = (selection,) if not hasattr(selection, "__iter__") else selection + rootMenu.mainItem = mainItem empty = True for i, fullContext in enumerate(fullContexts): display_amount = 0 @@ -78,14 +81,14 @@ class ContextMenu(object): for menuHandler in cls.menus: # loop through registered menus m = menuHandler() - if m.display(srcContext, selection): + if m.display(srcContext, mainItem, selection): display_amount += 1 - texts = m.getText(itemContext, selection) + texts = m.getText(itemContext, mainItem, selection) if isinstance(texts, str): texts = (texts,) - bitmap = m.getBitmap(srcContext, selection) + bitmap = m.getBitmap(srcContext, mainItem, selection) multiple = not isinstance(bitmap, wx.Bitmap) for it, text in enumerate(texts): id = cls.nextID() @@ -93,7 +96,7 @@ class ContextMenu(object): 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) - sub = m.getSubMenu(srcContext, selection, rootMenu, it, rootItem) + sub = m.getSubMenu(srcContext, mainItem, selection, rootMenu, it, rootItem) if sub is None: # if there is no sub menu, bind the handler to the rootItem @@ -136,7 +139,7 @@ class ContextMenu(object): debug_end = len(cls._ids) if debug_end - debug_start: - pyfalog.debug("{0} new IDs created for this menu", (debug_end - debug_start)) + pyfalog.debug("{} new IDs created for this menu".format(debug_end - debug_start)) return rootMenu if empty is False else None @@ -147,20 +150,21 @@ class ContextMenu(object): if stuff is not None: menuHandler, context, i = stuff selection = menu.selection + mainItem = menu.mainItem if not hasattr(selection, "__iter__"): selection = (selection,) - menuHandler.activate(context, selection, i) + menuHandler.activate(context, mainItem, selection, i) else: event.Skip() - def display(self, context, selection): + def display(self, context, mainItem, selection): raise NotImplementedError() - def activate(self, fullContext, selection, i): + def activate(self, fullContext, mainItem, selection, i): return None - def getSubMenu(self, context, selection, rootMenu, i, pitem): + def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem): return None @classmethod @@ -179,7 +183,7 @@ class ContextMenu(object): return cls._ids[cls._idxid] - def getText(self, context, selection): + def getText(self, 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 @@ -189,7 +193,7 @@ class ContextMenu(object): """ raise NotImplementedError() - def getBitmap(self, context, selection): + def getBitmap(self, context, mainItem, selection): return None @property diff --git a/gui/display.py b/gui/display.py index d284fa86d..d6cd17e90 100644 --- a/gui/display.py +++ b/gui/display.py @@ -282,6 +282,3 @@ class Display(wx.ListCtrl): if fallback is not None: return fallback return row - - - diff --git a/gui/statsPane.py b/gui/statsPane.py index 96d807060..74d719209 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -141,7 +141,7 @@ class StatsPane(wx.Panel): event.Skip() - if ContextMenu.hasMenu(None, (viewName,)): + if ContextMenu.hasMenu(None, None, (viewName,)): sizer = tp.GetHeaderContentSizer() sizer.AddStretchSpacer() # Add menu