Support actual item pasting functionality
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
|
from gui import fitCommands as cmd
|
||||||
from gui.contextMenu import ContextMenuUnconditional
|
from gui.contextMenu import ContextMenuUnconditional
|
||||||
from gui.utils.clipboard import fromClipboard
|
from gui.utils.clipboard import fromClipboard
|
||||||
from service.fit import Fit
|
from service.fit import Fit
|
||||||
@@ -7,12 +8,12 @@ from service.settings import ContextMenuSettings
|
|||||||
|
|
||||||
|
|
||||||
viewSpecMap = {
|
viewSpecMap = {
|
||||||
'droneItemMisc': ('Drones', None),
|
'droneItemMisc': ('Drones', lambda i: i.isDrone, cmd.GuiImportLocalDronesCommand),
|
||||||
'fighterItemMisc': ('Fighters', None),
|
'fighterItemMisc': ('Fighters', lambda i: i.isFighter, cmd.GuiImportLocalFightersCommand),
|
||||||
'cargoItemMisc': ('Cargo Items', None),
|
'cargoItemMisc': ('Cargo Items', lambda i: not i.isAbyssal, cmd.GuiImportCargosCommand),
|
||||||
'implantItemMisc': ('Implants', None),
|
'implantItemMisc': ('Implants', lambda i: i.isImplant, cmd.GuiImportImplantsCommand),
|
||||||
'implantItemMiscChar': ('Implants', None),
|
'implantItemMiscChar': ('Implants', lambda i: i.isImplant, cmd.GuiImportImplantsCommand),
|
||||||
'boosterItemMisc': ('Boosters', None)}
|
'boosterItemMisc': ('Boosters', lambda i: i.isBooster, cmd.GuiImportBoostersCommand)}
|
||||||
|
|
||||||
|
|
||||||
class AdditionsImport(ContextMenuUnconditional):
|
class AdditionsImport(ContextMenuUnconditional):
|
||||||
@@ -40,6 +41,12 @@ class AdditionsImport(ContextMenuUnconditional):
|
|||||||
def activate(self, callingWindow, fullContext, i):
|
def activate(self, callingWindow, fullContext, i):
|
||||||
text = fromClipboard()
|
text = fromClipboard()
|
||||||
items = parseAdditions(text)
|
items = parseAdditions(text)
|
||||||
|
filterFunc = viewSpecMap[self.srcContext][1]
|
||||||
|
items = [(i.ID, a) for i, a in items if filterFunc(i)]
|
||||||
|
if not items:
|
||||||
|
return
|
||||||
|
command = viewSpecMap[self.srcContext][2]
|
||||||
|
self.mainFrame.command.Submit(command(self.mainFrame.getActiveFit(), items))
|
||||||
|
|
||||||
|
|
||||||
AdditionsImport.register()
|
AdditionsImport.register()
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
from .gui.booster.add import GuiAddBoosterCommand
|
from .gui.booster.add import GuiAddBoosterCommand
|
||||||
from .gui.booster.changeMeta import GuiChangeBoosterMetaCommand
|
from .gui.booster.changeMeta import GuiChangeBoosterMetaCommand
|
||||||
|
from .gui.booster.imprt import GuiImportBoostersCommand
|
||||||
from .gui.booster.remove import GuiRemoveBoostersCommand
|
from .gui.booster.remove import GuiRemoveBoostersCommand
|
||||||
from .gui.booster.sideEffectToggleState import GuiToggleBoosterSideEffectStateCommand
|
from .gui.booster.sideEffectToggleState import GuiToggleBoosterSideEffectStateCommand
|
||||||
from .gui.booster.toggleStates import GuiToggleBoosterStatesCommand
|
from .gui.booster.toggleStates import GuiToggleBoosterStatesCommand
|
||||||
from .gui.cargo.add import GuiAddCargoCommand
|
from .gui.cargo.add import GuiAddCargoCommand
|
||||||
from .gui.cargo.changeAmount import GuiChangeCargoAmountCommand
|
from .gui.cargo.changeAmount import GuiChangeCargoAmountCommand
|
||||||
from .gui.cargo.changeMetas import GuiChangeCargoMetasCommand
|
from .gui.cargo.changeMetas import GuiChangeCargoMetasCommand
|
||||||
|
from .gui.cargo.imprt import GuiImportCargosCommand
|
||||||
from .gui.cargo.remove import GuiRemoveCargosCommand
|
from .gui.cargo.remove import GuiRemoveCargosCommand
|
||||||
from .gui.commandFit.add import GuiAddCommandFitsCommand
|
from .gui.commandFit.add import GuiAddCommandFitsCommand
|
||||||
from .gui.commandFit.remove import GuiRemoveCommandFitsCommand
|
from .gui.commandFit.remove import GuiRemoveCommandFitsCommand
|
||||||
@@ -16,6 +18,7 @@ from .gui.fitSystemSecurity import GuiChangeFitSystemSecurityCommand
|
|||||||
from .gui.implant.add import GuiAddImplantCommand
|
from .gui.implant.add import GuiAddImplantCommand
|
||||||
from .gui.implant.changeLocation import GuiChangeImplantLocationCommand
|
from .gui.implant.changeLocation import GuiChangeImplantLocationCommand
|
||||||
from .gui.implant.changeMeta import GuiChangeImplantMetaCommand
|
from .gui.implant.changeMeta import GuiChangeImplantMetaCommand
|
||||||
|
from .gui.implant.imprt import GuiImportImplantsCommand
|
||||||
from .gui.implant.remove import GuiRemoveImplantsCommand
|
from .gui.implant.remove import GuiRemoveImplantsCommand
|
||||||
from .gui.implant.setAdd import GuiAddImplantSetCommand
|
from .gui.implant.setAdd import GuiAddImplantSetCommand
|
||||||
from .gui.implant.toggleStates import GuiToggleImplantStatesCommand
|
from .gui.implant.toggleStates import GuiToggleImplantStatesCommand
|
||||||
@@ -24,6 +27,7 @@ from .gui.localDrone.add import GuiAddLocalDroneCommand
|
|||||||
from .gui.localDrone.changeAmount import GuiChangeLocalDroneAmountCommand
|
from .gui.localDrone.changeAmount import GuiChangeLocalDroneAmountCommand
|
||||||
from .gui.localDrone.changeMetas import GuiChangeLocalDroneMetasCommand
|
from .gui.localDrone.changeMetas import GuiChangeLocalDroneMetasCommand
|
||||||
from .gui.localDrone.clone import GuiCloneLocalDroneCommand
|
from .gui.localDrone.clone import GuiCloneLocalDroneCommand
|
||||||
|
from .gui.localDrone.imprt import GuiImportLocalDronesCommand
|
||||||
from .gui.localDrone.remove import GuiRemoveLocalDronesCommand
|
from .gui.localDrone.remove import GuiRemoveLocalDronesCommand
|
||||||
from .gui.localDrone.stackSplit import GuiSplitLocalDroneStackCommand
|
from .gui.localDrone.stackSplit import GuiSplitLocalDroneStackCommand
|
||||||
from .gui.localDrone.stacksMerge import GuiMergeLocalDroneStacksCommand
|
from .gui.localDrone.stacksMerge import GuiMergeLocalDroneStacksCommand
|
||||||
@@ -32,6 +36,7 @@ from .gui.localFighter.abilityToggleState import GuiToggleLocalFighterAbilitySta
|
|||||||
from .gui.localFighter.add import GuiAddLocalFighterCommand
|
from .gui.localFighter.add import GuiAddLocalFighterCommand
|
||||||
from .gui.localFighter.changeAmount import GuiChangeLocalFighterAmountCommand
|
from .gui.localFighter.changeAmount import GuiChangeLocalFighterAmountCommand
|
||||||
from .gui.localFighter.changeMetas import GuiChangeLocalFighterMetasCommand
|
from .gui.localFighter.changeMetas import GuiChangeLocalFighterMetasCommand
|
||||||
|
from .gui.localFighter.imprt import GuiImportLocalFightersCommand
|
||||||
from .gui.localFighter.remove import GuiRemoveLocalFightersCommand
|
from .gui.localFighter.remove import GuiRemoveLocalFightersCommand
|
||||||
from .gui.localFighter.toggleStates import GuiToggleLocalFighterStatesCommand
|
from .gui.localFighter.toggleStates import GuiToggleLocalFighterStatesCommand
|
||||||
from .gui.localModule.add import GuiAddLocalModuleCommand
|
from .gui.localModule.add import GuiAddLocalModuleCommand
|
||||||
|
|||||||
42
gui/fitCommands/gui/booster/imprt.py
Normal file
42
gui/fitCommands/gui/booster/imprt.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import wx
|
||||||
|
|
||||||
|
import eos.db
|
||||||
|
import gui.mainFrame
|
||||||
|
from gui import globalEvents as GE
|
||||||
|
from gui.fitCommands.calc.booster.add import CalcAddBoosterCommand
|
||||||
|
from gui.fitCommands.helpers import BoosterInfo, InternalCommandHistory
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
|
class GuiImportBoostersCommand(wx.Command):
|
||||||
|
|
||||||
|
def __init__(self, fitID, boosters):
|
||||||
|
wx.Command.__init__(self, True, 'Import Boosters')
|
||||||
|
self.internalHistory = InternalCommandHistory()
|
||||||
|
self.fitID = fitID
|
||||||
|
self.boosters = set(b[0] for b in boosters)
|
||||||
|
|
||||||
|
def Do(self):
|
||||||
|
if not self.boosters:
|
||||||
|
return False
|
||||||
|
commands = []
|
||||||
|
for itemID in self.boosters:
|
||||||
|
commands.append(CalcAddBoosterCommand(fitID=self.fitID, boosterInfo=BoosterInfo(itemID=itemID)))
|
||||||
|
success = self.internalHistory.submitBatch(*commands)
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
|
|
||||||
|
def Undo(self):
|
||||||
|
success = self.internalHistory.undoAll()
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
37
gui/fitCommands/gui/cargo/imprt.py
Normal file
37
gui/fitCommands/gui/cargo/imprt.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import wx
|
||||||
|
|
||||||
|
import eos.db
|
||||||
|
import gui.mainFrame
|
||||||
|
from gui import globalEvents as GE
|
||||||
|
from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand
|
||||||
|
from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory
|
||||||
|
|
||||||
|
|
||||||
|
class GuiImportCargosCommand(wx.Command):
|
||||||
|
|
||||||
|
def __init__(self, fitID, cargos):
|
||||||
|
wx.Command.__init__(self, True, 'Import Cargos')
|
||||||
|
self.internalHistory = InternalCommandHistory()
|
||||||
|
self.fitID = fitID
|
||||||
|
self.cargos = {}
|
||||||
|
for itemID, amount in cargos:
|
||||||
|
if itemID not in self.cargos:
|
||||||
|
self.cargos[itemID] = 0
|
||||||
|
self.cargos[itemID] += amount
|
||||||
|
|
||||||
|
def Do(self):
|
||||||
|
if not self.cargos:
|
||||||
|
return False
|
||||||
|
commands = []
|
||||||
|
for itemID, amount in self.cargos.items():
|
||||||
|
commands.append(CalcAddCargoCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=amount)))
|
||||||
|
success = self.internalHistory.submitBatch(*commands)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
|
|
||||||
|
def Undo(self):
|
||||||
|
success = self.internalHistory.undoAll()
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
54
gui/fitCommands/gui/implant/imprt.py
Normal file
54
gui/fitCommands/gui/implant/imprt.py
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import wx
|
||||||
|
|
||||||
|
import eos.db
|
||||||
|
import gui.mainFrame
|
||||||
|
from eos.const import ImplantLocation
|
||||||
|
from gui import globalEvents as GE
|
||||||
|
from gui.fitCommands.calc.implant.add import CalcAddImplantCommand
|
||||||
|
from gui.fitCommands.calc.implant.changeLocation import CalcChangeImplantLocationCommand
|
||||||
|
from gui.fitCommands.helpers import ImplantInfo, InternalCommandHistory
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
|
class GuiImportImplantsCommand(wx.Command):
|
||||||
|
|
||||||
|
def __init__(self, fitID, implants):
|
||||||
|
wx.Command.__init__(self, True, 'Import Implants')
|
||||||
|
self.internalHistory = InternalCommandHistory()
|
||||||
|
self.fitID = fitID
|
||||||
|
self.implants = set(i[0] for i in implants)
|
||||||
|
|
||||||
|
def Do(self):
|
||||||
|
if not self.implants:
|
||||||
|
return False
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
fit = sFit.getFit(self.fitID)
|
||||||
|
if fit.implantSource != ImplantLocation.FIT:
|
||||||
|
cmd = CalcChangeImplantLocationCommand(fitID=self.fitID, source=ImplantLocation.FIT)
|
||||||
|
successSource = self.internalHistory.submit(cmd)
|
||||||
|
else:
|
||||||
|
successSource = False
|
||||||
|
commands = []
|
||||||
|
for itemID in self.implants:
|
||||||
|
commands.append(CalcAddImplantCommand(fitID=self.fitID, implantInfo=ImplantInfo(itemID=itemID)))
|
||||||
|
successImplants = self.internalHistory.submitBatch(*commands)
|
||||||
|
# Acceptable behavior when we already have passed implant and just switch source, or
|
||||||
|
# when we have source and add implant, but not if we do not change anything
|
||||||
|
success = successSource or successImplants
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
|
|
||||||
|
def Undo(self):
|
||||||
|
success = self.internalHistory.undoAll()
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
45
gui/fitCommands/gui/localDrone/imprt.py
Normal file
45
gui/fitCommands/gui/localDrone/imprt.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import wx
|
||||||
|
|
||||||
|
import eos.db
|
||||||
|
import gui.mainFrame
|
||||||
|
from gui import globalEvents as GE
|
||||||
|
from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand
|
||||||
|
from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
|
class GuiImportLocalDronesCommand(wx.Command):
|
||||||
|
|
||||||
|
def __init__(self, fitID, drones):
|
||||||
|
wx.Command.__init__(self, True, 'Import Local Drones')
|
||||||
|
self.internalHistory = InternalCommandHistory()
|
||||||
|
self.fitID = fitID
|
||||||
|
self.drones = drones
|
||||||
|
|
||||||
|
def Do(self):
|
||||||
|
if not self.drones:
|
||||||
|
return False
|
||||||
|
commands = []
|
||||||
|
for itemID, amount in self.drones:
|
||||||
|
commands.append(CalcAddLocalDroneCommand(
|
||||||
|
fitID=self.fitID,
|
||||||
|
droneInfo=DroneInfo(itemID=itemID, amount=amount, amountActive=0),
|
||||||
|
forceNewStack=True))
|
||||||
|
success = self.internalHistory.submitBatch(*commands)
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
|
|
||||||
|
def Undo(self):
|
||||||
|
success = self.internalHistory.undoAll()
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
42
gui/fitCommands/gui/localFighter/imprt.py
Normal file
42
gui/fitCommands/gui/localFighter/imprt.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import wx
|
||||||
|
|
||||||
|
import eos.db
|
||||||
|
import gui.mainFrame
|
||||||
|
from gui import globalEvents as GE
|
||||||
|
from gui.fitCommands.calc.fighter.localAdd import CalcAddLocalFighterCommand
|
||||||
|
from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
|
class GuiImportLocalFightersCommand(wx.Command):
|
||||||
|
|
||||||
|
def __init__(self, fitID, fighters):
|
||||||
|
wx.Command.__init__(self, True, 'Import Local Fighters')
|
||||||
|
self.internalHistory = InternalCommandHistory()
|
||||||
|
self.fitID = fitID
|
||||||
|
self.fighters = fighters
|
||||||
|
|
||||||
|
def Do(self):
|
||||||
|
if not self.fighters:
|
||||||
|
return False
|
||||||
|
commands = []
|
||||||
|
for itemID, amount in self.fighters:
|
||||||
|
commands.append(CalcAddLocalFighterCommand(fitID=self.fitID, fighterInfo=FighterInfo(itemID=itemID, amount=amount, state=False)))
|
||||||
|
success = self.internalHistory.submitBatch(*commands)
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
|
|
||||||
|
def Undo(self):
|
||||||
|
success = self.internalHistory.undoAll()
|
||||||
|
eos.db.flush()
|
||||||
|
sFit = Fit.getInstance()
|
||||||
|
sFit.recalc(self.fitID)
|
||||||
|
sFit.fill(self.fitID)
|
||||||
|
eos.db.commit()
|
||||||
|
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,)))
|
||||||
|
return success
|
||||||
Reference in New Issue
Block a user