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

@@ -22,9 +22,10 @@ class GuiAddLocalModuleCommand(wx.Command):
cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=ModuleInfo(itemID=self.itemID))
success = self.internalHistory.submit(cmd)
Market.getInstance().storeRecentlyUsed(self.itemID)
eos.db.flush()
sFit = Fit.getInstance()
sFit.recalc(self.fitID)
if cmd.needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
wx.PostEvent(

View File

@@ -20,9 +20,10 @@ class GuiChangeLocalModuleChargesCommand(wx.Command):
def Do(self):
cmd = CalcChangeModuleChargesCommand(fitID=self.fitID, projected=False, 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

@@ -42,8 +42,9 @@ class GuiChangeLocalModuleMetasCommand(wx.Command):
if not commands:
return False
success = self.internalHistory.submitBatch(*commands)
eos.db.flush()
sFit.recalc(self.fitID)
if commands[-1].needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
events = []

View File

@@ -26,9 +26,9 @@ class GuiChangeLocalModuleStatesCommand(wx.Command):
positions=self.positions,
click=self.click)
success = self.internalHistory.submit(cmd)
eos.db.flush()
sFit = Fit.getInstance()
if cmd.recalcNeeded:
if cmd.needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()

View File

@@ -25,9 +25,10 @@ class GuiCloneLocalModuleCommand(wx.Command):
sFit = Fit.getInstance()
cmd = CalcCloneLocalModuleCommand(fitID=self.fitID, srcPosition=self.srcPosition, dstPosition=self.dstPosition)
success = self.internalHistory.submit(cmd)
eos.db.flush()
fit = sFit.getFit(self.fitID)
sFit.recalc(self.fitID)
if cmd.needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
self.savedItemID = fit.modules[self.srcPosition].itemID

View File

@@ -27,9 +27,11 @@ class GuiFillWithNewLocalModulesCommand(wx.Command):
break
added_modules += 1
Market.getInstance().storeRecentlyUsed(self.itemID)
eos.db.flush()
sFit = Fit.getInstance()
sFit.recalc(self.fitID)
# Only last command decides if we need to recalc here or not
if cmd.needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
success = added_modules > 0

View File

@@ -30,8 +30,9 @@ class GuiFillWithClonedLocalModulesCommand(wx.Command):
if not self.internalHistory.submit(cmd):
break
added_modules += 1
eos.db.flush()
sFit.recalc(self.fitID)
if cmd.needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
success = added_modules > 0

View File

@@ -39,8 +39,9 @@ class GuiConvertMutatedLocalModuleCommand(wx.Command):
spoolType=mod.spoolType,
spoolAmount=mod.spoolAmount))
success = self.internalHistory.submit(cmd)
eos.db.flush()
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

@@ -24,9 +24,10 @@ class GuiImportLocalMutatedModuleCommand(wx.Command):
def Do(self):
cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=self.newModInfo)
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)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
wx.PostEvent(

View File

@@ -34,8 +34,9 @@ class GuiRevertMutatedLocalModuleCommand(wx.Command):
spoolType=mod.spoolType,
spoolAmount=mod.spoolAmount))
success = self.internalHistory.submit(cmd)
eos.db.flush()
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

@@ -30,8 +30,9 @@ class GuiRemoveLocalModuleCommand(wx.Command):
for position in sorted(container, reverse=True):
modInfo = container[position]
sMkt.storeRecentlyUsed(modInfo.itemID)
eos.db.flush()
sFit.recalc(self.fitID)
if cmd.needsGuiRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
wx.PostEvent(

View File

@@ -21,17 +21,21 @@ class GuiReplaceLocalModuleCommand(wx.Command):
def Do(self):
results = []
needRecalc = None
for position in self.positions:
cmd = CalcReplaceLocalModuleCommand(
fitID=self.fitID,
position=position,
newModInfo=ModuleInfo(itemID=self.itemID))
results.append(self.internalHistory.submit(cmd))
# Last command decides if we need it or not
needRecalc = cmd.needsGuiRecalc
success = any(results)
Market.getInstance().storeRecentlyUsed(self.itemID)
eos.db.flush()
sFit = Fit.getInstance()
sFit.recalc(self.fitID)
if needRecalc:
eos.db.flush()
sFit.recalc(self.fitID)
self.savedRemovedDummies = sFit.fill(self.fitID)
eos.db.commit()
wx.PostEvent(