diff --git a/gui/builtinContextMenus/itemStats.py b/gui/builtinContextMenus/itemStats.py index 63ec67fc2..28173c1df 100644 --- a/gui/builtinContextMenus/itemStats.py +++ b/gui/builtinContextMenus/itemStats.py @@ -5,6 +5,7 @@ import gui.mainFrame from gui.contextMenu import ContextMenuSingle from gui.itemStats import ItemStatsDialog from service.fit import Fit +from eos.saveddata.mode import Mode from service.settings import ContextMenuSettings diff --git a/gui/builtinContextMenus/moduleMutations.py b/gui/builtinContextMenus/moduleMutations.py index f45cbff0e..36a49eea4 100644 --- a/gui/builtinContextMenus/moduleMutations.py +++ b/gui/builtinContextMenus/moduleMutations.py @@ -4,8 +4,8 @@ import wx import gui.mainFrame from gui.contextMenu import ContextMenuSingle from gui.fitCommands import GuiConvertMutatedLocalModuleCommand, GuiRevertMutatedLocalModuleCommand -from service.settings import ContextMenuSettings from service.fit import Fit +from service.settings import ContextMenuSettings class ChangeModuleMutation(ContextMenuSingle): @@ -16,6 +16,7 @@ class ChangeModuleMutation(ContextMenuSingle): self.eventIDs = {} def display(self, srcContext, mainItem): + if srcContext != "fittingModule" or self.mainFrame.getActiveFit() is None: return False diff --git a/gui/builtinContextMenus/moduleSpool.py b/gui/builtinContextMenus/moduleSpool.py index bdcfeb1f5..4585bc121 100644 --- a/gui/builtinContextMenus/moduleSpool.py +++ b/gui/builtinContextMenus/moduleSpool.py @@ -6,8 +6,8 @@ import gui.fitCommands as cmd import gui.mainFrame from eos.utils.spoolSupport import SpoolType, SpoolOptions from gui.contextMenu import ContextMenuSingle -from service.settings import ContextMenuSettings from service.fit import Fit +from service.settings import ContextMenuSettings class ChangeModuleSpool(ContextMenuSingle): diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 97ecfd747..c0c0fba87 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -623,36 +623,15 @@ class FittingView(d.Display): if self.activeFitID is None or self.getColumn(self.screenToClientFixed(event.Position)) == self.getColIndex(State): return - sMkt = Market.getInstance() selection = [] - contexts = [] for mod in self.getSelectedMods(): # Test if this is a mode, which is a special snowflake of a Module if isinstance(mod, Mode): - srcContext = "fittingMode" - itemContext = "Tactical Mode" - fullContext = (srcContext, itemContext) - if srcContext not in tuple(fCtxt[0] for fCtxt in contexts): - contexts.append(fullContext) selection.append(mod) elif not mod.isEmpty: - srcContext = "fittingModule" - itemContext = sMkt.getCategoryByItem(mod.item).name - fullContext = (srcContext, itemContext) - if srcContext not in tuple(fCtxt[0] for fCtxt in contexts): - contexts.append(fullContext) - - if mod.charge is not None: - srcContext = "fittingCharge" - itemContext = sMkt.getCategoryByItem(mod.charge).name - fullContext = (srcContext, itemContext) - if srcContext not in tuple(fCtxt[0] for fCtxt in contexts): - contexts.append(fullContext) selection.append(mod) - sFit = Fit.getInstance() - fit = sFit.getFit(self.activeFitID) - contexts.append(("fittingShip", "Ship" if not fit.isStructure else "Citadel")) + fit = Fit.getInstance().getFit(self.activeFitID) clickedPos = self.getRowByAbs(event.Position) mainMod = None if clickedPos != -1: @@ -661,8 +640,31 @@ class FittingView(d.Display): except IndexError: pass else: - if mod in fit.modules: + if mod is not None and (mod in fit.modules or mod is fit.mode): mainMod = mod + + sMkt = Market.getInstance() + contexts = [] + if isinstance(mainMod, Module) and not mainMod.isEmpty: + srcContext = "fittingModule" + itemContext = sMkt.getCategoryByItem(mainMod.item).name + fullContext = (srcContext, itemContext) + if srcContext not in tuple(fCtx[0] for fCtx in contexts): + contexts.append(fullContext) + if mainMod.charge is not None: + srcContext = "fittingCharge" + itemContext = sMkt.getCategoryByItem(mainMod.charge).name + fullContext = (srcContext, itemContext) + if srcContext not in tuple(fCtxt[0] for fCtxt in contexts): + contexts.append(fullContext) + elif isinstance(mainMod, Mode): + srcContext = "fittingMode" + itemContext = "Tactical Mode" + fullContext = (srcContext, itemContext) + if srcContext not in tuple(fCtx[0] for fCtx in contexts): + contexts.append(fullContext) + contexts.append(("fittingShip", "Ship" if not fit.isStructure else "Citadel")) + menu = ContextMenu.getMenu(mainMod, selection, *contexts) self.PopupMenu(menu)