Files
pyfa/gui/fitCommands/gui/localModule/replace.py
2019-08-08 09:45:14 +03:00

59 lines
2.0 KiB
Python

import wx
import eos.db
import gui.mainFrame
from gui import globalEvents as GE
from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand
from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies
from service.fit import Fit
from service.market import Market
class GuiReplaceLocalModuleCommand(wx.Command):
def __init__(self, fitID, itemID, positions):
wx.Command.__init__(self, True, 'Replace Local Module')
self.internalHistory = InternalCommandHistory()
self.fitID = fitID
self.itemID = itemID
self.positions = positions
self.savedRemovedDummies = None
def Do(self):
results = []
for position in self.positions:
cmd = CalcReplaceLocalModuleCommand(
fitID=self.fitID,
position=position,
newModInfo=ModuleInfo(itemID=self.itemID))
results.append(self.internalHistory.submit(cmd))
success = any(results)
Market.getInstance().storeRecentlyUsed(self.itemID)
eos.db.flush()
sFit = Fit.getInstance()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
wx.PostEvent(
gui.mainFrame.MainFrame.getInstance(),
GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.itemID)
if success else
GE.FitChanged(fitIDs=(self.fitID,)))
return success
def Undo(self):
sFit = Fit.getInstance()
fit = sFit.getFit(self.fitID)
restoreRemovedDummies(fit, self.savedRemovedDummies)
success = self.internalHistory.undoAll()
eos.db.flush()
sFit.recalc(self.fitID)
sFit.fill(self.fitID)
eos.db.commit()
wx.PostEvent(
gui.mainFrame.MainFrame.getInstance(),
GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.itemID)
if success else
GE.FitChanged(fitIDs=(self.fitID,)))
return success