Rework 3 more UI commands

This commit is contained in:
DarkPhoenix
2019-04-15 12:06:07 +03:00
parent 59fb7bcd1b
commit a560597a85
10 changed files with 59 additions and 60 deletions

View File

@@ -61,7 +61,7 @@ class TacticalMode(ContextMenu):
return
fitID = self.mainFrame.getActiveFit()
self.mainFrame.command.Submit(cmd.GuiSetModeCommand(fitID, self.modeIds[event.Id].item.ID))
self.mainFrame.command.Submit(cmd.GuiChangeShipModeCommand(fitID, self.modeIds[event.Id].item.ID))
TacticalMode.register()

View File

@@ -327,7 +327,7 @@ class FitItem(SFItem.SFBrowserItem):
self.editWasShown = 0
fitName = self.tcFitName.GetValue()
if fitName:
self.mainFrame.command.Submit(cmd.GuiFitRenameCommand(self.fitID, fitName))
self.mainFrame.command.Submit(cmd.GuiRenameFitCommand(self.fitID, fitName))
else:
self.tcFitName.SetValue(self.fitName)

View File

@@ -18,11 +18,11 @@ from .localFighter.changeAmount import GuiChangeLocalFighterAmountCommand
from .localFighter.remove import GuiRemoveLocalFighterCommand
from .localFighter.toggleState import GuiToggleLocalFighterStateCommand
from .guiCargoToModule import GuiCargoToModuleCommand
from .guiFitRename import GuiFitRenameCommand
from .fitRename import GuiRenameFitCommand
from .guiMetaSwap import GuiMetaSwapCommand
from .guiModuleToCargo import GuiModuleToCargoCommand
from .guiRebaseItems import GuiRebaseItemsCommand
from .guiSetMode import GuiSetModeCommand
from .itemsRebase import GuiRebaseItemsCommand
from .shipModeChange import GuiChangeShipModeCommand
from .guiSwapCloneModule import GuiModuleSwapOrCloneCommand
from .implant.add import GuiAddImplantCommand
from .implant.changeLocation import GuiChangeImplantLocationCommand

View File

@@ -13,13 +13,13 @@ pyfalog = Logger(__name__)
class CalcChangeShipModeCommand(wx.Command):
def __init__(self, fitID, itemID):
wx.Command.__init__(self, True, 'Set Mode')
wx.Command.__init__(self, True, 'Change Ship Mode')
self.fitID = fitID
self.itemID = itemID
self.savedItemID = None
def Do(self):
pyfalog.debug('Doing changing mode to {} for fit {}'.format(self.itemID, self.fitID))
pyfalog.debug('Doing changing ship mode to {} for fit {}'.format(self.itemID, self.fitID))
fit = Fit.getInstance().getFit(self.fitID)
self.savedItemID = fit.modeID
item = Market.getInstance().getItem(self.itemID)
@@ -29,6 +29,6 @@ class CalcChangeShipModeCommand(wx.Command):
return True
def Undo(self):
pyfalog.debug('Undoing changing mode to {} for fit {}'.format(self.itemID, self.fitID))
pyfalog.debug('Undoing changing ship mode to {} for fit {}'.format(self.itemID, self.fitID))
cmd = CalcChangeShipModeCommand(self.fitID, self.savedItemID)
return cmd.Do()

View File

@@ -0,0 +1,27 @@
import wx
import gui.mainFrame
from gui.builtinShipBrowser.events import FitRenamed
from gui.fitCommands.calcCommands.fitRename import CalcFitRenameCommand
from gui.fitCommands.helpers import InternalCommandHistory
class GuiRenameFitCommand(wx.Command):
def __init__(self, fitID, name):
wx.Command.__init__(self, True, 'Rename Fit')
self.internalHistory = InternalCommandHistory()
self.fitID = fitID
self.name = name
def Do(self):
cmd = CalcFitRenameCommand(fitID=self.fitID, name=self.name)
if self.internalHistory.submit(cmd):
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitRenamed(fitID=self.fitID))
return True
return False
def Undo(self):
success = self.internalHistory.undoAll()
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitRenamed(fitID=self.fitID))
return success

View File

@@ -1,28 +0,0 @@
import wx
import gui.mainFrame
from .calcCommands.fitRename import CalcFitRenameCommand
from service.fit import Fit
from logbook import Logger
from gui.builtinShipBrowser.events import FitRenamed
pyfalog = Logger(__name__)
class GuiFitRenameCommand(wx.Command):
def __init__(self, fitID, newName):
wx.Command.__init__(self, True)
self.fitID = fitID
self.newName = newName
self.internalHistory = wx.CommandProcessor()
def Do(self):
if self.internalHistory.Submit(CalcFitRenameCommand(self.fitID, self.newName)):
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitRenamed(fitID=self.fitID))
return True
return False
def Undo(self):
pyfalog.debug("{} Undo()".format(self))
for _ in self.internalHistory.Commands:
self.internalHistory.Undo()
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitRenamed(fitID=self.fitID))
return True

