diff --git a/controller/market.py b/controller/market.py index 549a192c9..7e5d2ab2e 100644 --- a/controller/market.py +++ b/controller/market.py @@ -19,7 +19,7 @@ import eos.db import eos.types -import time +from sqlalchemy.sql import or_ class Market(): instance = None @@ -84,7 +84,6 @@ class Market(): return ships def searchItems(self, name): - t = time.time() filter = (eos.types.Category.name.in_(self.SEARCH_CATEGORIES), eos.types.Item.published == 1) results = eos.db.searchItems(name, where=filter, join=(eos.types.Item.group, eos.types.Group.category), @@ -95,7 +94,6 @@ class Market(): if item.category.name in self.SEARCH_CATEGORIES: items.append((item.ID, item.name, item.metaGroup.ID if item.metaGroup else 1, item.icon.iconFile if item.icon else "")) - print time.time() - t return items def searchFits(self, name): diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py index 2b71b6dc4..9a619e9ca 100644 --- a/gui/marketBrowser.py +++ b/gui/marketBrowser.py @@ -42,15 +42,19 @@ class MarketBrowser(wx.Panel): 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_TEXT_ENTER, self.scheduleSearch) + self.search.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.scheduleSearch) self.search.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.clearSearch) - self.search.Bind(wx.EVT_TEXT, self.startSearch) + self.search.Bind(wx.EVT_TEXT, self.scheduleSearch) + self.Bind(wx.EVT_TIMER, self.startSearch) #Helper vars for search: INIT EM ALREADY self.searching = False self.searchResults = None + self.searchTimer = wx.Timer() + self.searchTimer.SetOwner(self) + self.splitter = wx.SplitterWindow(self, style = wx.SP_LIVE_UPDATE) vbox.Add(self.splitter, 1, wx.EXPAND) @@ -208,7 +212,7 @@ class MarketBrowser(wx.Panel): def startSearch(self, event): search = self.search.GetLineText(0) - if len(search) < 4: + if len(search) < 3: self.clearSearch(event, False) return diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index b17a60e1c..05b8740a4 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -58,10 +58,13 @@ class ShipBrowser(wx.Panel): self.shipMenu.copy.Bind(wx.EVT_BUTTON, self.copyFit) #Bind search - self.shipMenu.search.Bind(wx.EVT_TEXT_ENTER, self.startSearch) - self.shipMenu.search.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.startSearch) + self.shipMenu.search.Bind(wx.EVT_TEXT_ENTER, self.scheduleSearch) + self.shipMenu.search.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.scheduleSearch) self.shipMenu.search.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.clearSearch) - self.shipMenu.search.Bind(wx.EVT_TEXT, self.startSearch) + self.shipMenu.search.Bind(wx.EVT_TEXT, self.scheduleSearch) + self.Bind(wx.EVT_TIMER, self.startSearch) + + self.searchTimer = wx.Timer(self) self.timer = None @@ -197,6 +200,10 @@ class ShipBrowser(wx.Panel): tree.SelectItem(childId) tree.EditLabel(childId) + def scheduleSearch(self, event): + self.searchTimer.Stop() + self.searchTimer.Start(100, wx.TIMER_ONE_SHOT) + def clearSearch(self, event, clearText=True): if self.getActiveTree() == self.searchView: if clearText: