From 292d95f6f88a1e3ddd6091cc8d79be07cc054d4e Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Wed, 3 Apr 2019 15:34:26 +0300 Subject: [PATCH] Implement market jump meta category logic --- gui/builtinMarketBrowser/marketTree.py | 1 - .../pyfaMarketPreferences.py | 4 +-- gui/builtinStatsViews/priceViewFull.py | 4 +-- gui/builtinStatsViews/priceViewMinimal.py | 4 +-- gui/marketBrowser.py | 33 +++++++++++++++++-- service/market.py | 1 + service/settings.py | 4 +-- 7 files changed, 39 insertions(+), 12 deletions(-) diff --git a/gui/builtinMarketBrowser/marketTree.py b/gui/builtinMarketBrowser/marketTree.py index f6c62732c..925df45fa 100644 --- a/gui/builtinMarketBrowser/marketTree.py +++ b/gui/builtinMarketBrowser/marketTree.py @@ -96,4 +96,3 @@ class MarketTree(wx.TreeCtrl): self.Expand(item) self.SelectItem(item) - self.marketBrowser.itemView.selectionMade() diff --git a/gui/builtinPreferenceViews/pyfaMarketPreferences.py b/gui/builtinPreferenceViews/pyfaMarketPreferences.py index ed60d0f90..8f6400c81 100644 --- a/gui/builtinPreferenceViews/pyfaMarketPreferences.py +++ b/gui/builtinPreferenceViews/pyfaMarketPreferences.py @@ -7,7 +7,7 @@ from gui.bitmap_loader import BitmapLoader import gui.mainFrame import gui.globalEvents as GE -from service.settings import PriceMenuSettings +from service.settings import MarketPriceSettings from service.fit import Fit from service.price import Price @@ -16,7 +16,7 @@ class PFMarketPref(PreferenceView): title = "Market & Prices" def __init__(self): - self.priceSettings = PriceMenuSettings.getInstance() + self.priceSettings = MarketPriceSettings.getInstance() def populatePanel(self, panel): self.mainFrame = gui.mainFrame.MainFrame.getInstance() diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py index c69c2c57e..f77e352fd 100644 --- a/gui/builtinStatsViews/priceViewFull.py +++ b/gui/builtinStatsViews/priceViewFull.py @@ -23,7 +23,7 @@ from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from service.price import Fit, Price -from service.settings import PriceMenuSettings +from service.settings import MarketPriceSettings class PriceViewFull(StatsView): @@ -32,7 +32,7 @@ class PriceViewFull(StatsView): def __init__(self, parent): StatsView.__init__(self) self.parent = parent - self.settings = PriceMenuSettings.getInstance() + self.settings = MarketPriceSettings.getInstance() def getHeaderText(self, fit): return "Price" diff --git a/gui/builtinStatsViews/priceViewMinimal.py b/gui/builtinStatsViews/priceViewMinimal.py index 28a2b9c24..486bf00d5 100644 --- a/gui/builtinStatsViews/priceViewMinimal.py +++ b/gui/builtinStatsViews/priceViewMinimal.py @@ -23,7 +23,7 @@ from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from service.price import Fit, Price -from service.settings import PriceMenuSettings +from service.settings import MarketPriceSettings class PriceViewMinimal(StatsView): @@ -32,7 +32,7 @@ class PriceViewMinimal(StatsView): def __init__(self, parent): StatsView.__init__(self) self.parent = parent - self.settings = PriceMenuSettings.getInstance() + self.settings = MarketPriceSettings.getInstance() def getHeaderText(self, fit): return "Price" diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py index d39477523..f54b6447e 100644 --- a/gui/marketBrowser.py +++ b/gui/marketBrowser.py @@ -20,12 +20,12 @@ # noinspection PyPackageRequirements import wx -from service.market import Market - from gui.builtinMarketBrowser.searchBox import SearchBox from gui.builtinMarketBrowser.itemView import ItemView from gui.builtinMarketBrowser.metaButton import MetaButton from gui.builtinMarketBrowser.marketTree import MarketTree +from service.market import Market +from service.settings import MarketPriceSettings from logbook import Logger @@ -33,8 +33,10 @@ pyfalog = Logger(__name__) class MarketBrowser(wx.Panel): + def __init__(self, parent): wx.Panel.__init__(self, parent) + pyfalog.debug("Initialize marketBrowser") vbox = wx.BoxSizer(wx.VERTICAL) self.SetSizer(vbox) @@ -46,8 +48,9 @@ class MarketBrowser(wx.Panel): self.splitter = wx.SplitterWindow(self, style=wx.SP_LIVE_UPDATE) vbox.Add(self.splitter, 1, wx.EXPAND) - # Grab market service instance and create child objects + # Grab service stuff and create child objects self.sMkt = Market.getInstance() + self.settings = MarketPriceSettings.getInstance() self.searchMode = False self.marketView = MarketTree(self.splitter, self) self.itemView = ItemView(self.splitter, self) @@ -98,3 +101,27 @@ class MarketBrowser(wx.Panel): def jump(self, item): self.marketView.jump(item) + setting = self.settings.get('marketMGJumpMode') + itemMetaCat = self.sMkt.META_MAP_REVERSE[self.sMkt.getMetaGroupIdByItem(item)] + # Enable item meta category + if setting == 1: + btn = getattr(self, itemMetaCat) + if not btn.GetValue(): + btn.setUserSelection(True) + # Enable item meta category, disable others + elif setting == 2: + tgtBtn = getattr(self, itemMetaCat) + if not tgtBtn.GetValue(): + tgtBtn.setUserSelection(True) + for btn in self.metaButtons: + if btn is tgtBtn: + continue + if btn.GetValue: + btn.setUserSelection(False) + # Enable all meta categories + elif setting == 3: + for btn in self.metaButtons: + if not btn.GetValue(): + btn.setUserSelection(True) + self.itemView.selectionMade() + diff --git a/service/market.py b/service/market.py index 085fef624..4457445e2 100644 --- a/service/market.py +++ b/service/market.py @@ -316,6 +316,7 @@ class Market(object): ("faction", frozenset((4, 3))), ("complex", frozenset((6,))), ("officer", frozenset((5,)))]) + self.META_MAP_REVERSE = {sv: k for k, v in self.META_MAP.items() for sv in v} self.SEARCH_CATEGORIES = ( "Drone", "Module", diff --git a/service/settings.py b/service/settings.py index 350daf9ca..3723b1dd4 100644 --- a/service/settings.py +++ b/service/settings.py @@ -447,13 +447,13 @@ class StatViewSettings(object): self.serviceStatViewDefaultSettings[type] = value -class PriceMenuSettings(object): +class MarketPriceSettings(object): _instance = None @classmethod def getInstance(cls): if cls._instance is None: - cls._instance = PriceMenuSettings() + cls._instance = MarketPriceSettings() return cls._instance