The search should be performed without blocking the GUI at all
This commit is contained in:
parent
d33205e84e
commit
64d076ce44
@ -95,7 +95,12 @@ class Controller(object):
|
|||||||
self.reload_extractors()
|
self.reload_extractors()
|
||||||
|
|
||||||
def on_search(self, *args, **kwargs):
|
def on_search(self, *args, **kwargs):
|
||||||
wx.CallAfter(self.search)
|
text = self.window.get_text()
|
||||||
|
if text == "":
|
||||||
|
return
|
||||||
|
extractor = self.window.extractor.GetValue()
|
||||||
|
self.change_status(_(u"Searching {0}... ").format(text))
|
||||||
|
utils.call_threaded(self.search, text=text, extractor=extractor)
|
||||||
|
|
||||||
def on_activated(self, *args, **kwargs):
|
def on_activated(self, *args, **kwargs):
|
||||||
self.on_play()
|
self.on_play()
|
||||||
@ -237,27 +242,22 @@ class Controller(object):
|
|||||||
self.window.notify(title, message)
|
self.window.notify(title, message)
|
||||||
|
|
||||||
# real functions. These functions really are doing the work.
|
# real functions. These functions really are doing the work.
|
||||||
def search(self, *args, **kwargs):
|
def search(self, text, extractor, *args, **kwargs):
|
||||||
text = self.window.get_text()
|
|
||||||
if text == "":
|
|
||||||
return
|
|
||||||
extractor = self.window.extractor.GetValue()
|
|
||||||
self.change_status(_(u"Searching {0}... ").format(text))
|
|
||||||
extractors = get_extractors()
|
extractors = get_extractors()
|
||||||
for i in extractors:
|
for i in extractors:
|
||||||
if extractor == i.interface.name:
|
if extractor == i.interface.name:
|
||||||
self.extractor = i.interface()
|
self.extractor = i.interface()
|
||||||
break
|
break
|
||||||
log.debug("Started search for {0} (selected extractor: {1})".format(text, self.extractor.name))
|
log.debug("Started search for {0} (selected extractor: {1})".format(text, self.extractor.name))
|
||||||
self.window.list.Clear()
|
wx.CallAfter(self.window.list.Clear)
|
||||||
self.extractor.search(text)
|
self.extractor.search(text)
|
||||||
self.results = self.extractor.results
|
self.results = self.extractor.results
|
||||||
for i in self.results:
|
for i in self.results:
|
||||||
self.window.list.Append(i.format_track())
|
wx.CallAfter(self.window.list.Append, i.format_track())
|
||||||
if len(self.results) == 0:
|
if len(self.results) == 0:
|
||||||
self.change_status(_(u"No results found. "))
|
wx.CallAfter(self.change_status, _(u"No results found. "))
|
||||||
else:
|
else:
|
||||||
self.change_status(u"")
|
wx.CallAfter(self.change_status, u"")
|
||||||
wx.CallAfter(self.window.list.SetFocus)
|
wx.CallAfter(self.window.list.SetFocus)
|
||||||
|
|
||||||
def reload_extractors(self):
|
def reload_extractors(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user