Implant and cargo conversions
This commit is contained in:
@@ -26,6 +26,7 @@ import gui.globalEvents as GE
|
||||
from gui.utils.staticHelpers import DragDropHelper
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
|
||||
class CargoViewDrop(wx.DropTarget):
|
||||
@@ -80,9 +81,7 @@ class CargoView(d.Display):
|
||||
if data[0] == "fitting":
|
||||
self.swapModule(x, y, int(data[1]))
|
||||
elif data[0] == "market":
|
||||
sFit = Fit.getInstance()
|
||||
sFit.addCargo(self.mainFrame.getActiveFit(), int(data[1]), 1)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
||||
self.mainFrame.command.Submit(cmd.GuiAddCargoCommand(self.mainFrame.getActiveFit(), int(data[1])))
|
||||
|
||||
def startDrag(self, event):
|
||||
row = event.GetIndex()
|
||||
|
||||
@@ -28,7 +28,7 @@ import gui.globalEvents as GE
|
||||
from eos.saveddata.fit import ImplantLocation
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
class ImplantView(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
@@ -155,9 +155,7 @@ class ImplantDisplay(d.Display):
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
trigger = sFit.addImplant(fitID, event.itemID)
|
||||
if trigger:
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
if self.mainFrame.command.Submit(cmd.GuiAddImplantCommand(fitID, event.itemID)):
|
||||
self.mainFrame.additionsPane.select("Implants")
|
||||
|
||||
event.Skip()
|
||||
@@ -175,10 +173,7 @@ class ImplantDisplay(d.Display):
|
||||
|
||||
def removeImplant(self, implant):
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
sFit = Fit.getInstance()
|
||||
|
||||
sFit.removeImplant(fitID, self.original.index(implant))
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
self.mainFrame.command.Submit(cmd.GuiRemoveImplantCommand(fitID, self.original.index(implant)))
|
||||
|
||||
def click(self, event):
|
||||
event.Skip()
|
||||
|
||||
@@ -9,7 +9,7 @@ from service.fit import Fit
|
||||
from eos.saveddata.cargo import Cargo as es_Cargo
|
||||
from eos.saveddata.fighter import Fighter as es_Fighter
|
||||
from service.settings import ContextMenuSettings
|
||||
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
class ChangeAmount(ContextMenu):
|
||||
def __init__(self):
|
||||
@@ -45,7 +45,8 @@ class ChangeAmount(ContextMenu):
|
||||
cleanInput = re.sub(r'[^0-9.]', '', dlg.input.GetLineText(0).strip())
|
||||
|
||||
if isinstance(thing, es_Cargo):
|
||||
sFit.addCargo(fitID, thing.item.ID, int(float(cleanInput)), replace=True)
|
||||
self.mainFrame.command.Submit(cmd.GuiAddCargoCommand(fitID, thing.item.ID, int(float(cleanInput)), replace=True))
|
||||
return # no need for post event here
|
||||
elif isinstance(thing, es_Fit):
|
||||
sFit.changeAmount(fitID, thing, int(float(cleanInput)))
|
||||
elif isinstance(thing, es_Fighter):
|
||||
|
||||
@@ -4,7 +4,7 @@ import gui.globalEvents as GE
|
||||
import wx
|
||||
from service.settings import ContextMenuSettings
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
class CargoAmmo(ContextMenu):
|
||||
def __init__(self):
|
||||
@@ -28,13 +28,10 @@ class CargoAmmo(ContextMenu):
|
||||
return "Add {0} to Cargo (x1000)".format(itmContext)
|
||||
|
||||
def activate(self, fullContext, selection, i):
|
||||
sFit = Fit.getInstance()
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
|
||||
typeID = int(selection[0].ID)
|
||||
sFit.addCargo(fitID, typeID, 1000)
|
||||
self.mainFrame.command.Submit(cmd.GuiAddCargoCommand(fitID, typeID, 1000))
|
||||
self.mainFrame.additionsPane.select("Cargo")
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
|
||||
|
||||
CargoAmmo.register()
|
||||
|
||||
@@ -45,7 +45,8 @@ class ItemRemove(ContextMenu):
|
||||
elif srcContext == "fighterItem":
|
||||
sFit.removeFighter(fitID, fit.fighters.index(selection[0]))
|
||||
elif srcContext == "implantItem":
|
||||
sFit.removeImplant(fitID, fit.implants.index(selection[0]))
|
||||
self.mainFrame.command.Submit(cmd.GuiRemoveImplantCommand(fitID, fit.implants.index(selection[0])))
|
||||
return # the command takes care of the PostEvent
|
||||
elif srcContext == "boosterItem":
|
||||
sFit.removeBooster(fitID, fit.boosters.index(selection[0]))
|
||||
elif srcContext == "cargoItem":
|
||||
|
||||
@@ -15,7 +15,7 @@ from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.cargo import Cargo
|
||||
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
class MetaSwap(ContextMenu):
|
||||
def __init__(self):
|
||||
@@ -183,16 +183,18 @@ class MetaSwap(ContextMenu):
|
||||
elif isinstance(selected_item, Implant):
|
||||
for idx, implant_stack in enumerate(fit.implants):
|
||||
if implant_stack is selected_item:
|
||||
sFit.removeImplant(fitID, idx, False)
|
||||
sFit.addImplant(fitID, item.ID, True)
|
||||
break
|
||||
self.mainFrame.command.Submit(cmd.GuiRemoveImplantCommand(fitID, idx))
|
||||
self.mainFrame.command.Submit(cmd.GuiAddImplantCommand(fitID, item.ID))
|
||||
return
|
||||
|
||||
elif isinstance(selected_item, Cargo):
|
||||
for idx, cargo_stack in enumerate(fit.cargo):
|
||||
if cargo_stack is selected_item:
|
||||
# todo: make a command to change varieance of all items, or maybe per item type, which would
|
||||
# utilize the two fitting commands that we need to remove then add?
|
||||
sFit.removeCargo(fitID, idx)
|
||||
sFit.addCargo(fitID, item.ID, cargo_stack.amount, True)
|
||||
break
|
||||
self.mainFrame.command.Submit(cmd.GuiAddCargoCommand(fitID, item.ID, cargo_stack.amount, True))
|
||||
return # don't need the post event
|
||||
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
|
||||
|
||||
@@ -6,4 +6,6 @@ from .moduleSwapOrClone import GuiModuleSwapOrCloneCommand
|
||||
from .guiRemoveCargo import GuiRemoveCargoCommand
|
||||
from .guiAddCargo import GuiAddCargoCommand
|
||||
from .fitAddCargo import FitAddCargoCommand
|
||||
from .fitRemoveCargo import FitRemoveCargoCommand
|
||||
from .fitRemoveCargo import FitRemoveCargoCommand
|
||||
from .guiRemoveImplant import GuiRemoveImplantCommand
|
||||
from .guiAddImplant import GuiAddImplantCommand
|
||||
41
gui/fitCommands/fitAddImplant.py
Normal file
41
gui/fitCommands/fitAddImplant.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
#from .helpers import ModuleInfoCache
|
||||
from eos.saveddata.module import Module, State
|
||||
import eos.db
|
||||
from logbook import Logger
|
||||
pyfalog = Logger(__name__)
|
||||
from eos.saveddata.implant import Implant
|
||||
|
||||
class FitAddImplantCommand(wx.Command):
|
||||
""""
|
||||
from sFit.addImplant
|
||||
"""
|
||||
def __init__(self, fitID, itemID):
|
||||
wx.Command.__init__(self, True, "Cargo add")
|
||||
self.fitID = fitID
|
||||
self.itemID = itemID
|
||||
|
||||
def Do(self):
|
||||
pyfalog.debug("Adding implant to fit ({0}) for item ID: {1}", self.fitID, self.itemID)
|
||||
|
||||
fit = eos.db.getFit(self.fitID)
|
||||
item = eos.db.getItem(self.itemID, eager="attributes")
|
||||
try:
|
||||
implant = Implant(item)
|
||||
except ValueError:
|
||||
pyfalog.warning("Invalid item: {0}", self.itemID)
|
||||
return False
|
||||
|
||||
fit.implants.append(implant)
|
||||
self.new_index = fit.implants.index(implant)
|
||||
return True
|
||||
|
||||
def Undo(self):
|
||||
from .fitRemoveImplant import FitRemoveImplantCommand # Avoid circular import
|
||||
cmd = FitRemoveImplantCommand(self.fitID, self.new_index)
|
||||
cmd.Do()
|
||||
return True
|
||||
38
gui/fitCommands/fitRemoveImplant.py
Normal file
38
gui/fitCommands/fitRemoveImplant.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
#from .helpers import ModuleInfoCache
|
||||
from eos.saveddata.module import Module, State
|
||||
import eos.db
|
||||
from logbook import Logger
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
class FitRemoveImplantCommand(wx.Command):
|
||||
""""
|
||||
Fitting command that sets the amount for an item within the cargo.
|
||||
|
||||
from sFit.removeImplant
|
||||
"""
|
||||
def __init__(self, fitID, position):
|
||||
wx.Command.__init__(self, True, "Implant remove")
|
||||
self.fitID = fitID
|
||||
self.position = position
|
||||
self.old_implant = None
|
||||
|
||||
def Do(self):
|
||||
pyfalog.debug("Removing implant from position ({0}) for fit ID: {1}", self.position, self.fitID)
|
||||
|
||||
fit = eos.db.getFit(self.fitID)
|
||||
implant = fit.implants[self.position]
|
||||
self.old_implant = implant.itemID
|
||||
fit.implants.remove(implant)
|
||||
return True
|
||||
|
||||
def Undo(self):
|
||||
from .fitAddImplant import FitAddImplantCommand # Avoid circular import
|
||||
cmd = FitAddImplantCommand(self.fitID, self.old_implant)
|
||||
cmd.Do()
|
||||
return True
|
||||
@@ -6,14 +6,14 @@ from gui import globalEvents as GE
|
||||
from .fitAddCargo import FitAddCargoCommand
|
||||
|
||||
class GuiAddCargoCommand(wx.Command):
|
||||
def __init__(self, fitID, itemID):
|
||||
def __init__(self, fitID, itemID, amount=1, replace=False):
|
||||
wx.Command.__init__(self, True, "Cargo Add")
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
self.sFit = Fit.getInstance()
|
||||
self.internal_history = wx.CommandProcessor()
|
||||
self.fitID = fitID
|
||||
# can set his up no to not have to set variables on our object
|
||||
self.cmd = FitAddCargoCommand(fitID, itemID)
|
||||
self.cmd = FitAddCargoCommand(fitID, itemID, amount, replace)
|
||||
|
||||
def Do(self):
|
||||
if self.internal_history.Submit(self.cmd):
|
||||
|
||||
29
gui/fitCommands/guiAddImplant.py
Normal file
29
gui/fitCommands/guiAddImplant.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
from .fitAddImplant import FitAddImplantCommand
|
||||
|
||||
class GuiAddImplantCommand(wx.Command):
|
||||
def __init__(self, fitID, itemID):
|
||||
wx.Command.__init__(self, True, "Implant Add")
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
self.sFit = Fit.getInstance()
|
||||
self.internal_history = wx.CommandProcessor()
|
||||
self.fitID = fitID
|
||||
# can set his up no to not have to set variables on our object
|
||||
self.cmd = FitAddImplantCommand(fitID, itemID)
|
||||
|
||||
def Do(self):
|
||||
if self.internal_history.Submit(self.cmd):
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
|
||||
return True
|
||||
return False
|
||||
|
||||
def Undo(self):
|
||||
for x in self.internal_history.Commands:
|
||||
self.internal_history.Undo()
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
|
||||
return True
|
||||
|
||||
29
gui/fitCommands/guiRemoveImplant.py
Normal file
29
gui/fitCommands/guiRemoveImplant.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
from .fitRemoveImplant import FitRemoveImplantCommand
|
||||
|
||||
class GuiRemoveImplantCommand(wx.Command):
|
||||
def __init__(self, fitID, position):
|
||||
wx.Command.__init__(self, True, "")
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
self.sFit = Fit.getInstance()
|
||||
self.internal_history = wx.CommandProcessor()
|
||||
self.fitID = fitID
|
||||
# can set his up no to not have to set variables on our object
|
||||
self.cmd = FitRemoveImplantCommand(fitID, position)
|
||||
|
||||
def Do(self):
|
||||
if self.internal_history.Submit(self.cmd):
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
|
||||
return True
|
||||
return False
|
||||
|
||||
def Undo(self):
|
||||
for x in self.internal_history.Commands:
|
||||
self.internal_history.Undo()
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
|
||||
return True
|
||||
|
||||
@@ -319,6 +319,7 @@ class Fit(object):
|
||||
fit.notes))
|
||||
return fits
|
||||
|
||||
@deprecated
|
||||
def addImplant(self, fitID, itemID, recalc=True):
|
||||
pyfalog.debug("Adding implant to fit ({0}) for item ID: {1}", fitID, itemID)
|
||||
if fitID is None:
|
||||
@@ -337,6 +338,7 @@ class Fit(object):
|
||||
self.recalc(fit)
|
||||
return True
|
||||
|
||||
@deprecated
|
||||
def removeImplant(self, fitID, position, recalc=True):
|
||||
pyfalog.debug("Removing implant from position ({0}) for fit ID: {1}", position, fitID)
|
||||
if fitID is None:
|
||||
|
||||
Reference in New Issue
Block a user