diff --git a/gui/builtinAdditionPanes/projectedView.py b/gui/builtinAdditionPanes/projectedView.py index a8f7c252b..c8604755d 100644 --- a/gui/builtinAdditionPanes/projectedView.py +++ b/gui/builtinAdditionPanes/projectedView.py @@ -25,17 +25,17 @@ from logbook import Logger import gui.builtinAdditionPanes.droneView import gui.display as d +import gui.fitCommands as cmd import gui.globalEvents as GE from eos.saveddata.drone import Drone as EosDrone from eos.saveddata.fighter import Fighter as EosFighter -from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market -import gui.fitCommands as cmd + pyfalog = Logger(__name__) diff --git a/gui/builtinContextMenus/itemRemove.py b/gui/builtinContextMenus/itemRemove.py index c0dfae8f0..f76a844d3 100644 --- a/gui/builtinContextMenus/itemRemove.py +++ b/gui/builtinContextMenus/itemRemove.py @@ -4,8 +4,12 @@ import wx import gui.fitCommands as cmd import gui.mainFrame +from eos.saveddata.drone import Drone as EosDrone +from eos.saveddata.fighter import Fighter as EosFighter +from eos.saveddata.fit import Fit as EosFit +from eos.saveddata.module import Module as EosModule from gui.contextMenu import ContextMenuCombined -from gui.fitCommands.helpers import getSimilarModPositions, getSimilarFighters +from gui.fitCommands.helpers import getSimilarFighters, getSimilarModPositions from service.fit import Fit from service.settings import ContextMenuSettings @@ -122,8 +126,32 @@ class RemoveItem(ContextMenuCombined): def __handleProjectedItem(self, mainItem, selection): fitID = self.mainFrame.getActiveFit() - self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( - fitID=fitID, items=selection, amount=math.inf)) + if isinstance(mainItem, EosFit): + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( + fitID=fitID, items=selection, amount=math.inf)) + elif isinstance(mainItem, EosModule): + if wx.GetMouseState().GetModifiers() == wx.MOD_ALT: + fit = Fit.getInstance().getFit(fitID) + positions = getSimilarModPositions(fit.projectedModules, mainItem) + items = [fit.projectedModules[p] for p in positions] + else: + items = selection + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( + fitID=fitID, items=items, amount=math.inf)) + elif isinstance(mainItem, EosDrone): + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( + fitID=fitID, items=selection, amount=math.inf)) + elif isinstance(mainItem, EosFighter): + if wx.GetMouseState().GetModifiers() == wx.MOD_ALT: + fit = Fit.getInstance().getFit(fitID) + items = getSimilarFighters(fit.projectedFighters, mainItem) + else: + items = selection + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( + fitID=fitID, items=items, amount=math.inf)) + else: + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( + fitID=fitID, items=selection, amount=math.inf)) def __handleCommandFit(self, mainItem, selection): fitID = self.mainFrame.getActiveFit()