Send context only for selected module in fitting panel

This commit is contained in:
DarkPhoenix
2019-04-24 12:45:21 +03:00
parent 3a26815d18
commit b88ebdcfc0
4 changed files with 29 additions and 25 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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):

View File

@@ -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)