Avoid doing unnecessary recalcs

This commit is contained in:
DarkPhoenix
2019-08-12 04:08:54 +03:00
parent f8062ba39f
commit 8a4caeaa2d
31 changed files with 233 additions and 92 deletions

View File

@@ -19,9 +19,10 @@ class GuiAddProjectedModuleCommand(wx.Command):
def Do(self):
cmd = CalcAddProjectedModuleCommand(fitID=self.fitID, modInfo=ModuleInfo(itemID=self.itemID))
success = self.internalHistory.submit(cmd)
eos.db.flush()
sFit = Fit.getInstance()
sFit.recalc(self.fitID)
if cmd.needsGuiRecalc:
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,)))

View File

@@ -20,9 +20,10 @@ class GuiChangeProjectedModuleChargesCommand(wx.Command):
def Do(self):
cmd = CalcChangeModuleChargesCommand(fitID=self.fitID, projected=True, chargeMap={p: self.chargeItemID for p in self.positions})
success = self.internalHistory.submit(cmd)
eos.db.flush()
sFit = Fit.getInstance()
sFit.recalc(self.fitID)
if cmd.needsGuiRecalc:
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,)))

View File

@@ -22,6 +22,7 @@ class GuiChangeProjectedModuleMetasCommand(wx.Command):
sFit = Fit.getInstance()
fit = sFit.getFit(self.fitID)
results = []
needRecalc = None
for position in sorted(self.positions, reverse=True):
module = fit.projectedModules[position]
if module.itemID == self.newItemID:
@@ -31,9 +32,12 @@ class GuiChangeProjectedModuleMetasCommand(wx.Command):
cmdRemove = CalcRemoveProjectedModuleCommand(fitID=self.fitID, position=position)
cmdAdd = CalcAddProjectedModuleCommand(fitID=self.fitID, modInfo=info)
results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd))
# Only last add command counts
needRecalc = cmdAdd.needsGuiRecalc
success = any(results)
eos.db.flush()
sFit.recalc(self.fitID)
if needRecalc:
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,)))