From 85e5033fe9f13c2b73447a5f9058a5374f6af9ed Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Mon, 23 Aug 2010 19:53:19 +0200 Subject: [PATCH] Start working on the search implementations. TODO: Finish it --- controller/market.py | 13 +++++++++++++ gui/marketBrowser.py | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/controller/market.py b/controller/market.py index 75d2085a3..cc15aaa92 100644 --- a/controller/market.py +++ b/controller/market.py @@ -18,6 +18,7 @@ #=============================================================================== import eos.db +import eos.types class Market(): instance = None @@ -80,6 +81,15 @@ class Market(): return ships + def searchItems(self, name): + results = eos.db.searchItems(name, where=eos.types.Item.published == 1, + eager=("icon", "metaGroup")) + + items = [] + for item in results: + items.append((item.ID, item.name, item.metaGroup.ID, item.icon.iconFile if item.icon else "")) + return items + def searchFits(self, name): results = eos.db.searchFits(name) fits = [] @@ -117,6 +127,9 @@ class Market(): if meta in self.activeMetas: self.activeMetas.remove(meta) + def isMetaIdActive(self, meta): + return meta in self.activeMetas + def getVariations(self, marketGroupId): if len(self.activeMetas) == 0: return tuple() diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py index 233b05c92..44175c848 100644 --- a/gui/marketBrowser.py +++ b/gui/marketBrowser.py @@ -41,6 +41,16 @@ class MarketBrowser(wx.Panel): sizer.Add(self.search, 1, wx.EXPAND | wx.TOP, 2) p.SetMinSize((wx.SIZE_AUTO_WIDTH, 27)) + #Bind search + self.search.Bind(wx.EVT_TEXT_ENTER, self.startSearch) + self.search.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.startSearch) + self.search.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.clearSearch) + self.search.Bind(wx.EVT_TEXT, self.startSearch) + + #Helper vars for search: INIT EM ALREADY + self.searching = False + self.searchResults = None + self.splitter = wx.SplitterWindow(self, style = wx.SP_LIVE_UPDATE) vbox.Add(self.splitter, 1, wx.EXPAND) @@ -181,3 +191,32 @@ class MarketBrowser(wx.Panel): cMarket.disableMetaGroup(btn.metaName) self.selectionMade(event) + + def startSearch(self, event): + search = self.shipMenu.search.GetLineText(0) + if len(search) < 3: + self.clearSearch(event, False) + return + + self.searching = True + cMarket = controller.Market.getInstance() + self.searchResults = cMarket.searchItems(search) + + self.filteredSearchAdd() + + def clearSearch(self, event, clear=True): + self.itemImageList.RemoveAll() + self.itemView.DeleteAllItems() + if clear: + self.search.Clear() + self.searching = False + + def filteredSearchAdd(self): + idNameMap = {} + cMarket = controller.Market.getInstance() + for id, name, metaGroupID, iconFile in self.searchResults: + if cMarket.isMetaActive(metaGroupID): + iconId = self.addItemViewImage(iconFile) + index = self.itemView.InsertImageStringItem(sys.maxint, name, iconId) + idNameMap[id] = name + self.itemView.SetItemData(index, id)