Re-add merge functionality
This commit is contained in:
@@ -22,7 +22,8 @@ from .gui.localDrone.add import GuiAddLocalDroneCommand
|
||||
from .gui.localDrone.changeAmount import GuiChangeLocalDroneAmountCommand
|
||||
from .gui.localDrone.changeMeta import GuiChangeLocalDroneMetaCommand
|
||||
from .gui.localDrone.remove import GuiRemoveLocalDroneCommand
|
||||
from .gui.localDrone.splitStack import GuiSplitLocalDroneStackCommand
|
||||
from .gui.localDrone.stackSplit import GuiSplitLocalDroneStackCommand
|
||||
from .gui.localDrone.stacksMerge import GuiMergeLocalDroneStacksCommand
|
||||
from .gui.localDrone.toggleState import GuiToggleLocalDroneStateCommand
|
||||
from .gui.localFighter.abilityToggleState import GuiToggleLocalFighterAbilityStateCommand
|
||||
from .gui.localFighter.add import GuiAddLocalFighterCommand
|
||||
|
||||
@@ -13,11 +13,12 @@ pyfalog = Logger(__name__)
|
||||
|
||||
class CalcChangeLocalDroneAmountCommand(wx.Command):
|
||||
|
||||
def __init__(self, fitID, position, amount):
|
||||
def __init__(self, fitID, position, amount, commit=True):
|
||||
wx.Command.__init__(self, True, 'Change Drone Amount')
|
||||
self.fitID = fitID
|
||||
self.position = position
|
||||
self.amount = amount
|
||||
self.commit = commit
|
||||
self.savedDroneInfo = None
|
||||
|
||||
def Do(self):
|
||||
@@ -32,7 +33,8 @@ class CalcChangeLocalDroneAmountCommand(wx.Command):
|
||||
difference = self.amount - self.savedDroneInfo.amount
|
||||
drone.amount = self.amount
|
||||
drone.amountActive = max(min(drone.amountActive + difference, drone.amount), 0)
|
||||
eos.db.commit()
|
||||
if self.commit:
|
||||
eos.db.commit()
|
||||
return True
|
||||
|
||||
def Undo(self):
|
||||
@@ -42,6 +44,7 @@ class CalcChangeLocalDroneAmountCommand(wx.Command):
|
||||
drone = fit.drones[self.position]
|
||||
drone.amount = self.savedDroneInfo.amount
|
||||
drone.amountActive = self.savedDroneInfo.amountActive
|
||||
eos.db.commit()
|
||||
if self.commit:
|
||||
eos.db.commit()
|
||||
return True
|
||||
return False
|
||||
|
||||
53
gui/fitCommands/gui/localDrone/stacksMerge.py
Normal file
53
gui/fitCommands/gui/localDrone/stacksMerge.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import wx
|
||||
|
||||
import eos.db
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
from gui.fitCommands.calc.drone.localChangeAmount import CalcChangeLocalDroneAmountCommand
|
||||
from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand
|
||||
from gui.fitCommands.helpers import InternalCommandHistory
|
||||
from service.fit import Fit
|
||||
|
||||
|
||||
class GuiMergeLocalDroneStacksCommand(wx.Command):
|
||||
|
||||
def __init__(self, fitID, srcPosition, dstPosition):
|
||||
wx.Command.__init__(self, True, 'Merge Local Drone Stacks')
|
||||
self.internalHistory = InternalCommandHistory()
|
||||
self.fitID = fitID
|
||||
self.srcPosition = srcPosition
|
||||
self.dstPosition = dstPosition
|
||||
|
||||
def Do(self):
|
||||
if self.srcPosition == self.dstPosition:
|
||||
return False
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(self.fitID)
|
||||
srcDrone = fit.drones[self.srcPosition]
|
||||
dstDrone = fit.drones[self.dstPosition]
|
||||
if srcDrone.itemID != dstDrone.itemID:
|
||||
return False
|
||||
srcAmount = srcDrone.amount
|
||||
commands = []
|
||||
commands.append(CalcChangeLocalDroneAmountCommand(
|
||||
fitID=self.fitID,
|
||||
position=self.dstPosition,
|
||||
amount=dstDrone.amount + srcAmount,
|
||||
commit=False))
|
||||
commands.append(CalcRemoveLocalDroneCommand(
|
||||
fitID=self.fitID,
|
||||
position=self.srcPosition,
|
||||
amount=srcAmount,
|
||||
commit=False))
|
||||
success = self.internalHistory.submitBatch(*commands)
|
||||
eos.db.commit()
|
||||
sFit.recalc(fit)
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
|
||||
return success
|
||||
|
||||
def Undo(self):
|
||||
success = self.internalHistory.undoAll()
|
||||
eos.db.commit()
|
||||
Fit.getInstance().recalc(self.fitID)
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
|
||||
return success
|
||||
Reference in New Issue
Block a user