From d7ecc0b30cf4efe3c2a45de3fb60cdb507c9a09a Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Fri, 9 Dec 2011 21:27:20 +0200 Subject: [PATCH] Use a permanent storage [settings -> pyfaMarketRecentlyUsedModules] for last used modules (20 modules max storage LRU gets deleted) --- gui/marketBrowser.py | 18 +++++++++++++++++- service/market.py | 7 +++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py index 702cddc96..85fa04eb7 100644 --- a/gui/marketBrowser.py +++ b/gui/marketBrowser.py @@ -29,6 +29,7 @@ from gui import bitmapLoader ItemSelected, ITEM_SELECTED = wx.lib.newevent.NewEvent() RECENTLY_USED_MODULES = -2 +MAX_RECENTLY_USED_MODULES = 20 class MarketBrowser(wx.Panel): def __init__(self, parent): @@ -227,6 +228,10 @@ class ItemView(d.Display): # Make reverse map, used by sorter self.metaMap = self.makeReverseMetaMap() + # Fill up recently used modules set + for itemID in self.sMarket.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]: + self.recentlyUsedModules.add(self.sMarket.getItem(itemID)) + def itemActivated(self, event=None): # Check if something is selected, if so, spawn the menu for it sel = self.GetFirstSelected() @@ -234,9 +239,20 @@ class ItemView(d.Display): return if self.mainFrame.getActiveFit(): - self.recentlyUsedModules.add(self.sMarket.getItem(self.active[sel].ID)) + + self.storeRecentlyUsedMarketItem(self.active[sel].ID) + self.recentlyUsedModules = set() + for itemID in self.sMarket.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]: + self.recentlyUsedModules.add(self.sMarket.getItem(itemID)) + wx.PostEvent(self.mainFrame, ItemSelected(itemID=self.active[sel].ID)) + def storeRecentlyUsedMarketItem(self, itemID): + if len(self.sMarket.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]) > MAX_RECENTLY_USED_MODULES: + self.sMarket.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].pop(0) + + self.sMarket.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].append(itemID) + def selectionMade(self, event=None, forcedMetaSelect=None): self.marketBrowser.searchMode = False # Grab the threeview selection and check if it's fine diff --git a/service/market.py b/service/market.py index 2e33a8dce..cb57232e2 100644 --- a/service/market.py +++ b/service/market.py @@ -26,6 +26,8 @@ import Queue import eos.db import eos.types +from service.settings import SettingsProvider + try: from collections import OrderedDict except ImportError: @@ -127,6 +129,11 @@ class Market(): def __init__(self): self.priceCache = {} + #Init recently used module storage + serviceMarketRecentlyUsedModules = {"pyfaMarketRecentlyUsedModules": []} + + self.serviceMarketRecentlyUsedModules = SettingsProvider.getInstance().getSettings("pyfaMarketRecentlyUsedModules", serviceMarketRecentlyUsedModules) + # Start price fetcher self.priceWorkerThread = PriceWorkerThread() self.priceWorkerThread.daemon = True