(self)
| 20 | self.rebaseMap = rebaseMap |
| 21 | |
| 22 | def Do(self): |
| 23 | sFit = Fit.getInstance() |
| 24 | fit = sFit.getFit(self.fitID) |
| 25 | # Here we assume that item attribs do not change and item state will not change |
| 26 | for mod in fit.modules: |
| 27 | if mod.itemID in self.rebaseMap: |
| 28 | cmd = CalcRebaseItemCommand( |
| 29 | fitID=self.fitID, |
| 30 | containerName='modules', |
| 31 | position=fit.modules.index(mod), |
| 32 | itemID=self.rebaseMap[mod.itemID]) |
| 33 | self.internalHistory.submit(cmd) |
| 34 | if mod.chargeID in self.rebaseMap: |
| 35 | cmd = CalcChangeModuleChargesCommand( |
| 36 | fitID=self.fitID, |
| 37 | projected=False, |
| 38 | chargeMap={fit.modules.index(mod): self.rebaseMap[mod.chargeID]}, |
| 39 | recalc=False) |
| 40 | self.internalHistory.submit(cmd) |
| 41 | for containerName in ('drones', 'fighters', 'implants', 'boosters'): |
| 42 | container = getattr(fit, containerName) |
| 43 | for obj in container: |
| 44 | if obj.itemID in self.rebaseMap: |
| 45 | cmd = CalcRebaseItemCommand( |
| 46 | fitID=self.fitID, |
| 47 | containerName=containerName, |
| 48 | position=container.index(obj), |
| 49 | itemID=self.rebaseMap[obj.itemID]) |
| 50 | self.internalHistory.submit(cmd) |
| 51 | # Need to process cargo separately as we want to merge items when needed, |
| 52 | # e.g. FN iron and CN iron into single stack of CN iron |
| 53 | for cargo in fit.cargo: |
| 54 | if cargo.itemID in self.rebaseMap: |
| 55 | amount = cargo.amount |
| 56 | cmdRemove = CalcRemoveCargoCommand( |
| 57 | fitID=self.fitID, |
| 58 | cargoInfo=CargoInfo(itemID=cargo.itemID, amount=amount)) |
| 59 | cmdAdd = CalcAddCargoCommand( |
| 60 | fitID=self.fitID, |
| 61 | cargoInfo=CargoInfo(itemID=self.rebaseMap[cargo.itemID], amount=amount)) |
| 62 | self.internalHistory.submitBatch(cmdRemove, cmdAdd) |
| 63 | eos.db.flush() |
| 64 | sFit.recalc(fit) |
| 65 | sFit.fill(self.fitID) |
| 66 | eos.db.commit() |
| 67 | wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) |
| 68 | return len(self.internalHistory) > 0 |
| 69 | |
| 70 | def Undo(self): |
| 71 | sFit = Fit.getInstance() |
nothing calls this directly
no test coverage detected