From edc48f00178f60029731a34c4be96a6f5b25ca7e Mon Sep 17 00:00:00 2001 From: petosorus Date: Mon, 21 Nov 2016 17:38:28 +0100 Subject: [PATCH 1/4] beginnings of price system choice --- gui/builtinStatsViews/priceViewFull.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py index 16935a136..5ee9ec829 100644 --- a/gui/builtinStatsViews/priceViewFull.py +++ b/gui/builtinStatsViews/priceViewFull.py @@ -69,6 +69,10 @@ class PriceViewFull(StatsView): setattr(self, "labelPrice%s" % type.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) + self.priceChoice = wx.Choice(contentPanel, choices=["Jita", "Amarr", "Dodixie", "Rens", "Hek"]) + contentSizer.Add(self.priceChoice, 1, wx.RIGHT | wx.LEFT, 3) + self.priceChoice.SetStringSelection("Jita") + def refreshPanel(self, fit): if fit is not None: self.fit = fit From 48ccc7ff060f31abd2188af03ef37da47c17e0e9 Mon Sep 17 00:00:00 2001 From: petosorus Date: Thu, 24 Nov 2016 12:00:53 +0100 Subject: [PATCH 2/4] System list --- gui/builtinStatsViews/priceViewFull.py | 5 ++++- service/price.py | 12 +++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py index 5ee9ec829..f392d31aa 100644 --- a/gui/builtinStatsViews/priceViewFull.py +++ b/gui/builtinStatsViews/priceViewFull.py @@ -23,6 +23,8 @@ from gui import builtinStatsViews from gui.bitmapLoader import BitmapLoader from gui.utils.numberFormatter import formatAmount import service +from service import Price + class PriceViewFull(StatsView): name = "priceViewFull" @@ -69,9 +71,10 @@ class PriceViewFull(StatsView): setattr(self, "labelPrice%s" % type.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) - self.priceChoice = wx.Choice(contentPanel, choices=["Jita", "Amarr", "Dodixie", "Rens", "Hek"]) + self.priceChoice = wx.Choice(contentPanel, choices=Price.systemsList.keys()) contentSizer.Add(self.priceChoice, 1, wx.RIGHT | wx.LEFT, 3) self.priceChoice.SetStringSelection("Jita") + Price.currentSystemId = Price.systemsList.get(self.priceChoice.GetString(self.priceChoice.GetSelection())) def refreshPanel(self, fit): if fit is not None: diff --git a/service/price.py b/service/price.py index 71858cf7c..8215a46d9 100644 --- a/service/price.py +++ b/service/price.py @@ -29,6 +29,16 @@ TIMEOUT = 15*60 # Network timeout delay for connection issues, 15 minutes class Price(): + systemsList = { + "Jita": 30000142, + "Amarr": 30002187, + "Dodixie": 30002659, + "Rens": 30002510, + "Hek": 30002053 + } + + currentSystemId = systemsList.get("Jita") + @classmethod def fetchPrices(cls, prices): """Fetch all prices passed to this method""" @@ -64,7 +74,7 @@ class Price(): # Base request URL baseurl = "https://eve-central.com/api/marketstat" - data.append(("usesystem", 30000142)) # Use Jita for market + data.append(("usesystem", Price.currentSystemId)) # Use Jita for market for typeID in toRequest: # Add all typeID arguments data.append(("typeid", typeID)) From fcd934319db707e2686b920490a81d79f3f5c65d Mon Sep 17 00:00:00 2001 From: petosorus Date: Sun, 27 Nov 2016 11:10:33 +0100 Subject: [PATCH 3/4] Price listing price panel --- gui/builtinStatsViews/priceViewFull.py | 58 ++++++++++++++++++-------- service/price.py | 7 +++- 2 files changed, 46 insertions(+), 19 deletions(-) diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py index f392d31aa..b4800c4ce 100644 --- a/gui/builtinStatsViews/priceViewFull.py +++ b/gui/builtinStatsViews/priceViewFull.py @@ -18,6 +18,7 @@ #=============================================================================== import wx +import gui.mainFrame from gui.statsView import StatsView from gui import builtinStatsViews from gui.bitmapLoader import BitmapLoader @@ -74,30 +75,51 @@ class PriceViewFull(StatsView): self.priceChoice = wx.Choice(contentPanel, choices=Price.systemsList.keys()) contentSizer.Add(self.priceChoice, 1, wx.RIGHT | wx.LEFT, 3) self.priceChoice.SetStringSelection("Jita") + self.priceChoice.Bind(wx.EVT_CHOICE, self.priceSelection) + + def priceSelection(self, event): Price.currentSystemId = Price.systemsList.get(self.priceChoice.GetString(self.priceChoice.GetSelection())) + mainFrame = gui.mainFrame.MainFrame.getInstance() + sFit = service.Fit.getInstance() + fit = sFit.getFit(mainFrame.getActiveFit()) + + typeIDs = self.fitItemsList(fit) + + sMkt = service.Market.getInstance() + sMkt.getPrices(typeIDs, Price.invalidPrices) + + self.refreshPanel(fit); + + + def fitItemsList(self, fit): + # Compose a list of all the data we need & request it + typeIDs = [] + typeIDs.append(fit.ship.item.ID) + + for mod in fit.modules: + if not mod.isEmpty: + typeIDs.append(mod.itemID) + + for drone in fit.drones: + for _ in xrange(drone.amount): + typeIDs.append(drone.itemID) + + for fighter in fit.fighters: + for _ in xrange(fighter.amountActive): + typeIDs.append(fighter.itemID) + + for cargo in fit.cargo: + for _ in xrange(cargo.amount): + typeIDs.append(cargo.itemID) + + return typeIDs + def refreshPanel(self, fit): if fit is not None: self.fit = fit - # Compose a list of all the data we need & request it - typeIDs = [] - typeIDs.append(fit.ship.item.ID) - for mod in fit.modules: - if not mod.isEmpty: - typeIDs.append(mod.itemID) - - for drone in fit.drones: - for _ in xrange(drone.amount): - typeIDs.append(drone.itemID) - - for fighter in fit.fighters: - for _ in xrange(fighter.amountActive): - typeIDs.append(fighter.itemID) - - for cargo in fit.cargo: - for _ in xrange(cargo.amount): - typeIDs.append(cargo.itemID) + typeIDs = self.fitItemsList(fit) sMkt = service.Market.getInstance() sMkt.getPrices(typeIDs, self.processPrices) diff --git a/service/price.py b/service/price.py index 8215a46d9..0a3b3b53d 100644 --- a/service/price.py +++ b/service/price.py @@ -37,7 +37,12 @@ class Price(): "Hek": 30002053 } - currentSystemId = systemsList.get("Jita") + currentSystemId = "" + + @classmethod + def invalidPrices(self, prices): + for price in prices: + price.time = 0 @classmethod def fetchPrices(cls, prices): From 9df54238d9ac71747830ee0e425de695943dfef2 Mon Sep 17 00:00:00 2001 From: petosorus Date: Thu, 5 Jan 2017 00:06:25 +0100 Subject: [PATCH 4/4] refresh modules price view --- gui/builtinStatsViews/priceViewFull.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py index b4800c4ce..ac2de40ea 100644 --- a/gui/builtinStatsViews/priceViewFull.py +++ b/gui/builtinStatsViews/priceViewFull.py @@ -25,6 +25,7 @@ from gui.bitmapLoader import BitmapLoader from gui.utils.numberFormatter import formatAmount import service from service import Price +import gui.globalEvents as GE class PriceViewFull(StatsView): @@ -35,6 +36,7 @@ class PriceViewFull(StatsView): self._cachedShip = 0 self._cachedFittings = 0 self._cachedTotal = 0 + self.mainFrame = gui.mainFrame.MainFrame.getInstance() def getHeaderText(self, fit): return "Price" @@ -73,12 +75,13 @@ class PriceViewFull(StatsView): hbox.Add(lbl, 0, wx.ALIGN_LEFT) self.priceChoice = wx.Choice(contentPanel, choices=Price.systemsList.keys()) - contentSizer.Add(self.priceChoice, 1, wx.RIGHT | wx.LEFT, 3) + contentSizer.Add(self.priceChoice) self.priceChoice.SetStringSelection("Jita") self.priceChoice.Bind(wx.EVT_CHOICE, self.priceSelection) def priceSelection(self, event): Price.currentSystemId = Price.systemsList.get(self.priceChoice.GetString(self.priceChoice.GetSelection())) + fitID = self.mainFrame.getActiveFit() mainFrame = gui.mainFrame.MainFrame.getInstance() sFit = service.Fit.getInstance() @@ -89,8 +92,8 @@ class PriceViewFull(StatsView): sMkt = service.Market.getInstance() sMkt.getPrices(typeIDs, Price.invalidPrices) - self.refreshPanel(fit); - + self.refreshPanel(fit) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) def fitItemsList(self, fit): # Compose a list of all the data we need & request it