Implemented basic audio searches

This commit is contained in:
Manuel Cortez 2016-03-23 13:52:43 -06:00
parent a2905c82d5
commit 2fe26beef9
4 changed files with 46 additions and 2 deletions

@ -11,6 +11,7 @@ from mysc.repeating_timer import RepeatingTimer
from mysc.thread_utils import call_threaded from mysc.thread_utils import call_threaded
from sessionmanager import session from sessionmanager import session
from wxUI import (mainWindow, commonMessages) from wxUI import (mainWindow, commonMessages)
from wxUI.dialogs import search as searchDialogs
from update import updater from update import updater
class Controller(object): class Controller(object):
@ -75,6 +76,7 @@ class Controller(object):
widgetUtils.connect_event(self.window, widgetUtils.MENU, self.update_buffer, menuitem=self.window.update_buffer) widgetUtils.connect_event(self.window, widgetUtils.MENU, self.update_buffer, menuitem=self.window.update_buffer)
widgetUtils.connect_event(self.window, widgetUtils.MENU, self.check_for_updates, menuitem=self.window.check_for_updates) widgetUtils.connect_event(self.window, widgetUtils.MENU, self.check_for_updates, menuitem=self.window.check_for_updates)
widgetUtils.connect_event(self.window, widgetUtils.MENU, self.window.about_dialog, menuitem=self.window.about) widgetUtils.connect_event(self.window, widgetUtils.MENU, self.window.about_dialog, menuitem=self.window.about)
widgetUtils.connect_event(self.window, widgetUtils.MENU, self.search_audios, menuitem=self.window.search_audios)
def disconnect_events(self): def disconnect_events(self):
pub.unsubscribe(self.in_post, "posted") pub.unsubscribe(self.in_post, "posted")
@ -122,7 +124,7 @@ class Controller(object):
def exit(self, *args, **kwargs): def exit(self, *args, **kwargs):
self.disconnect_events() self.disconnect_events()
self.window.Destroy() self.window.Destroy()
wx.GetApp().ExitMainloop() wx.GetApp().ExitMainLoop()
def update_buffer(self, *args, **kwargs): def update_buffer(self, *args, **kwargs):
b = self.get_current_buffer() b = self.get_current_buffer()
@ -132,3 +134,16 @@ class Controller(object):
update = updater.do_update() update = updater.do_update()
if update == False: if update == False:
commonMessages.no_update_available() commonMessages.no_update_available()
def search_audios(self, *args, **kwargs):
dlg = searchDialogs.searchAudioDialog()
if dlg.get_response() == widgetUtils.OK:
q = dlg.get("term").encode("utf-8")
count = 300
auto_complete = 1
lyrics = 0
performer_only = 0
newbuff = buffers.audioBuffer(parent=self.window.tb, name=u"{0}_audiosearch".format(q.decode("utf-8"),), session=self.session, composefunc="compose_audio", parent_endpoint="audio", endpoint="search", q=q, count=count, auto_complete=auto_complete, lyrics=lyrics, performer_only=performer_only)
self.buffers.append(newbuff)
call_threaded(newbuff.get_items)
self.window.insert_buffer(newbuff.tab, _(u"Search for {0}").format(q.decode("utf-8"),), self.window.search("audios"))

@ -46,7 +46,7 @@ def stringify_values(dictionary):
stringified_values_dict = {} stringified_values_dict = {}
for key, value in dictionary.items(): for key, value in dictionary.items():
if isinstance(value, Iterable) and not isinstance(value, STRING_TYPES): if isinstance(value, Iterable) and not isinstance(value, STRING_TYPES):
value = ','.join(map(str, value)) value = u','.join(map(str, value))
stringified_values_dict[key] = value stringified_values_dict[key] = value
return stringified_values_dict return stringified_values_dict

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
import widgetUtils
import wx
class searchAudioDialog(widgetUtils.BaseDialog):
def __init__(self, value=""):
super(searchAudioDialog, self).__init__(None, -1)
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
self.SetTitle(_(u"audio Search"))
label = wx.StaticText(panel, -1, _(u"&Search"))
self.term = wx.TextCtrl(panel, -1, value)
dc = wx.WindowDC(self.term)
dc.SetFont(self.term.GetFont())
self.term.SetSize(dc.GetTextExtent("0"*40))
sizer.Add(label, 0, wx.ALL, 5)
sizer.Add(self.term, 0, wx.ALL, 5)
ok = wx.Button(panel, wx.ID_OK, _(u"&OK"))
ok.SetDefault()
cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close"))
btnsizer = wx.BoxSizer()
btnsizer.Add(ok, 0, wx.ALL, 5)
btnsizer.Add(cancel, 0, wx.ALL, 5)
sizer.Add(btnsizer, 0, wx.ALL, 5)
panel.SetSizer(sizer)
self.SetClientSize(sizer.CalcMin())

@ -6,6 +6,9 @@ class mainWindow(wx.Frame):
def makeMenu(self): def makeMenu(self):
mb = wx.MenuBar() mb = wx.MenuBar()
buffer = wx.Menu() buffer = wx.Menu()
self.new_buffer = wx.Menu()
self.search_audios = self.new_buffer.Append(wx.NewId(), _(u"Audio"))
buffer.AppendMenu(wx.NewId(), _(u"New buffer"), self.new_buffer)
self.update_buffer = buffer.Append(wx.NewId(), _(u"Update current buffer")) self.update_buffer = buffer.Append(wx.NewId(), _(u"Update current buffer"))
self.load_previous_items = buffer.Append(wx.NewId(), _(u"Load previous items")) self.load_previous_items = buffer.Append(wx.NewId(), _(u"Load previous items"))
self.load_previous_items.Enable(False) self.load_previous_items.Enable(False)