57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
import wx
|
|
|
|
import gui.mainFrame
|
|
from gui import fitCommands as cmd
|
|
from gui.contextMenu import ContextMenuUnconditional
|
|
from gui.utils.clipboard import fromClipboard
|
|
from service.fit import Fit
|
|
from service.port.eft import parseAdditions, importGetMutationData, lineIter
|
|
|
|
_t = wx.GetTranslation
|
|
|
|
|
|
class AdditionsImport(ContextMenuUnconditional):
|
|
visibilitySetting = 'additionsCopyPaste'
|
|
|
|
def __init__(self):
|
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
|
self.viewSpecMap = {
|
|
'droneItemMisc': (_t('Drones'), lambda i: i.isDrone, cmd.GuiImportLocalDronesCommand),
|
|
'fighterItemMisc': (_t('Fighters'), lambda i: i.isFighter, cmd.GuiImportLocalFightersCommand),
|
|
'cargoItemMisc': (_t('Cargo Items'), lambda i: not i.isAbyssal, cmd.GuiImportCargosCommand),
|
|
'implantItemMisc': (_t('Implants'), lambda i: i.isImplant, cmd.GuiImportImplantsCommand),
|
|
'implantItemMiscChar': (_t('Implants'), lambda i: i.isImplant, cmd.GuiImportImplantsCommand),
|
|
'boosterItemMisc': (_t('Boosters'), lambda i: i.isBooster, cmd.GuiImportBoostersCommand)
|
|
}
|
|
|
|
def display(self, callingWindow, srcContext):
|
|
if srcContext not in self.viewSpecMap:
|
|
return False
|
|
fit = Fit.getInstance().getFit(self.mainFrame.getActiveFit())
|
|
if fit is None:
|
|
return False
|
|
if not fromClipboard():
|
|
return False
|
|
|
|
self.srcContext = srcContext
|
|
return True
|
|
|
|
def getText(self, callingWindow, itmContext):
|
|
return _t('Paste {}').format(self.viewSpecMap[self.srcContext][0])
|
|
|
|
def activate(self, callingWindow, fullContext, i):
|
|
text = fromClipboard()
|
|
lines = list(lineIter(text))
|
|
mutaData = importGetMutationData(lines)
|
|
text = '\n'.join(lines)
|
|
items = parseAdditions(text, mutaData=mutaData)
|
|
filterFunc = self.viewSpecMap[self.srcContext][1]
|
|
items = [(i.ID, a, m) for i, a, m in items if filterFunc(i)]
|
|
if not items:
|
|
return
|
|
command = self.viewSpecMap[self.srcContext][2]
|
|
self.mainFrame.command.Submit(command(self.mainFrame.getActiveFit(), items))
|
|
|
|
|
|
AdditionsImport.register()
|