From dc30b3ed1d97b5999844c263cfc69f455d3ab631 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 25 Apr 2019 14:56:09 +0300 Subject: [PATCH] Change implant remove command to support batch removal --- gui/builtinAdditionPanes/implantView.py | 2 +- gui/builtinContextMenus/itemRemove.py | 4 ++-- gui/fitCommands/__init__.py | 2 +- gui/fitCommands/gui/implant/remove.py | 18 ++++++++++++------ 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gui/builtinAdditionPanes/implantView.py b/gui/builtinAdditionPanes/implantView.py index 51e76eebf..506b66b0c 100644 --- a/gui/builtinAdditionPanes/implantView.py +++ b/gui/builtinAdditionPanes/implantView.py @@ -220,7 +220,7 @@ class ImplantDisplay(d.Display): fit = sFit.getFit(fitID) if fit.implantLocation == ImplantLocation.FIT and implant in self.original: position = self.original.index(implant) - self.mainFrame.command.Submit(cmd.GuiRemoveImplantCommand(fitID=fitID, position=position)) + self.mainFrame.command.Submit(cmd.GuiRemoveImplantsCommand(fitID=fitID, positions=[position])) def click(self, event): event.Skip() diff --git a/gui/builtinContextMenus/itemRemove.py b/gui/builtinContextMenus/itemRemove.py index 98d236e98..503a703bf 100644 --- a/gui/builtinContextMenus/itemRemove.py +++ b/gui/builtinContextMenus/itemRemove.py @@ -98,8 +98,8 @@ class RemoveItem(ContextMenuCombined): fit = Fit.getInstance().getFit(fitID) if mainItem in fit.implants: position = fit.implants.index(mainItem) - self.mainFrame.command.Submit(cmd.GuiRemoveImplantCommand( - fitID=fitID, position=position)) + self.mainFrame.command.Submit(cmd.GuiRemoveImplantsCommand( + fitID=fitID, positions=[position])) def __handleBooster(self, mainItem, selection): fitID = self.mainFrame.getActiveFit() diff --git a/gui/fitCommands/__init__.py b/gui/fitCommands/__init__.py index e680030b5..f04fbd546 100644 --- a/gui/fitCommands/__init__.py +++ b/gui/fitCommands/__init__.py @@ -14,7 +14,7 @@ from .gui.fitRename import GuiRenameFitCommand from .gui.implant.add import GuiAddImplantCommand from .gui.implant.changeLocation import GuiChangeImplantLocationCommand from .gui.implant.changeMeta import GuiChangeImplantMetaCommand -from .gui.implant.remove import GuiRemoveImplantCommand +from .gui.implant.remove import GuiRemoveImplantsCommand from .gui.implant.setAdd import GuiAddImplantSetCommand from .gui.implant.toggleState import GuiToggleImplantStateCommand from .gui.itemsRebase import GuiRebaseItemsCommand diff --git a/gui/fitCommands/gui/implant/remove.py b/gui/fitCommands/gui/implant/remove.py index 55f1293d9..0beb0543b 100644 --- a/gui/fitCommands/gui/implant/remove.py +++ b/gui/fitCommands/gui/implant/remove.py @@ -1,23 +1,28 @@ import wx from service.fit import Fit +import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import InternalCommandHistory from gui.fitCommands.calc.implant.remove import CalcRemoveImplantCommand -class GuiRemoveImplantCommand(wx.Command): +class GuiRemoveImplantsCommand(wx.Command): - def __init__(self, fitID, position): - wx.Command.__init__(self, True, 'Remove Implant') + def __init__(self, fitID, positions): + wx.Command.__init__(self, True, 'Remove Implants') self.internalHistory = InternalCommandHistory() self.fitID = fitID - self.position = position + self.positions = positions def Do(self): - cmd = CalcRemoveImplantCommand(fitID=self.fitID, position=self.position) - success = self.internalHistory.submit(cmd) + results = [] + for position in sorted(self.positions, reverse=True): + cmd = CalcRemoveImplantCommand(fitID=self.fitID, position=position, commit=False) + results.append(self.internalHistory.submit(cmd)) + success = any(results) + eos.db.commit() Fit.getInstance().recalc(self.fitID) wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID)) return success @@ -25,5 +30,6 @@ class GuiRemoveImplantCommand(wx.Command): def Undo(self): success = self.internalHistory.undoAll() Fit.getInstance().recalc(self.fitID) + eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID)) return success