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:
@@ -142,7 +142,7 @@ class Effect(EqBase):
|
||||
"""
|
||||
if not self.__generated:
|
||||
self.__generateHandler()
|
||||
|
||||
|
||||
return self.__effectDef is not None
|
||||
|
||||
def isType(self, type):
|
||||
@@ -151,7 +151,7 @@ class Effect(EqBase):
|
||||
"""
|
||||
if not self.__generated:
|
||||
self.__generateHandler()
|
||||
|
||||
|
||||
return self.type is not None and type in self.type
|
||||
|
||||
def __generateHandler(self):
|
||||
@@ -477,9 +477,33 @@ class Item(EqBase):
|
||||
def getAbyssalTypes(cls):
|
||||
cls.ABYSSAL_TYPES = eos.db.getAbyssalTypes()
|
||||
|
||||
@property
|
||||
def isModule(self):
|
||||
return self.category.name == 'Module'
|
||||
|
||||
@property
|
||||
def isSubsystem(self):
|
||||
return self.category.name == 'Subsystem'
|
||||
|
||||
@property
|
||||
def isCharge(self):
|
||||
return self.category.name == "Charge"
|
||||
return self.category.name == 'Charge'
|
||||
|
||||
@property
|
||||
def isDrone(self):
|
||||
return self.category.name == 'Drone'
|
||||
|
||||
@property
|
||||
def isFighter(self):
|
||||
return self.category.name == 'Fighter'
|
||||
|
||||
@property
|
||||
def isImplant(self):
|
||||
return self.category.name == 'Implant' and self.group.name != 'Booster'
|
||||
|
||||
@property
|
||||
def isBooster(self):
|
||||
return self.group.name == 'Booster' and self.category.name == 'Implant'
|
||||
|
||||
def __repr__(self):
|
||||
return "Item(ID={}, name={}) at {}".format(
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -401,11 +401,6 @@ class Fit(FitDeprecated):
|
||||
fit.character = self.character = eos.db.getCharacter(charID)
|
||||
self.recalc(fit)
|
||||
|
||||
@staticmethod
|
||||
def isAmmo(itemID):
|
||||
# todo: get rid of this form the service, use directly from item
|
||||
return eos.db.getItem(itemID).isCharge
|
||||
|
||||
@staticmethod
|
||||
def getTargetResists(fitID):
|
||||
pyfalog.debug("Get target resists for fit ID: {0}", fitID)
|
||||
|
||||
Reference in New Issue
Block a user