diff --git a/gui/builtinContextMenus/moduleFill.py b/gui/builtinContextMenus/moduleFill.py index c91038c0e..fca500d50 100644 --- a/gui/builtinContextMenus/moduleFill.py +++ b/gui/builtinContextMenus/moduleFill.py @@ -5,6 +5,7 @@ import gui.fitCommands as cmd import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenu +from service.fit import Fit from service.settings import ContextMenuSettings @@ -27,7 +28,10 @@ class FillWithModule(ContextMenu): fitID = self.mainFrame.getActiveFit() if srcContext == "fittingModule": - self.mainFrame.command.Submit(cmd.GuiFillWithLocalModulesCommand(fitID, selection[0].itemID)) + fit = Fit.getInstance().getFit(fitID) + self.mainFrame.command.Submit(cmd.GuiFillWithLocalModulesCommand( + fitID=fitID, + position=fit.modules.index(selection[0]))) return # the command takes care of the PostEvent wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) diff --git a/gui/fitCommands/gui/localModule/fill.py b/gui/fitCommands/gui/localModule/fill.py index 495c2529c..cc7f86e0c 100644 --- a/gui/fitCommands/gui/localModule/fill.py +++ b/gui/fitCommands/gui/localModule/fill.py @@ -10,25 +10,31 @@ from service.fit import Fit class GuiFillWithLocalModulesCommand(wx.Command): - def __init__(self, fitID, itemID): + def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Fill with Local Modules') self.internalHistory = InternalCommandHistory() self.fitID = fitID - self.itemID = itemID + self.position = position + self.savedItemID = None def Do(self): + sFit = Fit.getInstance() + fit = sFit.getFit(self.fitID) + mod = fit.modules[self.position] + self.savedItemID = mod.itemID + info = ModuleInfo.fromModule(mod) added_modules = 0 while True: - cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=ModuleInfo(itemID=self.itemID), commit=False) + cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=info, commit=False) if not self.internalHistory.submit(cmd): break added_modules += 1 eos.db.commit() - Fit.getInstance().recalc(self.fitID) + sFit.recalc(self.fitID) success = added_modules > 0 wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), - GE.FitChanged(fitID=self.fitID, action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitID=self.fitID)) + GE.FitChanged(fitID=self.fitID, action='modadd', typeID=self.savedItemID) if success else GE.FitChanged(fitID=self.fitID)) return success def Undo(self): @@ -37,5 +43,5 @@ class GuiFillWithLocalModulesCommand(wx.Command): Fit.getInstance().recalc(self.fitID) wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), - GE.FitChanged(fitID=self.fitID, action='moddel', typeID=self.itemID) if success else GE.FitChanged(fitID=self.fitID)) + GE.FitChanged(fitID=self.fitID, action='moddel', typeID=self.savedItemID) if success else GE.FitChanged(fitID=self.fitID)) return success