MCPcopy Index your code
hub / github.com/pyfa-org/Pyfa / CalcAddProjectedModuleCommand

Class CalcAddProjectedModuleCommand

gui/fitCommands/calc/module/projectedAdd.py:13–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11
12
13class CalcAddProjectedModuleCommand(wx.Command):
14
15 def __init__(self, fitID, modInfo, position=None, ignoreRestrictions=False, recalc=True):
16 wx.Command.__init__(self, True)
17 self.fitID = fitID
18 self.newModInfo = modInfo
19 self.newPosition = position
20 self.ignoreRestrictions = ignoreRestrictions
21 self.recalc = recalc
22 self.oldModInfo = None
23 self.oldPosition = None
24 self.savedStateCheckChanges = None
25
26 def Do(self):
27 pyfalog.debug('Doing addition of projected module {} onto: {}'.format(self.newModInfo, self.fitID))
28 newMod = self.newModInfo.toModule(fallbackState=FittingModuleState.ACTIVE)
29 if newMod is None:
30 return False
31
32 sFit = Fit.getInstance()
33 fit = sFit.getFit(self.fitID)
34 canHaveState = newMod.canHaveState(newMod.state, projectedOnto=fit)
35 if canHaveState is not True:
36 newMod.state = canHaveState
37 if not self.ignoreRestrictions and not newMod.isValidCharge(newMod.charge):
38 newMod.charge = None
39 self.oldPosition, self.oldModInfo = fit.projectedModules.makeRoom(newMod)
40
41 if self.newPosition is not None:
42 fit.projectedModules.insert(self.newPosition, newMod)
43 if newMod not in fit.projectedModules:
44 return False
45 else:
46 fit.projectedModules.append(newMod)
47 if newMod not in fit.projectedModules:
48 return False
49 self.newPosition = fit.projectedModules.index(newMod)
50
51 if self.recalc:
52 # Need to flush because checkStates sometimes relies on module->fit
53 # relationship via .owner attribute, which is handled by SQLAlchemy
54 eos.db.flush()
55 sFit.recalc(fit)
56 self.savedStateCheckChanges = sFit.checkStates(fit, newMod)
57 return True
58
59 def Undo(self):
60 pyfalog.debug('Undoing addition of projected module {} onto: {}'.format(self.newModInfo, self.fitID))
61 if self.oldPosition is not None and self.oldModInfo is not None:
62 cmd = CalcAddProjectedModuleCommand(
63 fitID=self.fitID,
64 modInfo=self.oldModInfo,
65 position=self.oldPosition,
66 ignoreRestrictions=True,
67 recalc=False)
68 if not cmd.Do():
69 return False
70 restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges)

Callers 4

DoMethod · 0.90
DoMethod · 0.90
UndoMethod · 0.85
UndoMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected