Send proper modadd/moddel events when changing mod meta level
This commit is contained in:
@@ -16,15 +16,20 @@ class GuiChangeLocalModuleMetasCommand(wx.Command):
|
||||
self.fitID = fitID
|
||||
self.positions = positions
|
||||
self.newItemID = newItemID
|
||||
self.relacedItemIDs = None
|
||||
|
||||
def Do(self):
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(self.fitID)
|
||||
commands = []
|
||||
self.replacedItemIDs = set()
|
||||
for position in self.positions:
|
||||
module = fit.modules[position]
|
||||
if module.isEmpty:
|
||||
continue
|
||||
if module.itemID == self.newItemID:
|
||||
continue
|
||||
self.replacedItemIDs.add(module.itemID)
|
||||
info = ModuleInfo.fromModule(module)
|
||||
info.itemID = self.newItemID
|
||||
cmd = CalcReplaceLocalModuleCommand(fitID=self.fitID, position=position, newModInfo=info, unloadInvalidCharges=True, commit=False)
|
||||
@@ -34,12 +39,28 @@ class GuiChangeLocalModuleMetasCommand(wx.Command):
|
||||
success = self.internalHistory.submitBatch(*commands)
|
||||
eos.db.commit()
|
||||
sFit.recalc(fit)
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
|
||||
events = []
|
||||
if success and self.replacedItemIDs:
|
||||
events.append(GE.FitChanged(fitID=self.fitID, action='moddel', typeID=self.replacedItemIDs))
|
||||
if success:
|
||||
events.append(GE.FitChanged(fitID=self.fitID, action='modadd', typeID=self.newItemID))
|
||||
if not events:
|
||||
events.append(GE.FitChanged(fitID=self.fitID))
|
||||
for event in events:
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event)
|
||||
return success
|
||||
|
||||
def Undo(self):
|
||||
success = self.internalHistory.undoAll()
|
||||
eos.db.commit()
|
||||
Fit.getInstance().recalc(self.fitID)
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
|
||||
events = []
|
||||
if success:
|
||||
events.append(GE.FitChanged(fitID=self.fitID, action='moddel', typeID=self.newItemID))
|
||||
if success and self.replacedItemIDs:
|
||||
events.append(GE.FitChanged(fitID=self.fitID, action='modadd', typeID=self.replacedItemIDs))
|
||||
if not events:
|
||||
events.append(GE.FitChanged(fitID=self.fitID))
|
||||
for event in events:
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event)
|
||||
return success
|
||||
|
||||
Reference in New Issue
Block a user