Fix replacing of modules
This commit is contained in:
@@ -979,6 +979,15 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
|
||||
return copy
|
||||
|
||||
def rebase(self, item):
|
||||
state = self.state
|
||||
charge = self.charge
|
||||
Module.__init__(self, item, self.baseItem, self.mutaplasmid)
|
||||
self.state = state
|
||||
self.charge = charge
|
||||
for x in self.mutators.values():
|
||||
Mutator(self, x.attribute, x.value)
|
||||
|
||||
def __repr__(self):
|
||||
if self.item:
|
||||
return "Module(ID={}, name={}) at {}".format(
|
||||
|
||||
@@ -671,12 +671,13 @@ class MainFrame(wx.Frame):
|
||||
|
||||
def optimizeFitPrice(self, event):
|
||||
sPrice = Price.getInstance()
|
||||
fit = Fit.getInstance().getFit(self.getActiveFit())
|
||||
fitID = self.getActiveFit()
|
||||
fit = Fit.getInstance().getFit(fitID)
|
||||
if fit:
|
||||
# TODO: block/unblock UI while pyfa is working
|
||||
|
||||
def cb():
|
||||
pass
|
||||
def cb(changes):
|
||||
if changes:
|
||||
wx.PostEvent(self, GE.FitChanged(fitID=fitID))
|
||||
|
||||
sPrice.optimizeFitPrice(fit, cb, includeBetter=True, fetchTimeout=10)
|
||||
|
||||
|
||||
@@ -234,18 +234,19 @@ class Price:
|
||||
|
||||
def cb(replacementMap):
|
||||
changes = False
|
||||
for fitobj in self.fitObjectIter(fit):
|
||||
if fitobj.item in replacementMap:
|
||||
fitobj.item = replacementMap[fitobj.item]
|
||||
changes = True
|
||||
charge = getattr(fitobj, 'charge', None)
|
||||
if charge and charge in replacementMap:
|
||||
fitobj.charge = replacementMap[charge]
|
||||
changes = True
|
||||
for container in (fit.modules,):
|
||||
for obj in container:
|
||||
charge = getattr(obj, 'charge', None)
|
||||
if charge is not None and charge in replacementMap:
|
||||
obj.charge = replacementMap[charge]
|
||||
changes = True
|
||||
if obj.item in replacementMap:
|
||||
obj.rebase(replacementMap[obj.item])
|
||||
changes = True
|
||||
if changes:
|
||||
Fit.getInstance().refreshFit(fit.ID)
|
||||
try:
|
||||
callback()
|
||||
callback(changes)
|
||||
except Exception as e:
|
||||
pyfalog.critical("Execution of callback from optimizeFitPrice failed.")
|
||||
pyfalog.critical(e)
|
||||
|
||||
Reference in New Issue
Block a user