View File

@@ -3,32 +3,31 @@ import wx
import eos.db
import gui.mainFrame
from gui import globalEvents as GE
from gui.fitCommands.helpers import CargoInfo
from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory
from service.fit import Fit
from .calcCommands.itemRebase import CalcRebaseItemCommand
from .calcCommands.module.changeCharges import CalcChangeModuleChargesCommand
from .calcCommands.cargo.add import CalcAddCargoCommand
from .calcCommands.cargo.remove import CalcRemoveCargoCommand
from gui.fitCommands.helpers import InternalCommandHistory
from .calcCommands.itemRebase import CalcRebaseItemCommand
from .calcCommands.module.changeCharges import CalcChangeModuleChargesCommand
class GuiRebaseItemsCommand(wx.Command):
def __init__(self, fitID, rebaseMap):
wx.Command.__init__(self, True, "Mass Rebase Item")
wx.Command.__init__(self, True, 'Rebase Items')
self.internalHistory = InternalCommandHistory()
self.fitID = fitID
self.rebaseMap = rebaseMap
self.internalHistory = InternalCommandHistory()
def Do(self):
fit = eos.db.getFit(self.fitID)
sFit = Fit.getInstance()
fit = sFit.getFit(self.fitID)
for mod in fit.modules:
if mod.itemID in self.rebaseMap:
self.internalHistory.submit(CalcRebaseItemCommand(fitID=self.fitID, containerName="modules", position=mod.modPosition, itemID=self.rebaseMap[mod.itemID], commit=False))
self.internalHistory.submit(CalcRebaseItemCommand(fitID=self.fitID, containerName='modules', position=mod.modPosition, itemID=self.rebaseMap[mod.itemID], commit=False))
if mod.chargeID in self.rebaseMap:
self.internalHistory.submit(CalcChangeModuleChargesCommand(fitID=self.fitID, projected=False, chargeMap={mod.modPosition: self.rebaseMap[mod.chargeID]}))
for containerName in ("drones", "fighters", "implants", "boosters"):
for containerName in ('drones', 'fighters', 'implants', 'boosters'):
container = getattr(fit, containerName)
for obj in container:
if obj.itemID in self.rebaseMap:
@@ -42,15 +41,15 @@ class GuiRebaseItemsCommand(wx.Command):
self.internalHistory.submit(CalcAddCargoCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.rebaseMap[cargo.itemID], amount=amount)))
if self.internalHistory:
eos.db.commit()
Fit.getInstance().recalc(self.fitID)
sFit.recalc(self.fitID)
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
return True
else:
return False
def Undo(self):
self.internalHistory.undoAll()
success = self.internalHistory.undoAll()
eos.db.commit()
Fit.getInstance().recalc(self.fitID)
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
return True
return success

View File

@@ -3,26 +3,28 @@ from service.fit import Fit
import gui.mainFrame
from gui import globalEvents as GE
from .calcCommands.shipModeChange import CalcChangeShipModeCommand
from gui.fitCommands.helpers import InternalCommandHistory
from gui.fitCommands.calcCommands.shipModeChange import CalcChangeShipModeCommand
class GuiSetModeCommand(wx.Command):
class GuiChangeShipModeCommand(wx.Command):
def __init__(self, fitID, itemID):
wx.Command.__init__(self, True, "Mode Set")
self.internalHistory = wx.CommandProcessor()
wx.Command.__init__(self, True, 'Change Ship Mode')
self.internalHistory = InternalCommandHistory()
self.fitID = fitID
self.itemID = itemID
def Do(self):
if self.internalHistory.Submit(CalcChangeShipModeCommand(self.fitID, self.itemID)):
cmd = CalcChangeShipModeCommand(fitID=self.fitID, itemID=self.itemID)
if self.internalHistory.submit(cmd):
Fit.getInstance().recalc(self.fitID)
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
return True
return False
def Undo(self):
for _ in self.internalHistory.Commands:
self.internalHistory.Undo()
success = self.internalHistory.undoAll()
Fit.getInstance().recalc(self.fitID)
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID))
return True
return success

View File

@@ -656,7 +656,7 @@ class MainFrame(wx.Frame):
del self.waitDialog
del self.disablerAll
rebaseMap = {k.ID: v.ID for k, v in replacementsCheaper.items()}
self.command.Submit(cmd.GuiRebaseItemsCommand(fitID, rebaseMap))
self.command.Submit(cmd.GuiRebaseItemsCommand(fitID=fitID, rebaseMap=rebaseMap))
fitItems = {i for i in Fit.fitItemIter(fit) if i is not fit.ship.item}
self.disablerAll = wx.WindowDisabler()

View File

@@ -18,17 +18,16 @@
# =============================================================================
import math
import queue
import threading
from itertools import chain
import math
import wx
from logbook import Logger
from eos import db
from eos.saveddata.price import PriceStatus
from gui.fitCommands.guiRebaseItems import GuiRebaseItemsCommand
from service.fit import Fit
from service.market import Market
from service.network import TimeoutError