Change several context menus to use single-item class

This commit is contained in:
DarkPhoenix
2019-04-23 16:19:07 +03:00
parent b5a4f97cb5
commit 13f370ceb9
17 changed files with 99 additions and 95 deletions

View File

@@ -3,18 +3,18 @@ import wx
import gui.globalEvents as GE
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class AmmoToDmgPattern(ContextMenuCombined):
class AmmoToDmgPattern(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if not self.settings.get('ammoPattern'):
return False
@@ -30,15 +30,15 @@ class AmmoToDmgPattern(ContextMenuCombined):
return False
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Set {} as Damage Pattern".format(itmContext if itmContext is not None else "Item")
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
fitID = self.mainFrame.getActiveFit()
Fit.getInstance().setAsPattern(fitID, mainItem)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def getBitmap(self, context, mainItem, selection):
def getBitmap(self, context, mainItem):
return None

View File

@@ -3,18 +3,18 @@ import wx
import gui.mainFrame
from gui import fitCommands as cmd
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class BoosterSideEffects(ContextMenuCombined):
class BoosterSideEffects(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if self.mainFrame.getActiveFit() is None or srcContext not in "boosterItem":
return False
@@ -29,19 +29,19 @@ class BoosterSideEffects(ContextMenuCombined):
return False
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Side Effects"
def addEffect(self, menu, ability):
label = ability.name
id = ContextMenuCombined.nextID()
id = ContextMenuSingle.nextID()
self.effectIds[id] = ability
menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_CHECK)
menu.Bind(wx.EVT_MENU, self.handleMode, menuItem)
return menuItem
def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem):
def getSubMenu(self, context, mainItem, rootMenu, i, pitem):
msw = True if "wxMSW" in wx.PlatformInfo else False
self.context = context
self.effectIds = {}

View File

@@ -1,16 +1,17 @@
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class AddToCargo(ContextMenuCombined):
class AddToCargo(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext not in ("marketItemGroup", "marketItemMisc"):
return False
@@ -26,10 +27,10 @@ class AddToCargo(ContextMenuCombined):
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Add {} to Cargo".format(itmContext)
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
fitID = self.mainFrame.getActiveFit()
typeID = int(mainItem.ID)

View File

@@ -1,15 +1,16 @@
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.settings import ContextMenuSettings
class AddToCargoAmmo(ContextMenuCombined):
class AddToCargoAmmo(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
return False
@@ -21,10 +22,10 @@ class AddToCargoAmmo(ContextMenuCombined):
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Add {0} to Cargo (x1000)".format(itmContext)
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
fitID = self.mainFrame.getActiveFit()
typeID = int(mainItem.ID)
self.mainFrame.command.Submit(cmd.GuiAddCargoCommand(

View File

@@ -1,18 +1,18 @@
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from gui.fitCommands.helpers import droneStackLimit
from service.fit import Fit
from service.settings import ContextMenuSettings
class DroneAddStack(ContextMenuCombined):
class DroneAddStack(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext not in ('marketItemGroup', 'marketItemMisc'):
return False
@@ -34,11 +34,11 @@ class DroneAddStack(ContextMenuCombined):
self.amount = amount
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return 'Add {} to Drone Bay{}'.format(
itmContext, '' if self.amount == 1 else ' (x{})'.format(self.amount))
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
self.mainFrame.command.Submit(cmd.GuiAddLocalDroneCommand(
fitID=self.mainFrame.getActiveFit(),
itemID=int(mainItem.ID),

View File

@@ -5,17 +5,18 @@ import wx
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class DroneSplitStack(ContextMenuCombined):
class DroneSplitStack(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext != "droneItem":
return False
@@ -24,10 +25,10 @@ class DroneSplitStack(ContextMenuCombined):
return mainItem.amount > 1
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Split {} Stack".format(itmContext)
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
dlg = DroneStackSplit(self.mainFrame, mainItem.amount)
if dlg.ShowModal() == wx.ID_OK:

View File

@@ -3,19 +3,19 @@ import wx
import gui.mainFrame
from gui import fitCommands as cmd
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class FighterAbilities(ContextMenuCombined):
class FighterAbilities(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
self.isProjected = None
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if self.mainFrame.getActiveFit() is None or srcContext not in ("fighterItem", "projectedFighter"):
return False
@@ -26,18 +26,18 @@ class FighterAbilities(ContextMenuCombined):
self.isProjected = True if srcContext == "projectedFighter" else False
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Abilities"
def addAbility(self, menu, ability):
label = ability.name
id = ContextMenuCombined.nextID()
id = ContextMenuSingle.nextID()
self.abilityIds[id] = ability
menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_CHECK)
menu.Bind(wx.EVT_MENU, self.handleMode, menuItem)
return menuItem
def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem):
def getSubMenu(self, context, mainItem, rootMenu, i, pitem):
msw = True if "wxMSW" in wx.PlatformInfo else False
self.context = context
self.abilityIds = {}

View File

@@ -3,17 +3,17 @@ import wx
import gui.mainFrame
from gui.builtinShipBrowser.events import FitSelected
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.settings import ContextMenuSettings
class OpenFitInNewTab(ContextMenuCombined):
class OpenFitInNewTab(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext not in ("projectedFit", "commandFit"):
return False
@@ -26,10 +26,10 @@ class OpenFitInNewTab(ContextMenuCombined):
return False
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Open Fit in New Tab"
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
wx.PostEvent(self.mainFrame, FitSelected(fitID=mainItem.ID, startup=2))

View File

@@ -9,18 +9,18 @@ from eos.saveddata.cargo import Cargo as es_Cargo
from eos.saveddata.drone import Drone
from eos.saveddata.fighter import Fighter as es_Fighter
from eos.saveddata.fit import Fit as es_Fit
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class ChangeItemAmount(ContextMenuCombined):
class ChangeItemAmount(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext not in ("droneItem", "projectedDrone", "cargoItem", "projectedFit", "fighterItem", "projectedFighter"):
return False
@@ -29,10 +29,10 @@ class ChangeItemAmount(ContextMenuCombined):
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Change {0} Quantity".format(itmContext)
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
mainFrame = gui.mainFrame.MainFrame.getInstance()
fitID = mainFrame.getActiveFit()
srcContext = fullContext[0]

View File

@@ -1,16 +1,16 @@
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.settings import ContextMenuSettings
class FillWithItem(ContextMenuCombined):
class FillWithItem(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if not self.settings.get('moduleFill'):
return False
@@ -28,10 +28,10 @@ class FillWithItem(ContextMenuCombined):
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Fill With Module"
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand(
fitID=self.mainFrame.getActiveFit(),
itemID=int(mainItem.ID)))

View File

@@ -1,15 +1,15 @@
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.market import Market
from service.settings import ContextMenuSettings
class JumpToMarketItem(ContextMenuCombined):
class JumpToMarketItem(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
validContexts = ("marketItemMisc", "fittingModule",
"fittingCharge", "droneItem",
"implantItem", "boosterItem",
@@ -38,10 +38,10 @@ class JumpToMarketItem(ContextMenuCombined):
doit = not mainItem.isEmpty if srcContext == "fittingModule" else True
return doit
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "{0} Market Group".format(itmContext if itmContext is not None else "Item")
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
srcContext = fullContext[0]
if srcContext in ("fittingCharge", "projectedCharge"):
item = mainItem.charge

View File

@@ -1,17 +1,17 @@
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class ProjectItem(ContextMenuCombined):
class ProjectItem(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if not self.settings.get('project'):
return False
@@ -30,10 +30,10 @@ class ProjectItem(ContextMenuCombined):
return mainItem.isType("projected")
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Project {0} onto Fit".format(itmContext)
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
fitID = self.mainFrame.getActiveFit()
category = mainItem.category.name
if category == 'Module':

View File

@@ -2,18 +2,18 @@
import wx
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from gui.itemStats import ItemStatsDialog
from service.fit import Fit
from service.settings import ContextMenuSettings
class ItemStats(ContextMenuCombined):
class ItemStats(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext not in (
"marketItemGroup", "marketItemMisc",
"fittingModule", "fittingCharge",
@@ -33,10 +33,10 @@ class ItemStats(ContextMenuCombined):
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "{} Stats".format(itmContext if itmContext is not None else "Item")
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
srcContext = fullContext[0]
if srcContext == "fittingShip":
fitID = self.mainFrame.getActiveFit()

View File

@@ -1,17 +1,17 @@
import gui.fitCommands as cmd
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.fit import Fit
from service.settings import ContextMenuSettings
class FillWithModule(ContextMenuCombined):
class FillWithModule(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if not self.settings.get('moduleFill'):
return False
@@ -21,10 +21,10 @@ class FillWithModule(ContextMenuCombined):
return srcContext == "fittingModule"
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Fill With {0}".format(itmContext if itmContext is not None else "Module")
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
srcContext = fullContext[0]
fitID = self.mainFrame.getActiveFit()

View File

@@ -2,20 +2,20 @@
import wx
import gui.mainFrame
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from gui.fitCommands import GuiConvertMutatedLocalModuleCommand, GuiRevertMutatedLocalModuleCommand
from service.settings import ContextMenuSettings
from service.fit import Fit
class ChangeModuleMutation(ContextMenuCombined):
class ChangeModuleMutation(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
self.eventIDs = {}
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if srcContext != "fittingModule" or self.mainFrame.getActiveFit() is None:
return False
@@ -27,10 +27,10 @@ class ChangeModuleMutation(ContextMenuCombined):
return True
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Apply Mutaplasmid" if not mainItem.isMutated else "Revert to {}".format(mainItem.baseItem.name)
def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem):
def getSubMenu(self, context, mainItem, rootMenu, i, pitem):
if mainItem.isMutated:
return None
@@ -42,7 +42,7 @@ class ChangeModuleMutation(ContextMenuCombined):
for item in mainItem.item.mutaplasmids:
label = item.item.name
id = ContextMenuCombined.nextID()
id = ContextMenuSingle.nextID()
self.eventIDs[id] = (item, mainItem)
skillItem = wx.MenuItem(menu, id, label)
menu.Bind(wx.EVT_MENU, self.handleMenu, skillItem)
@@ -59,7 +59,7 @@ class ChangeModuleMutation(ContextMenuCombined):
self.mainFrame.command.Submit(GuiConvertMutatedLocalModuleCommand(
fitID=fitID, position=position, mutaplasmid=mutaplasmid))
def activate(self, fullContext, mainItem, selection, i):
def activate(self, fullContext, mainItem, i):
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
if mainItem in fit.modules:
@@ -67,7 +67,7 @@ class ChangeModuleMutation(ContextMenuCombined):
self.mainFrame.command.Submit(GuiRevertMutatedLocalModuleCommand(
fitID=fitID, position=position))
def getBitmap(self, context, mainItem, selection):
def getBitmap(self, context, mainItem):
return None

View File

@@ -5,12 +5,12 @@ import eos.config
import gui.fitCommands as cmd
import gui.mainFrame
from eos.utils.spoolSupport import SpoolType, SpoolOptions
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.settings import ContextMenuSettings
from service.fit import Fit
class ChangeModuleSpool(ContextMenuCombined):
class ChangeModuleSpool(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
@@ -18,7 +18,7 @@ class ChangeModuleSpool(ContextMenuCombined):
self.cycleMap = {}
self.resetId = None
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if not self.settings.get('spoolup'):
return False
@@ -33,10 +33,10 @@ class ChangeModuleSpool(ContextMenuCombined):
return self.mod.item.group.name in ("Precursor Weapon", "Mutadaptive Remote Armor Repairer")
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Spoolup Cycles"
def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem):
def getSubMenu(self, context, mainItem, rootMenu, i, pitem):
m = wx.Menu()
if "wxMSW" in wx.PlatformInfo:
bindmenu = rootMenu
@@ -50,7 +50,7 @@ class ChangeModuleSpool(ContextMenuCombined):
cycleMax = self.mod.getSpoolData(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True))[0]
for cycle in range(cycleMin, cycleMax + 1):
menuId = ContextMenuCombined.nextID()
menuId = ContextMenuSingle.nextID()
# Show default only for current value and when not overriden
if not isNotDefault and cycle == cycleDefault:
@@ -64,7 +64,7 @@ class ChangeModuleSpool(ContextMenuCombined):
item.Check(isNotDefault and cycle == cycleCurrent)
self.cycleMap[menuId] = cycle
self.resetId = ContextMenuCombined.nextID()
self.resetId = ContextMenuSingle.nextID()
item = wx.MenuItem(m, self.resetId, "Reset")
bindmenu.Bind(wx.EVT_MENU, self.handleSpoolChange, item)
m.Append(item)

View File

@@ -5,18 +5,19 @@ import gui.globalEvents as GE
import gui.mainFrame
from eos.saveddata.character import Skill
from gui.bitmap_loader import BitmapLoader
from gui.contextMenu import ContextMenuCombined
from gui.contextMenu import ContextMenuSingle
from service.character import Character
from service.fit import Fit
from service.settings import ContextMenuSettings
class ChangeAffectingSkills(ContextMenuCombined):
class ChangeAffectingSkills(ContextMenuSingle):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def display(self, srcContext, mainItem, selection):
def display(self, srcContext, mainItem):
if not self.settings.get('changeAffectingSkills'):
return False
@@ -69,7 +70,7 @@ class ChangeAffectingSkills(ContextMenuCombined):
self.skills = sorted(skills, key=lambda x: x.item.name)
return len(self.skills) > 0
def getText(self, itmContext, mainItem, selection):
def getText(self, itmContext, mainItem):
return "Change %s Skills" % itmContext
def addSkill(self, rootMenu, skill, i):
@@ -78,19 +79,19 @@ class ChangeAffectingSkills(ContextMenuCombined):
else:
label = "Level %s" % i
id = ContextMenuCombined.nextID()
id = ContextMenuSingle.nextID()
self.skillIds[id] = (skill, i)
menuItem = wx.MenuItem(rootMenu, id, label, kind=wx.ITEM_RADIO)
rootMenu.Bind(wx.EVT_MENU, self.handleSkillChange, menuItem)
return menuItem
def getSubMenu(self, context, mainItem, selection, rootMenu, i, pitem):
def getSubMenu(self, context, mainItem, rootMenu, i, pitem):
msw = True if "wxMSW" in wx.PlatformInfo else False
self.skillIds = {}
sub = wx.Menu()
for skill in self.skills:
skillItem = wx.MenuItem(sub, ContextMenuCombined.nextID(), skill.item.name)
skillItem = wx.MenuItem(sub, ContextMenuSingle.nextID(), skill.item.name)
grandSub = wx.Menu()
skillItem.SetSubMenu(grandSub)
if skill.learned: