Recalc all fits which might need that when changing factorReload flag

This commit is contained in:
DarkPhoenix
2019-07-05 01:08:00 +03:00
parent 6e083a5af8
commit 63ca8dc559
5 changed files with 21 additions and 32 deletions

View File

@@ -137,6 +137,10 @@ class Fit(object):
self.ecmProjectedStr = 1
self.commandBonuses = {}
@property
def hasDpsData(self):
return len(self.__weaponDpsMap) > 0
@property
def targetResists(self):
return self.__targetResists

View File

@@ -25,12 +25,8 @@ class FactorReload(ContextMenuUnconditional):
return "Factor in Reload Time"
def activate(self, fullContext, i):
refreshFitIDs = set()
fitID = self.mainFrame.getActiveFit()
if fitID is not None:
refreshFitIDs.add(fitID)
Fit.getInstance().toggleFactorReload(fitsIdToRefresh=refreshFitIDs)
for fitID in refreshFitIDs:
fitIDs = Fit.getInstance().toggleFactorReload()
for fitID in fitIDs:
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
@property

View File

@@ -123,12 +123,8 @@ class PFFittingEnginePref(PreferenceView):
self.engine_settings.set("globalDefaultSpoolupPercentage", self.spoolup_value.GetValue() / 100)
def OnCBGlobalForceReloadStateChange(self, event):
refreshFitIDs = set()
fitID = self.mainFrame.getActiveFit()
if fitID is not None:
refreshFitIDs.add(fitID)
self.sFit.toggleFactorReload(value=bool(self.cbGlobalForceReload.GetValue()), fitsIdToRefresh=refreshFitIDs)
for fitID in refreshFitIDs:
fitIDs = self.sFit.toggleFactorReload(value=bool(self.cbGlobalForceReload.GetValue()))
for fitID in fitIDs:
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def OnCBStrictSkillLevelsChange(self, event):

View File

@@ -172,14 +172,6 @@ class FitItem(SFItem.SFBrowserItem):
def OpenNewTab(self, evt):
self.selectFit(newTab=True)
def OnToggleBooster(self, event):
sFit = Fit.getInstance()
sFit.toggleBoostFit(self.fitID)
self.fitBooster = not self.fitBooster
self.boosterBtn.Show(self.fitBooster)
self.Refresh()
wx.PostEvent(self.mainFrame, BoosterListUpdated())
event.Skip()
def OnProjectToFit(self, event):
activeFit = self.mainFrame.getActiveFit()

View File

@@ -20,6 +20,7 @@
import copy
import datetime
from time import time
from weakref import WeakSet
import wx
from logbook import Logger
@@ -71,7 +72,7 @@ class Fit:
self.targetResists = None
self.character = saveddata_Character.getAll5()
self.booster = False
self.dirtyFitIDs = set()
self._loadedFits = WeakSet()
serviceFittingDefaultOptions = {
"useGlobalCharacter": False,
@@ -179,13 +180,6 @@ class Fit:
self.fill(fit)
return fit.ID
@staticmethod
def toggleBoostFit(fitID):
pyfalog.debug("Toggling as booster for fit ID: {0}", fitID)
fit = eos.db.getFit(fitID)
fit.booster = not fit.booster
eos.db.commit()
@staticmethod
def deleteFit(fitID):
fit = eos.db.getFit(fitID)
@@ -249,11 +243,16 @@ class Fit:
fit.notes = notes
eos.db.commit()
def toggleFactorReload(self, value=None, fitsIdToRefresh=()):
def toggleFactorReload(self, value=None):
self.serviceFittingOptions['useGlobalForceReload'] = value if value is not None else not self.serviceFittingOptions['useGlobalForceReload']
for fitID in fitsIdToRefresh:
fit = self.getFit(fitID)
self.recalc(fit)
fitIDs = set()
for fit in set(self._loadedFits):
if fit is None:
continue
if fit.hasDpsData:
self.recalc(fit)
fitIDs.add(fit.ID)
return fitIDs
def switchFit(self, fitID):
pyfalog.debug("Switching fit to fit ID: {0}", fitID)
@@ -293,6 +292,8 @@ class Fit:
if fit is None:
return None
self._loadedFits.add(fit)
if basic:
return fit