Move target profile context menu handling to separate package
This is needed to be able to import them separately at different times and avoid code duplication
This commit is contained in:
@@ -1,47 +1,44 @@
|
||||
# noinspection PyUnresolvedReferences
|
||||
from gui.builtinContextMenus import ( # noqa: E402,F401
|
||||
# Various command and projected-related items which we want to have first,
|
||||
# before generic commands
|
||||
fitOpenNewTab,
|
||||
envEffectAdd,
|
||||
fitAddCurrentlyOpen,
|
||||
commandFitAdd,
|
||||
# Often-used item manipulations
|
||||
shipModeChange,
|
||||
moduleAmmoChange,
|
||||
moduleSpool,
|
||||
boosterSideEffects,
|
||||
fighterAbilities,
|
||||
# Item info
|
||||
itemStats,
|
||||
itemMarketJump,
|
||||
fitSystemSecurity, # Not really an item info but want to keep it here
|
||||
shipJump,
|
||||
# Generic item manipulations
|
||||
itemRemove,
|
||||
itemAmountChange,
|
||||
droneSplitStack,
|
||||
itemVariationChange,
|
||||
moduleMutations,
|
||||
moduleFill,
|
||||
skillAffectors,
|
||||
# Market stuff
|
||||
itemFill,
|
||||
droneAddStack,
|
||||
cargoAdd,
|
||||
cargoAddAmmo,
|
||||
itemProject,
|
||||
ammoToDmgPattern,
|
||||
implantSetAdd,
|
||||
# Price
|
||||
priceOptions,
|
||||
# Resistance panel
|
||||
damagePatternChange,
|
||||
# Firepower panel
|
||||
factorReload,
|
||||
targetProfile,
|
||||
# Graph extra options
|
||||
graphDmgIgnoreResists,
|
||||
graphDmgApplyProjected,
|
||||
graphDmgDroneMode,
|
||||
)
|
||||
# Various command and projected-related items which we want to have first,
|
||||
# before generic commands
|
||||
from gui.builtinContextMenus import fitOpenNewTab
|
||||
from gui.builtinContextMenus import envEffectAdd
|
||||
from gui.builtinContextMenus import fitAddCurrentlyOpen
|
||||
from gui.builtinContextMenus import commandFitAdd
|
||||
# Often-used item manipulations
|
||||
from gui.builtinContextMenus import shipModeChange
|
||||
from gui.builtinContextMenus import moduleAmmoChange
|
||||
from gui.builtinContextMenus import moduleSpool
|
||||
from gui.builtinContextMenus import boosterSideEffects
|
||||
from gui.builtinContextMenus import fighterAbilities
|
||||
# Item info
|
||||
from gui.builtinContextMenus import itemStats
|
||||
from gui.builtinContextMenus import itemMarketJump
|
||||
from gui.builtinContextMenus import fitSystemSecurity # Not really an item info but want to keep it here
|
||||
from gui.builtinContextMenus import shipJump
|
||||
# Generic item manipulations
|
||||
from gui.builtinContextMenus import itemRemove
|
||||
from gui.builtinContextMenus import itemAmountChange
|
||||
from gui.builtinContextMenus import droneSplitStack
|
||||
from gui.builtinContextMenus import itemVariationChange
|
||||
from gui.builtinContextMenus import moduleMutations
|
||||
from gui.builtinContextMenus import moduleFill
|
||||
from gui.builtinContextMenus import skillAffectors
|
||||
# Market stuff
|
||||
from gui.builtinContextMenus import itemFill
|
||||
from gui.builtinContextMenus import droneAddStack
|
||||
from gui.builtinContextMenus import cargoAdd
|
||||
from gui.builtinContextMenus import cargoAddAmmo
|
||||
from gui.builtinContextMenus import itemProject
|
||||
from gui.builtinContextMenus import ammoToDmgPattern
|
||||
from gui.builtinContextMenus import implantSetAdd
|
||||
# Price
|
||||
from gui.builtinContextMenus import priceOptions
|
||||
# Resistance panel
|
||||
from gui.builtinContextMenus import damagePatternChange
|
||||
# Firepower panel
|
||||
from gui.builtinContextMenus import factorReload
|
||||
from gui.builtinContextMenus.targetProfile import switcher
|
||||
# Graph extra options
|
||||
from gui.builtinContextMenus import graphDmgIgnoreResists
|
||||
from gui.builtinContextMenus import graphDmgApplyProjected
|
||||
from gui.builtinContextMenus import graphDmgDroneMode
|
||||
|
||||
0
gui/builtinContextMenus/targetProfile/__init__.py
Normal file
0
gui/builtinContextMenus/targetProfile/__init__.py
Normal file
111
gui/builtinContextMenus/targetProfile/adder.py
Normal file
111
gui/builtinContextMenus/targetProfile/adder.py
Normal file
@@ -0,0 +1,111 @@
|
||||
from collections import OrderedDict
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
import gui.globalEvents as GE
|
||||
import gui.mainFrame
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.contextMenu import ContextMenuUnconditional
|
||||
from service.fit import Fit
|
||||
from service.targetProfile import TargetProfile as svc_TargetProfile
|
||||
|
||||
|
||||
class TargetProfileAdder(ContextMenuUnconditional):
|
||||
|
||||
def __init__(self):
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def display(self, callingWindow, srcContext):
|
||||
if srcContext != 'graphTgtList':
|
||||
return False
|
||||
|
||||
sTR = svc_TargetProfile.getInstance()
|
||||
self.patterns = sTR.getTargetProfileList()
|
||||
self.patterns.sort(key=lambda p: (p.name in ['None'], p.name))
|
||||
|
||||
return len(self.patterns) > 0
|
||||
|
||||
def getText(self, callingWindow, itmContext):
|
||||
return 'Add Target Profile'
|
||||
|
||||
def handleResistSwitch(self, event):
|
||||
pattern = self.patternIds.get(event.Id, False)
|
||||
if pattern is False:
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
sFit.setTargetProfile(fitID, pattern)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,)))
|
||||
|
||||
def addPattern(self, rootMenu, pattern):
|
||||
id = ContextMenuUnconditional.nextID()
|
||||
name = getattr(pattern, '_name', pattern.name) if pattern is not None else 'No Profile'
|
||||
|
||||
self.patternIds[id] = pattern
|
||||
item = wx.MenuItem(rootMenu, id, name)
|
||||
rootMenu.Bind(wx.EVT_MENU, self.handleResistSwitch, item)
|
||||
|
||||
# set pattern attr to menu item
|
||||
item.pattern = pattern
|
||||
|
||||
# determine active pattern
|
||||
sFit = Fit.getInstance()
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
f = sFit.getFit(fitID)
|
||||
tr = f.targetProfile
|
||||
|
||||
if tr == pattern:
|
||||
bitmap = BitmapLoader.getBitmap('state_active_small', 'gui')
|
||||
item.SetBitmap(bitmap)
|
||||
return item
|
||||
|
||||
def getSubMenu(self, callingWindow, context, rootMenu, i, pitem):
|
||||
msw = True if 'wxMSW' in wx.PlatformInfo else False
|
||||
self.patternIds = {}
|
||||
self.subMenus = OrderedDict()
|
||||
self.singles = []
|
||||
|
||||
sub = wx.Menu()
|
||||
for pattern in self.patterns:
|
||||
start, end = pattern.name.find('['), pattern.name.find(']')
|
||||
if start is not -1 and end is not -1:
|
||||
currBase = pattern.name[start + 1:end]
|
||||
# set helper attr
|
||||
setattr(pattern, '_name', pattern.name[end + 1:].strip())
|
||||
if currBase not in self.subMenus:
|
||||
self.subMenus[currBase] = []
|
||||
self.subMenus[currBase].append(pattern)
|
||||
else:
|
||||
self.singles.append(pattern)
|
||||
|
||||
sub.Append(self.addPattern(rootMenu if msw else sub, None)) # Add reset
|
||||
sub.AppendSeparator()
|
||||
|
||||
# Single items, no parent
|
||||
for pattern in self.singles:
|
||||
sub.Append(self.addPattern(rootMenu if msw else sub, pattern))
|
||||
|
||||
# Items that have a parent
|
||||
for menuName, patterns in list(self.subMenus.items()):
|
||||
# Create parent item for root menu that is simply name of parent
|
||||
item = wx.MenuItem(rootMenu, ContextMenuUnconditional.nextID(), menuName)
|
||||
|
||||
# Create menu for child items
|
||||
grandSub = wx.Menu()
|
||||
# sub.Bind(wx.EVT_MENU, self.handleResistSwitch)
|
||||
|
||||
# Apply child menu to parent item
|
||||
item.SetSubMenu(grandSub)
|
||||
|
||||
# Append child items to child menu
|
||||
for pattern in patterns:
|
||||
grandSub.Append(self.addPattern(rootMenu if msw else grandSub, pattern))
|
||||
sub.Append(item) # finally, append parent item to root menu
|
||||
|
||||
return sub
|
||||
|
||||
|
||||
TargetProfileAdder.register()
|
||||
0
gui/builtinContextMenus/targetProfile/common.py
Normal file
0
gui/builtinContextMenus/targetProfile/common.py
Normal file
@@ -11,24 +11,24 @@ from service.fit import Fit
|
||||
from service.targetProfile import TargetProfile as svc_TargetProfile
|
||||
|
||||
|
||||
class TargetProfile(ContextMenuUnconditional):
|
||||
class TargetProfileSwitcher(ContextMenuUnconditional):
|
||||
|
||||
def __init__(self):
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def display(self, callingWindow, srcContext):
|
||||
if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull":
|
||||
if self.mainFrame.getActiveFit() is None or srcContext != 'firepowerViewFull':
|
||||
return False
|
||||
|
||||
sTR = svc_TargetProfile.getInstance()
|
||||
self.patterns = sTR.getTargetProfileList()
|
||||
self.patterns.sort(key=lambda p: (p.name in ["None"], p.name))
|
||||
self.patterns.sort(key=lambda p: (p.name in ['None'], p.name))
|
||||
|
||||
return len(self.patterns) > 0
|
||||
|
||||
def getText(self, callingWindow, itmContext):
|
||||
# We take into consideration just target resists, so call menu item accordingly
|
||||
return "Target Resists"
|
||||
return 'Target Resists'
|
||||
|
||||
def handleResistSwitch(self, event):
|
||||
pattern = self.patternIds.get(event.Id, False)
|
||||
@@ -43,7 +43,7 @@ class TargetProfile(ContextMenuUnconditional):
|
||||
|
||||
def addPattern(self, rootMenu, pattern):
|
||||
id = ContextMenuUnconditional.nextID()
|
||||
name = getattr(pattern, "_name", pattern.name) if pattern is not None else "No Profile"
|
||||
name = getattr(pattern, '_name', pattern.name) if pattern is not None else 'No Profile'
|
||||
|
||||
self.patternIds[id] = pattern
|
||||
item = wx.MenuItem(rootMenu, id, name)
|
||||
@@ -59,12 +59,12 @@ class TargetProfile(ContextMenuUnconditional):
|
||||
tr = f.targetProfile
|
||||
|
||||
if tr == pattern:
|
||||
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
|
||||
bitmap = BitmapLoader.getBitmap('state_active_small', 'gui')
|
||||
item.SetBitmap(bitmap)
|
||||
return item
|
||||
|
||||
def getSubMenu(self, callingWindow, context, rootMenu, i, pitem):
|
||||
msw = True if "wxMSW" in wx.PlatformInfo else False
|
||||
msw = True if 'wxMSW' in wx.PlatformInfo else False
|
||||
self.patternIds = {}
|
||||
self.subMenus = OrderedDict()
|
||||
self.singles = []
|
||||
@@ -75,7 +75,7 @@ class TargetProfile(ContextMenuUnconditional):
|
||||
if start is not -1 and end is not -1:
|
||||
currBase = pattern.name[start + 1:end]
|
||||
# set helper attr
|
||||
setattr(pattern, "_name", pattern.name[end + 1:].strip())
|
||||
setattr(pattern, '_name', pattern.name[end + 1:].strip())
|
||||
if currBase not in self.subMenus:
|
||||
self.subMenus[currBase] = []
|
||||
self.subMenus[currBase].append(pattern)
|
||||
@@ -109,4 +109,4 @@ class TargetProfile(ContextMenuUnconditional):
|
||||
return sub
|
||||
|
||||
|
||||
TargetProfile.register()
|
||||
TargetProfileSwitcher.register()
|
||||
Reference in New Issue
Block a user