As commands now commit/recalc even in case of failure (as they do not know about exact reason of failure and we're not sure if rollback was succeeded), do not run them for every item added via double-click

This commit is contained in:
DarkPhoenix
2019-04-15 18:44:26 +03:00
parent 4c0f88cdfa
commit 3fa5ac7858
8 changed files with 60 additions and 23 deletions

View File

@@ -19,14 +19,16 @@
# noinspection PyPackageRequirements
import wx
import gui.display as d
import gui.fitCommands as cmd
import gui.globalEvents as GE
from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED
from gui.builtinMarketBrowser.events import ITEM_SELECTED, ItemSelected
from gui.builtinViewColumns.state import State
from gui.contextMenu import ContextMenu
from gui.utils.staticHelpers import DragDropHelper
from service.fit import Fit
import gui.fitCommands as cmd
from service.market import Market
class BoosterViewDrop(wx.DropTarget):
@@ -124,10 +126,13 @@ class BoosterView(d.Display):
event.Skip()
def addItem(self, event):
sFit = Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
item = Market.getInstance().getItem(event.itemID, eager='group')
if item is None or not item.isBooster:
event.Skip()
return
fit = sFit.getFit(fitID)
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
if not fit or fit.isStructure:
event.Skip()

View File

@@ -206,11 +206,13 @@ class DroneView(Display):
event.Skip()
def addItem(self, event):
sFit = Fit.getInstance()
item = Market.getInstance().getItem(event.itemID, eager='group.category')
if item is None or not item.isDrone:
event.Skip()
return
fitID = self.mainFrame.getActiveFit()
fit = sFit.getFit(fitID)
fit = Fit.getInstance().getFit(fitID)
if not fit or fit.isStructure:
event.Skip()
return

View File

@@ -257,8 +257,12 @@ class FighterDisplay(d.Display):
event.Skip()
def addItem(self, event):
fitID = self.mainFrame.getActiveFit()
item = Market.getInstance().getItem(event.itemID, eager='group.category')
if item is None or not item.isFighter:
event.Skip()
return
fitID = self.mainFrame.getActiveFit()
if self.mainFrame.command.Submit(cmd.GuiAddLocalFighterCommand(fitID, event.itemID)):
self.mainFrame.additionsPane.select("Fighters")

View File

@@ -175,10 +175,13 @@ class ImplantDisplay(d.Display):
event.Skip()
def addItem(self, event):
sFit = Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
item = Market.getInstance().getItem(event.itemID, eager='group.category')
if item is None or not item.isImplant:
event.Skip()
return
fit = sFit.getFit(fitID)
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
if not fit or fit.isStructure:
event.Skip()

View File

@@ -357,8 +357,11 @@ class FittingView(d.Display):
itemID = event.itemID
fitID = self.activeFitID
if fitID is not None:
sFit = Fit.getInstance()
if sFit.isAmmo(itemID):
item = Market.getInstance().getItem(event.itemID, eager='group.category')
if item is None or not (item.isModule or item.isSubsystem):
event.Skip()
return
if Fit.getInstance().isAmmo(itemID):
# If we've selected ammo, then apply to the selected module(s)
modules = []
sel = self.GetFirstSelected()

View File

@@ -37,6 +37,7 @@ class GuiCargoToModuleCommand(wx.Command):
result = False
# We're trying to move a charge from cargo to a slot. Use SetCharge command (don't respect move vs copy)
# todo: replace with item.ischarge, broken for now
if sFit.isAmmo(cargo.itemID):
result = self.internalHistory.Submit(CalcChangeModuleChargesCommand(self.fitID, False, {module.modPosition: cargo.itemID}))
else: