From 40c1bc8ae63198baa4560225b5510bf67f2b9808 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Thu, 8 May 2014 13:56:22 -0400 Subject: [PATCH] Added cargo gauge to resources and ability to toggle --- eos/saveddata/fit.py | 8 +++ gui/additionsPane.py | 4 +- gui/builtinStatsViews/resourcesViewFull.py | 47 +++++++++++++++--- .../targetingMiscViewFull.py | 13 +++-- icons/cargoBay_big.png | Bin 0 -> 1018 bytes 5 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 icons/cargoBay_big.png diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index de5750a04..9a78c9c12 100755 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -1037,6 +1037,14 @@ class Fit(object): return amount + @property + def cargoBayUsed(self): + amount = 0 + for c in self.cargo: + amount += c.getModifiedItemAttr("volume") * c.amount + + return amount + @property def activeDrones(self): amount = 0 diff --git a/gui/additionsPane.py b/gui/additionsPane.py index 449d3935b..cefa7937d 100644 --- a/gui/additionsPane.py +++ b/gui/additionsPane.py @@ -70,7 +70,9 @@ class AdditionsPane(TogglePanel): self.notebook.AddPage(self.gangPage, "Fleet", tabImage = gangImg, showClose = False) self.notebook.SetSelection(0) - PANES = ["Drones", "Cargo", "Implants", "Boosters", "Projected", "Fleet"] def select(self, name): self.notebook.SetSelection(self.PANES.index(name)) + + def getName(self, idx): + return self.PANES[idx] diff --git a/gui/builtinStatsViews/resourcesViewFull.py b/gui/builtinStatsViews/resourcesViewFull.py index c6f546e9b..a06c75a7e 100644 --- a/gui/builtinStatsViews/resourcesViewFull.py +++ b/gui/builtinStatsViews/resourcesViewFull.py @@ -22,6 +22,8 @@ from gui.statsView import StatsView from gui import builtinStatsViews from gui import bitmapLoader from gui import pygauge as PG +import gui.mainFrame +import gui.chromeTabs from eos.types import Hardpoint @@ -32,6 +34,31 @@ class ResourcesViewFull(StatsView): def __init__(self, parent): StatsView.__init__(self) self.parent = parent + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.mainFrame.additionsPane.notebook.Bind(gui.chromeTabs.EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged) + + def pageChanged(self, event): + page = self.mainFrame.additionsPane.getName(event.GetSelection()) + if page == "Cargo": + self.toggleCargoGauge(True) + else: + self.toggleCargoGauge(False) + + def toggleCargoGauge(self, showCargo = False): + if showCargo: + self.bitmapFullCargoBay.Show() + self.baseFullCargoBay.Show(True) + self.bitmapFullDroneBay.Hide() + self.baseFullDroneBay.Hide(True) + else: + self.bitmapFullDroneBay.Show() + self.baseFullDroneBay.Show(True) + self.bitmapFullCargoBay.Hide() + self.baseFullCargoBay.Hide(True) + + self.panel.Layout() + self.headerPanel.Layout() + def getHeaderText(self, fit): return "Resources" @@ -85,8 +112,8 @@ class ResourcesViewFull(StatsView): #PG, Cpu & drone stuff - tooltipText = {"cpu":"CPU", "pg":"PowerGrid", "droneBay":"Drone bay", "droneBandwidth":"Drone bandwidth"} - for i, group in enumerate((("cpu", "pg"), ("droneBay", "droneBandwidth"))): + tooltipText = {"cpu":"CPU", "pg":"PowerGrid", "droneBay":"Drone bay", "droneBandwidth":"Drone bandwidth", "cargoBay":"Cargo bay"} + for i, group in enumerate((("cpu", "pg"), ("cargoBay", "droneBay", "droneBandwidth"))): main = wx.BoxSizer(wx.VERTICAL) base.Add(main, 1 , wx.ALIGN_CENTER) @@ -117,7 +144,7 @@ class ResourcesViewFull(StatsView): setattr(self, "label%sTotal%s" % (panel.capitalize(), capitalizedType), lbl) absolute.Add(lbl, 0, wx.ALIGN_LEFT) - units = {"cpu":" tf", "pg":" MW", "droneBandwidth":" mbit/s", "droneBay":u" m\u00B3"} + units = {"cpu":" tf", "pg":" MW", "droneBandwidth":" mbit/s", "droneBay":u" m\u00B3", "cargoBay":u" m\u00B3"} lbl = wx.StaticText(parent, wx.ID_ANY, "%s" % units[type]) absolute.Add(lbl, 0, wx.ALIGN_LEFT) @@ -131,6 +158,11 @@ class ResourcesViewFull(StatsView): setattr(self, "gauge%s%s" % (panel.capitalize(),capitalizedType), gauge) stats.Add(gauge, 0, wx.ALIGN_CENTER) + setattr(self, "base%s%s" % (panel.capitalize(), capitalizedType), b) + setattr(self, "bitmap%s%s" % (panel.capitalize(), capitalizedType), bitmap) + + self.toggleCargoGauge(False) + def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here @@ -149,7 +181,9 @@ class ResourcesViewFull(StatsView): ("label%sUsedDroneBay", lambda: fit.droneBayUsed, 3, 0, 9), ("label%sUsedDroneBandwidth", lambda: fit.droneBandwidthUsed, 3, 0, 9), ("label%sTotalDroneBay", lambda: fit.ship.getModifiedItemAttr("droneCapacity"), 3, 0, 9), - ("label%sTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 3, 0, 9)) + ("label%sTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 3, 0, 9), + ("label%sUsedCargoBay", lambda: fit.cargoBayUsed, 3, 0, 9), + ("label%sTotalCargoBay", lambda: fit.ship.getModifiedItemAttr("capacity"), 3, 0, 9)) panel = "Full" usedTurretHardpoints = 0 totalTurretHardpoints = 0 @@ -232,10 +266,11 @@ class ResourcesViewFull(StatsView): resMax = (lambda: fit.ship.getModifiedItemAttr("cpuOutput"), lambda: fit.ship.getModifiedItemAttr("powerOutput"), lambda: fit.ship.getModifiedItemAttr("droneCapacity"), - lambda: fit.ship.getModifiedItemAttr("droneBandwidth")) + lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), + lambda: fit.ship.getModifiedItemAttr("capacity")) i = 0 - for resourceType in ("cpu", "pg", "droneBay", "droneBandwidth"): + for resourceType in ("cpu", "pg", "droneBay", "droneBandwidth", "cargoBay"): if fit is not None: capitalizedType = resourceType[0].capitalize() + resourceType[1:] diff --git a/gui/builtinStatsViews/targetingMiscViewFull.py b/gui/builtinStatsViews/targetingMiscViewFull.py index ec8133590..e3be99c80 100644 --- a/gui/builtinStatsViews/targetingMiscViewFull.py +++ b/gui/builtinStatsViews/targetingMiscViewFull.py @@ -137,6 +137,10 @@ class TargetingMiscViewFull(StatsView): label.SetToolTip(wx.ToolTip("Max Warp Distance: %.1f AU" % fit.maxWarpDistance)) elif labelName == "labelFullAlignTime": label.SetToolTip(wx.ToolTip("%.3f" % value)) + elif labelName == "labelFullCargo": + tip = u"Capacity: %sm\u00B3\n"% fit.ship.getModifiedItemAttr("capacity") + tip += u"Available: %.1fm\u00B3" % (fit.ship.getModifiedItemAttr("capacity")-fit.cargoBayUsed) + label.SetToolTip(wx.ToolTip(tip)) else: label.SetToolTip(wx.ToolTip("%.1f" % value)) else: @@ -151,13 +155,8 @@ class TargetingMiscViewFull(StatsView): if fit: # if you add stuff to cargo, the capacity doesn't change and thus it is still cached # This assures us that we force refresh of cargo tooltip - capacity = fit.ship.getModifiedItemAttr("capacity") - cargoSize = 0 - for mod in fit.cargo: - cargoSize += mod.getModifiedItemAttr("volume") * mod.amount - a = capacity-cargoSize - tip = u"Capacity: %sm\u00B3\n"% capacity - tip += u"Available: %.1fm\u00B3" %a + tip = u"Capacity: %sm\u00B3\n"% fit.ship.getModifiedItemAttr("capacity") + tip += u"Available: %.1fm\u00B3" % (fit.ship.getModifiedItemAttr("capacity")-fit.cargoBayUsed) label.SetToolTip(wx.ToolTip(tip)) else: label.SetToolTip(wx.ToolTip("")) diff --git a/icons/cargoBay_big.png b/icons/cargoBay_big.png new file mode 100644 index 0000000000000000000000000000000000000000..dd744b0ff826b8aa75b9d7e20efafa31dffc1cb9 GIT binary patch literal 1018 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qRNAp5A000ANNklr6i?e7)?pC5a3}+q^PEH=` zbWgv}ck_w!Ur6IG-rH-tyYJ`o``&%-zQ3dX=dUDnT|9%h)~A0qr)!RIAKq_DZM~&b zDdd%6X>u%MUHUU=x+c$Ux_Z|9pzS(QHOTd6D-Y$*j}W?Bmj|DBuO8X;eCn)u_2dqF zTdg1k(o~Yaa|4l;Ws~f!tJ;NLPCnMs-_PT>T3dtJblmj0%lza{BQ(~ZA*V|Blf7FK zL6Q^$OQS<9!J{1{*7DzvPTze9H!ysB{Ro}!hT{F{uzXesL3Y+y@6sqib)g)ZFP{Wi={{0*SV|--WEN ztcMHJX>UW%z*axx^z|Y?%3Yb1G3ehWo4cRg&}!61-P4=Utf+>v>~vC+wV6ngq9HC! z0HFdN>p#MV9XH&z*V&FffUPr8I2wlf{}ks>m2%r!>LncyRWA)@bFa~2GTm3#v31o2 zaPHUvSQ-@s^TK^$imxm9;yWMdO6y(h=_+hpf)=7kDPS z-bbS-5@8*%e6##Nk;ahC6dJG5C|I0v$*kS4TqujVR;5hM1hEhex3CT!re2H z=eE=oXF+Xw4yi5ACACL$@Wif!MbpQ_C_eWE!%)Rox&!siegbkp1IuJjicU_5Oi79r zz23QTv88CwCX%;(Ev$|cL5xVCb#>%a;#hWJ={)3(26boU1&8S5eanPVM#Fb|&7Ekn$#!U;5^PTOo@U^}#(;xL6rh(rUeiA$6 ofrMz1_3>Z%v$3)Ir$SL*06HRg1@#I?kpKVy07*qoM6N<$g0NZWm;e9( literal 0 HcmV?d00001