53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
import wx
|
|
|
|
import gui.fitCommands as cmd
|
|
import gui.mainFrame
|
|
from gui.contextMenu import ContextMenuSingle
|
|
from gui.fitCommands.helpers import droneStackLimit
|
|
from service.fit import Fit
|
|
|
|
_t = wx.GetTranslation
|
|
|
|
|
|
class DroneAddStack(ContextMenuSingle):
|
|
|
|
def __init__(self):
|
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
|
|
|
def display(self, callingWindow, srcContext, mainItem):
|
|
if srcContext not in ('marketItemGroup', 'marketItemMisc'):
|
|
return False
|
|
|
|
if self.mainFrame.getActiveFit() is None:
|
|
return False
|
|
|
|
if mainItem is None:
|
|
return False
|
|
|
|
if mainItem.category.name != 'Drone':
|
|
return False
|
|
|
|
fitID = self.mainFrame.getActiveFit()
|
|
fit = Fit.getInstance().getFit(fitID)
|
|
amount = droneStackLimit(fit, mainItem)
|
|
if amount < 1:
|
|
return False
|
|
|
|
self.amount = amount
|
|
return True
|
|
|
|
def getText(self, callingWindow, itmContext, mainItem):
|
|
return _t('Add {} to Drone Bay{}').format(
|
|
itmContext, '' if self.amount == 1 else ' (x{})'.format(self.amount))
|
|
|
|
def activate(self, callingWindow, fullContext, mainItem, i):
|
|
command = cmd.GuiAddLocalDroneCommand(
|
|
fitID=self.mainFrame.getActiveFit(),
|
|
itemID=int(mainItem.ID),
|
|
amount=self.amount)
|
|
if self.mainFrame.command.Submit(command):
|
|
self.mainFrame.additionsPane.select('Drones', focus=False)
|
|
|
|
|
|
DroneAddStack.register()
|