From 2fe26beef957acb43ac34e6c82067a935e80cabc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Cort=C3=A9z?= Date: Wed, 23 Mar 2016 13:52:43 -0600 Subject: [PATCH] Implemented basic audio searches --- src/controller/mainController.py | 17 ++++++++++++++++- src/vk/utils.py | 2 +- src/wxUI/dialogs/search.py | 26 ++++++++++++++++++++++++++ src/wxUI/mainWindow.py | 3 +++ 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/wxUI/dialogs/search.py diff --git a/src/controller/mainController.py b/src/controller/mainController.py index d68ff31..db6d4a8 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -11,6 +11,7 @@ from mysc.repeating_timer import RepeatingTimer from mysc.thread_utils import call_threaded from sessionmanager import session from wxUI import (mainWindow, commonMessages) +from wxUI.dialogs import search as searchDialogs from update import updater 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.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.search_audios, menuitem=self.window.search_audios) def disconnect_events(self): pub.unsubscribe(self.in_post, "posted") @@ -122,7 +124,7 @@ class Controller(object): def exit(self, *args, **kwargs): self.disconnect_events() self.window.Destroy() - wx.GetApp().ExitMainloop() + wx.GetApp().ExitMainLoop() def update_buffer(self, *args, **kwargs): b = self.get_current_buffer() @@ -132,3 +134,16 @@ class Controller(object): update = updater.do_update() if update == False: 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")) diff --git a/src/vk/utils.py b/src/vk/utils.py index 21ce89b..ab01b71 100644 --- a/src/vk/utils.py +++ b/src/vk/utils.py @@ -46,7 +46,7 @@ def stringify_values(dictionary): stringified_values_dict = {} for key, value in dictionary.items(): 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 return stringified_values_dict diff --git a/src/wxUI/dialogs/search.py b/src/wxUI/dialogs/search.py new file mode 100644 index 0000000..89c14b9 --- /dev/null +++ b/src/wxUI/dialogs/search.py @@ -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()) diff --git a/src/wxUI/mainWindow.py b/src/wxUI/mainWindow.py index bcf6364..d862d4c 100644 --- a/src/wxUI/mainWindow.py +++ b/src/wxUI/mainWindow.py @@ -6,6 +6,9 @@ class mainWindow(wx.Frame): def makeMenu(self): mb = wx.MenuBar() 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.load_previous_items = buffer.Append(wx.NewId(), _(u"Load previous items")) self.load_previous_items.Enable(False)