diff --git a/gui/builtinContextMenus/__init__.py b/gui/builtinContextMenus/__init__.py index 6b6ab0953..59f8f9e35 100644 --- a/gui/builtinContextMenus/__init__.py +++ b/gui/builtinContextMenus/__init__.py @@ -39,4 +39,6 @@ from gui.builtinContextMenus import ( # noqa: E402,F401 # Firepower panel factorReload, targetResists, + # Targeting & misc panel + fitSystemSecurity, ) diff --git a/gui/builtinContextMenus/fitSystemSecurity.py b/gui/builtinContextMenus/fitSystemSecurity.py new file mode 100644 index 000000000..900bcc493 --- /dev/null +++ b/gui/builtinContextMenus/fitSystemSecurity.py @@ -0,0 +1,58 @@ +from collections import OrderedDict + +import wx + +import gui.fitCommands as cmd +import gui.mainFrame +from eos.const import FitSystemSecurity +from gui.contextMenu import ContextMenuUnconditional +from service.fit import Fit + + +optionMap = OrderedDict(( + ('High Security', FitSystemSecurity.HISEC), + ('Low Security', FitSystemSecurity.LOWSEC), + ('Null Security', FitSystemSecurity.NULLSEC), + ('W-Space', FitSystemSecurity.WSPACE))) + + +class FitSystemSecurityMenu(ContextMenuUnconditional): + + def __init__(self): + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + + def display(self, srcContext): + return srcContext == 'targetingMiscViewMinimal' + + def getText(self, itmContext): + return "System Security Status" + + def addOption(self, menu, optionLabel): + id = ContextMenuUnconditional.nextID() + self.optionIds[id] = optionLabel + menuItem = wx.MenuItem(menu, id, optionLabel, kind=wx.ITEM_CHECK) + menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) + return menuItem + + def getSubMenu(self, context, rootMenu, i, pitem): + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + msw = True if "wxMSW" in wx.PlatformInfo else False + self.optionIds = {} + sub = wx.Menu() + for optionLabel, optionValue in optionMap.items(): + menuItem = self.addOption(rootMenu if msw else sub, optionLabel) + sub.Append(menuItem) + menuItem.Check(fit.getSystemSecurity() == optionValue) + + return sub + + def handleMode(self, event): + optionLabel = self.optionIds[event.Id] + optionValue = optionMap[optionLabel] + self.mainFrame.command.Submit(cmd.GuiChangeFitSystemSecurityCommand( + fitID=self.mainFrame.getActiveFit(), + secStatus=optionValue)) + + +FitSystemSecurityMenu.register() diff --git a/gui/builtinContextMenus/itemAmountChange.py b/gui/builtinContextMenus/itemAmountChange.py index a21adc009..2eeb2fabc 100644 --- a/gui/builtinContextMenus/itemAmountChange.py +++ b/gui/builtinContextMenus/itemAmountChange.py @@ -33,8 +33,7 @@ class ChangeItemAmount(ContextMenuSingle): return "Change {0} Quantity".format(itmContext) def activate(self, fullContext, mainItem, i): - mainFrame = gui.mainFrame.MainFrame.getInstance() - fitID = mainFrame.getActiveFit() + fitID = self.mainFrame.getActiveFit() srcContext = fullContext[0] if isinstance(mainItem, es_Fit): try: diff --git a/gui/fitCommands/__init__.py b/gui/fitCommands/__init__.py index 2d9a6c26e..feeb4794f 100644 --- a/gui/fitCommands/__init__.py +++ b/gui/fitCommands/__init__.py @@ -12,6 +12,7 @@ from .gui.commandFit.remove import GuiRemoveCommandFitsCommand from .gui.commandFit.toggleStates import GuiToggleCommandFitStatesCommand from .gui.fitRename import GuiRenameFitCommand from .gui.fitRestrictionToggle import GuiToggleFittingRestrictionsCommand +from .gui.fitSystemSecurity import GuiChangeFitSystemSecurityCommand from .gui.implant.add import GuiAddImplantCommand from .gui.implant.changeLocation import GuiChangeImplantLocationCommand from .gui.implant.changeMeta import GuiChangeImplantMetaCommand