Allow imports of mutated drone groups via ctrl-v and additions panel context menus
This commit is contained in:
@@ -5,7 +5,7 @@ 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
|
||||
from service.port.eft import parseAdditions, importGetMutationData, lineIter
|
||||
|
||||
_t = wx.GetTranslation
|
||||
|
||||
@@ -41,9 +41,12 @@ class AdditionsImport(ContextMenuUnconditional):
|
||||
|
||||
def activate(self, callingWindow, fullContext, i):
|
||||
text = fromClipboard()
|
||||
items = parseAdditions(text)
|
||||
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) for i, a in items if filterFunc(i)]
|
||||
items = [(i.ID, a, m) for i, a, m in items if filterFunc(i)]
|
||||
if not items:
|
||||
return
|
||||
command = self.viewSpecMap[self.srcContext][2]
|
||||
|
||||
@@ -14,7 +14,7 @@ class GuiImportCargosCommand(wx.Command):
|
||||
self.internalHistory = InternalCommandHistory()
|
||||
self.fitID = fitID
|
||||
self.cargos = {}
|
||||
for itemID, amount in cargos:
|
||||
for itemID, amount, mutation in cargos:
|
||||
if itemID not in self.cargos:
|
||||
self.cargos[itemID] = 0
|
||||
self.cargos[itemID] += amount
|
||||
|
||||
@@ -18,11 +18,19 @@ class GuiImportLocalDronesCommand(wx.Command):
|
||||
|
||||
def Do(self):
|
||||
results = []
|
||||
for itemID, amount in self.drones:
|
||||
cmd = CalcAddLocalDroneCommand(
|
||||
fitID=self.fitID,
|
||||
droneInfo=DroneInfo(itemID=itemID, amount=amount, amountActive=0),
|
||||
forceNewStack=True)
|
||||
for itemID, amount, mutation in self.drones:
|
||||
if mutation:
|
||||
mutaplasmid, attrs = mutation
|
||||
info = DroneInfo(
|
||||
itemID=mutaplasmid.resultingItem.ID,
|
||||
amount=amount,
|
||||
amountActive=0,
|
||||
baseItemID=itemID,
|
||||
mutaplasmidID=mutaplasmid.ID,
|
||||
mutations=attrs)
|
||||
else:
|
||||
info = DroneInfo(itemID=itemID, amount=amount, amountActive=0)
|
||||
cmd = CalcAddLocalDroneCommand(fitID=self.fitID, droneInfo=info, forceNewStack=True)
|
||||
results.append(self.internalHistory.submit(cmd))
|
||||
success = any(results)
|
||||
eos.db.flush()
|
||||
|
||||
@@ -18,7 +18,7 @@ class GuiImportLocalFightersCommand(wx.Command):
|
||||
|
||||
def Do(self):
|
||||
results = []
|
||||
for itemID, amount in self.fighters:
|
||||
for itemID, amount, mutation in self.fighters:
|
||||
cmd = CalcAddLocalFighterCommand(fitID=self.fitID, fighterInfo=FighterInfo(itemID=itemID, amount=amount, state=False))
|
||||
results.append(self.internalHistory.submit(cmd))
|
||||
success = any(results)
|
||||
|
||||
@@ -772,23 +772,23 @@ class MainFrame(wx.Frame):
|
||||
self.command.Submit(cmd.GuiAddLocalModuleCommand(activeFit, baseItem.ID))
|
||||
return
|
||||
if importType == "AdditionsDrones":
|
||||
if self.command.Submit(cmd.GuiImportLocalDronesCommand(activeFit, [(i.ID, a) for i, a in importData[0]])):
|
||||
if self.command.Submit(cmd.GuiImportLocalDronesCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])):
|
||||
self.additionsPane.select("Drones")
|
||||
return
|
||||
if importType == "AdditionsFighters":
|
||||
if self.command.Submit(cmd.GuiImportLocalFightersCommand(activeFit, [(i.ID, a) for i, a in importData[0]])):
|
||||
if self.command.Submit(cmd.GuiImportLocalFightersCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])):
|
||||
self.additionsPane.select("Fighters")
|
||||
return
|
||||
if importType == "AdditionsImplants":
|
||||
if self.command.Submit(cmd.GuiImportImplantsCommand(activeFit, [(i.ID, a) for i, a in importData[0]])):
|
||||
if self.command.Submit(cmd.GuiImportImplantsCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])):
|
||||
self.additionsPane.select("Implants")
|
||||
return
|
||||
if importType == "AdditionsBoosters":
|
||||
if self.command.Submit(cmd.GuiImportBoostersCommand(activeFit, [(i.ID, a) for i, a in importData[0]])):
|
||||
if self.command.Submit(cmd.GuiImportBoostersCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])):
|
||||
self.additionsPane.select("Boosters")
|
||||
return
|
||||
if importType == "AdditionsCargo":
|
||||
if self.command.Submit(cmd.GuiImportCargosCommand(activeFit, [(i.ID, a) for i, a in importData[0]])):
|
||||
if self.command.Submit(cmd.GuiImportCargosCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])):
|
||||
self.additionsPane.select("Cargo")
|
||||
return
|
||||
except (KeyboardInterrupt, SystemExit):
|
||||
|
||||
Reference in New Issue
Block a user