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

Class CalcChangeModuleChargesCommand

gui/fitCommands/calc/module/changeCharges.py:12–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10
11
12class CalcChangeModuleChargesCommand(wx.Command):
13
14 def __init__(self, fitID, projected, chargeMap, ignoreRestrictions=False, recalc=True):
15 wx.Command.__init__(self, True, 'Change Module Charges')
16 self.fitID = fitID
17 self.projected = projected
18 self.chargeMap = chargeMap
19 self.ignoreRestriction = ignoreRestrictions
20 self.recalc = recalc
21 self.savedChargeMap = None
22 self.savedStateCheckChanges = None
23
24 def Do(self):
25 pyfalog.debug('Doing change of module charges according to map {} on fit {}'.format(self.chargeMap, self.fitID))
26 sFit = Fit.getInstance()
27 fit = sFit.getFit(self.fitID)
28 container = fit.modules if not self.projected else fit.projectedModules
29 changes = False
30 self.savedChargeMap = {}
31 sMkt = Market.getInstance()
32 for position, chargeItemID in self.chargeMap.items():
33 mod = container[position]
34 if mod.isEmpty:
35 continue
36 if mod.chargeID is None and chargeItemID is None:
37 continue
38 if mod.chargeID == chargeItemID:
39 continue
40 chargeItem = sMkt.getItem(chargeItemID) if chargeItemID is not None else None
41 if chargeItem is not None and not chargeItem.isCharge:
42 continue
43 if not self.ignoreRestriction and not mod.isValidCharge(chargeItem):
44 pyfalog.warning('Invalid charge {} for {}'.format(chargeItem, mod))
45 continue
46 pyfalog.debug('Setting charge {} for {} on fit {}'.format(chargeItem, mod, self.fitID))
47 self.savedChargeMap[position] = mod.chargeID
48 changes = True
49 mod.charge = chargeItem
50 if not changes:
51 return False
52 if self.recalc:
53 sFit.recalc(fit)
54 self.savedStateCheckChanges = sFit.checkStates(fit, None)
55 return True
56
57 def Undo(self):
58 pyfalog.debug('Undoing change of module charges according to map {} on fit {}'.format(self.chargeMap, self.fitID))
59 cmd = CalcChangeModuleChargesCommand(
60 fitID=self.fitID,
61 projected=self.projected,
62 chargeMap=self.savedChargeMap,
63 ignoreRestrictions=True,
64 recalc=False)
65 if not cmd.Do():
66 return False
67 restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges)
68 return True
69

Callers 6

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

Calls

no outgoing calls

Tested by

no test coverage detected