mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-07-17 13:46:07 -04:00
Reply and direct message are supported, updated locales and code improvements
This commit is contained in:
@@ -6,8 +6,10 @@ import webbrowser
|
||||
import output
|
||||
import config
|
||||
import sound
|
||||
import messages
|
||||
from twitter import compose, prettydate, utils
|
||||
from wxUI import buffers, dialogs
|
||||
from mysc.thread_utils import call_threaded
|
||||
|
||||
class bufferController(object):
|
||||
def __init__(self, parent=None, function=None, session=None, *args, **kwargs):
|
||||
@@ -80,6 +82,12 @@ class bufferController(object):
|
||||
else:
|
||||
self.buffer.list.select_item(0)
|
||||
|
||||
def reply(self):
|
||||
pass
|
||||
|
||||
def direct_message(self):
|
||||
pass
|
||||
|
||||
class accountPanel(bufferController):
|
||||
def __init__(self, parent, name, account):
|
||||
super(accountPanel, self).__init__(parent, None, name)
|
||||
@@ -105,6 +113,7 @@ class emptyPanel(bufferController):
|
||||
self.name = name
|
||||
self.session = None
|
||||
self.needs_init = True
|
||||
|
||||
class baseBufferController(bufferController):
|
||||
def __init__(self, parent, function, name, sessionObject, account, bufferType=None, *args, **kwargs):
|
||||
super(baseBufferController, self).__init__(parent, function, *args, **kwargs)
|
||||
@@ -160,6 +169,37 @@ class baseBufferController(bufferController):
|
||||
tweet = self.session.db[self.name][self.buffer.list.get_selected()]
|
||||
return tweet
|
||||
|
||||
def get_right_tweet(self):
|
||||
tweet = self.session.db[self.name][self.buffer.list.get_selected()]
|
||||
return tweet
|
||||
|
||||
def reply(self):
|
||||
tweet = self.get_right_tweet()
|
||||
screen_name = tweet["user"]["screen_name"]
|
||||
id = tweet["id"]
|
||||
users = utils.get_all_mentioned(tweet, self.session.db)
|
||||
message = messages.reply(self.session, _(u"Reply"), _(u"Reply to %s") % (screen_name,), "@%s" % (screen_name,), users)
|
||||
if message.message.get_response() == widgetUtils.OK:
|
||||
if message.image == None:
|
||||
call_threaded(self.session.twitter.api_call, call_name="update_status", _sound="reply_send.ogg", in_reply_to_status_id=id, status=message.message.get_text())
|
||||
else:
|
||||
call_threaded(self.session.twitter.api_call, call_name="update_status_with_media", _sound="reply_send.ogg", in_reply_to_status_id=id, status=message.message.get_text(), media=message.file)
|
||||
|
||||
def direct_message(self):
|
||||
tweet = self.get_tweet()
|
||||
if self.type == "dm":
|
||||
screen_name = tweet["sender"]["screen_name"]
|
||||
users = utils.get_all_users(tweet, self.session.db)
|
||||
elif self.type == "people":
|
||||
screen_name = tweet["screen_name"]
|
||||
users = [screen_name]
|
||||
else:
|
||||
screen_name = tweet["user"]["screen_name"]
|
||||
users = utils.get_all_users(tweet, self.session.db)
|
||||
dm = messages.dm(self.session, _(u"Direct message to %s") % (screen_name,), _(u"New direct message"), users)
|
||||
if dm.message.get_response() == widgetUtils.OK:
|
||||
call_threaded(self.session.api_call, call_name="send_direct_message", _sound="dm_sent.ogg", text=dm.message.get_text(), screen_name=dm.message.get("cb"))
|
||||
|
||||
def onFocus(self, ev):
|
||||
tweet = self.get_tweet()
|
||||
if self.session.settings["general"]["relative_times"] == True:
|
||||
@@ -220,6 +260,7 @@ class eventsBufferController(bufferController):
|
||||
self.name = name
|
||||
self.account = account
|
||||
self.id = self.buffer.GetId()
|
||||
self.buffer.account = self.account
|
||||
self.compose_function = compose.compose_event
|
||||
self.session = session
|
||||
|
||||
@@ -234,6 +275,7 @@ class peopleBufferController(baseBufferController):
|
||||
def __init__(self, parent, function, name, sessionObject, account, bufferType=None, *args, **kwargs):
|
||||
super(peopleBufferController, self).__init__(parent, function, name, sessionObject, account, bufferType="peoplePanel")
|
||||
self.compose_function = compose.compose_followers_list
|
||||
self.get_tweet = self.get_right_tweet
|
||||
|
||||
def onFocus(self, ev):
|
||||
pass
|
||||
@@ -261,6 +303,10 @@ class peopleBufferController(baseBufferController):
|
||||
tweet = self.compose_function(i, self.session.db)
|
||||
self.buffer.list.insert_item(True, *tweet)
|
||||
|
||||
def get_right_tweet(self):
|
||||
tweet = self.session.db[self.name]["items"][self.buffer.list.get_selected()]
|
||||
return tweet
|
||||
|
||||
class searchBufferController(baseBufferController):
|
||||
def start_stream(self):
|
||||
val = getattr(self.session.twitter.twitter, self.function)(*self.args, **self.kwargs)
|
||||
|
@@ -62,6 +62,8 @@ class Controller(object):
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.learn_sounds, menuitem=self.view.sounds_tutorial)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.exit, menuitem=self.view.close)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_tweet, self.view.compose)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_reply, self.view.reply)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.send_dm, self.view.dm)
|
||||
|
||||
def __init__(self):
|
||||
super(Controller, self).__init__()
|
||||
@@ -217,7 +219,9 @@ class Controller(object):
|
||||
|
||||
def post_tweet(self, event=None):
|
||||
buffer = self.get_best_buffer()
|
||||
tweet = messages.tweet(buffer.session)
|
||||
title = _(u"Tweet")
|
||||
caption = _(u"Write the tweet here")
|
||||
tweet = messages.tweet(buffer.session, title, caption, "")
|
||||
if tweet.message.get_response() == widgetUtils.OK:
|
||||
text = tweet.message.get_text()
|
||||
if tweet.image == None:
|
||||
@@ -225,11 +229,19 @@ class Controller(object):
|
||||
else:
|
||||
call_threaded(buffer.session.api_call, call_name="update_status_with_media", _sound="tweet_send.ogg", status=text, media=tweet.image)
|
||||
|
||||
def post_reply(self):
|
||||
pass
|
||||
def post_reply(self, *args, **kwargs):
|
||||
buffer = self.get_best_buffer()
|
||||
if buffer.name == "sent_direct_messages" or buffer.name == "sent-tweets": return
|
||||
elif buffer.name == "direct_messages":
|
||||
buffer.direct_message()
|
||||
else:
|
||||
buffer.reply()
|
||||
|
||||
def send_dm(self, user):
|
||||
pass
|
||||
buffer = self.get_best_buffer()
|
||||
if buffer.name == "sent_direct_messages" or buffer.name == "sent-tweets": return
|
||||
else:
|
||||
buffer.direct_message()
|
||||
|
||||
def post_retweet(self):
|
||||
pass
|
||||
|
@@ -11,16 +11,18 @@ from twitter import utils
|
||||
|
||||
class basicTweet(object):
|
||||
""" This class handles the tweet main features. Other classes should derive from this class."""
|
||||
def __init__(self, session):
|
||||
def __init__(self, session, title, caption, text, messageType="tweet"):
|
||||
super(basicTweet, self).__init__()
|
||||
self.title = title
|
||||
self.session = session
|
||||
self.message = message.tweet(_(u"Write the tweet here"), _(u"tweet - 0 characters"), "")
|
||||
self.message = getattr(message, messageType)(title, caption, text)
|
||||
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.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)
|
||||
self.text_processor()
|
||||
|
||||
def translate(self, event=None):
|
||||
dlg = translator.gui.translateDialog()
|
||||
@@ -65,8 +67,8 @@ class basicTweet(object):
|
||||
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())))
|
||||
def text_processor(self, *args, **kwargs):
|
||||
self.message.set_title(_(u"%s - %s of 140 characters") % (self.title, len(self.message.get_text())))
|
||||
if len(self.message.get_text()) > 1:
|
||||
self.message.enable_button("shortenButton")
|
||||
self.message.enable_button("unshortenButton")
|
||||
@@ -95,8 +97,8 @@ class basicTweet(object):
|
||||
dlg = audioUploader.audioUploader(self.session.settings, completed_callback)
|
||||
|
||||
class tweet(basicTweet):
|
||||
def __init__(self, session):
|
||||
super(tweet, self).__init__(session)
|
||||
def __init__(self, session, title, caption, text, messageType="tweet"):
|
||||
super(tweet, self).__init__(session, title, caption, text, messageType)
|
||||
self.image = None
|
||||
widgetUtils.connect_event(self.message.upload_image, widgetUtils.BUTTON_PRESSED, self.upload_image)
|
||||
|
||||
@@ -108,4 +110,21 @@ class tweet(basicTweet):
|
||||
self.message.set("upload_image", _(u"Upload a picture"))
|
||||
else:
|
||||
self.image = self.message.get_image()
|
||||
self.message.set("upload_image", _(u"Discard image"))
|
||||
self.message.set("upload_image", _(u"Discard image"))
|
||||
|
||||
class reply(tweet):
|
||||
def __init__(self, session, title, caption, text, users=None):
|
||||
super(reply, self).__init__(session, title, caption, text, messageType="reply")
|
||||
self.users = users
|
||||
if self.users != None:
|
||||
widgetUtils.connect_event(self.message.mentionAll, widgetUtils.BUTTON_PRESSED, self.mention_all)
|
||||
self.message.enable_button("mentionAll")
|
||||
self.message.set_cursor_at_end()
|
||||
|
||||
def mention_all(self, *args, **kwargs):
|
||||
self.message.set_text(self.message.get_text()+self.users)
|
||||
self.message.set_cursor_at_end()
|
||||
|
||||
class dm(basicTweet):
|
||||
def __init__(self, session, title, caption, text):
|
||||
super(dm, self).__init__(session, title, caption, text, messageType="dm")
|
Reference in New Issue
Block a user