Make fighter pane more reliable and change few already checked panels as well

This commit is contained in:
DarkPhoenix
2019-04-20 01:51:55 +03:00
parent e3f21cf700
commit 62e8da6ff2
7 changed files with 116 additions and 34 deletions

View File

@@ -90,7 +90,11 @@ class BoosterView(d.Display):
if keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE):
row = self.GetFirstSelected()
if row != -1:
self.removeBooster(self.boosters[self.GetItemData(row)])
try:
booster = self.boosters[self.GetItemData(row)]
except IndexError:
return
self.removeBooster(booster)
event.Skip()
@@ -148,7 +152,11 @@ class BoosterView(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
self.removeBooster(self.boosters[self.GetItemData(row)])
try:
booster = self.boosters[self.GetItemData(row)]
except IndexError:
return
self.removeBooster(booster)
def removeBooster(self, booster):
fitID = self.mainFrame.getActiveFit()
@@ -164,7 +172,10 @@ class BoosterView(d.Display):
col = self.getColumn(event.Position)
if col == self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
booster = self.boosters[self.GetItemData(row)]
try:
booster = self.boosters[self.GetItemData(row)]
except IndexError:
return
if booster in self.original:
position = self.original.index(booster)
self.mainFrame.command.Submit(cmd.GuiToggleBoosterStateCommand(
@@ -174,7 +185,10 @@ class BoosterView(d.Display):
def spawnMenu(self, event):
sel = self.GetFirstSelected()
if sel != -1:
booster = self.boosters[sel]
try:
booster = self.boosters[sel]
except IndexError:
return None
srcContext = "boosterItem"
itemContext = "Booster"
menu = ContextMenu.getMenu((booster,), (srcContext, itemContext))

View File

@@ -88,7 +88,10 @@ class CargoView(d.Display):
if row != -1:
data = wx.TextDataObject()
dataStr = "cargo:{}".format(self.cargo[row].itemID)
try:
dataStr = "cargo:{}".format(self.cargo[row].itemID)
except IndexError:
return
data.SetText(dataStr)
dropSource = wx.DropSource(self)
@@ -102,7 +105,10 @@ class CargoView(d.Display):
row = self.GetFirstSelected()
if row != -1:
fitID = self.mainFrame.getActiveFit()
cargo = self.cargo[self.GetItemData(row)]
try:
cargo = self.cargo[self.GetItemData(row)]
except IndexError:
return
self.mainFrame.command.Submit(cmd.GuiRemoveCargoCommand(fitID=fitID, itemID=cargo.itemID))
event.Skip()
@@ -112,10 +118,18 @@ class CargoView(d.Display):
fit = sFit.getFit(self.mainFrame.getActiveFit())
dstRow, _ = self.HitTest((x, y))
if dstRow > -1:
try:
dstCargoItemID = getattr(self.cargo[dstRow], 'itemID', None)
except IndexError:
dstCargoItemID = None
else:
dstCargoItemID = None
self.mainFrame.command.Submit(cmd.GuiLocalModuleToCargoCommand(
fitID=self.mainFrame.getActiveFit(),
modPosition=fit.modules[modIdx].modPosition,
cargoItemID=self.cargo[dstRow].itemID if dstRow > -1 else None,
cargoItemID=dstCargoItemID,
copy=wx.GetMouseState().cmdDown))
def fitChanged(self, event):
@@ -156,13 +170,19 @@ class CargoView(d.Display):
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
cargo = self.cargo[self.GetItemData(row)]
try:
cargo = self.cargo[self.GetItemData(row)]
except IndexError:
return
self.mainFrame.command.Submit(cmd.GuiRemoveCargoCommand(fitID=fitID, itemID=cargo.itemID))
def spawnMenu(self, event):
sel = self.GetFirstSelected()
if sel != -1:
cargo = self.cargo[sel]
try:
cargo = self.cargo[sel]
except IndexError:
return
sMkt = Market.getInstance()
sourceContext = "cargoItem"
itemContext = sMkt.getCategoryByItem(cargo.item).name

View File

@@ -169,13 +169,13 @@ class CommandView(d.Display):
def get(self, row):
if row == -1:
return None
numFits = len(self.fits)
if numFits == 0:
return None
return self.fits[row]
try:
return self.fits[row]
except IndexError:
return None
def click(self, event):
event.Skip()

View File

@@ -102,7 +102,10 @@ class DroneView(Display):
self.hoveredRow = row
self.hoveredColumn = col
if row != -1 and col != -1 and col < len(self.DEFAULT_COLS):
mod = self.drones[self.GetItemData(row)]
try:
mod = self.drones[self.GetItemData(row)]
except IndexError:
return
if self.DEFAULT_COLS[col] == "Miscellanea":
tooltip = self.activeColumns[col].getToolTip(mod)
if tooltip is not None:
@@ -120,7 +123,10 @@ class DroneView(Display):
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
row = self.GetFirstSelected()
if row != -1:
drone = self.drones[self.GetItemData(row)]
try:
drone = self.drones[self.GetItemData(row)]
except IndexError:
return
self.removeDroneStack(drone)
event.Skip()
@@ -234,7 +240,10 @@ class DroneView(Display):
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
mstate = wx.GetMouseState()
drone = self.drones[self.GetItemData(row)]
try:
drone = self.drones[self.GetItemData(row)]
except IndexError:
return
if mstate.cmdDown or mstate.altDown:
self.removeDroneStack(drone)
else:
@@ -273,7 +282,10 @@ class DroneView(Display):
def spawnMenu(self, event):
sel = self.GetFirstSelected()
if sel != -1:
drone = self.drones[sel]
try:
drone = self.drones[sel]
except IndexError:
return
sMkt = Market.getInstance()
sourceContext = "droneItem"
itemContext = sMkt.getCategoryByItem(drone.item).name

View File

@@ -162,7 +162,10 @@ class FighterDisplay(d.Display):
self.hoveredRow = row
self.hoveredColumn = col
if row != -1 and col != -1 and col < len(self.DEFAULT_COLS):
mod = self.fighters[self.GetItemData(row)]
try:
mod = self.fighters[self.GetItemData(row)]
except IndexError:
return
if self.DEFAULT_COLS[col] == "Miscellanea":
tooltip = self.activeColumns[col].getToolTip(mod)
if tooltip is not None:
@@ -180,7 +183,10 @@ class FighterDisplay(d.Display):
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
row = self.GetFirstSelected()
if row != -1:
fighter = self.fighters[self.GetItemData(row)]
try:
fighter = self.fighters[self.GetItemData(row)]
except IndexError:
return
self.removeFighter(fighter)
event.Skip()
@@ -273,12 +279,17 @@ class FighterDisplay(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
fighter = self.fighters[self.GetItemData(row)]
try:
fighter = self.fighters[self.GetItemData(row)]
except IndexError:
return
self.removeFighter(fighter)
def removeFighter(self, fighter):
fitID = self.mainFrame.getActiveFit()
self.mainFrame.command.Submit(cmd.GuiRemoveLocalFighterCommand(fitID, self.original.index(fighter)))
if fighter in self.original:
position = self.original.index(fighter)
self.mainFrame.command.Submit(cmd.GuiRemoveLocalFighterCommand(fitID=fitID, position=position))
def click(self, event):
event.Skip()
@@ -287,14 +298,21 @@ class FighterDisplay(d.Display):
col = self.getColumn(event.Position)
if col == self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
fighter = self.fighters[row]
self.mainFrame.command.Submit(cmd.GuiToggleLocalFighterStateCommand(fitID, self.original.index(fighter)))
try:
fighter = self.fighters[row]
except IndexError:
return
if fighter in self.original:
position = self.original.index(fighter)
self.mainFrame.command.Submit(cmd.GuiToggleLocalFighterStateCommand(fitID=fitID, position=position))
def spawnMenu(self, event):
sel = self.GetFirstSelected()
if sel != -1:
fighter = self.fighters[sel]
try:
fighter = self.fighters[sel]
except IndexError:
return
sMkt = Market.getInstance()
sourceContext = "fighterItem"
itemContext = sMkt.getCategoryByItem(fighter.item).name

View File

@@ -137,12 +137,16 @@ class ImplantDisplay(d.Display):
self.mainFrame.additionsPane.select("Implants")
def kbEvent(self, event):
event.Skip()
keycode = event.GetKeyCode()
if keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE):
row = self.GetFirstSelected()
if row != -1:
self.removeImplant(self.implants[self.GetItemData(row)])
event.Skip()
try:
implant = self.implants[self.GetItemData(row)]
except IndexError:
return
self.removeImplant(implant)
def fitChanged(self, event):
sFit = Fit.getInstance()
@@ -204,7 +208,11 @@ class ImplantDisplay(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
self.removeImplant(self.implants[self.GetItemData(row)])
try:
implant = self.implants[self.GetItemData(row)]
except IndexError:
return
self.removeImplant(implant)
def removeImplant(self, implant):
fitID = self.mainFrame.getActiveFit()
@@ -226,7 +234,10 @@ class ImplantDisplay(d.Display):
col = self.getColumn(event.Position)
if col == self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
implant = self.implants[self.GetItemData(row)]
try:
implant = self.implants[self.GetItemData(row)]
except IndexError:
return
if implant in self.original:
position = self.original.index(implant)
self.mainFrame.command.Submit(cmd.GuiToggleImplantStateCommand(
@@ -243,7 +254,10 @@ class ImplantDisplay(d.Display):
return
if sel != -1:
implant = self.implants[sel]
try:
implant = self.implants[sel]
except IndexError:
return
sMkt = Market.getInstance()
sourceContext = "implantItem" if fit.implantSource == ImplantLocation.FIT else "implantItemChar"
itemContext = sMkt.getCategoryByItem(implant.item).name

View File

@@ -58,11 +58,15 @@ class FighterAbilities(ContextMenu):
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
if self.isProjected:
self.mainFrame.command.Submit(cmd.GuiToggleProjectedFighterAbilityStateCommand(
fitID=fitID, position=fit.projectedFighters.index(self.fighter), effectID=ability.effectID))
if self.fighter in fit.projectedFighters:
position = fit.projectedFighters.index(self.fighter)
self.mainFrame.command.Submit(cmd.GuiToggleProjectedFighterAbilityStateCommand(
fitID=fitID, position=position, effectID=ability.effectID))
else:
self.mainFrame.command.Submit(cmd.GuiToggleLocalFighterAbilityStateCommand(
fitID=fitID, position=fit.fighters.index(self.fighter), effectID=ability.effectID))
if self.fighter in fit.fighters:
position = fit.fighters.index(self.fighter)
self.mainFrame.command.Submit(cmd.GuiToggleLocalFighterAbilityStateCommand(
fitID=fitID, position=position, effectID=ability.effectID))