From 958fbac5822cf94bfc6efd8f4dce4e6d7b81c309 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Mon, 29 Apr 2019 01:04:22 +0300 Subject: [PATCH] Implement alt logic in projected item removal via context menu --- gui/builtinAdditionPanes/projectedView.py | 4 +-- gui/builtinContextMenus/itemRemove.py | 34 +++++++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) 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()