From cd0aab90efffcc949fae47c6c20160c310ae0dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Cort=C3=A9z?= Date: Sat, 15 Nov 2014 19:40:19 -0600 Subject: [PATCH] Support for shorten and unshorten URL's on tweets has been added --- src/controller/messages.py | 50 ++++++++++++++++++++++++++++++++++--- src/widgetUtils/wxUtils.py | 1 + src/wxUI/dialogs/message.py | 11 ++++++++ 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/controller/messages.py b/src/controller/messages.py index 8915cc8b..1854c349 100644 --- a/src/controller/messages.py +++ b/src/controller/messages.py @@ -1,18 +1,21 @@ # -*- coding: utf-8 -*- import widgetUtils import output -from wxUI.dialogs import message +import url_shortener +import sound +from wxUI.dialogs import message, urlList from extra import translator +from twitter import utils class tweet(object): def __init__(self, session): super(tweet, self).__init__() self.message = message.tweet(_(u"Write the tweet here"), _(u"tweet - 0 characters"), "") -# widgetUtils.connect_event(self.message.upload_image, widgetUtils.BUTTON_PRESSED, self.upload_image) # widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck) # widgetUtils.connect_event(self.message.attach, widgetUtils.BUTTON_PRESSED, self.attach) -# widgetUtils.connect_event(self.message.shortenButton, widgetUtils.BUTTON_PRESSED, self.shorten) -# widgetUtils.connect_event(self.message.unshortenButton, widgetUtils.BUTTON_PRESSED, self.unshorten) + widgetUtils.connect_event(self.message.text, widgetUtils.ENTERED_TEXT, self.text_processor) + widgetUtils.connect_event(self.message.shortenButton, widgetUtils.BUTTON_PRESSED, self.shorten) + widgetUtils.connect_event(self.message.unshortenButton, widgetUtils.BUTTON_PRESSED, self.unshorten) widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate) def translate(self, event=None): @@ -29,3 +32,42 @@ class tweet(object): output.speak(_(u"Translated")) else: return + + def shorten(self, event=None): + urls = utils.find_urls_in_text(self.message.get_text()) + if len(urls) == 0: + output.speak(_(u"There's no URL to be shortened")) + elif len(urls) == 1: + self.message.set_text(self.message.get_text().replace(urls[0], url_shortener.shorten(urls[0]))) + output.speak(_(u"URL shortened")) + elif len(urls) > 1: + list_urls = urlList.urlList() + list_urls.populate_list(urls) + if list_urls.get_response() == widgetUtils.OK: + self.message.set_text(self.message.get_text().replace(urls[list_urls.get_item()], url_shortener.shorten(list_urls.get_string()))) + output.speak(_(u"URL shortened")) + + def unshorten(self, event=None): + urls = utils.find_urls_in_text(self.message.get_text()) + if len(urls) == 0: + output.speak(_(u"There's no URL to be sexpanded")) + elif len(urls) == 1: + self.message.set_text(self.message.get_text().replace(urls[0], url_shortener.unshorten(urls[0]))) + output.speak(_(u"URL expanded")) + elif len(urls) > 1: + list_urls = urlList.urlList() + list_urls.populate_list(urls) + if list_urls.get_response() == widgetUtils.OK: + self.message.set_text(self.message.get_text().replace(urls[list_urls.get_item()], url_shortener.unshorten(list_urls.get_string()))) + output.speak(_(u"URL expanded")) + + def text_processor(self, event=None): + self.message.set_title("%s of 140 characters" % (len(self.message.get_text()))) + if len(self.message.get_text()) > 1: + self.message.enable_button("shortenButton") + self.message.enable_button("unshortenButton") + else: + self.message.disable_button("shortenButton") + self.message.disable_button("unshortenButton") + if len(self.message.get_text()) > 140: + sound.player.play("max_length.ogg") diff --git a/src/widgetUtils/wxUtils.py b/src/widgetUtils/wxUtils.py index 16b921d5..449cfa98 100644 --- a/src/widgetUtils/wxUtils.py +++ b/src/widgetUtils/wxUtils.py @@ -10,6 +10,7 @@ NO = wx.ID_NO #events CLOSE_EVENT = wx.EVT_CLOSE BUTTON_PRESSED = wx.EVT_BUTTON +ENTERED_TEXT = wx.EVT_TEXT def exit_application(): wx.GetApp().ExitMainLoop() diff --git a/src/wxUI/dialogs/message.py b/src/wxUI/dialogs/message.py index 9c253ae7..9a1448d3 100644 --- a/src/wxUI/dialogs/message.py +++ b/src/wxUI/dialogs/message.py @@ -27,6 +27,17 @@ class textLimited(baseDialog.BaseWXDialog): def set_text(self, text): return self.text.ChangeValue(text) + def set_title(self, new_title): + return self.SetTitle(new_title) + + def enable_button(self, buttonName): + if getattr(self, buttonName): + return getattr(self, buttonName).Enable() + + def disable_button(self, buttonName): + if getattr(self, buttonName): + return getattr(self, buttonName).Disable() + def onSelect(self, ev): self.text.SelectAll()