The search should be performed without blocking the GUI at all

This commit is contained in:
Manuel Cortez 2019-06-24 09:51:11 -05:00
parent d33205e84e
commit 64d076ce44

View File

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