Make it possible to fill with mutated modules

This commit is contained in:
DarkPhoenix
2019-04-18 21:36:07 +03:00
parent 270376e09c
commit 21f095250d
2 changed files with 17 additions and 7 deletions

View File

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

View File

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