Files
pyfa/gui/fitCommands/guiToggleProjected.py
2019-04-10 15:44:03 +03:00

54 lines
2.3 KiB
Python

import wx
import gui.mainFrame
from eos.saveddata.drone import Drone as DroneType
from eos.saveddata.fighter import Fighter as FighterType
from eos.saveddata.fit import Fit as FitType
from eos.saveddata.module import Module as ModuleType
from gui import globalEvents as GE
from service.fit import Fit
from .calc.fitToggleProjectedDrone import FitToggleProjectedDroneCommand
from .calc.fitToggleProjectedFighter import FitToggleProjectedFighterCommand
from .calc.fitToggleProjectedFit import FitToggleProjectedFitCommand
from .calc.fitToggleProjectedModule import FitToggleProjectedModuleCommand
class GuiToggleProjectedCommand(wx.Command):
def __init__(self, fitID, thing, click):
wx.Command.__init__(self, True, "Toggle Projected Item")
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.internal_history = wx.CommandProcessor()
self.fitID = fitID
self.thing = thing
self.click = click
def Do(self):
fit = Fit.getInstance().getFit(self.fitID)
if isinstance(self.thing, FitType):
success = self.internal_history.Submit(FitToggleProjectedFitCommand(self.fitID, self.thing.ID))
elif isinstance(self.thing, ModuleType):
position = fit.projectedModules.index(self.thing)
success = self.internal_history.Submit(FitToggleProjectedModuleCommand(self.fitID, position, self.click))
elif isinstance(self.thing, DroneType):
position = fit.projectedDrones.index(self.thing)
success = self.internal_history.Submit(FitToggleProjectedDroneCommand(self.fitID, position))
elif isinstance(self.thing, FighterType):
position = fit.projectedFighters.index(self.thing)
success = self.internal_history.Submit(FitToggleProjectedFighterCommand(self.fitID, position))
else:
success = False
if not success:
return False
Fit.getInstance().recalc(self.fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
return True
def Undo(self):
for _ in self.internal_history.Commands:
self.internal_history.Undo()
Fit.getInstance().recalc(self.fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
return True