diff --git a/gui/builtinAdditionPanes/commandView.py b/gui/builtinAdditionPanes/commandView.py index b1f71b3f1..e5db133fe 100644 --- a/gui/builtinAdditionPanes/commandView.py +++ b/gui/builtinAdditionPanes/commandView.py @@ -227,3 +227,9 @@ class CommandView(d.Display): continue commandFits.append(commandFit) return commandFits + + def addFit(self, fit): + if fit is None: + return + fitID = self.mainFrame.getActiveFit() + self.mainFrame.command.Submit(cmd.GuiAddCommandFitCommand(fitID=fitID, commandFitID=fit.ID)) diff --git a/gui/builtinAdditionPanes/projectedView.py b/gui/builtinAdditionPanes/projectedView.py index dab2be7d4..c3b35a5d5 100644 --- a/gui/builtinAdditionPanes/projectedView.py +++ b/gui/builtinAdditionPanes/projectedView.py @@ -374,3 +374,9 @@ class ProjectedView(d.Display): continue projectors.append(projector) return projectors + + def addFit(self, fit): + if fit is None: + return + fitID = self.mainFrame.getActiveFit() + self.mainFrame.command.Submit(cmd.GuiAddProjectedFitCommand(fitID=fitID, projectedFitID=fit.ID, amount=1)) diff --git a/gui/builtinContextMenus/fitAddCurrentlyOpen.py b/gui/builtinContextMenus/fitAddCurrentlyOpen.py index 67bfe0c58..b29998cd6 100644 --- a/gui/builtinContextMenus/fitAddCurrentlyOpen.py +++ b/gui/builtinContextMenus/fitAddCurrentlyOpen.py @@ -15,7 +15,10 @@ class AddCurrentlyOpenFit(ContextMenuUnconditional): def display(self, callingWindow, srcContext): - if self.mainFrame.getActiveFit() is None or srcContext not in ('projected', 'commandView'): + if srcContext not in ('projected', 'commandView', 'graphFitList', 'graphTgtList'): + return False + + if srcContext in ('projected', 'commandView') and self.mainFrame.getActiveFit() is None: return False return True @@ -26,6 +29,7 @@ class AddCurrentlyOpenFit(ContextMenuUnconditional): def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): self.fitLookup = {} self.context = context + self.callingWindow = callingWindow sFit = Fit.getInstance() m = wx.Menu() @@ -50,14 +54,8 @@ class AddCurrentlyOpenFit(ContextMenuUnconditional): return m def handleSelection(self, event): - fitID = self.mainFrame.getActiveFit() - fit = self.fitLookup[event.Id] - - if self.context == 'commandView': - self.mainFrame.command.Submit(cmd.GuiAddCommandFitCommand(fitID=fitID, commandFitID=fit.ID)) - elif self.context == 'projected': - self.mainFrame.command.Submit(cmd.GuiAddProjectedFitCommand(fitID=fitID, projectedFitID=fit.ID, amount=1)) + self.callingWindow.addFit(fit) AddCurrentlyOpenFit.register() diff --git a/gui/graphFrame/lists.py b/gui/graphFrame/lists.py index d34e6392e..6b0646b4c 100644 --- a/gui/graphFrame/lists.py +++ b/gui/graphFrame/lists.py @@ -166,6 +166,15 @@ class BaseList(gui.display.Display): self.graphFrame.mainFrame.Unbind(EVT_FIT_RENAMED, handler=self.OnFitRenamed) self.graphFrame.mainFrame.Unbind(GE.FIT_REMOVED, handler=self.OnFitRemoved) + # Context menu handlers + def addFit(self, fit): + if fit is None: + return + if fit in self.fits: + return + self.fits.append(fit) + self.updateView() + self.graphFrame.draw() class FitList(BaseList): @@ -224,7 +233,7 @@ class TargetList(BaseList): def __init__(self, graphFrame, parent): super().__init__(graphFrame, parent) - + self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.profiles = []