MCPcopy Create free account
hub / github.com/pyfa-org/Pyfa / CalcRemoveProjectedFitCommand

Class CalcRemoveProjectedFitCommand

gui/fitCommands/calc/projectedFit/remove.py:11–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10
11class CalcRemoveProjectedFitCommand(wx.Command):
12
13 def __init__(self, fitID, projectedFitID, amount):
14 wx.Command.__init__(self, True, 'Add Projected Fit')
15 self.fitID = fitID
16 self.projectedFitID = projectedFitID
17 self.amount = amount
18 self.savedState = None
19 self.savedAmount = None
20 self.changeAmountCommand = None
21 self.savedStateCheckChanges = None
22
23 def Do(self):
24 pyfalog.debug('Doing removal of projected fit {} for fit {}'.format(self.projectedFitID, self.fitID))
25 sFit = Fit.getInstance()
26 fit = sFit.getFit(self.fitID)
27 projectedFit = sFit.getFit(self.projectedFitID, projected=True)
28
29 # Can be removed by the time we're redoing it
30 if projectedFit is None:
31 pyfalog.debug('Projected fit is not available')
32 return False
33 projectionInfo = projectedFit.getProjectionInfo(self.fitID)
34 if not projectionInfo:
35 pyfalog.warning('Fit projection info is not available')
36 return False
37
38 self.savedState = projectionInfo.active
39 self.savedAmount = projectionInfo.amount
40
41 remainingAmount = projectionInfo.amount - self.amount
42
43 # Change amount if more than 0 remaining, remove otherwise
44 if remainingAmount > 0:
45 from .changeAmount import CalcChangeProjectedFitAmountCommand
46 self.changeAmountCommand = CalcChangeProjectedFitAmountCommand(
47 fitID=self.fitID,
48 projectedFitID=self.projectedFitID,
49 amount=remainingAmount)
50 if not self.changeAmountCommand.Do():
51 return False
52 sFit.recalc(fit)
53 self.savedStateCheckChanges = sFit.checkStates(fit, None)
54 return True
55 else:
56 self.changeAmountCommand = None
57 if projectedFit.ID not in fit.projectedFitDict:
58 pyfalog.warning('Unable to find projected fit in projected dict')
59 return False
60 del fit.projectedFitDict[projectedFit.ID]
61 sFit.recalc(fit)
62 self.savedStateCheckChanges = sFit.checkStates(fit, None)
63 return True
64
65 def Undo(self):
66 pyfalog.debug('Undoing removal of projected fit {} for fit {}'.format(self.projectedFitID, self.fitID))
67 if self.changeAmountCommand is not None:
68 if not self.changeAmountCommand.Undo():

Callers 3

DoMethod · 0.90
DoMethod · 0.90
UndoMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected