From 71c421702cc913f2bac18f825b50c8be3ad33b53 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 25 Apr 2019 09:50:56 +0300 Subject: [PATCH] Rework code of remove item context menu a little --- gui/builtinContextMenus/itemRemove.py | 163 ++++++++++++++++---------- 1 file changed, 102 insertions(+), 61 deletions(-) diff --git a/gui/builtinContextMenus/itemRemove.py b/gui/builtinContextMenus/itemRemove.py index 80bcd1551..b549d4d74 100644 --- a/gui/builtinContextMenus/itemRemove.py +++ b/gui/builtinContextMenus/itemRemove.py @@ -38,71 +38,112 @@ class RemoveItem(ContextMenuCombined): ' Stack' if itmContext in ('Drone', 'Fit') else '') def activate(self, fullContext, mainItem, selection, i): - + handlerMap = { + 'fittingModule': self.__handleModule, + 'droneItem': self.__handleDrone, + 'fighterItem': self.__handleFighter, + 'implantItem': self.__handleImplant, + 'boosterItem': self.__handleBooster, + 'cargoItem': self.__handleCargo, + 'projectedFit': self.__handleProjectedFit, + 'projectedModule': self.__handleProjectedModule, + 'projectedDrone': self.__handleProjectedDrone, + 'projectedFighter': self.__handleProjectedFighter, + 'commandFit': self.__handleCommandFit} srcContext = fullContext[0] + handler = handlerMap.get(srcContext) + if handler is None: + return + handler(mainItem, selection) + + def __handleModule(self, mainItem, selection): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) + if wx.GetMouseState().altDown: + positions = getSimilarModPositions(fit.modules, mainItem) + else: + positions = [] + for mod in selection: + if mod in fit.modules: + positions.append(fit.modules.index(mod)) + self.mainFrame.command.Submit(cmd.GuiRemoveLocalModuleCommand( + fitID=fitID, positions=positions)) - if srcContext == "fittingModule": - if wx.GetMouseState().altDown: - positions = getSimilarModPositions(fit.modules, mainItem) - else: - positions = [] - for mod in selection: - if mod in fit.modules: - positions.append(fit.modules.index(mod)) - self.mainFrame.command.Submit(cmd.GuiRemoveLocalModuleCommand( - fitID=fitID, positions=positions)) - elif srcContext == "droneItem": - positions = [] - for drone in selection: - if drone in fit.drones: - positions.append(fit.drones.index(drone)) - self.mainFrame.command.Submit(cmd.GuiRemoveLocalDronesCommand( - fitID=fitID, positions=positions, amount=math.inf)) - elif srcContext == "fighterItem": - if wx.GetMouseState().altDown: - fighters = getSimilarFighters(fit.fighters, mainItem) - else: - fighters = selection - positions = [] - for fighter in fighters: - if fighter in fit.fighters: - positions.append(fit.fighters.index(fighter)) - self.mainFrame.command.Submit(cmd.GuiRemoveLocalFightersCommand( - fitID=fitID, positions=positions)) - elif srcContext == "implantItem": - if mainItem in fit.implants: - position = fit.implants.index(mainItem) - self.mainFrame.command.Submit(cmd.GuiRemoveImplantCommand( - fitID=fitID, position=position)) - elif srcContext == "boosterItem": - if mainItem in fit.boosters: - position = fit.boosters.index(mainItem) - self.mainFrame.command.Submit(cmd.GuiRemoveBoosterCommand( - fitID=fitID, position=position)) - elif srcContext == "cargoItem": - self.mainFrame.command.Submit(cmd.GuiRemoveCargosCommand( - fitID=fitID, itemIDs=[mainItem.itemID])) - elif srcContext == "projectedFit": - self.mainFrame.command.Submit(cmd.GuiRemoveProjectedFitCommand( - fitID=fitID, projectedFitID=mainItem.ID, amount=math.inf)) - elif srcContext == "projectedModule": - if mainItem in fit.projectedModules: - position = fit.projectedModules.index(mainItem) - self.mainFrame.command.Submit(cmd.GuiRemoveProjectedModuleCommand( - fitID=fitID, position=position)) - elif srcContext == "projectedDrone": - self.mainFrame.command.Submit(cmd.GuiRemoveProjectedDroneCommand( - fitID=fitID, itemID=mainItem.itemID, amount=math.inf)) - elif srcContext == "projectedFighter": - if mainItem in fit.projectedFighters: - position = fit.projectedFighters.index(mainItem) - self.mainFrame.command.Submit(cmd.GuiRemoveProjectedFighterCommand( - fitID=fitID, position=position)) - elif srcContext == "commandFit": - self.mainFrame.command.Submit(cmd.GuiRemoveCommandFitCommand( - fitID=fitID, commandFitID=mainItem.ID)) + def __handleDrone(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + positions = [] + for drone in selection: + if drone in fit.drones: + positions.append(fit.drones.index(drone)) + self.mainFrame.command.Submit(cmd.GuiRemoveLocalDronesCommand( + fitID=fitID, positions=positions, amount=math.inf)) + + def __handleFighter(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + if wx.GetMouseState().altDown: + fighters = getSimilarFighters(fit.fighters, mainItem) + else: + fighters = selection + positions = [] + for fighter in fighters: + if fighter in fit.fighters: + positions.append(fit.fighters.index(fighter)) + self.mainFrame.command.Submit(cmd.GuiRemoveLocalFightersCommand( + fitID=fitID, positions=positions)) + + def __handleImplant(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + 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)) + + def __handleBooster(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + if mainItem in fit.boosters: + position = fit.boosters.index(mainItem) + self.mainFrame.command.Submit(cmd.GuiRemoveBoosterCommand( + fitID=fitID, position=position)) + + def __handleCargo(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + self.mainFrame.command.Submit(cmd.GuiRemoveCargosCommand( + fitID=fitID, itemIDs=[mainItem.itemID])) + + def __handleProjectedFit(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedFitCommand( + fitID=fitID, projectedFitID=mainItem.ID, amount=math.inf)) + + def __handleProjectedModule(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + if mainItem in fit.projectedModules: + position = fit.projectedModules.index(mainItem) + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedModuleCommand( + fitID=fitID, position=position)) + + def __handleProjectedDrone(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedDroneCommand( + fitID=fitID, itemID=mainItem.itemID, amount=math.inf)) + + def __handleProjectedFighter(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + if mainItem in fit.projectedFighters: + position = fit.projectedFighters.index(mainItem) + self.mainFrame.command.Submit(cmd.GuiRemoveProjectedFighterCommand( + fitID=fitID, position=position)) + + def __handleCommandFit(self, mainItem, selection): + fitID = self.mainFrame.getActiveFit() + self.mainFrame.command.Submit(cmd.GuiRemoveCommandFitCommand( + fitID=fitID, commandFitID=mainItem.ID)) RemoveItem.register()