Files
pyfa/gui/fitCommands/calc/fitRemoveProjectedDrone.py

68 lines
2.1 KiB
Python

import wx
from logbook import Logger
import eos.db
from eos.saveddata.drone import Drone
from service.fit import Fit
from service.market import Market
pyfalog = Logger(__name__)
class FitRemoveProjectedDroneCommand(wx.Command):
""""
from sFit.project
"""
def __init__(self, fitID, position, amount=1):
wx.Command.__init__(self, True)
self.fitID = fitID
self.position = position
self.amountToRemove = amount
self.savedItemID = None
self.savedAmount = None
self.savedAmountActive = None
self.removedStack = None
def Do(self):
pyfalog.debug("Removing ({0}) onto: {1}".format(self.fitID, self.position))
fit = Fit.getInstance().getFit(self.fitID)
drone = fit.projectedDrones[self.position]
self.savedItemID = drone.itemID
self.savedAmount = drone.amount
self.savedAmountActive = drone.amountActive
drone.amount -= self.amountToRemove
if drone.amountActive > 0:
drone.amountActive -= self.amountToRemove
if drone.amount == 0:
del fit.projectedDrones[self.position]
self.removedStack = True
else:
self.removedStack = False
eos.db.commit()
return True
def Undo(self):
fit = Fit.getInstance().getFit(self.fitID)
if self.removedStack:
droneItem = Market.getInstance().getItem(self.savedItemID, eager=("attributes", "group.category"))
try:
drone = Drone(droneItem)
except ValueError:
pyfalog.warning("Invalid drone: {}", droneItem)
return False
if not drone.fits(fit):
return False
drone.amount = self.savedAmount
drone.amountActive = self.savedAmountActive
fit.projectedDrones.insert(self.position, drone)
else:
drone = fit.projectedDrones[self.position]
drone.amount = self.savedAmount
drone.amountActive = self.savedAmountActive
eos.db.commit()
return True