From 7c8f4d51bb0dca7991e36f01210b70c166fe7869 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 17 Oct 2019 17:39:44 +0300 Subject: [PATCH] Move sorting from item view to market service --- gui/builtinMarketBrowser/itemView.py | 33 ++-------------------------- service/market.py | 20 +++++++++++++++++ 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/gui/builtinMarketBrowser/itemView.py b/gui/builtinMarketBrowser/itemView.py index 984a746bf..48fd64ba2 100644 --- a/gui/builtinMarketBrowser/itemView.py +++ b/gui/builtinMarketBrowser/itemView.py @@ -7,7 +7,6 @@ from gui.builtinMarketBrowser.events import ItemSelected, RECENTLY_USED_MODULES from gui.contextMenu import ContextMenu from gui.display import Display from gui.utils.staticHelpers import DragDropHelper -from service.attribute import Attribute from service.fit import Fit from config import slotColourMap @@ -50,7 +49,6 @@ class ItemView(Display): self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) # Make reverse map, used by sorter - self.metaMap = self.makeReverseMetaMap() self.active = [] def delaySearch(self, evt): @@ -203,21 +201,6 @@ class ItemView(Display): self.setToggles() self.filterItemStore() - def itemSort(self, item): - sMkt = self.sMkt - catname = sMkt.getCategoryByItem(item).name - try: - mktgrpid = sMkt.getMarketGroupByItem(item).ID - except AttributeError: - mktgrpid = -1 - pyfalog.warning("unable to find market group for {}".format(item.name)) - parentname = sMkt.getParentItemByItem(item).name - # Get position of market group - metagrpid = sMkt.getMetaGroupIdByItem(item) - metatab = self.metaMap.get(metagrpid) - metalvl = item.metaLevel or 0 - - return catname, mktgrpid, parentname, metatab, metalvl, item.name def contextMenu(self, event): clickedPos = self.getRowByAbs(event.Position) @@ -241,7 +224,7 @@ class ItemView(Display): self.unselectAll() # Perform sorting, using item's meta levels besides other stuff if self.marketBrowser.mode != 'recent': - items.sort(key=self.itemSort) + items.sort(key=self.sMkt.itemSort) # Mark current item list as active self.active = items # Show them @@ -251,7 +234,7 @@ class ItemView(Display): if len(items) > 1: # Re-sort stuff if self.marketBrowser.mode != 'recent': - items.sort(key=self.itemSort) + items.sort(key=self.sMkt.itemSort) for i, item in enumerate(items[:9]): # set shortcut info for first 9 modules @@ -259,18 +242,6 @@ class ItemView(Display): Display.refresh(self, items) - def makeReverseMetaMap(self): - """ - Form map which tells in which tab items of given metagroup are located - """ - revmap = {} - i = 0 - for mgids in self.sMkt.META_MAP.values(): - for mgid in mgids: - revmap[mgid] = i - i += 1 - return revmap - def columnBackground(self, colItem, item): if self.sFit.serviceFittingOptions["colorFitBySlot"]: return slotColourMap.get(Module.calculateSlot(item)) or self.GetBackgroundColour() diff --git a/service/market.py b/service/market.py index d55148800..f05cebf1d 100644 --- a/service/market.py +++ b/service/market.py @@ -322,6 +322,12 @@ class Market: self.META_MAP["normal"] = frozenset((0, *(mg.ID for mg in eos.db.getMetaGroups() if mg.ID not in nonNormalMetas))) self.META_MAP.move_to_end("normal", last=False) self.META_MAP_REVERSE = {sv: k for k, v in self.META_MAP.items() for sv in v} + self.META_MAP_REVERSE_GROUPED = {} + i = 0 + for mgids in self.META_MAP.values(): + for mgid in mgids: + self.META_MAP_REVERSE_GROUPED[mgid] = i + i += 1 self.SEARCH_CATEGORIES = ( "Drone", "Module", @@ -835,3 +841,17 @@ class Market: while len(recentlyUsedModules) >= 20: recentlyUsedModules.pop(-1) recentlyUsedModules.insert(0, itemID) + + def itemSort(self, item): + catname = self.getCategoryByItem(item).name + try: + mktgrpid = self.getMarketGroupByItem(item).ID + except AttributeError: + mktgrpid = -1 + pyfalog.warning("unable to find market group for {}".format(item.name)) + parentname = self.getParentItemByItem(item).name + # Get position of market group + metagrpid = self.getMetaGroupIdByItem(item) + metatab = self.META_MAP_REVERSE_GROUPED.get(metagrpid) + metalvl = item.metaLevel or 0 + return catname, mktgrpid, parentname, metatab, metalvl, item.name