Start working on the search implementations.

TODO: Finish it
This commit is contained in:
cncfanatics
2010-08-23 19:53:19 +02:00
parent 513305ced8
commit 85e5033fe9
2 changed files with 52 additions and 0 deletions

View File

@@ -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()

View File

@@ -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)