| 9 | |
| 10 | |
| 11 | class CalcRemoveCargoCommand(wx.Command): |
| 12 | |
| 13 | def __init__(self, fitID, cargoInfo): |
| 14 | wx.Command.__init__(self, True, 'Remove Cargo') |
| 15 | self.fitID = fitID |
| 16 | self.cargoInfo = cargoInfo |
| 17 | self.savedRemovedAmount = None |
| 18 | |
| 19 | def Do(self): |
| 20 | pyfalog.debug('Doing removal of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) |
| 21 | fit = Fit.getInstance().getFit(self.fitID) |
| 22 | cargo = next((x for x in fit.cargo if x.itemID == self.cargoInfo.itemID), None) |
| 23 | if cargo is None: |
| 24 | return False |
| 25 | self.savedRemovedAmount = min(cargo.amount, self.cargoInfo.amount) |
| 26 | cargo.amount -= self.savedRemovedAmount |
| 27 | if cargo.amount <= 0: |
| 28 | fit.cargo.remove(cargo) |
| 29 | return True |
| 30 | |
| 31 | def Undo(self): |
| 32 | pyfalog.debug('Undoing removal of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) |
| 33 | from .add import CalcAddCargoCommand |
| 34 | cmd = CalcAddCargoCommand( |
| 35 | fitID=self.fitID, |
| 36 | cargoInfo=CargoInfo(itemID=self.cargoInfo.itemID, amount=self.savedRemovedAmount)) |
| 37 | return cmd.Do() |