Files
pyfa/gui/builtinContextMenus/moduleGlobalAmmoPicker.py
2019-04-15 11:34:52 +03:00

59 lines
2.0 KiB
Python

import gui.fitCommands as cmd
import gui.mainFrame
from gui.builtinContextMenus.moduleAmmoPicker import ModuleAmmoPicker
from service.fit import Fit
from service.settings import ContextMenuSettings
class ModuleGlobalAmmoPicker(ModuleAmmoPicker):
def __init__(self):
super(ModuleGlobalAmmoPicker, self).__init__()
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = ContextMenuSettings.getInstance()
def getText(self, itmContext, selection):
return "Charge (All)"
def handleAmmoSwitch(self, event):
if len(self.modules) != 1:
event.Skip()
return
charge = self.chargeIds.get(event.Id, False)
if charge is False:
event.Skip()
return
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
selectedModule = self.modules[0]
if self.context == 'fittingModule':
self.mainFrame.command.Submit(cmd.GuiChangeLocalModuleChargesCommand(
fitID=fitID,
modules=[m for m in fit.modules if m.itemID is not None and m.itemID == selectedModule.itemID],
chargeItemID=charge.ID if charge is not None else None))
elif self.context == 'projectedModule':
self.mainFrame.command.Submit(cmd.GuiChangeProjectedModuleChargesCommand(
fitID=fitID,
modules=[m for m in fit.projectedModules if m.itemID is not None and m.itemID == selectedModule.itemID],
chargeItemID=charge.ID if charge is not None else None))
def display(self, srcContext, selection):
if not self.settings.get('moduleGlobalAmmoPicker'):
return False
try:
selectionLen = len(selection)
except:
pass
else:
if selectionLen != 1:
return False
return super(ModuleGlobalAmmoPicker, self).display(srcContext, selection)
ModuleGlobalAmmoPicker.register()