diff --git a/gui/builtinAdditionPanes/projectedView.py b/gui/builtinAdditionPanes/projectedView.py index c3b35a5d5..0cb59d535 100644 --- a/gui/builtinAdditionPanes/projectedView.py +++ b/gui/builtinAdditionPanes/projectedView.py @@ -144,8 +144,8 @@ class ProjectedView(d.Display): if type == 'fit': activeFit = self.mainFrame.getActiveFit() if activeFit: - self.mainFrame.command.Submit(cmd.GuiAddProjectedFitCommand( - fitID=activeFit, projectedFitID=fitID, amount=1)) + self.mainFrame.command.Submit(cmd.GuiAddProjectedFitsCommand( + fitID=activeFit, projectedFitIDs=[fitID], amount=1)) @staticmethod def moduleSort(module): @@ -375,8 +375,22 @@ class ProjectedView(d.Display): projectors.append(projector) return projectors + # Context menu handlers def addFit(self, fit): if fit is None: return - fitID = self.mainFrame.getActiveFit() - self.mainFrame.command.Submit(cmd.GuiAddProjectedFitCommand(fitID=fitID, projectedFitID=fit.ID, amount=1)) + self.mainFrame.command.Submit(cmd.GuiAddProjectedFitsCommand( + fitID=self.mainFrame.getActiveFit(), + projectedFitIDs=[fit.ID], + amount=1)) + + def getExistingFitIDs(self): + return [f.ID for f in self.fits] + + def addFitsByIDs(self, fitIDs): + if not fitIDs: + return + self.mainFrame.command.Submit(cmd.GuiAddProjectedFitsCommand( + fitID=self.mainFrame.getActiveFit(), + projectedFitIDs=fitIDs, + amount=1)) diff --git a/gui/builtinShipBrowser/fitItem.py b/gui/builtinShipBrowser/fitItem.py index aa70d6402..e6981c78f 100644 --- a/gui/builtinShipBrowser/fitItem.py +++ b/gui/builtinShipBrowser/fitItem.py @@ -177,7 +177,7 @@ class FitItem(SFItem.SFBrowserItem): if activeFit: sFit = Fit.getInstance() projectedFit = sFit.getFit(self.fitID) - command = cmd.GuiAddProjectedFitCommand(fitID=activeFit, projectedFitID=projectedFit.ID, amount=1) + command = cmd.GuiAddProjectedFitsCommand(fitID=activeFit, projectedFitIDs=[projectedFit.ID], amount=1) if self.mainFrame.command.Submit(command): self.mainFrame.additionsPane.select("Projected") diff --git a/gui/fitCommands/__init__.py b/gui/fitCommands/__init__.py index 2ca606e6a..78fce1b7f 100644 --- a/gui/fitCommands/__init__.py +++ b/gui/fitCommands/__init__.py @@ -59,7 +59,7 @@ from .gui.projectedFighter.abilityToggleState import GuiToggleProjectedFighterAb from .gui.projectedFighter.add import GuiAddProjectedFighterCommand from .gui.projectedFighter.changeAmount import GuiChangeProjectedFighterAmountCommand from .gui.projectedFighter.changeMetas import GuiChangeProjectedFighterMetasCommand -from .gui.projectedFit.add import GuiAddProjectedFitCommand +from .gui.projectedFit.add import GuiAddProjectedFitsCommand from .gui.projectedFit.changeAmount import GuiChangeProjectedFitAmountCommand from .gui.projectedModule.add import GuiAddProjectedModuleCommand from .gui.projectedModule.changeCharges import GuiChangeProjectedModuleChargesCommand diff --git a/gui/fitCommands/gui/projectedFit/add.py b/gui/fitCommands/gui/projectedFit/add.py index 28cda2b09..9cee83232 100644 --- a/gui/fitCommands/gui/projectedFit/add.py +++ b/gui/fitCommands/gui/projectedFit/add.py @@ -8,18 +8,23 @@ from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit -class GuiAddProjectedFitCommand(wx.Command): +class GuiAddProjectedFitsCommand(wx.Command): - def __init__(self, fitID, projectedFitID, amount): - wx.Command.__init__(self, True, 'Add Projected Fit') + def __init__(self, fitID, projectedFitIDs, amount): + wx.Command.__init__(self, True, 'Add Projected Fits') self.internalHistory = InternalCommandHistory() self.fitID = fitID - self.projectedFitID = projectedFitID + self.projectedFitIDs = projectedFitIDs self.amount = amount def Do(self): - cmd = CalcAddProjectedFitCommand(fitID=self.fitID, projectedFitID=self.projectedFitID, amount=self.amount) - success = self.internalHistory.submit(cmd) + commands = [] + for projectedFitID in self.projectedFitIDs: + cmd = CalcAddProjectedFitCommand(fitID=self.fitID, projectedFitID=projectedFitID, amount=self.amount) + commands.append(cmd) + if not commands: + return False + success = self.internalHistory.submitBatch(*commands) sFit = Fit.getInstance() eos.db.flush() sFit.recalc(self.fitID)