mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-05-12 02:11:44 -04:00
Prepare for py3 port.
This commit is contained in:
parent
d0290b4d61
commit
e85c9b5af0
@ -4,11 +4,11 @@ import platform
|
|||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
import wx
|
import wx
|
||||||
from wxUI import buffers, dialogs, commonMessageDialogs, menus
|
from wxUI import buffers, dialogs, commonMessageDialogs, menus
|
||||||
import user
|
from . import user
|
||||||
elif platform.system() == "Linux":
|
elif platform.system() == "Linux":
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
from gtkUI import buffers, dialogs, commonMessageDialogs
|
from gtkUI import buffers, dialogs, commonMessageDialogs
|
||||||
import messages
|
from . import messages
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import arrow
|
import arrow
|
||||||
import webbrowser
|
import webbrowser
|
||||||
@ -89,11 +89,11 @@ class bufferController(object):
|
|||||||
|
|
||||||
def start_stream(self, mandatory=False):
|
def start_stream(self, mandatory=False):
|
||||||
if mandatory == True:
|
if mandatory == True:
|
||||||
output.speak(_(u"Unable to update this buffer."))
|
output.speak(_("Unable to update this buffer."))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_more_items(self):
|
def get_more_items(self):
|
||||||
output.speak(_(u"This action is not supported for this buffer"), True)
|
output.speak(_("This action is not supported for this buffer"), True)
|
||||||
|
|
||||||
def put_items_on_list(self, items):
|
def put_items_on_list(self, items):
|
||||||
pass
|
pass
|
||||||
@ -134,8 +134,8 @@ class bufferController(object):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def post_tweet(self, *args, **kwargs):
|
def post_tweet(self, *args, **kwargs):
|
||||||
title = _(u"Tweet")
|
title = _("Tweet")
|
||||||
caption = _(u"Write the tweet here")
|
caption = _("Write the tweet here")
|
||||||
tweet = messages.tweet(self.session, title, caption, "")
|
tweet = messages.tweet(self.session, title, caption, "")
|
||||||
if tweet.message.get_response() == widgetUtils.OK:
|
if tweet.message.get_response() == widgetUtils.OK:
|
||||||
text = tweet.message.get_text()
|
text = tweet.message.get_text()
|
||||||
@ -268,7 +268,7 @@ class baseBufferController(bufferController):
|
|||||||
tweetsList = []
|
tweetsList = []
|
||||||
tweet_id = tweet["id"]
|
tweet_id = tweet["id"]
|
||||||
message = None
|
message = None
|
||||||
if tweet.has_key("message"):
|
if "message" in tweet:
|
||||||
message = tweet["message"]
|
message = tweet["message"]
|
||||||
try:
|
try:
|
||||||
tweet = self.session.twitter.twitter.show_status(id=tweet_id, include_ext_alt_text=True, tweet_mode="extended")
|
tweet = self.session.twitter.twitter.show_status(id=tweet_id, include_ext_alt_text=True, tweet_mode="extended")
|
||||||
@ -350,7 +350,7 @@ class baseBufferController(bufferController):
|
|||||||
# self.buffer.list.select_item(selection+elements)
|
# self.buffer.list.select_item(selection+elements)
|
||||||
# else:
|
# else:
|
||||||
self.buffer.list.select_item(selection)
|
self.buffer.list.select_item(selection)
|
||||||
output.speak(_(u"%s items retrieved") % (str(len(elements))), True)
|
output.speak(_("%s items retrieved") % (str(len(elements))), True)
|
||||||
|
|
||||||
def remove_buffer(self, force=False):
|
def remove_buffer(self, force=False):
|
||||||
if "-timeline" in self.name:
|
if "-timeline" in self.name:
|
||||||
@ -362,7 +362,7 @@ class baseBufferController(bufferController):
|
|||||||
if self.name[:-9] in self.session.settings["other_buffers"]["timelines"]:
|
if self.name[:-9] in self.session.settings["other_buffers"]["timelines"]:
|
||||||
self.session.settings["other_buffers"]["timelines"].remove(self.name[:-9])
|
self.session.settings["other_buffers"]["timelines"].remove(self.name[:-9])
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
@ -375,19 +375,19 @@ class baseBufferController(bufferController):
|
|||||||
if dlg == widgetUtils.YES:
|
if dlg == widgetUtils.YES:
|
||||||
if self.name[:-9] in self.session.settings["other_buffers"]["favourites_timelines"]:
|
if self.name[:-9] in self.session.settings["other_buffers"]["favourites_timelines"]:
|
||||||
self.session.settings["other_buffers"]["favourites_timelines"].remove(self.name[:-9])
|
self.session.settings["other_buffers"]["favourites_timelines"].remove(self.name[:-9])
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
output.speak(_(u"This buffer is not a timeline; it can't be deleted."), True)
|
output.speak(_("This buffer is not a timeline; it can't be deleted."), True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def remove_tweet(self, id):
|
def remove_tweet(self, id):
|
||||||
if type(self.session.db[self.name]) == dict: return
|
if isinstance(self.session.db[self.name], dict): return
|
||||||
for i in xrange(0, len(self.session.db[self.name])):
|
for i in range(0, len(self.session.db[self.name])):
|
||||||
if self.session.db[self.name][i]["id"] == id:
|
if self.session.db[self.name][i]["id"] == id:
|
||||||
self.session.db[self.name].pop(i)
|
self.session.db[self.name].pop(i)
|
||||||
self.remove_item(i)
|
self.remove_item(i)
|
||||||
@ -493,7 +493,7 @@ class baseBufferController(bufferController):
|
|||||||
self.show_menu(widgetUtils.MENU, pos=self.buffer.list.list.GetPosition())
|
self.show_menu(widgetUtils.MENU, pos=self.buffer.list.list.GetPosition())
|
||||||
|
|
||||||
def get_tweet(self):
|
def get_tweet(self):
|
||||||
if self.session.db[self.name][self.buffer.list.get_selected()].has_key("retweeted_status"):
|
if "retweeted_status" in self.session.db[self.name][self.buffer.list.get_selected()]:
|
||||||
tweet = self.session.db[self.name][self.buffer.list.get_selected()]["retweeted_status"]
|
tweet = self.session.db[self.name][self.buffer.list.get_selected()]["retweeted_status"]
|
||||||
else:
|
else:
|
||||||
tweet = self.session.db[self.name][self.buffer.list.get_selected()]
|
tweet = self.session.db[self.name][self.buffer.list.get_selected()]
|
||||||
@ -508,7 +508,7 @@ class baseBufferController(bufferController):
|
|||||||
tweet = self.get_right_tweet()
|
tweet = self.get_right_tweet()
|
||||||
screen_name = tweet["user"]["screen_name"]
|
screen_name = tweet["user"]["screen_name"]
|
||||||
id = tweet["id"]
|
id = tweet["id"]
|
||||||
twishort_enabled = tweet.has_key("twishort")
|
twishort_enabled = "twishort" in tweet
|
||||||
users = utils.get_all_mentioned(tweet, self.session.db, field="screen_name")
|
users = utils.get_all_mentioned(tweet, self.session.db, field="screen_name")
|
||||||
ids = utils.get_all_mentioned(tweet, self.session.db, field="id_str")
|
ids = utils.get_all_mentioned(tweet, self.session.db, field="id_str")
|
||||||
# Build the window title
|
# Build the window title
|
||||||
@ -516,7 +516,7 @@ class baseBufferController(bufferController):
|
|||||||
title=_("Reply to {arg0}").format(arg0=screen_name)
|
title=_("Reply to {arg0}").format(arg0=screen_name)
|
||||||
else:
|
else:
|
||||||
title=_("Reply")
|
title=_("Reply")
|
||||||
message = messages.reply(self.session, title, _(u"Reply to %s") % (screen_name,), "", users=users, ids=ids)
|
message = messages.reply(self.session, title, _("Reply to %s") % (screen_name,), "", users=users, ids=ids)
|
||||||
if message.message.get_response() == widgetUtils.OK:
|
if message.message.get_response() == widgetUtils.OK:
|
||||||
params = {"_sound": "reply_send.ogg", "in_reply_to_status_id": id,}
|
params = {"_sound": "reply_send.ogg", "in_reply_to_status_id": id,}
|
||||||
text = message.message.get_text()
|
text = message.message.get_text()
|
||||||
@ -526,7 +526,7 @@ class baseBufferController(bufferController):
|
|||||||
params["auto_populate_reply_metadata"] =True
|
params["auto_populate_reply_metadata"] =True
|
||||||
else:
|
else:
|
||||||
mentioned_people = message.get_people()
|
mentioned_people = message.get_people()
|
||||||
text = "@"+screen_name+" "+mentioned_people+u" "+text
|
text = "@"+screen_name+" "+mentioned_people+" "+text
|
||||||
if len(text) > 280 and message.message.get("long_tweet") == True:
|
if len(text) > 280 and message.message.get("long_tweet") == True:
|
||||||
if message.image == None:
|
if message.image == None:
|
||||||
text = twishort.create_tweet(self.session.settings["twitter"]["user_key"], self.session.settings["twitter"]["user_secret"], text)
|
text = twishort.create_tweet(self.session.settings["twitter"]["user_key"], self.session.settings["twitter"]["user_secret"], text)
|
||||||
@ -554,7 +554,7 @@ class baseBufferController(bufferController):
|
|||||||
else:
|
else:
|
||||||
screen_name = tweet["user"]["screen_name"]
|
screen_name = tweet["user"]["screen_name"]
|
||||||
users = utils.get_all_users(tweet, self.session.db)
|
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)
|
dm = messages.dm(self.session, _("Direct message to %s") % (screen_name,), _("New direct message"), users)
|
||||||
if dm.message.get_response() == widgetUtils.OK:
|
if dm.message.get_response() == widgetUtils.OK:
|
||||||
val = self.session.api_call(call_name="send_direct_message", text=dm.message.get_text(), screen_name=dm.message.get("cb"))
|
val = self.session.api_call(call_name="send_direct_message", text=dm.message.get_text(), screen_name=dm.message.get("cb"))
|
||||||
if val != None:
|
if val != None:
|
||||||
@ -581,11 +581,11 @@ class baseBufferController(bufferController):
|
|||||||
self._retweet_with_comment(tweet, id)
|
self._retweet_with_comment(tweet, id)
|
||||||
|
|
||||||
def _retweet_with_comment(self, tweet, id, comment=''):
|
def _retweet_with_comment(self, tweet, id, comment=''):
|
||||||
if tweet.has_key("full_text"):
|
if "full_text" in tweet:
|
||||||
comments = tweet["full_text"]
|
comments = tweet["full_text"]
|
||||||
else:
|
else:
|
||||||
comments = tweet["text"]
|
comments = tweet["text"]
|
||||||
retweet = messages.tweet(self.session, _(u"Quote"), _(u"Add your comment to the tweet"), u"“@%s: %s ”" % (tweet["user"]["screen_name"], comments), max=256, messageType="retweet")
|
retweet = messages.tweet(self.session, _("Quote"), _("Add your comment to the tweet"), "“@%s: %s ”" % (tweet["user"]["screen_name"], comments), max=256, messageType="retweet")
|
||||||
if comment != '':
|
if comment != '':
|
||||||
retweet.message.set_text(comment)
|
retweet.message.set_text(comment)
|
||||||
if retweet.message.get_response() == widgetUtils.OK:
|
if retweet.message.get_response() == widgetUtils.OK:
|
||||||
@ -650,7 +650,7 @@ class baseBufferController(bufferController):
|
|||||||
if hasattr(urls_list, "destroy"): urls_list.destroy()
|
if hasattr(urls_list, "destroy"): urls_list.destroy()
|
||||||
if url != '':
|
if url != '':
|
||||||
if announce:
|
if announce:
|
||||||
output.speak(_(u"Opening URL..."), True)
|
output.speak(_("Opening URL..."), True)
|
||||||
webbrowser.open_new_tab(url)
|
webbrowser.open_new_tab(url)
|
||||||
|
|
||||||
def clear_list(self):
|
def clear_list(self):
|
||||||
@ -685,7 +685,7 @@ class baseBufferController(bufferController):
|
|||||||
users = [tweet["screen_name"]]
|
users = [tweet["screen_name"]]
|
||||||
else:
|
else:
|
||||||
users = utils.get_all_users(tweet, self.session.db)
|
users = utils.get_all_users(tweet, self.session.db)
|
||||||
dlg = dialogs.utils.selectUserDialog(title=_(u"User details"), users=users)
|
dlg = dialogs.utils.selectUserDialog(title=_("User details"), users=users)
|
||||||
if dlg.get_response() == widgetUtils.OK:
|
if dlg.get_response() == widgetUtils.OK:
|
||||||
user.profileController(session=self.session, user=dlg.get_user())
|
user.profileController(session=self.session, user=dlg.get_user())
|
||||||
if hasattr(dlg, "destroy"): dlg.destroy()
|
if hasattr(dlg, "destroy"): dlg.destroy()
|
||||||
@ -738,7 +738,7 @@ class listBufferController(baseBufferController):
|
|||||||
if dlg == widgetUtils.YES:
|
if dlg == widgetUtils.YES:
|
||||||
if self.name[:-5] in self.session.settings["other_buffers"]["lists"]:
|
if self.name[:-5] in self.session.settings["other_buffers"]["lists"]:
|
||||||
self.session.settings["other_buffers"]["lists"].remove(self.name[:-5])
|
self.session.settings["other_buffers"]["lists"].remove(self.name[:-5])
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
return True
|
return True
|
||||||
@ -760,7 +760,7 @@ class eventsBufferController(bufferController):
|
|||||||
self.get_formatted_message = self.get_message
|
self.get_formatted_message = self.get_message
|
||||||
|
|
||||||
def get_message(self):
|
def get_message(self):
|
||||||
if self.buffer.list.get_count() == 0: return _(u"Empty")
|
if self.buffer.list.get_count() == 0: return _("Empty")
|
||||||
# fix this:
|
# fix this:
|
||||||
return "%s. %s" % (self.buffer.list.list.GetItemText(self.buffer.list.get_selected()), self.buffer.list.list.GetItemText(self.buffer.list.get_selected(), 1))
|
return "%s. %s" % (self.buffer.list.list.GetItemText(self.buffer.list.get_selected()), self.buffer.list.list.GetItemText(self.buffer.list.get_selected(), 1))
|
||||||
|
|
||||||
@ -825,7 +825,7 @@ class peopleBufferController(baseBufferController):
|
|||||||
if dlg == widgetUtils.YES:
|
if dlg == widgetUtils.YES:
|
||||||
if self.name[:-10] in self.session.settings["other_buffers"]["followers_timelines"]:
|
if self.name[:-10] in self.session.settings["other_buffers"]["followers_timelines"]:
|
||||||
self.session.settings["other_buffers"]["followers_timelines"].remove(self.name[:-10])
|
self.session.settings["other_buffers"]["followers_timelines"].remove(self.name[:-10])
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
return True
|
return True
|
||||||
@ -839,14 +839,14 @@ class peopleBufferController(baseBufferController):
|
|||||||
if dlg == widgetUtils.YES:
|
if dlg == widgetUtils.YES:
|
||||||
if self.name[:-8] in self.session.settings["other_buffers"]["friends_timelines"]:
|
if self.name[:-8] in self.session.settings["other_buffers"]["friends_timelines"]:
|
||||||
self.session.settings["other_buffers"]["friends_timelines"].remove(self.name[:-8])
|
self.session.settings["other_buffers"]["friends_timelines"].remove(self.name[:-8])
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
output.speak(_(u"This buffer is not a timeline; it can't be deleted."), True)
|
output.speak(_("This buffer is not a timeline; it can't be deleted."), True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def onFocus(self, ev):
|
def onFocus(self, ev):
|
||||||
@ -861,7 +861,7 @@ class peopleBufferController(baseBufferController):
|
|||||||
def reply(self, *args, **kwargs):
|
def reply(self, *args, **kwargs):
|
||||||
tweet = self.get_right_tweet()
|
tweet = self.get_right_tweet()
|
||||||
screen_name = tweet["screen_name"]
|
screen_name = tweet["screen_name"]
|
||||||
message = messages.reply(self.session, _(u"Mention"), _(u"Mention to %s") % (screen_name,), "@%s " % (screen_name,), [screen_name,])
|
message = messages.reply(self.session, _("Mention"), _("Mention to %s") % (screen_name,), "@%s " % (screen_name,), [screen_name,])
|
||||||
if message.message.get_response() == widgetUtils.OK:
|
if message.message.get_response() == widgetUtils.OK:
|
||||||
if message.image == None:
|
if message.image == None:
|
||||||
call_threaded(self.session.api_call, call_name="update_status", _sound="reply_send.ogg", status=message.message.get_text())
|
call_threaded(self.session.api_call, call_name="update_status", _sound="reply_send.ogg", status=message.message.get_text())
|
||||||
@ -908,7 +908,7 @@ class peopleBufferController(baseBufferController):
|
|||||||
# self.buffer.list.select_item(selection)
|
# self.buffer.list.select_item(selection)
|
||||||
# else:
|
# else:
|
||||||
# self.buffer.list.select_item(selection-elements)
|
# self.buffer.list.select_item(selection-elements)
|
||||||
output.speak(_(u"%s items retrieved") % (len(items)), True)
|
output.speak(_("%s items retrieved") % (len(items)), True)
|
||||||
|
|
||||||
def put_items_on_list(self, number_of_items):
|
def put_items_on_list(self, number_of_items):
|
||||||
log.debug("The list contains %d items" % (self.buffer.list.get_count(),))
|
log.debug("The list contains %d items" % (self.buffer.list.get_count(),))
|
||||||
@ -997,7 +997,7 @@ class searchBufferController(baseBufferController):
|
|||||||
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
|
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
|
||||||
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
|
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
@ -1034,7 +1034,7 @@ class searchBufferController(baseBufferController):
|
|||||||
# self.buffer.list.select_item(selection+elements)
|
# self.buffer.list.select_item(selection+elements)
|
||||||
# else:
|
# else:
|
||||||
self.buffer.list.select_item(selection)
|
self.buffer.list.select_item(selection)
|
||||||
output.speak(_(u"%s items retrieved") % (str(len(elements))), True)
|
output.speak(_("%s items retrieved") % (str(len(elements))), True)
|
||||||
|
|
||||||
class searchPeopleBufferController(peopleBufferController):
|
class searchPeopleBufferController(peopleBufferController):
|
||||||
|
|
||||||
@ -1046,7 +1046,7 @@ class searchPeopleBufferController(peopleBufferController):
|
|||||||
self.args = args
|
self.args = args
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
self.function = function
|
self.function = function
|
||||||
if self.kwargs.has_key("page") == False:
|
if ("page" in self.kwargs) == False:
|
||||||
self.kwargs["page"] = 1
|
self.kwargs["page"] = 1
|
||||||
|
|
||||||
def start_stream(self, mandatory=False):
|
def start_stream(self, mandatory=False):
|
||||||
@ -1094,7 +1094,7 @@ class searchPeopleBufferController(peopleBufferController):
|
|||||||
# self.buffer.list.select_item(selection)
|
# self.buffer.list.select_item(selection)
|
||||||
# else:
|
# else:
|
||||||
# self.buffer.list.select_item(selection-elements)
|
# self.buffer.list.select_item(selection-elements)
|
||||||
output.speak(_(u"%s items retrieved") % (len(items)), True)
|
output.speak(_("%s items retrieved") % (len(items)), True)
|
||||||
|
|
||||||
|
|
||||||
def remove_buffer(self, force=False):
|
def remove_buffer(self, force=False):
|
||||||
@ -1106,7 +1106,7 @@ class searchPeopleBufferController(peopleBufferController):
|
|||||||
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
|
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
|
||||||
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
|
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
@ -1179,7 +1179,7 @@ class trendsBufferController(bufferController):
|
|||||||
if self.name[:-3] in self.session.settings["other_buffers"]["trending_topic_buffers"]:
|
if self.name[:-3] in self.session.settings["other_buffers"]["trending_topic_buffers"]:
|
||||||
self.session.settings["other_buffers"]["trending_topic_buffers"].remove(self.name[:-3])
|
self.session.settings["other_buffers"]["trending_topic_buffers"].remove(self.name[:-3])
|
||||||
self.session.settings.write()
|
self.session.settings.write()
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
@ -1211,8 +1211,8 @@ class trendsBufferController(bufferController):
|
|||||||
|
|
||||||
def tweet_about_this_trend(self, *args, **kwargs):
|
def tweet_about_this_trend(self, *args, **kwargs):
|
||||||
if self.buffer.list.get_count() == 0: return
|
if self.buffer.list.get_count() == 0: return
|
||||||
title = _(u"Tweet")
|
title = _("Tweet")
|
||||||
caption = _(u"Write the tweet here")
|
caption = _("Write the tweet here")
|
||||||
tweet = messages.tweet(self.session, title, caption, self.get_message()+ " ")
|
tweet = messages.tweet(self.session, title, caption, self.get_message()+ " ")
|
||||||
tweet.message.set_cursor_at_end()
|
tweet.message.set_cursor_at_end()
|
||||||
if tweet.message.get_response() == widgetUtils.OK:
|
if tweet.message.get_response() == widgetUtils.OK:
|
||||||
@ -1276,7 +1276,7 @@ class conversationBufferController(searchBufferController):
|
|||||||
else:
|
else:
|
||||||
dlg = widgetUtils.YES
|
dlg = widgetUtils.YES
|
||||||
if dlg == widgetUtils.YES:
|
if dlg == widgetUtils.YES:
|
||||||
if self.session.db.has_key(self.name):
|
if self.name in self.session.db:
|
||||||
self.session.db.pop(self.name)
|
self.session.db.pop(self.name)
|
||||||
return True
|
return True
|
||||||
elif dlg == widgetUtils.NO:
|
elif dlg == widgetUtils.NO:
|
||||||
|
@ -5,22 +5,22 @@ import application
|
|||||||
if system == "Windows":
|
if system == "Windows":
|
||||||
from update import updater
|
from update import updater
|
||||||
from wxUI import (view, dialogs, commonMessageDialogs, sysTrayIcon)
|
from wxUI import (view, dialogs, commonMessageDialogs, sysTrayIcon)
|
||||||
import settings
|
from . import settings
|
||||||
from extra import SoundsTutorial, ocr
|
from extra import SoundsTutorial, ocr
|
||||||
import keystrokeEditor
|
import keystrokeEditor
|
||||||
from keyboard_handler.wx_handler import WXKeyboardHandler
|
from keyboard_handler.wx_handler import WXKeyboardHandler
|
||||||
import userActionsController
|
from . import userActionsController
|
||||||
import trendingTopics
|
from . import trendingTopics
|
||||||
import user
|
from . import user
|
||||||
import listsController
|
from . import listsController
|
||||||
# from issueReporter import issueReporter
|
# from issueReporter import issueReporter
|
||||||
elif system == "Linux":
|
elif system == "Linux":
|
||||||
from gtkUI import (view, commonMessageDialogs)
|
from gtkUI import (view, commonMessageDialogs)
|
||||||
from twitter import utils, compose
|
from twitter import utils, compose
|
||||||
from sessionmanager import manager, sessionManager
|
from sessionmanager import manager, sessionManager
|
||||||
|
|
||||||
import buffersController
|
from . import buffersController
|
||||||
import messages
|
from . import messages
|
||||||
from sessionmanager import session as session_
|
from sessionmanager import session as session_
|
||||||
from pubsub import pub
|
from pubsub import pub
|
||||||
import sound
|
import sound
|
||||||
@ -263,9 +263,9 @@ class Controller(object):
|
|||||||
self.start_buffers(session_.sessions[i])
|
self.start_buffers(session_.sessions[i])
|
||||||
self.set_buffer_positions(session_.sessions[i])
|
self.set_buffer_positions(session_.sessions[i])
|
||||||
if config.app["app-settings"]["play_ready_sound"] == True:
|
if config.app["app-settings"]["play_ready_sound"] == True:
|
||||||
session_.sessions[session_.sessions.keys()[0]].sound.play("ready.ogg")
|
session_.sessions[list(session_.sessions.keys())[0]].sound.play("ready.ogg")
|
||||||
if config.app["app-settings"]["speak_ready_msg"] == True:
|
if config.app["app-settings"]["speak_ready_msg"] == True:
|
||||||
output.speak(_(u"Ready"))
|
output.speak(_("Ready"))
|
||||||
self.started = True
|
self.started = True
|
||||||
|
|
||||||
def create_ignored_session_buffer(self, session):
|
def create_ignored_session_buffer(self, session):
|
||||||
@ -298,97 +298,97 @@ class Controller(object):
|
|||||||
if i == 'home':
|
if i == 'home':
|
||||||
home = buffersController.baseBufferController(self.view.nb, "get_home_timeline", "home_timeline", session, session.db["user_name"], tweet_mode="extended")
|
home = buffersController.baseBufferController(self.view.nb, "get_home_timeline", "home_timeline", session, session.db["user_name"], tweet_mode="extended")
|
||||||
self.buffers.append(home)
|
self.buffers.append(home)
|
||||||
self.view.insert_buffer(home.buffer, name=_(u"Home"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(home.buffer, name=_("Home"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'mentions':
|
elif i == 'mentions':
|
||||||
mentions = buffersController.baseBufferController(self.view.nb, "get_mentions_timeline", "mentions", session, session.db["user_name"], sound="mention_received.ogg", tweet_mode="extended")
|
mentions = buffersController.baseBufferController(self.view.nb, "get_mentions_timeline", "mentions", session, session.db["user_name"], sound="mention_received.ogg", tweet_mode="extended")
|
||||||
self.buffers.append(mentions)
|
self.buffers.append(mentions)
|
||||||
self.view.insert_buffer(mentions.buffer, name=_(u"Mentions"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(mentions.buffer, name=_("Mentions"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'dm':
|
elif i == 'dm':
|
||||||
dm = buffersController.baseBufferController(self.view.nb, "get_direct_messages", "direct_messages", session, session.db["user_name"], bufferType="dmPanel", compose_func="compose_dm", sound="dm_received.ogg", full_text=True)
|
dm = buffersController.baseBufferController(self.view.nb, "get_direct_messages", "direct_messages", session, session.db["user_name"], bufferType="dmPanel", compose_func="compose_dm", sound="dm_received.ogg", full_text=True)
|
||||||
self.buffers.append(dm)
|
self.buffers.append(dm)
|
||||||
self.view.insert_buffer(dm.buffer, name=_(u"Direct messages"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(dm.buffer, name=_("Direct messages"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'sent_dm':
|
elif i == 'sent_dm':
|
||||||
sent_dm = buffersController.baseBufferController(self.view.nb, "get_sent_messages", "sent_direct_messages", session, session.db["user_name"], bufferType="dmPanel", compose_func="compose_dm", full_text=True)
|
sent_dm = buffersController.baseBufferController(self.view.nb, "get_sent_messages", "sent_direct_messages", session, session.db["user_name"], bufferType="dmPanel", compose_func="compose_dm", full_text=True)
|
||||||
self.buffers.append(sent_dm)
|
self.buffers.append(sent_dm)
|
||||||
self.view.insert_buffer(sent_dm.buffer, name=_(u"Sent direct messages"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(sent_dm.buffer, name=_("Sent direct messages"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'sent_tweets':
|
elif i == 'sent_tweets':
|
||||||
sent_tweets = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "sent_tweets", session, session.db["user_name"], bufferType="dmPanel", screen_name=session.db["user_name"], tweet_mode="extended")
|
sent_tweets = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "sent_tweets", session, session.db["user_name"], bufferType="dmPanel", screen_name=session.db["user_name"], tweet_mode="extended")
|
||||||
self.buffers.append(sent_tweets)
|
self.buffers.append(sent_tweets)
|
||||||
self.view.insert_buffer(sent_tweets.buffer, name=_(u"Sent tweets"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(sent_tweets.buffer, name=_("Sent tweets"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'favorites':
|
elif i == 'favorites':
|
||||||
favourites = buffersController.baseBufferController(self.view.nb, "get_favorites", "favourites", session, session.db["user_name"], tweet_mode="extended")
|
favourites = buffersController.baseBufferController(self.view.nb, "get_favorites", "favourites", session, session.db["user_name"], tweet_mode="extended")
|
||||||
self.buffers.append(favourites)
|
self.buffers.append(favourites)
|
||||||
|
|
||||||
self.view.insert_buffer(favourites.buffer, name=_(u"Likes"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(favourites.buffer, name=_("Likes"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'followers':
|
elif i == 'followers':
|
||||||
followers = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "followers", session, session.db["user_name"], screen_name=session.db["user_name"])
|
followers = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "followers", session, session.db["user_name"], screen_name=session.db["user_name"])
|
||||||
self.buffers.append(followers)
|
self.buffers.append(followers)
|
||||||
self.view.insert_buffer(followers.buffer, name=_(u"Followers"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(followers.buffer, name=_("Followers"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'friends':
|
elif i == 'friends':
|
||||||
friends = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "friends", session, session.db["user_name"], screen_name=session.db["user_name"])
|
friends = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "friends", session, session.db["user_name"], screen_name=session.db["user_name"])
|
||||||
self.buffers.append(friends)
|
self.buffers.append(friends)
|
||||||
self.view.insert_buffer(friends.buffer, name=_(u"Friends"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(friends.buffer, name=_("Friends"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'blocks':
|
elif i == 'blocks':
|
||||||
blocks = buffersController.peopleBufferController(self.view.nb, "list_blocks", "blocked", session, session.db["user_name"])
|
blocks = buffersController.peopleBufferController(self.view.nb, "list_blocks", "blocked", session, session.db["user_name"])
|
||||||
self.buffers.append(blocks)
|
self.buffers.append(blocks)
|
||||||
self.view.insert_buffer(blocks.buffer, name=_(u"Blocked users"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(blocks.buffer, name=_("Blocked users"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'muted':
|
elif i == 'muted':
|
||||||
muted = buffersController.peopleBufferController(self.view.nb, "list_mutes", "muted", session, session.db["user_name"])
|
muted = buffersController.peopleBufferController(self.view.nb, "list_mutes", "muted", session, session.db["user_name"])
|
||||||
self.buffers.append(muted)
|
self.buffers.append(muted)
|
||||||
self.view.insert_buffer(muted.buffer, name=_(u"Muted users"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(muted.buffer, name=_("Muted users"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
elif i == 'events':
|
elif i == 'events':
|
||||||
events = buffersController.eventsBufferController(self.view.nb, "events", session, session.db["user_name"], bufferType="dmPanel", screen_name=session.db["user_name"])
|
events = buffersController.eventsBufferController(self.view.nb, "events", session, session.db["user_name"], bufferType="dmPanel", screen_name=session.db["user_name"])
|
||||||
self.buffers.append(events)
|
self.buffers.append(events)
|
||||||
self.view.insert_buffer(events.buffer, name=_(u"Events"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(events.buffer, name=_("Events"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
timelines = buffersController.emptyPanel(self.view.nb, "timelines", session.db["user_name"])
|
timelines = buffersController.emptyPanel(self.view.nb, "timelines", session.db["user_name"])
|
||||||
self.buffers.append(timelines)
|
self.buffers.append(timelines)
|
||||||
self.view.insert_buffer(timelines.buffer , name=_(u"Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(timelines.buffer , name=_("Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
for i in session.settings["other_buffers"]["timelines"]:
|
for i in session.settings["other_buffers"]["timelines"]:
|
||||||
tl = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "%s-timeline" % (i,), session, session.db["user_name"], bufferType=None, user_id=i, tweet_mode="extended")
|
tl = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "%s-timeline" % (i,), session, session.db["user_name"], bufferType=None, user_id=i, tweet_mode="extended")
|
||||||
self.buffers.append(tl)
|
self.buffers.append(tl)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}").format(i,), pos=self.view.search("timelines", session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("Timeline for {}").format(i,), pos=self.view.search("timelines", session.db["user_name"]))
|
||||||
favs_timelines = buffersController.emptyPanel(self.view.nb, "favs_timelines", session.db["user_name"])
|
favs_timelines = buffersController.emptyPanel(self.view.nb, "favs_timelines", session.db["user_name"])
|
||||||
self.buffers.append(favs_timelines)
|
self.buffers.append(favs_timelines)
|
||||||
self.view.insert_buffer(favs_timelines.buffer , name=_(u"Likes timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(favs_timelines.buffer , name=_("Likes timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
for i in session.settings["other_buffers"]["favourites_timelines"]:
|
for i in session.settings["other_buffers"]["favourites_timelines"]:
|
||||||
tl = buffersController.baseBufferController(self.view.nb, "get_favorites", "%s-favorite" % (i,), session, session.db["user_name"], bufferType=None, user_id=i, tweet_mode="extended")
|
tl = buffersController.baseBufferController(self.view.nb, "get_favorites", "%s-favorite" % (i,), session, session.db["user_name"], bufferType=None, user_id=i, tweet_mode="extended")
|
||||||
self.buffers.append(tl)
|
self.buffers.append(tl)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"Likes for {}").format(i,), pos=self.view.search("favs_timelines", session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("Likes for {}").format(i,), pos=self.view.search("favs_timelines", session.db["user_name"]))
|
||||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
followers_timelines = buffersController.emptyPanel(self.view.nb, "followers_timelines", session.db["user_name"])
|
followers_timelines = buffersController.emptyPanel(self.view.nb, "followers_timelines", session.db["user_name"])
|
||||||
self.buffers.append(followers_timelines)
|
self.buffers.append(followers_timelines)
|
||||||
self.view.insert_buffer(followers_timelines.buffer , name=_(u"Followers' Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(followers_timelines.buffer , name=_("Followers' Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
for i in session.settings["other_buffers"]["followers_timelines"]:
|
for i in session.settings["other_buffers"]["followers_timelines"]:
|
||||||
tl = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "%s-followers" % (i,), session, session.db["user_name"], user_id=i)
|
tl = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "%s-followers" % (i,), session, session.db["user_name"], user_id=i)
|
||||||
self.buffers.append(tl)
|
self.buffers.append(tl)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"Followers for {}").format(i,), pos=self.view.search("followers_timelines", session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("Followers for {}").format(i,), pos=self.view.search("followers_timelines", session.db["user_name"]))
|
||||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
friends_timelines = buffersController.emptyPanel(self.view.nb, "friends_timelines", session.db["user_name"])
|
friends_timelines = buffersController.emptyPanel(self.view.nb, "friends_timelines", session.db["user_name"])
|
||||||
self.buffers.append(friends_timelines)
|
self.buffers.append(friends_timelines)
|
||||||
self.view.insert_buffer(friends_timelines.buffer , name=_(u"Friends' Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(friends_timelines.buffer , name=_("Friends' Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
for i in session.settings["other_buffers"]["friends_timelines"]:
|
for i in session.settings["other_buffers"]["friends_timelines"]:
|
||||||
tl = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "%s-friends" % (i,), session, session.db["user_name"], user_id=i)
|
tl = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "%s-friends" % (i,), session, session.db["user_name"], user_id=i)
|
||||||
self.buffers.append(tl)
|
self.buffers.append(tl)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"Friends for {}").format(i,), pos=self.view.search("friends_timelines", session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("Friends for {}").format(i,), pos=self.view.search("friends_timelines", session.db["user_name"]))
|
||||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
lists = buffersController.emptyPanel(self.view.nb, "lists", session.db["user_name"])
|
lists = buffersController.emptyPanel(self.view.nb, "lists", session.db["user_name"])
|
||||||
self.buffers.append(lists)
|
self.buffers.append(lists)
|
||||||
self.view.insert_buffer(lists.buffer , name=_(u"Lists"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(lists.buffer , name=_("Lists"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
for i in session.settings["other_buffers"]["lists"]:
|
for i in session.settings["other_buffers"]["lists"]:
|
||||||
tl = buffersController.listBufferController(self.view.nb, "get_list_statuses", "%s-list" % (i,), session, session.db["user_name"], bufferType=None, list_id=utils.find_list(i, session.db["lists"]), tweet_mode="extended")
|
tl = buffersController.listBufferController(self.view.nb, "get_list_statuses", "%s-list" % (i,), session, session.db["user_name"], bufferType=None, list_id=utils.find_list(i, session.db["lists"]), tweet_mode="extended")
|
||||||
session.lists.append(tl)
|
session.lists.append(tl)
|
||||||
self.buffers.append(tl)
|
self.buffers.append(tl)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"List for {}").format(i), pos=self.view.search("lists", session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("List for {}").format(i), pos=self.view.search("lists", session.db["user_name"]))
|
||||||
searches = buffersController.emptyPanel(self.view.nb, "searches", session.db["user_name"])
|
searches = buffersController.emptyPanel(self.view.nb, "searches", session.db["user_name"])
|
||||||
self.buffers.append(searches)
|
self.buffers.append(searches)
|
||||||
self.view.insert_buffer(searches.buffer , name=_(u"Searches"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(searches.buffer , name=_("Searches"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
for i in session.settings["other_buffers"]["tweet_searches"]:
|
for i in session.settings["other_buffers"]["tweet_searches"]:
|
||||||
tl = buffersController.searchBufferController(self.view.nb, "search", "%s-searchterm" % (i,), session, session.db["user_name"], bufferType="searchPanel", q=i, tweet_mode="extended")
|
tl = buffersController.searchBufferController(self.view.nb, "search", "%s-searchterm" % (i,), session, session.db["user_name"], bufferType="searchPanel", q=i, tweet_mode="extended")
|
||||||
self.buffers.append(tl)
|
self.buffers.append(tl)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"Search for {}").format(i), pos=self.view.search("searches", session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("Search for {}").format(i), pos=self.view.search("searches", session.db["user_name"]))
|
||||||
tl.timer = RepeatingTimer(180, tl.start_stream)
|
tl.timer = RepeatingTimer(180, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
for i in session.settings["other_buffers"]["trending_topic_buffers"]:
|
for i in session.settings["other_buffers"]["trending_topic_buffers"]:
|
||||||
@ -398,12 +398,12 @@ class Controller(object):
|
|||||||
self.buffers.append(buffer)
|
self.buffers.append(buffer)
|
||||||
buffer.timer = RepeatingTimer(300, buffer.start_stream)
|
buffer.timer = RepeatingTimer(300, buffer.start_stream)
|
||||||
buffer.timer.start()
|
buffer.timer.start()
|
||||||
self.view.insert_buffer(buffer.buffer, name=_(u"Trending topics for %s") % (buffer.name_), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
self.view.insert_buffer(buffer.buffer, name=_("Trending topics for %s") % (buffer.name_), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||||
|
|
||||||
def set_buffer_positions(self, session):
|
def set_buffer_positions(self, session):
|
||||||
"Sets positions for buffers if values exist in the database."
|
"Sets positions for buffers if values exist in the database."
|
||||||
for i in self.buffers:
|
for i in self.buffers:
|
||||||
if i.account == session.db["user_name"] and session.db.has_key(i.name+"_pos") and hasattr(i.buffer,'list'):
|
if i.account == session.db["user_name"] and i.name+"_pos" in session.db and hasattr(i.buffer,'list'):
|
||||||
i.buffer.list.select_item(session.db[str(i.name+"_pos")])
|
i.buffer.list.select_item(session.db[str(i.name+"_pos")])
|
||||||
|
|
||||||
def logout_account(self, session_id):
|
def logout_account(self, session_id):
|
||||||
@ -451,7 +451,7 @@ class Controller(object):
|
|||||||
search.start_stream(mandatory=True)
|
search.start_stream(mandatory=True)
|
||||||
pos=self.view.search("searches", buffer.session.db["user_name"])
|
pos=self.view.search("searches", buffer.session.db["user_name"])
|
||||||
self.insert_buffer(search, pos)
|
self.insert_buffer(search, pos)
|
||||||
self.view.insert_buffer(search.buffer, name=_(u"Search for {}").format(term), pos=pos)
|
self.view.insert_buffer(search.buffer, name=_("Search for {}").format(term), pos=pos)
|
||||||
search.timer = RepeatingTimer(180, search.start_stream)
|
search.timer = RepeatingTimer(180, search.start_stream)
|
||||||
search.timer.start()
|
search.timer.start()
|
||||||
dlg.Destroy()
|
dlg.Destroy()
|
||||||
@ -470,18 +470,18 @@ class Controller(object):
|
|||||||
return
|
return
|
||||||
page = self.get_current_buffer()
|
page = self.get_current_buffer()
|
||||||
if not hasattr(page.buffer, "list"):
|
if not hasattr(page.buffer, "list"):
|
||||||
output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
output.speak(_("No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
||||||
return
|
return
|
||||||
count = page.buffer.list.get_count()
|
count = page.buffer.list.get_count()
|
||||||
if count < 1:
|
if count < 1:
|
||||||
output.speak(_(u"Empty buffer."), True)
|
output.speak(_("Empty buffer."), True)
|
||||||
return
|
return
|
||||||
start = page.buffer.list.get_selected()
|
start = page.buffer.list.get_selected()
|
||||||
for i in xrange(start, count):
|
for i in range(start, count):
|
||||||
if string.lower() in page.buffer.list.get_text_column(i, 1).lower():
|
if string.lower() in page.buffer.list.get_text_column(i, 1).lower():
|
||||||
page.buffer.list.select_item(i)
|
page.buffer.list.select_item(i)
|
||||||
return output.speak(page.get_message(), True)
|
return output.speak(page.get_message(), True)
|
||||||
output.speak(_(u"{0} not found.").format(string,), True)
|
output.speak(_("{0} not found.").format(string,), True)
|
||||||
|
|
||||||
def seekLeft(self, *args, **kwargs):
|
def seekLeft(self, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
@ -526,7 +526,7 @@ class Controller(object):
|
|||||||
users = utils.get_all_users(tweet, buff.session.db)
|
users = utils.get_all_users(tweet, buff.session.db)
|
||||||
else:
|
else:
|
||||||
users = [tweet["screen_name"]]
|
users = [tweet["screen_name"]]
|
||||||
dlg = dialogs.utils.selectUserDialog(_(u"Select the user"), users)
|
dlg = dialogs.utils.selectUserDialog(_("Select the user"), users)
|
||||||
if dlg.get_response() == widgetUtils.OK:
|
if dlg.get_response() == widgetUtils.OK:
|
||||||
user = dlg.get_user()
|
user = dlg.get_user()
|
||||||
else:
|
else:
|
||||||
@ -541,7 +541,7 @@ class Controller(object):
|
|||||||
users = utils.get_all_users(tweet, buff.session.db)
|
users = utils.get_all_users(tweet, buff.session.db)
|
||||||
else:
|
else:
|
||||||
users = [tweet["screen_name"]]
|
users = [tweet["screen_name"]]
|
||||||
dlg = dialogs.utils.selectUserDialog(_(u"Select the user"), users)
|
dlg = dialogs.utils.selectUserDialog(_("Select the user"), users)
|
||||||
if dlg.get_response() == widgetUtils.OK:
|
if dlg.get_response() == widgetUtils.OK:
|
||||||
user = dlg.get_user()
|
user = dlg.get_user()
|
||||||
else:
|
else:
|
||||||
@ -568,7 +568,7 @@ class Controller(object):
|
|||||||
users = utils.get_all_users(tweet, buff.session.db)
|
users = utils.get_all_users(tweet, buff.session.db)
|
||||||
else:
|
else:
|
||||||
users = [tweet["screen_name"]]
|
users = [tweet["screen_name"]]
|
||||||
dlg = dialogs.utils.selectUserDialog(_(u"Select the user"), users)
|
dlg = dialogs.utils.selectUserDialog(_("Select the user"), users)
|
||||||
if dlg.get_response() == widgetUtils.OK:
|
if dlg.get_response() == widgetUtils.OK:
|
||||||
user = dlg.get_user()
|
user = dlg.get_user()
|
||||||
else:
|
else:
|
||||||
@ -818,7 +818,7 @@ class Controller(object):
|
|||||||
return
|
return
|
||||||
pos=self.view.search("timelines", buff.session.db["user_name"])
|
pos=self.view.search("timelines", buff.session.db["user_name"])
|
||||||
self.insert_buffer(tl, pos+1)
|
self.insert_buffer(tl, pos+1)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}").format(dlg.get_user()), pos=pos)
|
self.view.insert_buffer(tl.buffer, name=_("Timeline for {}").format(dlg.get_user()), pos=pos)
|
||||||
buff.session.settings["other_buffers"]["timelines"].append(usr["id_str"])
|
buff.session.settings["other_buffers"]["timelines"].append(usr["id_str"])
|
||||||
pub.sendMessage("buffer-title-changed", buffer=tl)
|
pub.sendMessage("buffer-title-changed", buffer=tl)
|
||||||
pub.sendMessage("restart-streams", streams=["timelinesStream"], session=buff.session)
|
pub.sendMessage("restart-streams", streams=["timelinesStream"], session=buff.session)
|
||||||
@ -838,7 +838,7 @@ class Controller(object):
|
|||||||
return
|
return
|
||||||
pos=self.view.search("favs_timelines", buff.session.db["user_name"])
|
pos=self.view.search("favs_timelines", buff.session.db["user_name"])
|
||||||
self.insert_buffer(tl, pos+1)
|
self.insert_buffer(tl, pos+1)
|
||||||
self.view.insert_buffer(buffer=tl.buffer, name=_(u"Likes for {}").format(dlg.get_user()), pos=pos)
|
self.view.insert_buffer(buffer=tl.buffer, name=_("Likes for {}").format(dlg.get_user()), pos=pos)
|
||||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
buff.session.settings["other_buffers"]["favourites_timelines"].append(usr["id_str"])
|
buff.session.settings["other_buffers"]["favourites_timelines"].append(usr["id_str"])
|
||||||
@ -859,7 +859,7 @@ class Controller(object):
|
|||||||
return
|
return
|
||||||
pos=self.view.search("followers_timelines", buff.session.db["user_name"])
|
pos=self.view.search("followers_timelines", buff.session.db["user_name"])
|
||||||
self.insert_buffer(tl, pos+1)
|
self.insert_buffer(tl, pos+1)
|
||||||
self.view.insert_buffer(buffer=tl.buffer, name=_(u"Followers for {}").format(dlg.get_user()), pos=pos)
|
self.view.insert_buffer(buffer=tl.buffer, name=_("Followers for {}").format(dlg.get_user()), pos=pos)
|
||||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
buff.session.settings["other_buffers"]["followers_timelines"].append(usr["id_str"])
|
buff.session.settings["other_buffers"]["followers_timelines"].append(usr["id_str"])
|
||||||
@ -880,7 +880,7 @@ class Controller(object):
|
|||||||
return
|
return
|
||||||
pos=self.view.search("friends_timelines", buff.session.db["user_name"])
|
pos=self.view.search("friends_timelines", buff.session.db["user_name"])
|
||||||
self.insert_buffer(tl, pos+1)
|
self.insert_buffer(tl, pos+1)
|
||||||
self.view.insert_buffer(buffer=tl.buffer, name=_(u"Friends for {}").format(dlg.get_user()), pos=pos)
|
self.view.insert_buffer(buffer=tl.buffer, name=_("Friends for {}").format(dlg.get_user()), pos=pos)
|
||||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||||
tl.timer.start()
|
tl.timer.start()
|
||||||
buff.session.settings["other_buffers"]["friends_timelines"].append(usr["id_str"])
|
buff.session.settings["other_buffers"]["friends_timelines"].append(usr["id_str"])
|
||||||
@ -900,7 +900,7 @@ class Controller(object):
|
|||||||
pos=self.view.search("searches", buffer.session.db["user_name"])
|
pos=self.view.search("searches", buffer.session.db["user_name"])
|
||||||
# self.buffers.append(search)
|
# self.buffers.append(search)
|
||||||
self.insert_buffer(search, pos)
|
self.insert_buffer(search, pos)
|
||||||
self.view.insert_buffer(search.buffer, name=_(u"Conversation with {0}").format(user), pos=pos)
|
self.view.insert_buffer(search.buffer, name=_("Conversation with {0}").format(user), pos=pos)
|
||||||
search.timer = RepeatingTimer(300, search.start_stream)
|
search.timer = RepeatingTimer(300, search.start_stream)
|
||||||
search.timer.start()
|
search.timer.start()
|
||||||
|
|
||||||
@ -927,7 +927,7 @@ class Controller(object):
|
|||||||
buffer = buffersController.trendsBufferController(self.view.nb, "%s_tt" % (woeid,), buff.session, buff.account, woeid)
|
buffer = buffersController.trendsBufferController(self.view.nb, "%s_tt" % (woeid,), buff.session, buff.account, woeid)
|
||||||
buffer.searchfunction = self.search
|
buffer.searchfunction = self.search
|
||||||
pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"])
|
pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"])
|
||||||
self.view.insert_buffer(buffer.buffer, name=_(u"Trending topics for %s") % (trends.get_string()), pos=pos)
|
self.view.insert_buffer(buffer.buffer, name=_("Trending topics for %s") % (trends.get_string()), pos=pos)
|
||||||
self.buffers.append(buffer)
|
self.buffers.append(buffer)
|
||||||
buffer.start_stream()
|
buffer.start_stream()
|
||||||
buffer.timer = RepeatingTimer(300, buffer.start_stream)
|
buffer.timer = RepeatingTimer(300, buffer.start_stream)
|
||||||
@ -945,11 +945,11 @@ class Controller(object):
|
|||||||
if event == None: output.speak(address[0].__str__().decode("utf-8"))
|
if event == None: output.speak(address[0].__str__().decode("utf-8"))
|
||||||
else: self.view.show_address(address[0].__str__().decode("utf-8"))
|
else: self.view.show_address(address[0].__str__().decode("utf-8"))
|
||||||
else:
|
else:
|
||||||
output.speak(_(u"There are no coordinates in this tweet"))
|
output.speak(_("There are no coordinates in this tweet"))
|
||||||
except GeocoderError:
|
except GeocoderError:
|
||||||
output.speak(_(u"There are no results for the coordinates in this tweet"))
|
output.speak(_("There are no results for the coordinates in this tweet"))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
output.speak(_(u"Error decoding coordinates. Try again later."))
|
output.speak(_("Error decoding coordinates. Try again later."))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
@ -964,11 +964,11 @@ class Controller(object):
|
|||||||
address = geocoder.reverse_geocode(y, x)
|
address = geocoder.reverse_geocode(y, x)
|
||||||
dlg = commonMessageDialogs.view_geodata(address[0].__str__())
|
dlg = commonMessageDialogs.view_geodata(address[0].__str__())
|
||||||
else:
|
else:
|
||||||
output.speak(_(u"There are no coordinates in this tweet"))
|
output.speak(_("There are no coordinates in this tweet"))
|
||||||
except GeocoderError:
|
except GeocoderError:
|
||||||
output.speak(_(u"There are no results for the coordinates in this tweet"))
|
output.speak(_("There are no results for the coordinates in this tweet"))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
output.speak(_(u"Error decoding coordinates. Try again later."))
|
output.speak(_("Error decoding coordinates. Try again later."))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
@ -1029,7 +1029,7 @@ class Controller(object):
|
|||||||
def up(self, *args, **kwargs):
|
def up(self, *args, **kwargs):
|
||||||
page = self.get_current_buffer()
|
page = self.get_current_buffer()
|
||||||
if not hasattr(page.buffer, "list"):
|
if not hasattr(page.buffer, "list"):
|
||||||
output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
output.speak(_("No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
||||||
return
|
return
|
||||||
position = page.buffer.list.get_selected()
|
position = page.buffer.list.get_selected()
|
||||||
index = position-1
|
index = position-1
|
||||||
@ -1048,7 +1048,7 @@ class Controller(object):
|
|||||||
def down(self, *args, **kwargs):
|
def down(self, *args, **kwargs):
|
||||||
page = self.get_current_buffer()
|
page = self.get_current_buffer()
|
||||||
if not hasattr(page.buffer, "list"):
|
if not hasattr(page.buffer, "list"):
|
||||||
output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
output.speak(_("No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
||||||
return
|
return
|
||||||
position = page.buffer.list.get_selected()
|
position = page.buffer.list.get_selected()
|
||||||
index = position+1
|
index = position+1
|
||||||
@ -1067,7 +1067,7 @@ class Controller(object):
|
|||||||
buff = self.view.get_current_buffer_pos()
|
buff = self.view.get_current_buffer_pos()
|
||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if not hasattr(buffer.buffer, "list"):
|
if not hasattr(buffer.buffer, "list"):
|
||||||
output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
output.speak(_("No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
||||||
return
|
return
|
||||||
if buff == self.get_first_buffer(buffer.account) or buff == 0:
|
if buff == self.get_first_buffer(buffer.account) or buff == 0:
|
||||||
self.view.change_buffer(self.get_last_buffer(buffer.account))
|
self.view.change_buffer(self.get_last_buffer(buffer.account))
|
||||||
@ -1077,16 +1077,16 @@ class Controller(object):
|
|||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if self.showing == True: buffer.buffer.set_focus_in_list()
|
if self.showing == True: buffer.buffer.set_focus_in_list()
|
||||||
try:
|
try:
|
||||||
msg = _(u"%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
msg = _("%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
||||||
except:
|
except:
|
||||||
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
msg = _("%s. Empty") % (self.view.get_buffer_text(),)
|
||||||
output.speak(msg, True)
|
output.speak(msg, True)
|
||||||
|
|
||||||
def right(self, *args, **kwargs):
|
def right(self, *args, **kwargs):
|
||||||
buff = self.view.get_current_buffer_pos()
|
buff = self.view.get_current_buffer_pos()
|
||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if not hasattr(buffer.buffer, "list"):
|
if not hasattr(buffer.buffer, "list"):
|
||||||
output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
output.speak(_("No session is currently in focus. Focus a session with the next or previous session shortcut."), True)
|
||||||
return
|
return
|
||||||
if buff == self.get_last_buffer(buffer.account) or buff+1 == self.view.get_buffer_count():
|
if buff == self.get_last_buffer(buffer.account) or buff+1 == self.view.get_buffer_count():
|
||||||
self.view.change_buffer(self.get_first_buffer(buffer.account))
|
self.view.change_buffer(self.get_first_buffer(buffer.account))
|
||||||
@ -1096,9 +1096,9 @@ class Controller(object):
|
|||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if self.showing == True: buffer.buffer.set_focus_in_list()
|
if self.showing == True: buffer.buffer.set_focus_in_list()
|
||||||
try:
|
try:
|
||||||
msg = _(u"%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
msg = _("%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
||||||
except:
|
except:
|
||||||
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
msg = _("%s. Empty") % (self.view.get_buffer_text(),)
|
||||||
output.speak(msg, True)
|
output.speak(msg, True)
|
||||||
|
|
||||||
def next_account(self, *args, **kwargs):
|
def next_account(self, *args, **kwargs):
|
||||||
@ -1111,15 +1111,15 @@ class Controller(object):
|
|||||||
self.current_account = account
|
self.current_account = account
|
||||||
buff = self.view.search("home_timeline", account)
|
buff = self.view.search("home_timeline", account)
|
||||||
if buff == None:
|
if buff == None:
|
||||||
output.speak(_(u"{0}: This account is not logged into Twitter.").format(account), True)
|
output.speak(_("{0}: This account is not logged into Twitter.").format(account), True)
|
||||||
return
|
return
|
||||||
self.view.change_buffer(buff)
|
self.view.change_buffer(buff)
|
||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if self.showing == True: buffer.buffer.set_focus_in_list()
|
if self.showing == True: buffer.buffer.set_focus_in_list()
|
||||||
try:
|
try:
|
||||||
msg = _(u"%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
msg = _("%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
||||||
except:
|
except:
|
||||||
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
msg = _("%s. Empty") % (self.view.get_buffer_text(),)
|
||||||
output.speak(msg, True)
|
output.speak(msg, True)
|
||||||
|
|
||||||
def previous_account(self, *args, **kwargs):
|
def previous_account(self, *args, **kwargs):
|
||||||
@ -1132,15 +1132,15 @@ class Controller(object):
|
|||||||
self.current_account = account
|
self.current_account = account
|
||||||
buff = self.view.search("home_timeline", account)
|
buff = self.view.search("home_timeline", account)
|
||||||
if buff == None:
|
if buff == None:
|
||||||
output.speak(_(u"{0}: This account is not logged into twitter.").format(account), True)
|
output.speak(_("{0}: This account is not logged into twitter.").format(account), True)
|
||||||
return
|
return
|
||||||
self.view.change_buffer(buff)
|
self.view.change_buffer(buff)
|
||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if self.showing == True: buffer.buffer.set_focus_in_list()
|
if self.showing == True: buffer.buffer.set_focus_in_list()
|
||||||
try:
|
try:
|
||||||
msg = _(u"%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
msg = _("%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
||||||
except:
|
except:
|
||||||
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
msg = _("%s. Empty") % (self.view.get_buffer_text(),)
|
||||||
output.speak(msg, True)
|
output.speak(msg, True)
|
||||||
|
|
||||||
def go_home(self):
|
def go_home(self):
|
||||||
@ -1235,7 +1235,7 @@ class Controller(object):
|
|||||||
buffer = self.search_buffer("mentions", user)
|
buffer = self.search_buffer("mentions", user)
|
||||||
if buffer == None: return
|
if buffer == None: return
|
||||||
play_sound = "mention_received.ogg"
|
play_sound = "mention_received.ogg"
|
||||||
message = _(u"One mention from %s ") % (data["user"]["name"])
|
message = _("One mention from %s ") % (data["user"]["name"])
|
||||||
if "mentions" not in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
if "mentions" not in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
||||||
self.notify(buffer.session, play_sound=play_sound, message=message)
|
self.notify(buffer.session, play_sound=play_sound, message=message)
|
||||||
buffer.add_new_item(data)
|
buffer.add_new_item(data)
|
||||||
@ -1244,7 +1244,7 @@ class Controller(object):
|
|||||||
buffer = self.search_buffer("direct_messages", user)
|
buffer = self.search_buffer("direct_messages", user)
|
||||||
if buffer == None: return
|
if buffer == None: return
|
||||||
play_sound = "dm_received.ogg"
|
play_sound = "dm_received.ogg"
|
||||||
message = _(u"New direct message")
|
message = _("New direct message")
|
||||||
if "direct_messages" not in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
if "direct_messages" not in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
||||||
self.notify(buffer.session, play_sound=play_sound, message=message)
|
self.notify(buffer.session, play_sound=play_sound, message=message)
|
||||||
buffer.add_new_item(data)
|
buffer.add_new_item(data)
|
||||||
@ -1324,7 +1324,7 @@ class Controller(object):
|
|||||||
play_sound = "tweet_timeline.ogg"
|
play_sound = "tweet_timeline.ogg"
|
||||||
if "%s-timeline" % (who,) not in buffer.session.settings["other_buffers"]["muted_buffers"] and buffer.session.settings["sound"]["session_mute"] == False:
|
if "%s-timeline" % (who,) not in buffer.session.settings["other_buffers"]["muted_buffers"] and buffer.session.settings["sound"]["session_mute"] == False:
|
||||||
self.notify(buffer.session, play_sound=play_sound)
|
self.notify(buffer.session, play_sound=play_sound)
|
||||||
output.speak(_(u"One tweet from %s") % (data["user"]["name"]))
|
output.speak(_("One tweet from %s") % (data["user"]["name"]))
|
||||||
buffer.add_new_item(data)
|
buffer.add_new_item(data)
|
||||||
|
|
||||||
def manage_item_in_list(self, data, user, where):
|
def manage_item_in_list(self, data, user, where):
|
||||||
@ -1333,7 +1333,7 @@ class Controller(object):
|
|||||||
play_sound = "list_tweet.ogg"
|
play_sound = "list_tweet.ogg"
|
||||||
if "%s" % (where,) not in buffer.session.settings["other_buffers"]["muted_buffers"] and buffer.session.settings["sound"]["session_mute"] == False:
|
if "%s" % (where,) not in buffer.session.settings["other_buffers"]["muted_buffers"] and buffer.session.settings["sound"]["session_mute"] == False:
|
||||||
self.notify(buffer.session, play_sound=play_sound)
|
self.notify(buffer.session, play_sound=play_sound)
|
||||||
output.speak(_(u"One tweet from %s") % (data["user"]["name"]))
|
output.speak(_("One tweet from %s") % (data["user"]["name"]))
|
||||||
buffer.add_new_item(data)
|
buffer.add_new_item(data)
|
||||||
|
|
||||||
def start_buffers(self, session):
|
def start_buffers(self, session):
|
||||||
@ -1397,43 +1397,43 @@ class Controller(object):
|
|||||||
if buffer == "favourites":
|
if buffer == "favourites":
|
||||||
favourites = buffersController.baseBufferController(self.view.nb, "get_favorites", "favourites", buff.session, buff.session.db["user_name"])
|
favourites = buffersController.baseBufferController(self.view.nb, "get_favorites", "favourites", buff.session, buff.session.db["user_name"])
|
||||||
self.buffers.append(favourites)
|
self.buffers.append(favourites)
|
||||||
self.view.insert_buffer(favourites.buffer, name=_(u"Likes"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
self.view.insert_buffer(favourites.buffer, name=_("Likes"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
||||||
favourites.start_stream()
|
favourites.start_stream()
|
||||||
if buffer == "followers":
|
if buffer == "followers":
|
||||||
followers = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "followers", buff.session, buff.session.db["user_name"], screen_name=buff.session.db["user_name"])
|
followers = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "followers", buff.session, buff.session.db["user_name"], screen_name=buff.session.db["user_name"])
|
||||||
self.buffers.append(followers)
|
self.buffers.append(followers)
|
||||||
self.view.insert_buffer(followers.buffer, name=_(u"Followers"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
self.view.insert_buffer(followers.buffer, name=_("Followers"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
||||||
followers.start_stream()
|
followers.start_stream()
|
||||||
elif buffer == "friends":
|
elif buffer == "friends":
|
||||||
friends = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "friends", buff.session, buff.session.db["user_name"], screen_name=buff.session.db["user_name"])
|
friends = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "friends", buff.session, buff.session.db["user_name"], screen_name=buff.session.db["user_name"])
|
||||||
self.buffers.append(friends)
|
self.buffers.append(friends)
|
||||||
self.view.insert_buffer(friends.buffer, name=_(u"Friends"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
self.view.insert_buffer(friends.buffer, name=_("Friends"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
||||||
friends.start_stream()
|
friends.start_stream()
|
||||||
elif buffer == "blocked":
|
elif buffer == "blocked":
|
||||||
blocks = buffersController.peopleBufferController(self.view.nb, "list_blocks", "blocked", buff.session, buff.session.db["user_name"])
|
blocks = buffersController.peopleBufferController(self.view.nb, "list_blocks", "blocked", buff.session, buff.session.db["user_name"])
|
||||||
self.buffers.append(blocks)
|
self.buffers.append(blocks)
|
||||||
self.view.insert_buffer(blocks.buffer, name=_(u"Blocked users"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
self.view.insert_buffer(blocks.buffer, name=_("Blocked users"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
||||||
blocks.start_stream()
|
blocks.start_stream()
|
||||||
elif buffer == "muted":
|
elif buffer == "muted":
|
||||||
muted = buffersController.peopleBufferController(self.view.nb, "get_muted_users_list", "muted", buff.session, buff.session.db["user_name"])
|
muted = buffersController.peopleBufferController(self.view.nb, "get_muted_users_list", "muted", buff.session, buff.session.db["user_name"])
|
||||||
self.buffers.append(muted)
|
self.buffers.append(muted)
|
||||||
self.view.insert_buffer(muted.buffer, name=_(u"Muted users"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
self.view.insert_buffer(muted.buffer, name=_("Muted users"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
||||||
muted.start_stream()
|
muted.start_stream()
|
||||||
elif buffer == "events":
|
elif buffer == "events":
|
||||||
events = buffersController.eventsBufferController(self.view.nb, "events", buff.session, buff.session.db["user_name"], bufferType="dmPanel", screen_name=buff.session.db["user_name"])
|
events = buffersController.eventsBufferController(self.view.nb, "events", buff.session, buff.session.db["user_name"], bufferType="dmPanel", screen_name=buff.session.db["user_name"])
|
||||||
self.buffers.append(events)
|
self.buffers.append(events)
|
||||||
self.view.insert_buffer(events.buffer, name=_(u"Events"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
self.view.insert_buffer(events.buffer, name=_("Events"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
||||||
elif create == False:
|
elif create == False:
|
||||||
self.destroy_buffer(buffer, buff.session.db["user_name"])
|
self.destroy_buffer(buffer, buff.session.db["user_name"])
|
||||||
elif buffer == "list":
|
elif buffer == "list":
|
||||||
if create in buff.session.settings["other_buffers"]["lists"]:
|
if create in buff.session.settings["other_buffers"]["lists"]:
|
||||||
output.speak(_(u"This list is already opened"), True)
|
output.speak(_("This list is already opened"), True)
|
||||||
return
|
return
|
||||||
tl = buffersController.listBufferController(self.view.nb, "get_list_statuses", create+"-list", buff.session, buff.session.db["user_name"], bufferType=None, list_id=utils.find_list(create, buff.session.db["lists"]))
|
tl = buffersController.listBufferController(self.view.nb, "get_list_statuses", create+"-list", buff.session, buff.session.db["user_name"], bufferType=None, list_id=utils.find_list(create, buff.session.db["lists"]))
|
||||||
buff.session.lists.append(tl)
|
buff.session.lists.append(tl)
|
||||||
pos=self.view.search("lists", buff.session.db["user_name"])
|
pos=self.view.search("lists", buff.session.db["user_name"])
|
||||||
self.insert_buffer(tl, pos)
|
self.insert_buffer(tl, pos)
|
||||||
self.view.insert_buffer(tl.buffer, name=_(u"List for {}").format(create), pos=self.view.search("lists", buff.session.db["user_name"]))
|
self.view.insert_buffer(tl.buffer, name=_("List for {}").format(create), pos=self.view.search("lists", buff.session.db["user_name"]))
|
||||||
tl.start_stream()
|
tl.start_stream()
|
||||||
buff.session.settings["other_buffers"]["lists"].append(create)
|
buff.session.settings["other_buffers"]["lists"].append(create)
|
||||||
buff.session.settings.write()
|
buff.session.settings.write()
|
||||||
@ -1487,20 +1487,20 @@ class Controller(object):
|
|||||||
if hasattr(buffer, "session") and buffer.session == None: return
|
if hasattr(buffer, "session") and buffer.session == None: return
|
||||||
if buffer.name not in buffer.session.settings["other_buffers"]["autoread_buffers"]:
|
if buffer.name not in buffer.session.settings["other_buffers"]["autoread_buffers"]:
|
||||||
buffer.session.settings["other_buffers"]["autoread_buffers"].append(buffer.name)
|
buffer.session.settings["other_buffers"]["autoread_buffers"].append(buffer.name)
|
||||||
output.speak(_(u"The auto-reading of new tweets is enabled for this buffer"), True)
|
output.speak(_("The auto-reading of new tweets is enabled for this buffer"), True)
|
||||||
elif buffer.name in buffer.session.settings["other_buffers"]["autoread_buffers"]:
|
elif buffer.name in buffer.session.settings["other_buffers"]["autoread_buffers"]:
|
||||||
buffer.session.settings["other_buffers"]["autoread_buffers"].remove(buffer.name)
|
buffer.session.settings["other_buffers"]["autoread_buffers"].remove(buffer.name)
|
||||||
output.speak(_(u"The auto-reading of new tweets is disabled for this buffer"), True)
|
output.speak(_("The auto-reading of new tweets is disabled for this buffer"), True)
|
||||||
buffer.session.settings.write()
|
buffer.session.settings.write()
|
||||||
|
|
||||||
def toggle_session_mute(self, *args, **kwargs):
|
def toggle_session_mute(self, *args, **kwargs):
|
||||||
buffer = self.get_best_buffer()
|
buffer = self.get_best_buffer()
|
||||||
if buffer.session.settings["sound"]["session_mute"] == False:
|
if buffer.session.settings["sound"]["session_mute"] == False:
|
||||||
buffer.session.settings["sound"]["session_mute"] = True
|
buffer.session.settings["sound"]["session_mute"] = True
|
||||||
output.speak(_(u"Session mute on"), True)
|
output.speak(_("Session mute on"), True)
|
||||||
elif buffer.session.settings["sound"]["session_mute"] == True:
|
elif buffer.session.settings["sound"]["session_mute"] == True:
|
||||||
buffer.session.settings["sound"]["session_mute"] = False
|
buffer.session.settings["sound"]["session_mute"] = False
|
||||||
output.speak(_(u"Session mute off"), True)
|
output.speak(_("Session mute off"), True)
|
||||||
buffer.session.settings.write()
|
buffer.session.settings.write()
|
||||||
|
|
||||||
def toggle_buffer_mute(self, *args, **kwargs):
|
def toggle_buffer_mute(self, *args, **kwargs):
|
||||||
@ -1508,10 +1508,10 @@ class Controller(object):
|
|||||||
if hasattr(buffer, "session") and buffer.session == None: return
|
if hasattr(buffer, "session") and buffer.session == None: return
|
||||||
if buffer.name not in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
if buffer.name not in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
||||||
buffer.session.settings["other_buffers"]["muted_buffers"].append(buffer.name)
|
buffer.session.settings["other_buffers"]["muted_buffers"].append(buffer.name)
|
||||||
output.speak(_(u"Buffer mute on"), True)
|
output.speak(_("Buffer mute on"), True)
|
||||||
elif buffer.name in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
elif buffer.name in buffer.session.settings["other_buffers"]["muted_buffers"]:
|
||||||
buffer.session.settings["other_buffers"]["muted_buffers"].remove(buffer.name)
|
buffer.session.settings["other_buffers"]["muted_buffers"].remove(buffer.name)
|
||||||
output.speak(_(u"Buffer mute off"), True)
|
output.speak(_("Buffer mute off"), True)
|
||||||
buffer.session.settings.write()
|
buffer.session.settings.write()
|
||||||
|
|
||||||
def view_documentation(self, *args, **kwargs):
|
def view_documentation(self, *args, **kwargs):
|
||||||
@ -1534,7 +1534,7 @@ class Controller(object):
|
|||||||
|
|
||||||
def copy_to_clipboard(self, *args, **kwargs):
|
def copy_to_clipboard(self, *args, **kwargs):
|
||||||
output.copy(self.get_current_buffer().get_message())
|
output.copy(self.get_current_buffer().get_message())
|
||||||
output.speak(_(u"Copied"))
|
output.speak(_("Copied"))
|
||||||
|
|
||||||
def repeat_item(self, *args, **kwargs):
|
def repeat_item(self, *args, **kwargs):
|
||||||
output.speak(self.get_current_buffer().get_message())
|
output.speak(self.get_current_buffer().get_message())
|
||||||
@ -1561,13 +1561,13 @@ class Controller(object):
|
|||||||
def update_buffer(self, *args, **kwargs):
|
def update_buffer(self, *args, **kwargs):
|
||||||
bf = self.get_current_buffer()
|
bf = self.get_current_buffer()
|
||||||
if not hasattr(bf, "start_stream"):
|
if not hasattr(bf, "start_stream"):
|
||||||
output.speak(_(u"Unable to update this buffer."))
|
output.speak(_("Unable to update this buffer."))
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
output.speak(_(u"Updating buffer..."))
|
output.speak(_("Updating buffer..."))
|
||||||
n = bf.start_stream(mandatory=True)
|
n = bf.start_stream(mandatory=True)
|
||||||
if n != None:
|
if n != None:
|
||||||
output.speak(_(u"{0} items retrieved").format(n,))
|
output.speak(_("{0} items retrieved").format(n,))
|
||||||
|
|
||||||
def on_tweet_deleted(self, data):
|
def on_tweet_deleted(self, data):
|
||||||
id = data["delete"]["status"]["id"]
|
id = data["delete"]["status"]["id"]
|
||||||
@ -1577,28 +1577,28 @@ class Controller(object):
|
|||||||
|
|
||||||
def buffer_title_changed(self, buffer):
|
def buffer_title_changed(self, buffer):
|
||||||
if "-timeline" in buffer.name:
|
if "-timeline" in buffer.name:
|
||||||
title = _(u"Timeline for {}").format(buffer.username,)
|
title = _("Timeline for {}").format(buffer.username,)
|
||||||
elif "-favorite" in buffer.name:
|
elif "-favorite" in buffer.name:
|
||||||
title = _(u"Likes for {}").format(buffer.username,)
|
title = _("Likes for {}").format(buffer.username,)
|
||||||
elif "-followers" in buffer.name:
|
elif "-followers" in buffer.name:
|
||||||
title = _(u"Followers for {}").format(buffer.username,)
|
title = _("Followers for {}").format(buffer.username,)
|
||||||
elif "-friends" in buffer.name:
|
elif "-friends" in buffer.name:
|
||||||
title = _(u"Friends for {}").format(buffer.username,)
|
title = _("Friends for {}").format(buffer.username,)
|
||||||
buffer_index = self.view.search(buffer.name, buffer.account)
|
buffer_index = self.view.search(buffer.name, buffer.account)
|
||||||
self.view.set_page_title(buffer_index, title)
|
self.view.set_page_title(buffer_index, title)
|
||||||
|
|
||||||
def ocr_image(self, *args, **kwargs):
|
def ocr_image(self, *args, **kwargs):
|
||||||
buffer = self.get_current_buffer()
|
buffer = self.get_current_buffer()
|
||||||
if hasattr(buffer, "get_right_tweet") == False:
|
if hasattr(buffer, "get_right_tweet") == False:
|
||||||
output.speak(_(u"Invalid buffer"))
|
output.speak(_("Invalid buffer"))
|
||||||
return
|
return
|
||||||
tweet = buffer.get_tweet()
|
tweet = buffer.get_tweet()
|
||||||
if tweet.has_key("entities") == False or tweet["entities"].has_key("media") == False:
|
if ("entities" in tweet) == False or ("media" in tweet["entities"]) == False:
|
||||||
output.speak(_(u"This tweet doesn't contain images"))
|
output.speak(_("This tweet doesn't contain images"))
|
||||||
return
|
return
|
||||||
if len(tweet["entities"]["media"]) > 1:
|
if len(tweet["entities"]["media"]) > 1:
|
||||||
image_list = [_(u"Picture {0}").format(i,) for i in xrange(0, len(tweet["entities"]["media"]))]
|
image_list = [_("Picture {0}").format(i,) for i in range(0, len(tweet["entities"]["media"]))]
|
||||||
dialog = dialogs.urlList.urlList(title=_(u"Select the picture"))
|
dialog = dialogs.urlList.urlList(title=_("Select the picture"))
|
||||||
if dialog.get_response() == widgetUtils.OK:
|
if dialog.get_response() == widgetUtils.OK:
|
||||||
img = tweet["entities"]["media"][dialog.get_item()]
|
img = tweet["entities"]["media"][dialog.get_item()]
|
||||||
else:
|
else:
|
||||||
@ -1614,7 +1614,7 @@ class Controller(object):
|
|||||||
try:
|
try:
|
||||||
text = api.OCR_URL(img["media_url"], lang=ocr_lang)
|
text = api.OCR_URL(img["media_url"], lang=ocr_lang)
|
||||||
except ocr.OCRSpace.APIError as er:
|
except ocr.OCRSpace.APIError as er:
|
||||||
output.speak(_(u"Unable to extract text"))
|
output.speak(_("Unable to extract text"))
|
||||||
return
|
return
|
||||||
msg = messages.viewTweet(text["ParsedText"], [], False)
|
msg = messages.viewTweet(text["ParsedText"], [], False)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import platform
|
import platform
|
||||||
import attach
|
from . import attach
|
||||||
system = platform.system()
|
system = platform.system()
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import output
|
import output
|
||||||
@ -45,18 +45,18 @@ class basicTweet(object):
|
|||||||
self.message.set_text(msg)
|
self.message.set_text(msg)
|
||||||
self.text_processor()
|
self.text_processor()
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
output.speak(_(u"Translated"))
|
output.speak(_("Translated"))
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
def shorten(self, event=None):
|
def shorten(self, event=None):
|
||||||
urls = utils.find_urls_in_text(self.message.get_text())
|
urls = utils.find_urls_in_text(self.message.get_text())
|
||||||
if len(urls) == 0:
|
if len(urls) == 0:
|
||||||
output.speak(_(u"There's no URL to be shortened"))
|
output.speak(_("There's no URL to be shortened"))
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
elif len(urls) == 1:
|
elif len(urls) == 1:
|
||||||
self.message.set_text(self.message.get_text().replace(urls[0], url_shortener.shorten(urls[0])))
|
self.message.set_text(self.message.get_text().replace(urls[0], url_shortener.shorten(urls[0])))
|
||||||
output.speak(_(u"URL shortened"))
|
output.speak(_("URL shortened"))
|
||||||
self.text_processor()
|
self.text_processor()
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
elif len(urls) > 1:
|
elif len(urls) > 1:
|
||||||
@ -64,18 +64,18 @@ class basicTweet(object):
|
|||||||
list_urls.populate_list(urls)
|
list_urls.populate_list(urls)
|
||||||
if list_urls.get_response() == widgetUtils.OK:
|
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())))
|
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"))
|
output.speak(_("URL shortened"))
|
||||||
self.text_processor()
|
self.text_processor()
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
|
|
||||||
def unshorten(self, event=None):
|
def unshorten(self, event=None):
|
||||||
urls = utils.find_urls_in_text(self.message.get_text())
|
urls = utils.find_urls_in_text(self.message.get_text())
|
||||||
if len(urls) == 0:
|
if len(urls) == 0:
|
||||||
output.speak(_(u"There's no URL to be expanded"))
|
output.speak(_("There's no URL to be expanded"))
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
elif len(urls) == 1:
|
elif len(urls) == 1:
|
||||||
self.message.set_text(self.message.get_text().replace(urls[0], url_shortener.unshorten(urls[0])))
|
self.message.set_text(self.message.get_text().replace(urls[0], url_shortener.unshorten(urls[0])))
|
||||||
output.speak(_(u"URL expanded"))
|
output.speak(_("URL expanded"))
|
||||||
self.text_processor()
|
self.text_processor()
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
elif len(urls) > 1:
|
elif len(urls) > 1:
|
||||||
@ -83,7 +83,7 @@ class basicTweet(object):
|
|||||||
list_urls.populate_list(urls)
|
list_urls.populate_list(urls)
|
||||||
if list_urls.get_response() == widgetUtils.OK:
|
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())))
|
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"))
|
output.speak(_("URL expanded"))
|
||||||
self.text_processor()
|
self.text_processor()
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
|
|
||||||
@ -95,11 +95,11 @@ class basicTweet(object):
|
|||||||
self.message.disable_button("shortenButton")
|
self.message.disable_button("shortenButton")
|
||||||
self.message.disable_button("unshortenButton")
|
self.message.disable_button("unshortenButton")
|
||||||
if self.message.get("long_tweet") == False:
|
if self.message.get("long_tweet") == False:
|
||||||
self.message.set_title(_(u"%s - %s of %d characters") % (self.title, len(self.message.get_text()), self.max))
|
self.message.set_title(_("%s - %s of %d characters") % (self.title, len(self.message.get_text()), self.max))
|
||||||
if len(self.message.get_text()) > self.max:
|
if len(self.message.get_text()) > self.max:
|
||||||
self.session.sound.play("max_length.ogg")
|
self.session.sound.play("max_length.ogg")
|
||||||
else:
|
else:
|
||||||
self.message.set_title(_(u"%s - %s characters") % (self.title, len(self.message.get_text())))
|
self.message.set_title(_("%s - %s characters") % (self.title, len(self.message.get_text())))
|
||||||
|
|
||||||
def spellcheck(self, event=None):
|
def spellcheck(self, event=None):
|
||||||
text = self.message.get_text()
|
text = self.message.get_text()
|
||||||
@ -118,7 +118,7 @@ class basicTweet(object):
|
|||||||
self.message.set_text(self.message.get_text()+url+" #audio")
|
self.message.set_text(self.message.get_text()+url+" #audio")
|
||||||
self.text_processor()
|
self.text_processor()
|
||||||
else:
|
else:
|
||||||
output.speak(_(u"Unable to upload the audio"))
|
output.speak(_("Unable to upload the audio"))
|
||||||
dlg.cleanup()
|
dlg.cleanup()
|
||||||
dlg = audioUploader.audioUploader(self.session.settings, completed_callback)
|
dlg = audioUploader.audioUploader(self.session.settings, completed_callback)
|
||||||
self.message.text_focus()
|
self.message.text_focus()
|
||||||
@ -165,14 +165,14 @@ class reply(tweet):
|
|||||||
|
|
||||||
def get_ids(self):
|
def get_ids(self):
|
||||||
excluded_ids = ""
|
excluded_ids = ""
|
||||||
for i in xrange(0, len(self.message.checkboxes)):
|
for i in range(0, len(self.message.checkboxes)):
|
||||||
if self.message.checkboxes[i].GetValue() == False:
|
if self.message.checkboxes[i].GetValue() == False:
|
||||||
excluded_ids = excluded_ids + "{0},".format(self.ids[i],)
|
excluded_ids = excluded_ids + "{0},".format(self.ids[i],)
|
||||||
return excluded_ids
|
return excluded_ids
|
||||||
|
|
||||||
def get_people(self):
|
def get_people(self):
|
||||||
people = ""
|
people = ""
|
||||||
for i in xrange(0, len(self.message.checkboxes)):
|
for i in range(0, len(self.message.checkboxes)):
|
||||||
if self.message.checkboxes[i].GetValue() == True:
|
if self.message.checkboxes[i].GetValue() == True:
|
||||||
people = people + "{0} ".format(self.message.checkboxes[i].GetLabel(),)
|
people = people + "{0} ".format(self.message.checkboxes[i].GetLabel(),)
|
||||||
return people
|
return people
|
||||||
@ -196,27 +196,27 @@ class viewTweet(basicTweet):
|
|||||||
if is_tweet == True:
|
if is_tweet == True:
|
||||||
image_description = []
|
image_description = []
|
||||||
text = ""
|
text = ""
|
||||||
for i in xrange(0, len(tweetList)):
|
for i in range(0, len(tweetList)):
|
||||||
# tweets with message keys are longer tweets, the message value is the full messaje taken from twishort.
|
# tweets with message keys are longer tweets, the message value is the full messaje taken from twishort.
|
||||||
if tweetList[i].has_key("message") and tweetList[i]["is_quote_status"] == False:
|
if "message" in tweetList[i] and tweetList[i]["is_quote_status"] == False:
|
||||||
value = "message"
|
value = "message"
|
||||||
else:
|
else:
|
||||||
value = "full_text"
|
value = "full_text"
|
||||||
if tweetList[i].has_key("retweeted_status") and tweetList[i]["is_quote_status"] == False:
|
if "retweeted_status" in tweetList[i] and tweetList[i]["is_quote_status"] == False:
|
||||||
if tweetList[i].has_key("message") == False:
|
if ("message" in tweetList[i]) == False:
|
||||||
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i]["retweeted_status"]["full_text"])
|
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i]["retweeted_status"]["full_text"])
|
||||||
else:
|
else:
|
||||||
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i][value])
|
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i][value])
|
||||||
else:
|
else:
|
||||||
text = text + " @%s: %s\n" % (tweetList[i]["user"]["screen_name"], tweetList[i][value])
|
text = text + " @%s: %s\n" % (tweetList[i]["user"]["screen_name"], tweetList[i][value])
|
||||||
# tweets with extended_entities could include image descriptions.
|
# tweets with extended_entities could include image descriptions.
|
||||||
if tweetList[i].has_key("extended_entities") and tweetList[i]["extended_entities"].has_key("media"):
|
if "extended_entities" in tweetList[i] and "media" in tweetList[i]["extended_entities"]:
|
||||||
for z in tweetList[i]["extended_entities"]["media"]:
|
for z in tweetList[i]["extended_entities"]["media"]:
|
||||||
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
|
if "ext_alt_text" in z and z["ext_alt_text"] != None:
|
||||||
image_description.append(z["ext_alt_text"])
|
image_description.append(z["ext_alt_text"])
|
||||||
if tweetList[i].has_key("retweeted_status") and tweetList[i]["retweeted_status"].has_key("extended_entities") and tweetList[i]["retweeted_status"]["extended_entities"].has_key("media"):
|
if "retweeted_status" in tweetList[i] and "extended_entities" in tweetList[i]["retweeted_status"] and "media" in tweetList[i]["retweeted_status"]["extended_entities"]:
|
||||||
for z in tweetList[i]["retweeted_status"]["extended_entities"]["media"]:
|
for z in tweetList[i]["retweeted_status"]["extended_entities"]["media"]:
|
||||||
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
|
if "ext_alt_text" in z and z["ext_alt_text"] != None:
|
||||||
image_description.append(z["ext_alt_text"])
|
image_description.append(z["ext_alt_text"])
|
||||||
# set rt and likes counters.
|
# set rt and likes counters.
|
||||||
rt_count = str(tweet["retweet_count"])
|
rt_count = str(tweet["retweet_count"])
|
||||||
@ -224,25 +224,25 @@ class viewTweet(basicTweet):
|
|||||||
# Gets the client from where this tweet was made.
|
# Gets the client from where this tweet was made.
|
||||||
source = str(re.sub(r"(?s)<.*?>", "", tweet["source"].encode("utf-8")))
|
source = str(re.sub(r"(?s)<.*?>", "", tweet["source"].encode("utf-8")))
|
||||||
if text == "":
|
if text == "":
|
||||||
if tweet.has_key("message"):
|
if "message" in tweet:
|
||||||
value = "message"
|
value = "message"
|
||||||
else:
|
else:
|
||||||
value = "full_text"
|
value = "full_text"
|
||||||
if tweet.has_key("retweeted_status"):
|
if "retweeted_status" in tweet:
|
||||||
if tweet.has_key("message") == False:
|
if ("message" in tweet) == False:
|
||||||
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet["retweeted_status"]["full_text"])
|
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet["retweeted_status"]["full_text"])
|
||||||
else:
|
else:
|
||||||
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet[value])
|
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet[value])
|
||||||
else:
|
else:
|
||||||
text = tweet[value]
|
text = tweet[value]
|
||||||
text = self.clear_text(text)
|
text = self.clear_text(text)
|
||||||
if tweet.has_key("extended_entities") and tweet["extended_entities"].has_key("media"):
|
if "extended_entities" in tweet and "media" in tweet["extended_entities"]:
|
||||||
for z in tweet["extended_entities"]["media"]:
|
for z in tweet["extended_entities"]["media"]:
|
||||||
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
|
if "ext_alt_text" in z and z["ext_alt_text"] != None:
|
||||||
image_description.append(z["ext_alt_text"])
|
image_description.append(z["ext_alt_text"])
|
||||||
if tweet.has_key("retweeted_status") and tweet["retweeted_status"].has_key("extended_entities") and tweet["retweeted_status"]["extended_entities"].has_key("media"):
|
if "retweeted_status" in tweet and "extended_entities" in tweet["retweeted_status"] and "media" in tweet["retweeted_status"]["extended_entities"]:
|
||||||
for z in tweet["retweeted_status"]["extended_entities"]["media"]:
|
for z in tweet["retweeted_status"]["extended_entities"]["media"]:
|
||||||
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
|
if "ext_alt_text" in z and z["ext_alt_text"] != None:
|
||||||
image_description.append(z["ext_alt_text"])
|
image_description.append(z["ext_alt_text"])
|
||||||
self.message = message.viewTweet(text, rt_count, favs_count, source.decode("utf-8"))
|
self.message = message.viewTweet(text, rt_count, favs_count, source.decode("utf-8"))
|
||||||
self.message.set_title(len(text))
|
self.message.set_title(len(text))
|
||||||
|
@ -25,15 +25,15 @@ class profileController(object):
|
|||||||
self.get_data(screen_name=self.user)
|
self.get_data(screen_name=self.user)
|
||||||
except TwythonError as err:
|
except TwythonError as err:
|
||||||
if err.error_code == 404:
|
if err.error_code == 404:
|
||||||
wx.MessageDialog(None, _(u"That user does not exist"), _(u"Error"), wx.ICON_ERROR).ShowModal()
|
wx.MessageDialog(None, _("That user does not exist"), _("Error"), wx.ICON_ERROR).ShowModal()
|
||||||
if err.error_code == 403:
|
if err.error_code == 403:
|
||||||
wx.MessageDialog(None, _(u"User has been suspended"), _(u"Error"), wx.ICON_ERROR).ShowModal()
|
wx.MessageDialog(None, _("User has been suspended"), _("Error"), wx.ICON_ERROR).ShowModal()
|
||||||
log.error("error %d: %s" % (err.error_code, err.msg))
|
log.error("error %d: %s" % (err.error_code, err.msg))
|
||||||
return
|
return
|
||||||
self.dialog = show_user.showUserProfile()
|
self.dialog = show_user.showUserProfile()
|
||||||
string = self.get_user_info()
|
string = self.get_user_info()
|
||||||
self.dialog.set("text", string)
|
self.dialog.set("text", string)
|
||||||
self.dialog.set_title(_(u"Information for %s") % (self.data["screen_name"]))
|
self.dialog.set_title(_("Information for %s") % (self.data["screen_name"]))
|
||||||
if self.data["url"] != None:
|
if self.data["url"] != None:
|
||||||
self.dialog.enable_url()
|
self.dialog.enable_url()
|
||||||
widgetUtils.connect_event(self.dialog.url, widgetUtils.BUTTON_PRESSED, self.visit_url)
|
widgetUtils.connect_event(self.dialog.url, widgetUtils.BUTTON_PRESSED, self.visit_url)
|
||||||
@ -63,7 +63,7 @@ class profileController(object):
|
|||||||
|
|
||||||
def discard_image(self):
|
def discard_image(self):
|
||||||
self.file = None
|
self.file = None
|
||||||
output.speak(_(u"Discarded"))
|
output.speak(_("Discarded"))
|
||||||
self.uploaded = False
|
self.uploaded = False
|
||||||
self.dialog.change_upload_button(self.uploaded)
|
self.dialog.change_upload_button(self.uploaded)
|
||||||
|
|
||||||
@ -83,43 +83,43 @@ class profileController(object):
|
|||||||
try:
|
try:
|
||||||
self.session.twitter.twitter.update_profile_image(image=self.file)
|
self.session.twitter.twitter.update_profile_image(image=self.file)
|
||||||
except TwythonError as e:
|
except TwythonError as e:
|
||||||
output.speak(u"Error %s. %s" % (e.error_code, e.msg))
|
output.speak("Error %s. %s" % (e.error_code, e.msg))
|
||||||
try:
|
try:
|
||||||
self.session.twitter.twitter.update_profile(name=name, description=description, location=location, url=url)
|
self.session.twitter.twitter.update_profile(name=name, description=description, location=location, url=url)
|
||||||
except TwythonError as e:
|
except TwythonError as e:
|
||||||
output.speak(u"Error %s. %s" % (e.error_code, e.msg))
|
output.speak("Error %s. %s" % (e.error_code, e.msg))
|
||||||
|
|
||||||
def get_user_info(self):
|
def get_user_info(self):
|
||||||
|
|
||||||
string = u""
|
string = ""
|
||||||
string = string + _(u"Username: @%s\n") % (self.data["screen_name"])
|
string = string + _("Username: @%s\n") % (self.data["screen_name"])
|
||||||
string = string + _(u"Name: %s\n") % (self.data["name"])
|
string = string + _("Name: %s\n") % (self.data["name"])
|
||||||
if self.data["location"] != "":
|
if self.data["location"] != "":
|
||||||
string = string + _(u"Location: %s\n") % (self.data["location"])
|
string = string + _("Location: %s\n") % (self.data["location"])
|
||||||
if self.data["url"] != None:
|
if self.data["url"] != None:
|
||||||
string = string+ _(u"URL: %s\n") % (self.data["url"])
|
string = string+ _("URL: %s\n") % (self.data["url"])
|
||||||
if self.data["description"] != "":
|
if self.data["description"] != "":
|
||||||
string = string+ _(u"Bio: %s\n") % (self.data["description"])
|
string = string+ _("Bio: %s\n") % (self.data["description"])
|
||||||
if self.data["protected"] == True: protected = _(u"Yes")
|
if self.data["protected"] == True: protected = _("Yes")
|
||||||
else: protected = _(u"No")
|
else: protected = _("No")
|
||||||
string = string+ _(u"Protected: %s\n") % (protected)
|
string = string+ _("Protected: %s\n") % (protected)
|
||||||
if hasattr(self, "friendship_status"):
|
if hasattr(self, "friendship_status"):
|
||||||
relation = False
|
relation = False
|
||||||
friendship = "Relationship: "
|
friendship = "Relationship: "
|
||||||
if self.friendship_status["relationship"]["target"]["followed_by"]:
|
if self.friendship_status["relationship"]["target"]["followed_by"]:
|
||||||
friendship += _(u"You follow {0}. ").format(self.data["name"],)
|
friendship += _("You follow {0}. ").format(self.data["name"],)
|
||||||
relation = True
|
relation = True
|
||||||
if self.friendship_status["relationship"]["target"]["following"]:
|
if self.friendship_status["relationship"]["target"]["following"]:
|
||||||
friendship += _(u"{0} is following you.").format(self.data["name"],)
|
friendship += _("{0} is following you.").format(self.data["name"],)
|
||||||
relation = True
|
relation = True
|
||||||
if relation == True:
|
if relation == True:
|
||||||
string = string+friendship+"\n"
|
string = string+friendship+"\n"
|
||||||
string = string+_(u"Followers: %s\n Friends: %s\n") % (self.data["followers_count"], self.data["friends_count"])
|
string = string+_("Followers: %s\n Friends: %s\n") % (self.data["followers_count"], self.data["friends_count"])
|
||||||
if self.data["verified"] == True: verified = _(u"Yes")
|
if self.data["verified"] == True: verified = _("Yes")
|
||||||
else: verified = _(u"No")
|
else: verified = _("No")
|
||||||
string = string+ _(u"Verified: %s\n") % (verified)
|
string = string+ _("Verified: %s\n") % (verified)
|
||||||
string = string+ _(u"Tweets: %s\n") % (self.data["statuses_count"])
|
string = string+ _("Tweets: %s\n") % (self.data["statuses_count"])
|
||||||
string = string+ _(u"Likes: %s") % (self.data["favourites_count"])
|
string = string+ _("Likes: %s") % (self.data["favourites_count"])
|
||||||
return string
|
return string
|
||||||
|
|
||||||
def visit_url(self, *args, **kwargs):
|
def visit_url(self, *args, **kwargs):
|
||||||
|
@ -71,8 +71,8 @@ class userActionsController(object):
|
|||||||
|
|
||||||
def ignore_client(self, user):
|
def ignore_client(self, user):
|
||||||
tweet = self.buffer.get_right_tweet()
|
tweet = self.buffer.get_right_tweet()
|
||||||
if tweet.has_key("sender"):
|
if "sender" in tweet:
|
||||||
output.speak(_(u"You can't ignore direct messages"))
|
output.speak(_("You can't ignore direct messages"))
|
||||||
return
|
return
|
||||||
client = re.sub(r"(?s)<.*?>", "", tweet["source"])
|
client = re.sub(r"(?s)<.*?>", "", tweet["source"])
|
||||||
if client not in self.session.settings["twitter"]["ignored_clients"]:
|
if client not in self.session.settings["twitter"]["ignored_clients"]:
|
||||||
|
@ -16,10 +16,11 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
############################################################
|
############################################################
|
||||||
|
from __future__ import absolute_import
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import wx_ui
|
from . import wx_ui
|
||||||
import wx_transfer_dialogs
|
from . import wx_transfer_dialogs
|
||||||
import transfer
|
from . import transfer
|
||||||
import output
|
import output
|
||||||
import tempfile
|
import tempfile
|
||||||
import sound
|
import sound
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
from utils import convert_bytes
|
from .utils import convert_bytes
|
||||||
from pubsub import pub
|
from pubsub import pub
|
||||||
log = logging.getLogger("extra.AudioUploader.transfer")
|
log = logging.getLogger("extra.AudioUploader.transfer")
|
||||||
from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor
|
from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from utils import *
|
from .utils import *
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
|
|
||||||
class UploadDialog(widgetUtils.BaseDialog):
|
class UploadDialog(widgetUtils.BaseDialog):
|
||||||
|
@ -1 +1,2 @@
|
|||||||
from soundsTutorial import soundsTutorial
|
from __future__ import absolute_import
|
||||||
|
from .soundsTutorial import soundsTutorial
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import platform
|
import platform
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import os
|
import os
|
||||||
import paths
|
import paths
|
||||||
import logging
|
import logging
|
||||||
log = logging.getLogger("extra.SoundsTutorial.soundsTutorial")
|
log = logging.getLogger("extra.SoundsTutorial.soundsTutorial")
|
||||||
import soundsTutorial_constants
|
from . import soundsTutorial_constants
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
import wx_ui as UI
|
from . import wx_ui as UI
|
||||||
elif platform.system() == "Linux":
|
elif platform.system() == "Linux":
|
||||||
import gtk_ui as UI
|
from . import gtk_ui as UI
|
||||||
|
|
||||||
class soundsTutorial(object):
|
class soundsTutorial(object):
|
||||||
def __init__(self, sessionObject):
|
def __init__(self, sessionObject):
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#-*- coding: utf-8 -*-
|
#-*- coding: utf-8 -*-
|
||||||
import reverse_sort
|
from __future__ import absolute_import
|
||||||
|
#-*- coding: utf-8 -*-
|
||||||
|
from . import reverse_sort
|
||||||
import application
|
import application
|
||||||
actions = reverse_sort.reverse_sort([ ("audio", _(u"Audio tweet.")),
|
actions = reverse_sort.reverse_sort([ ("audio", _(u"Audio tweet.")),
|
||||||
("create_timeline", _(u"User timeline buffer created.")),
|
("create_timeline", _(u"User timeline buffer created.")),
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import spellchecker
|
from __future__ import absolute_import
|
||||||
|
from . import spellchecker
|
||||||
import platform
|
import platform
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
from wx_ui import *
|
from .wx_ui import *
|
@ -1,7 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import logging
|
import logging
|
||||||
log = logging.getLogger("extra.SpellChecker.spellChecker")
|
log = logging.getLogger("extra.SpellChecker.spellChecker")
|
||||||
import wx_ui
|
from . import wx_ui
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import output
|
import output
|
||||||
import config
|
import config
|
||||||
@ -9,7 +10,7 @@ import languageHandler
|
|||||||
from enchant.checker import SpellChecker
|
from enchant.checker import SpellChecker
|
||||||
from enchant.errors import DictNotFoundError
|
from enchant.errors import DictNotFoundError
|
||||||
from enchant import tokenize
|
from enchant import tokenize
|
||||||
import twitterFilter
|
from . import twitterFilter
|
||||||
|
|
||||||
class spellChecker(object):
|
class spellChecker(object):
|
||||||
def __init__(self, text, dictionary):
|
def __init__(self, text, dictionary):
|
||||||
@ -41,7 +42,7 @@ class spellChecker(object):
|
|||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
try:
|
try:
|
||||||
self.checker.next()
|
next(self.checker)
|
||||||
textToSay = _(u"Misspelled word: %s") % (self.checker.word,)
|
textToSay = _(u"Misspelled word: %s") % (self.checker.word,)
|
||||||
context = u"... %s %s %s" % (self.checker.leading_context(10), self.checker.word, self.checker.trailing_context(10))
|
context = u"... %s %s %s" % (self.checker.leading_context(10), self.checker.word, self.checker.trailing_context(10))
|
||||||
self.dialog.set_title(textToSay)
|
self.dialog.set_title(textToSay)
|
||||||
|
@ -1,2 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import completion, settings
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import completion, settings
|
@ -1,7 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import output
|
import output
|
||||||
import storage
|
from . import storage
|
||||||
import wx_menu
|
from . import wx_menu
|
||||||
|
|
||||||
class autocompletionUsers(object):
|
class autocompletionUsers(object):
|
||||||
def __init__(self, window, session_id):
|
def __init__(self, window, session_id):
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import storage
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import storage
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import wx_manage
|
from . import wx_manage
|
||||||
from wxUI import commonMessageDialogs
|
from wxUI import commonMessageDialogs
|
||||||
|
|
||||||
class autocompletionManage(object):
|
class autocompletionManage(object):
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import storage
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import storage
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import wx_settings
|
from . import wx_settings
|
||||||
import manage
|
from . import manage
|
||||||
import output
|
import output
|
||||||
from mysc.thread_utils import call_threaded
|
from mysc.thread_utils import call_threaded
|
||||||
|
|
||||||
|
@ -1,2 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import OCRSpace
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import OCRSpace
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import translator
|
from __future__ import absolute_import
|
||||||
|
from . import translator
|
||||||
import platform
|
import platform
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
import wx_ui as gui
|
from . import wx_ui as gui
|
||||||
|
|
@ -9,97 +9,97 @@ def translate(text="", target="en"):
|
|||||||
supported_langs = None
|
supported_langs = None
|
||||||
d = None
|
d = None
|
||||||
languages = {
|
languages = {
|
||||||
"af": _(u"Afrikaans"),
|
"af": _("Afrikaans"),
|
||||||
"sq": _(u"Albanian"),
|
"sq": _("Albanian"),
|
||||||
"am": _(u"Amharic"),
|
"am": _("Amharic"),
|
||||||
"ar": _(u"Arabic"),
|
"ar": _("Arabic"),
|
||||||
"hy": _(u"Armenian"),
|
"hy": _("Armenian"),
|
||||||
"az": _(u"Azerbaijani"),
|
"az": _("Azerbaijani"),
|
||||||
"eu": _(u"Basque"),
|
"eu": _("Basque"),
|
||||||
"be": _(u"Belarusian"),
|
"be": _("Belarusian"),
|
||||||
"bn": _(u"Bengali"),
|
"bn": _("Bengali"),
|
||||||
"bh": _(u"Bihari"),
|
"bh": _("Bihari"),
|
||||||
"bg": _(u"Bulgarian"),
|
"bg": _("Bulgarian"),
|
||||||
"my": _(u"Burmese"),
|
"my": _("Burmese"),
|
||||||
"ca": _(u"Catalan"),
|
"ca": _("Catalan"),
|
||||||
"chr": _(u"Cherokee"),
|
"chr": _("Cherokee"),
|
||||||
"zh": _(u"Chinese"),
|
"zh": _("Chinese"),
|
||||||
"zh-CN": _(u"Chinese_simplified"),
|
"zh-CN": _("Chinese_simplified"),
|
||||||
"zh-TW": _(u"Chinese_traditional"),
|
"zh-TW": _("Chinese_traditional"),
|
||||||
"hr": _(u"Croatian"),
|
"hr": _("Croatian"),
|
||||||
"cs": _(u"Czech"),
|
"cs": _("Czech"),
|
||||||
"da": _(u"Danish"),
|
"da": _("Danish"),
|
||||||
"dv": _(u"Dhivehi"),
|
"dv": _("Dhivehi"),
|
||||||
"nl": _(u"Dutch"),
|
"nl": _("Dutch"),
|
||||||
"en": _(u"English"),
|
"en": _("English"),
|
||||||
"eo": _(u"Esperanto"),
|
"eo": _("Esperanto"),
|
||||||
"et": _(u"Estonian"),
|
"et": _("Estonian"),
|
||||||
"tl": _(u"Filipino"),
|
"tl": _("Filipino"),
|
||||||
"fi": _(u"Finnish"),
|
"fi": _("Finnish"),
|
||||||
"fr": _(u"French"),
|
"fr": _("French"),
|
||||||
"gl": _(u"Galician"),
|
"gl": _("Galician"),
|
||||||
"ka": _(u"Georgian"),
|
"ka": _("Georgian"),
|
||||||
"de": _(u"German"),
|
"de": _("German"),
|
||||||
"el": _(u"Greek"),
|
"el": _("Greek"),
|
||||||
"gn": _(u"Guarani"),
|
"gn": _("Guarani"),
|
||||||
"gu": _(u"Gujarati"),
|
"gu": _("Gujarati"),
|
||||||
"iw": _(u"Hebrew"),
|
"iw": _("Hebrew"),
|
||||||
"hi": _(u"Hindi"),
|
"hi": _("Hindi"),
|
||||||
"hu": _(u"Hungarian"),
|
"hu": _("Hungarian"),
|
||||||
"is": _(u"Icelandic"),
|
"is": _("Icelandic"),
|
||||||
"id": _(u"Indonesian"),
|
"id": _("Indonesian"),
|
||||||
"iu": _(u"Inuktitut"),
|
"iu": _("Inuktitut"),
|
||||||
"ga": _(u"Irish"),
|
"ga": _("Irish"),
|
||||||
"it": _(u"Italian"),
|
"it": _("Italian"),
|
||||||
"ja": _(u"Japanese"),
|
"ja": _("Japanese"),
|
||||||
"kn": _(u"Kannada"),
|
"kn": _("Kannada"),
|
||||||
"kk": _(u"Kazakh"),
|
"kk": _("Kazakh"),
|
||||||
"km": _(u"Khmer"),
|
"km": _("Khmer"),
|
||||||
"ko": _(u"Korean"),
|
"ko": _("Korean"),
|
||||||
"ku": _(u"Kurdish"),
|
"ku": _("Kurdish"),
|
||||||
"ky": _(u"Kyrgyz"),
|
"ky": _("Kyrgyz"),
|
||||||
"lo": _(u"Laothian"),
|
"lo": _("Laothian"),
|
||||||
"lv": _(u"Latvian"),
|
"lv": _("Latvian"),
|
||||||
"lt": _(u"Lithuanian"),
|
"lt": _("Lithuanian"),
|
||||||
"mk": _(u"Macedonian"),
|
"mk": _("Macedonian"),
|
||||||
"ms": _(u"Malay"),
|
"ms": _("Malay"),
|
||||||
"ml": _(u"Malayalam"),
|
"ml": _("Malayalam"),
|
||||||
"mt": _(u"Maltese"),
|
"mt": _("Maltese"),
|
||||||
"mr": _(u"Marathi"),
|
"mr": _("Marathi"),
|
||||||
"mn": _(u"Mongolian"),
|
"mn": _("Mongolian"),
|
||||||
"ne": _(u"Nepali"),
|
"ne": _("Nepali"),
|
||||||
"no": _(u"Norwegian"),
|
"no": _("Norwegian"),
|
||||||
"or": _(u"Oriya"),
|
"or": _("Oriya"),
|
||||||
"ps": _(u"Pashto"),
|
"ps": _("Pashto"),
|
||||||
"fa": _(u"Persian"),
|
"fa": _("Persian"),
|
||||||
"pl": _(u"Polish"),
|
"pl": _("Polish"),
|
||||||
"pt": _(u"Portuguese"),
|
"pt": _("Portuguese"),
|
||||||
"pa": _(u"Punjabi"),
|
"pa": _("Punjabi"),
|
||||||
"ro": _(u"Romanian"),
|
"ro": _("Romanian"),
|
||||||
"ru": _(u"Russian"),
|
"ru": _("Russian"),
|
||||||
"sa": _(u"Sanskrit"),
|
"sa": _("Sanskrit"),
|
||||||
"sr": _(u"Serbian"),
|
"sr": _("Serbian"),
|
||||||
"sd": _(u"Sindhi"),
|
"sd": _("Sindhi"),
|
||||||
"si": _(u"Sinhalese"),
|
"si": _("Sinhalese"),
|
||||||
"sk": _(u"Slovak"),
|
"sk": _("Slovak"),
|
||||||
"sl": _(u"Slovenian"),
|
"sl": _("Slovenian"),
|
||||||
"es": _(u"Spanish"),
|
"es": _("Spanish"),
|
||||||
"sw": _(u"Swahili"),
|
"sw": _("Swahili"),
|
||||||
"sv": _(u"Swedish"),
|
"sv": _("Swedish"),
|
||||||
"tg": _(u"Tajik"),
|
"tg": _("Tajik"),
|
||||||
"ta": _(u"Tamil"),
|
"ta": _("Tamil"),
|
||||||
"tl": _(u"Tagalog"),
|
"tl": _("Tagalog"),
|
||||||
"te": _(u"Telugu"),
|
"te": _("Telugu"),
|
||||||
"th": _(u"Thai"),
|
"th": _("Thai"),
|
||||||
"bo": _(u"Tibetan"),
|
"bo": _("Tibetan"),
|
||||||
"tr": _(u"Turkish"),
|
"tr": _("Turkish"),
|
||||||
"uk": _(u"Ukrainian"),
|
"uk": _("Ukrainian"),
|
||||||
"ur": _(u"Urdu"),
|
"ur": _("Urdu"),
|
||||||
"uz": _(u"Uzbek"),
|
"uz": _("Uzbek"),
|
||||||
"ug": _(u"Uighur"),
|
"ug": _("Uighur"),
|
||||||
"vi": _(u"Vietnamese"),
|
"vi": _("Vietnamese"),
|
||||||
"cy": _(u"Welsh"),
|
"cy": _("Welsh"),
|
||||||
"yi": _(u"Yiddish")
|
"yi": _("Yiddish")
|
||||||
}
|
}
|
||||||
|
|
||||||
def available_languages():
|
def available_languages():
|
||||||
|
@ -16,20 +16,43 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
############################################################
|
############################################################
|
||||||
import translator
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
############################################################
|
||||||
|
# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo <manuel@manuelcortez.net>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
############################################################
|
||||||
|
from . import translator
|
||||||
import wx
|
import wx
|
||||||
from wxUI.dialogs import baseDialog
|
from wxUI.dialogs import baseDialog
|
||||||
|
|
||||||
class translateDialog(baseDialog.BaseWXDialog):
|
class translateDialog(baseDialog.BaseWXDialog):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(translateDialog, self).__init__(None, -1, title=_(u"Translate message"))
|
super(translateDialog, self).__init__(None, -1, title=_("Translate message"))
|
||||||
panel = wx.Panel(self)
|
panel = wx.Panel(self)
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
staticDest = wx.StaticText(panel, -1, _(u"Target language"))
|
staticSource = wx.StaticText(panel, -1, _("Source language"))
|
||||||
|
self.source_lang = wx.ComboBox(panel, -1, choices=[x[1] for x in translator.available_languages()], style = wx.CB_READONLY)
|
||||||
|
self.source_lang.SetFocus()
|
||||||
|
staticDest = wx.StaticText(panel, -1, _("Target language"))
|
||||||
|
self.source_lang.SetSelection(0)
|
||||||
self.dest_lang = wx.ComboBox(panel, -1, choices=[x[1] for x in translator.available_languages()], style = wx.CB_READONLY)
|
self.dest_lang = wx.ComboBox(panel, -1, choices=[x[1] for x in translator.available_languages()], style = wx.CB_READONLY)
|
||||||
self.dest_lang.SetFocus()
|
|
||||||
self.dest_lang.SetSelection(0)
|
|
||||||
listSizer = wx.BoxSizer(wx.HORIZONTAL)
|
listSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
listSizer.Add(staticSource)
|
||||||
|
listSizer.Add(self.source_lang)
|
||||||
listSizer.Add(staticDest)
|
listSizer.Add(staticDest)
|
||||||
listSizer.Add(self.dest_lang)
|
listSizer.Add(self.dest_lang)
|
||||||
ok = wx.Button(panel, wx.ID_OK)
|
ok = wx.Button(panel, wx.ID_OK)
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
""" This module contains some bugfixes for packages used in TWBlue."""
|
""" This module contains some bugfixes for packages used in TWBlue."""
|
||||||
|
from __future__ import absolute_import
|
||||||
import sys
|
import sys
|
||||||
import fix_arrow # A few new locales for Three languages in arrow.
|
from . import fix_arrow # A few new locales for Three languages in arrow.
|
||||||
import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython.
|
from . import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython.
|
||||||
import fix_win32com
|
from . import fix_win32com
|
||||||
import fix_requests #fix cacert.pem location for TWBlue binary copies
|
from . import fix_requests #fix cacert.pem location for TWBlue binary copies
|
||||||
def setup():
|
def setup():
|
||||||
fix_arrow.fix()
|
fix_arrow.fix()
|
||||||
if hasattr(sys, "frozen"):
|
if hasattr(sys, "frozen"):
|
||||||
|
@ -16,13 +16,14 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
############################################################
|
############################################################
|
||||||
|
from __future__ import absolute_import
|
||||||
import keys
|
import keys
|
||||||
import wx
|
import wx
|
||||||
import wx_ui
|
from . import wx_ui
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import application
|
import application
|
||||||
from suds.client import Client
|
from suds.client import Client
|
||||||
import constants
|
from . import constants
|
||||||
|
|
||||||
class reportBug(object):
|
class reportBug(object):
|
||||||
def __init__(self, user_name):
|
def __init__(self, user_name):
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
from main import KeyboardHandler, KeyboardHandlerError
|
from __future__ import absolute_import
|
||||||
|
from .main import KeyboardHandler, KeyboardHandlerError
|
||||||
#from wx_handler import WXKeyboardHandler
|
#from wx_handler import WXKeyboardHandler
|
||||||
__all__ = ["KeyboardHandler", "KeyboardHandlerError", "WXKeyboardHandler", "WXPanelKeyboardHandler"]
|
__all__ = ["KeyboardHandler", "KeyboardHandlerError", "WXKeyboardHandler", "WXPanelKeyboardHandler"]
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
import platform
|
import platform
|
||||||
if platform.system() == 'Linux':
|
if platform.system() == 'Linux':
|
||||||
from linux import LinuxKeyboardHandler as GlobalKeyboardHandler
|
from .linux import LinuxKeyboardHandler as GlobalKeyboardHandler
|
||||||
elif platform.system() == 'Windows':
|
elif platform.system() == 'Windows':
|
||||||
from wx_handler import WXKeyboardHandler as GlobalKeyboardHandler
|
from .wx_handler import WXKeyboardHandler as GlobalKeyboardHandler
|
||||||
elif platform.system() == 'Darwin':
|
elif platform.system() == 'Darwin':
|
||||||
from osx import OSXKeyboardHandler as GlobalKeyboardHandler
|
from .osx import OSXKeyboardHandler as GlobalKeyboardHandler
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from main import KeyboardHandler
|
from __future__ import absolute_import
|
||||||
|
from .main import KeyboardHandler
|
||||||
import threading
|
import threading
|
||||||
import thread
|
import thread
|
||||||
import pyatspi
|
import pyatspi
|
||||||
@ -21,7 +22,7 @@ Unknown modifiers will return ValueError."""
|
|||||||
lst.remove(item)
|
lst.remove(item)
|
||||||
#end if
|
#end if
|
||||||
if len(lst) > 1: #more than one key, parse error
|
if len(lst) > 1: #more than one key, parse error
|
||||||
raise ValueError, 'unknown modifier %s' % lst[0]
|
raise ValueError('unknown modifier %s' % lst[0])
|
||||||
return (m, lst[0].lower())
|
return (m, lst[0].lower())
|
||||||
class AtspiThread(threading.Thread):
|
class AtspiThread(threading.Thread):
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -18,17 +18,17 @@ class KeyboardHandler(object):
|
|||||||
|
|
||||||
def register_key (self, key, function):
|
def register_key (self, key, function):
|
||||||
if key in self.active_keys:
|
if key in self.active_keys:
|
||||||
raise KeyboardHandlerError, "Key %s is already registered to a function" % key
|
raise KeyboardHandlerError("Key %s is already registered to a function" % key)
|
||||||
if not callable(function):
|
if not callable(function):
|
||||||
raise TypeError, "Must provide a callable to be invoked upon keypress"
|
raise TypeError("Must provide a callable to be invoked upon keypress")
|
||||||
self.active_keys[key] = function
|
self.active_keys[key] = function
|
||||||
|
|
||||||
def unregister_key (self, key, function):
|
def unregister_key (self, key, function):
|
||||||
try:
|
try:
|
||||||
if self.active_keys[key] != function:
|
if self.active_keys[key] != function:
|
||||||
raise KeyboardHandlerError, "key %s is not registered to that function" % key
|
raise KeyboardHandlerError("key %s is not registered to that function" % key)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise KeyboardHandlerError, "Key %s not currently registered"
|
raise KeyboardHandlerError("Key %s not currently registered")
|
||||||
del(self.active_keys[key])
|
del(self.active_keys[key])
|
||||||
|
|
||||||
def unregister_all_keys(self):
|
def unregister_all_keys(self):
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
from AppKit import *
|
from AppKit import *
|
||||||
from PyObjCTools import AppHelper
|
from PyObjCTools import AppHelper
|
||||||
from Carbon.CarbonEvt import RegisterEventHotKey, GetApplicationEventTarget
|
from Carbon.CarbonEvt import RegisterEventHotKey, GetApplicationEventTarget
|
||||||
@ -5,7 +6,7 @@ from Carbon.Events import cmdKey, controlKey
|
|||||||
import struct
|
import struct
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
from main import KeyboardHandler
|
from .main import KeyboardHandler
|
||||||
|
|
||||||
kEventHotKeyPressedSubtype = 6
|
kEventHotKeyPressedSubtype = 6
|
||||||
kEventHotKeyReleasedSubtype = 9
|
kEventHotKeyReleasedSubtype = 9
|
||||||
@ -35,9 +36,9 @@ class OSXKeyboardHandler(KeyboardHandler):
|
|||||||
#replacements
|
#replacements
|
||||||
#Modifier keys:
|
#Modifier keys:
|
||||||
for index, item in enumerate(key[0:-1]):
|
for index, item in enumerate(key[0:-1]):
|
||||||
if self.replacement_mods.has_key(item):
|
if item in self.replacement_mods:
|
||||||
key[index] = self.replacement_mods[item]
|
key[index] = self.replacement_mods[item]
|
||||||
if self.replacement_keys.has_key(key[-1]):
|
if key[-1] in self.replacement_keys:
|
||||||
key[-1] = self.replacement_keys[key[-1]]
|
key[-1] = self.replacement_keys[key[-1]]
|
||||||
elif len(key[-1])==1:
|
elif len(key[-1])==1:
|
||||||
key[-1] = ord(str(key[-1]))-36
|
key[-1] = ord(str(key[-1]))-36
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
import win32api
|
import win32api
|
||||||
import win32con
|
import win32con
|
||||||
|
|
||||||
from main import KeyboardHandler
|
from .main import KeyboardHandler
|
||||||
|
|
||||||
class WindowsKeyboardHandler(KeyboardHandler):
|
class WindowsKeyboardHandler(KeyboardHandler):
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
from __future__ import absolute_import
|
||||||
import functools
|
import functools
|
||||||
import wx
|
import wx
|
||||||
import platform
|
import platform
|
||||||
from main import KeyboardHandler
|
from .main import KeyboardHandler
|
||||||
|
|
||||||
__all__ = ['WXKeyboardHandler', 'WXControlKeyboardHandler']
|
__all__ = ['WXKeyboardHandler', 'WXControlKeyboardHandler']
|
||||||
|
|
||||||
@ -42,18 +44,18 @@ class BaseWXKeyboardHandler(KeyboardHandler):
|
|||||||
result -= 277
|
result -= 277
|
||||||
elif len(key) == 1:
|
elif len(key) == 1:
|
||||||
result = ord(key.upper())
|
result = ord(key.upper())
|
||||||
print "result: ", result
|
print("result: ", result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#try:
|
#try:
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
from windows import WindowsKeyboardHandler as keyboard_handler
|
from .windows import WindowsKeyboardHandler as keyboard_handler
|
||||||
elif platform.system() == "Linux":
|
elif platform.system() == "Linux":
|
||||||
from linux import LinuxKeyboardHandler as keyboard_handler
|
from .linux import LinuxKeyboardHandler as keyboard_handler
|
||||||
elif platform.system() == "Darwin":
|
elif platform.system() == "Darwin":
|
||||||
from osx import OSXKeyboardHandler as keyboard_handler
|
from .osx import OSXKeyboardHandler as keyboard_handler
|
||||||
|
|
||||||
class WXKeyboardHandler(keyboard_handler):
|
class WXKeyboardHandler(keyboard_handler):
|
||||||
def __init__ (self, parent, *args, **kwargs):
|
def __init__ (self, parent, *args, **kwargs):
|
||||||
|
@ -1 +1,2 @@
|
|||||||
from keystrokeEditor import KeystrokeEditor
|
from __future__ import absolute_import
|
||||||
|
from .keystrokeEditor import KeystrokeEditor
|
@ -1,8 +1,9 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import config
|
import config
|
||||||
import wx_ui
|
from . import wx_ui
|
||||||
import constants
|
from . import constants
|
||||||
from pubsub import pub
|
from pubsub import pub
|
||||||
|
|
||||||
class KeystrokeEditor(object):
|
class KeystrokeEditor(object):
|
||||||
|
@ -32,7 +32,7 @@ class keystrokeEditorDialog(baseDialog.BaseWXDialog):
|
|||||||
selection = self.keys.get_selected()
|
selection = self.keys.get_selected()
|
||||||
self.keys.clear()
|
self.keys.clear()
|
||||||
for i in keystrokes:
|
for i in keystrokes:
|
||||||
if actions.has_key(i) == False:
|
if (i in actions) == False:
|
||||||
continue
|
continue
|
||||||
action = actions[i]
|
action = actions[i]
|
||||||
self.actions.append(i)
|
self.actions.append(i)
|
||||||
|
@ -19,12 +19,12 @@
|
|||||||
from twitter import utils
|
from twitter import utils
|
||||||
|
|
||||||
def is_long(tweet):
|
def is_long(tweet):
|
||||||
if tweet.has_key("quoted_status_id") and tweet["quoted_status_id"] != None:
|
if "is_quote_status" in tweet and tweet["is_quote_status"] == True and "quoted_status" in tweet:
|
||||||
return tweet["quoted_status_id"]
|
return tweet["quoted_status_id"]
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def clear_url(tweet):
|
def clear_url(tweet):
|
||||||
if tweet.has_key("full_text"):
|
if "full_text" in tweet:
|
||||||
value = "full_text"
|
value = "full_text"
|
||||||
else:
|
else:
|
||||||
value = "text"
|
value = "text"
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
############################################################
|
############################################################
|
||||||
|
from __future__ import print_function
|
||||||
import requests
|
import requests
|
||||||
import keys
|
import keys
|
||||||
import logging
|
import logging
|
||||||
@ -41,7 +42,7 @@ def is_long(tweet):
|
|||||||
# see https://github.com/manuelcortez/TWBlue/issues/103
|
# see https://github.com/manuelcortez/TWBlue/issues/103
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
if long == False and tweet.has_key("retweeted_status"):
|
if long == False and "retweeted_status" in tweet:
|
||||||
for url in range(0, len(tweet["retweeted_status"]["entities"]["urls"])):
|
for url in range(0, len(tweet["retweeted_status"]["entities"]["urls"])):
|
||||||
try:
|
try:
|
||||||
if tweet["retweeted_status"]["entities"]["urls"][url] != None and "twishort.com" in tweet["retweeted_status"]["entities"]["urls"][url]["expanded_url"]:
|
if tweet["retweeted_status"]["entities"]["urls"][url] != None and "twishort.com" in tweet["retweeted_status"]["entities"]["urls"][url]["expanded_url"]:
|
||||||
@ -83,5 +84,5 @@ def create_tweet(user_token, user_secret, text, media=0):
|
|||||||
try:
|
try:
|
||||||
return response.json()["text_to_tweet"]
|
return response.json()["text_to_tweet"]
|
||||||
except:
|
except:
|
||||||
print "There was a problem creating a long tweet"
|
print("There was a problem creating a long tweet")
|
||||||
return 0
|
return 0
|
||||||
|
@ -1 +1,2 @@
|
|||||||
import widgets
|
from __future__ import absolute_import
|
||||||
|
from . import widgets
|
@ -37,9 +37,9 @@ class list(object):
|
|||||||
if self.system == "Windows":
|
if self.system == "Windows":
|
||||||
if reversed == False: items = self.list.GetItemCount()
|
if reversed == False: items = self.list.GetItemCount()
|
||||||
else: items = 0
|
else: items = 0
|
||||||
self.list.InsertStringItem(items, item[0])
|
self.list.InsertItem(items, unicode(item[0]))
|
||||||
for i in xrange(1, len(self.columns)):
|
for i in xrange(1, len(self.columns)):
|
||||||
self.list.SetStringItem(items, i, item[i])
|
self.list.SetItem(items, i, unicode(item[i]))
|
||||||
else:
|
else:
|
||||||
self.list.Append(" ".join(item))
|
self.list.Append(" ".join(item))
|
||||||
|
|
||||||
@ -85,5 +85,5 @@ class list(object):
|
|||||||
return item.GetText()
|
return item.GetText()
|
||||||
|
|
||||||
def set_text_column(self, indexId, column, text):
|
def set_text_column(self, indexId, column, text):
|
||||||
item = self.list.SetStringItem(indexId, column, text)
|
item = self.list.SetItem(indexId, column, unicode(text))
|
||||||
return item
|
return item
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
""" A cross platform notification system.
|
""" A cross platform notification system.
|
||||||
Under Linux, the wx.NotificationMessage does not show a notification on the taskbar, so we decided to use dbus for showing notifications for linux and wx for Windows."""
|
Under Linux, the wx.NotificationMessage does not show a notification on the taskbar, so we decided to use dbus for showing notifications for linux and wx for Windows."""
|
||||||
|
from __future__ import absolute_import
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
notify = None
|
notify = None
|
||||||
@ -8,10 +9,10 @@ notify = None
|
|||||||
def setup():
|
def setup():
|
||||||
global notify
|
global notify
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
import windows
|
from . import windows
|
||||||
notify = windows.notification()
|
notify = windows.notification()
|
||||||
elif platform.system() == "Linux":
|
elif platform.system() == "Linux":
|
||||||
import linux
|
from . import linux
|
||||||
notify = linux.notification()
|
notify = linux.notification()
|
||||||
|
|
||||||
def send(title, text):
|
def send(title, text):
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from __future__ import print_function
|
||||||
import _winreg
|
import _winreg
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
@ -31,7 +32,7 @@ def getAutoStart(app_name):
|
|||||||
|
|
||||||
def setAutoStart(app_name, enable=True):
|
def setAutoStart(app_name, enable=True):
|
||||||
"""Configures automatic startup for the application, if the enable argument is set to True. If set to False, deletes the application AutoStart value."""
|
"""Configures automatic startup for the application, if the enable argument is set to True. If set to False, deletes the application AutoStart value."""
|
||||||
print paths.get_executable()
|
print(paths.get_executable())
|
||||||
if getAutoStart(app_name) == enable:
|
if getAutoStart(app_name) == enable:
|
||||||
return
|
return
|
||||||
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, RUN_REGKEY, 0, _winreg.KEY_WRITE)
|
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, RUN_REGKEY, 0, _winreg.KEY_WRITE)
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
# -*- coding: cp1252 -*-
|
# -*- coding: cp1252 -*-
|
||||||
#from config_utils import Configuration, ConfigurationResetException
|
#from config_utils import Configuration, ConfigurationResetException
|
||||||
|
from __future__ import absolute_import
|
||||||
import config
|
import config
|
||||||
import paths
|
import paths
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
log = logging.getLogger("sessionmanager.manager")
|
log = logging.getLogger("sessionmanager.manager")
|
||||||
import session_exceptions
|
from . import session_exceptions
|
||||||
|
|
||||||
manager = None
|
manager = None
|
||||||
def setup():
|
def setup():
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
<<<<<<< HEAD
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
""" The main session object. Here are the twitter functions to interact with the "model" of TWBlue."""
|
""" The main session object. Here are the twitter functions to interact with the "model" of TWBlue."""
|
||||||
import wx
|
import wx
|
||||||
@ -494,4 +495,488 @@ class Session(object):
|
|||||||
if tweet.has_key("retweeted_status") and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
|
if tweet.has_key("retweeted_status") and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
|
||||||
continue
|
continue
|
||||||
tweet["message"] = u"@%s %s" % (i["screen_name"], tweet["message"])
|
tweet["message"] = u"@%s %s" % (i["screen_name"], tweet["message"])
|
||||||
|
=======
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
""" The main session object. Here are the twitter functions to interact with the "model" of TWBlue."""
|
||||||
|
from __future__ import absolute_import
|
||||||
|
import urllib2
|
||||||
|
import config
|
||||||
|
import twitter
|
||||||
|
from keys import keyring
|
||||||
|
from . import session_exceptions as Exceptions
|
||||||
|
import paths
|
||||||
|
import output
|
||||||
|
import time
|
||||||
|
import sound
|
||||||
|
import logging
|
||||||
|
from twitter import utils, compose
|
||||||
|
from twython import TwythonError, TwythonRateLimitError, TwythonAuthError
|
||||||
|
import config_utils
|
||||||
|
import shelve
|
||||||
|
import application
|
||||||
|
import os
|
||||||
|
from mysc.thread_utils import stream_threaded
|
||||||
|
from pubsub import pub
|
||||||
|
log = logging.getLogger("sessionmanager.session")
|
||||||
|
from long_tweets import tweets, twishort
|
||||||
|
|
||||||
|
sessions = {}
|
||||||
|
|
||||||
|
class Session(object):
|
||||||
|
""" A session object where we will save configuration, the twitter object and a local storage for saving the items retrieved through the Twitter API methods"""
|
||||||
|
|
||||||
|
# Decorators.
|
||||||
|
|
||||||
|
def _require_login(fn):
|
||||||
|
|
||||||
|
""" Decorator for checking if the user is logged in(a twitter object has credentials) on twitter.
|
||||||
|
Some functions may need this to avoid making unneeded twitter API calls."""
|
||||||
|
|
||||||
|
def f(self, *args, **kwargs):
|
||||||
|
if self.logged == True:
|
||||||
|
fn(self, *args, **kwargs)
|
||||||
|
else:
|
||||||
|
raise Exceptions.NotLoggedSessionError("You are not logged in yet.")
|
||||||
|
return f
|
||||||
|
|
||||||
|
def _require_configuration(fn):
|
||||||
|
|
||||||
|
""" Check if the user has a configured session."""
|
||||||
|
|
||||||
|
def f(self, *args, **kwargs):
|
||||||
|
if self.settings != None:
|
||||||
|
fn(self, *args, **kwargs)
|
||||||
|
else:
|
||||||
|
raise Exceptions.NotConfiguredSessionError("Not configured.")
|
||||||
|
return f
|
||||||
|
|
||||||
|
def order_buffer(self, name, data, ignore_older=True):
|
||||||
|
|
||||||
|
""" Put the new items in the local database.
|
||||||
|
name str: The name for the buffer stored in the dictionary.
|
||||||
|
data list: A list with tweets.
|
||||||
|
returns the number of items that have been added in this execution"""
|
||||||
|
|
||||||
|
num = 0
|
||||||
|
last_id = None
|
||||||
|
if (name in self.db) == False:
|
||||||
|
self.db[name] = []
|
||||||
|
if ignore_older and len(self.db[name]) > 0:
|
||||||
|
if self.settings["general"]["reverse_timelines"] == False:
|
||||||
|
last_id = self.db[name][0]["id"]
|
||||||
|
else:
|
||||||
|
last_id = self.db[name][-1]["id"]
|
||||||
|
for i in data:
|
||||||
|
if ignore_older and last_id != None:
|
||||||
|
if i["id"] < last_id:
|
||||||
|
log.error("Ignoring an older tweet... Last id: {0}, tweet id: {1}".format(last_id, i["id"]))
|
||||||
|
continue
|
||||||
|
if utils.find_item(i["id"], self.db[name]) == None and utils.is_allowed(i, self.settings["twitter"]["ignored_clients"]) == True:
|
||||||
|
try: i = self.check_quoted_status(i)
|
||||||
|
except: pass
|
||||||
|
i = self.check_long_tweet(i)
|
||||||
|
if i == False: continue
|
||||||
|
if self.settings["general"]["reverse_timelines"] == False: self.db[name].append(i)
|
||||||
|
else: self.db[name].insert(0, i)
|
||||||
|
num = num+1
|
||||||
|
return num
|
||||||
|
|
||||||
|
def order_cursored_buffer(self, name, data):
|
||||||
|
|
||||||
|
""" Put the new items on the local database. Useful for cursored buffers (followers, friends, users of a list and searches)
|
||||||
|
name str: The name for the buffer stored in the dictionary.
|
||||||
|
data list: A list with items and some information about cursors.
|
||||||
|
returns the number of items that have been added in this execution"""
|
||||||
|
|
||||||
|
num = 0
|
||||||
|
if (name in self.db) == False:
|
||||||
|
self.db[name] = {}
|
||||||
|
self.db[name]["items"] = []
|
||||||
|
# if len(self.db[name]["items"]) > 0:
|
||||||
|
for i in data:
|
||||||
|
if utils.find_item(i["id"], self.db[name]["items"]) == None:
|
||||||
|
if self.settings["general"]["reverse_timelines"] == False: self.db[name]["items"].append(i)
|
||||||
|
else: self.db[name]["items"].insert(0, i)
|
||||||
|
num = num+1
|
||||||
|
return num
|
||||||
|
|
||||||
|
def __init__(self, session_id):
|
||||||
|
|
||||||
|
""" session_id (str): The name of the folder inside the config directory where the session is located."""
|
||||||
|
|
||||||
|
super(Session, self).__init__()
|
||||||
|
self.session_id = session_id
|
||||||
|
self.logged = False
|
||||||
|
self.settings = None
|
||||||
|
self.twitter = twitter.twitter.twitter()
|
||||||
|
self.db={}
|
||||||
|
self.reconnection_function_active = False
|
||||||
|
self.counter = 0
|
||||||
|
self.lists = []
|
||||||
|
pub.subscribe(self.add_friends, "friends-receibed")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_logged(self):
|
||||||
|
return self.logged
|
||||||
|
|
||||||
|
def get_configuration(self):
|
||||||
|
|
||||||
|
""" Gets settings for a session."""
|
||||||
|
|
||||||
|
file_ = "%s/session.conf" % (self.session_id,)
|
||||||
|
# try:
|
||||||
|
log.debug("Creating config file %s" % (file_,))
|
||||||
|
self.settings = config_utils.load_config(paths.config_path(file_), paths.app_path("Conf.defaults"))
|
||||||
|
self.init_sound()
|
||||||
|
self.deshelve()
|
||||||
|
# except:
|
||||||
|
# log.exception("The session configuration has failed.")
|
||||||
|
# self.settings = None
|
||||||
|
|
||||||
|
def init_sound(self):
|
||||||
|
try: self.sound = sound.soundSystem(self.settings["sound"])
|
||||||
|
except: log.exception("Exception thrown during sound system initialization")
|
||||||
|
|
||||||
|
@_require_configuration
|
||||||
|
def login(self, verify_credentials=True):
|
||||||
|
|
||||||
|
""" Log into twitter using credentials from settings.
|
||||||
|
if the user account isn't authorised, it needs to call self.authorise() before login."""
|
||||||
|
|
||||||
|
if self.settings["twitter"]["user_key"] != None and self.settings["twitter"]["user_secret"] != None:
|
||||||
|
try:
|
||||||
|
log.debug("Logging in to twitter...")
|
||||||
|
self.twitter.login(self.settings["twitter"]["user_key"], self.settings["twitter"]["user_secret"], verify_credentials)
|
||||||
|
self.logged = True
|
||||||
|
log.debug("Logged.")
|
||||||
|
self.counter = 0
|
||||||
|
except:
|
||||||
|
log.error("The login attempt failed.")
|
||||||
|
self.logged = False
|
||||||
|
else:
|
||||||
|
self.logged = False
|
||||||
|
raise Exceptions.RequireCredentialsSessionError
|
||||||
|
|
||||||
|
@_require_configuration
|
||||||
|
def authorise(self):
|
||||||
|
|
||||||
|
""" Authorises a Twitter account. This function needs to be called for each new session, after self.get_configuration() and before self.login()"""
|
||||||
|
|
||||||
|
if self.logged == True:
|
||||||
|
raise Exceptions.AlreadyAuthorisedError("The authorisation process is not needed at this time.")
|
||||||
|
else:
|
||||||
|
self.twitter.authorise(self.settings)
|
||||||
|
|
||||||
|
def get_more_items(self, update_function, users=False, name=None, *args, **kwargs):
|
||||||
|
results = []
|
||||||
|
data = getattr(self.twitter.twitter, update_function)(*args, **kwargs)
|
||||||
|
if users == True:
|
||||||
|
if type(data) == dict and "cursor" in data:
|
||||||
|
self.db[name]["cursor"] = data["next_cursor"]
|
||||||
|
for i in data["users"]: results.append(i)
|
||||||
|
elif type(data) == list:
|
||||||
|
results.extend(data[1:])
|
||||||
|
else:
|
||||||
|
results.extend(data[1:])
|
||||||
|
return results
|
||||||
|
|
||||||
|
def api_call(self, call_name, action="", _sound=None, report_success=False, report_failure=True, preexec_message="", *args, **kwargs):
|
||||||
|
|
||||||
|
""" Make a call to the Twitter API. If there is a connectionError or another exception not related to Twitter, It will call the method again at least 25 times, waiting a while between calls. Useful for post methods.
|
||||||
|
If twitter returns an error, it will not call the method anymore.
|
||||||
|
call_name str: The method to call
|
||||||
|
action str: What you are doing on twitter, it will be reported to the user if report_success is set to True.
|
||||||
|
for example "following @tw_blue2" will be reported as "following @tw_blue2 succeeded".
|
||||||
|
_sound str: a sound to play if the call is executed properly.
|
||||||
|
report_success and report_failure bool: These are self explanatory. True or False.
|
||||||
|
preexec_message str: A message to speak to the user while the method is running, example: "trying to follow x user"."""
|
||||||
|
|
||||||
|
finished = False
|
||||||
|
tries = 0
|
||||||
|
if preexec_message:
|
||||||
|
output.speak(preexec_message, True)
|
||||||
|
while finished==False and tries < 25:
|
||||||
|
try:
|
||||||
|
val = getattr(self.twitter.twitter, call_name)(*args, **kwargs)
|
||||||
|
finished = True
|
||||||
|
except TwythonError as e:
|
||||||
|
output.speak(e.message)
|
||||||
|
if e.error_code != 403 and e.error_code != 404:
|
||||||
|
tries = tries+1
|
||||||
|
time.sleep(5)
|
||||||
|
elif report_failure and hasattr(e, 'message'):
|
||||||
|
output.speak(_("%s failed. Reason: %s") % (action, e.message))
|
||||||
|
finished = True
|
||||||
|
# except:
|
||||||
|
# tries = tries + 1
|
||||||
|
# time.sleep(5)
|
||||||
|
if report_success:
|
||||||
|
output.speak(_("%s succeeded.") % action)
|
||||||
|
if _sound != None: self.sound.play(_sound)
|
||||||
|
return val
|
||||||
|
|
||||||
|
def search(self, name, *args, **kwargs):
|
||||||
|
tl = self.twitter.twitter.search(*args, **kwargs)
|
||||||
|
tl["statuses"].reverse()
|
||||||
|
return tl["statuses"]
|
||||||
|
|
||||||
|
@_require_login
|
||||||
|
def get_favourites_timeline(self, name, *args, **kwargs):
|
||||||
|
|
||||||
|
""" Gets favourites for the authenticated user or a friend or follower.
|
||||||
|
name str: Name for storage in the database."""
|
||||||
|
|
||||||
|
tl = self.call_paged(self.twitter.twitter.get_favorites, *args, **kwargs)
|
||||||
|
return self.order_buffer(name, tl)
|
||||||
|
|
||||||
|
def call_paged(self, update_function, *args, **kwargs):
|
||||||
|
|
||||||
|
""" Makes a call to the Twitter API methods several times. Useful for get methods.
|
||||||
|
this function is needed for retrieving more than 200 items.
|
||||||
|
update_function str: The function to call. This function must be child of self.twitter.twitter
|
||||||
|
returns a list with all items retrieved."""
|
||||||
|
|
||||||
|
max = int(self.settings["general"]["max_api_calls"])-1
|
||||||
|
results = []
|
||||||
|
data = getattr(self.twitter.twitter, update_function)(count=self.settings["general"]["max_tweets_per_call"], *args, **kwargs)
|
||||||
|
results.extend(data)
|
||||||
|
for i in range(0, max):
|
||||||
|
if i == 0: max_id = results[-1]["id"]
|
||||||
|
else: max_id = results[0]["id"]
|
||||||
|
data = getattr(self.twitter.twitter, update_function)(max_id=max_id, count=self.settings["general"]["max_tweets_per_call"], *args, **kwargs)
|
||||||
|
results.extend(data)
|
||||||
|
results.reverse()
|
||||||
|
return results
|
||||||
|
|
||||||
|
@_require_login
|
||||||
|
def get_user_info(self):
|
||||||
|
|
||||||
|
""" Retrieves some information required by TWBlue for setup."""
|
||||||
|
f = self.twitter.twitter.get_account_settings()
|
||||||
|
sn = f["screen_name"]
|
||||||
|
self.settings["twitter"]["user_name"] = sn
|
||||||
|
self.db["user_name"] = sn
|
||||||
|
self.db["user_id"] = self.twitter.twitter.show_user(screen_name=sn)["id_str"]
|
||||||
|
try:
|
||||||
|
self.db["utc_offset"] = f["time_zone"]["utc_offset"]
|
||||||
|
except KeyError:
|
||||||
|
self.db["utc_offset"] = -time.timezone
|
||||||
|
self.get_lists()
|
||||||
|
self.get_muted_users()
|
||||||
|
self.settings.write()
|
||||||
|
|
||||||
|
@_require_login
|
||||||
|
def get_lists(self):
|
||||||
|
|
||||||
|
""" Gets the lists that the user is subscribed to and stores them in the database. Returns None."""
|
||||||
|
|
||||||
|
self.db["lists"] = self.twitter.twitter.show_lists(reverse=True)
|
||||||
|
|
||||||
|
@_require_login
|
||||||
|
def get_muted_users(self):
|
||||||
|
|
||||||
|
""" Gets muted users (oh really?)."""
|
||||||
|
|
||||||
|
self.db["muted_users"] = self.twitter.twitter.list_mute_ids()["ids"]
|
||||||
|
|
||||||
|
@_require_login
|
||||||
|
def get_stream(self, name, function, *args, **kwargs):
|
||||||
|
|
||||||
|
""" Retrieves the items for a regular stream.
|
||||||
|
name str: Name to save items to the database.
|
||||||
|
function str: A function to get the items."""
|
||||||
|
|
||||||
|
last_id = -1
|
||||||
|
if name in self.db:
|
||||||
|
try:
|
||||||
|
if self.db[name][0]["id"] > self.db[name][-1]["id"]:
|
||||||
|
last_id = self.db[name][0]["id"]
|
||||||
|
else:
|
||||||
|
last_id = self.db[name][-1]["id"]
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
tl = self.call_paged(function, sinze_id=last_id, *args, **kwargs)
|
||||||
|
self.order_buffer(name, tl)
|
||||||
|
|
||||||
|
def get_cursored_stream(self, name, function, items="users", get_previous=False, *args, **kwargs):
|
||||||
|
|
||||||
|
""" Gets items for API calls that require using cursors to paginate the results.
|
||||||
|
name str: Name to save it in the database.
|
||||||
|
function str: Function that provides the items.
|
||||||
|
items: When the function returns the list with results, items will tell how the order function should be look.
|
||||||
|
for example get_followers_list returns a list and users are under list["users"], here the items should point to "users"."""
|
||||||
|
|
||||||
|
items_ = []
|
||||||
|
try:
|
||||||
|
if "cursor" in self.db[name] and get_previous:
|
||||||
|
cursor = self.db[name]["cursor"]
|
||||||
|
else:
|
||||||
|
cursor = -1
|
||||||
|
except KeyError:
|
||||||
|
cursor = -1
|
||||||
|
tl = getattr(self.twitter.twitter, function)(cursor=cursor, count=self.settings["general"]["max_tweets_per_call"], *args, **kwargs)
|
||||||
|
tl[items].reverse()
|
||||||
|
num = self.order_cursored_buffer(name, tl[items])
|
||||||
|
self.db[name]["cursor"] = tl["next_cursor"]
|
||||||
|
return num
|
||||||
|
|
||||||
|
def start_streaming(self):
|
||||||
|
|
||||||
|
""" Start the streaming for sending tweets in realtime."""
|
||||||
|
if not hasattr(self, "main_stream"):
|
||||||
|
self.get_timelines()
|
||||||
|
if not hasattr(self, "timelinesStream"):
|
||||||
|
self.get_main_stream()
|
||||||
|
|
||||||
|
def get_main_stream(self):
|
||||||
|
log.debug("Starting the main stream...")
|
||||||
|
self.main_stream = twitter.buffers.stream.streamer(keyring.get("api_key"), keyring.get("api_secret"), self.settings["twitter"]["user_key"], self.settings["twitter"]["user_secret"], self)
|
||||||
|
stream_threaded(self.main_stream.user, self.session_id)
|
||||||
|
|
||||||
|
def get_timelines(self):
|
||||||
|
log.debug("Starting the timelines stream...")
|
||||||
|
self.timelinesStream = twitter.buffers.indibidual.timelinesStreamer(keyring.get("api_key"), keyring.get("api_secret"), self.settings["twitter"]["user_key"], self.settings["twitter"]["user_secret"], session=self)
|
||||||
|
ids = ""
|
||||||
|
for i in self.settings["other_buffers"]["timelines"]:
|
||||||
|
ids = ids + "%s, " % (self.db[i+"-timeline"][0]["user"]["id_str"])
|
||||||
|
for i in self.lists:
|
||||||
|
for z in i.users:
|
||||||
|
ids += str(z) + ", "
|
||||||
|
if ids != "":
|
||||||
|
# print ids
|
||||||
|
stream_threaded(self.timelinesStream.statuses.filter, self.session_id, follow=ids)
|
||||||
|
|
||||||
|
def add_friends(self):
|
||||||
|
try:
|
||||||
|
# print "setting friends"
|
||||||
|
self.timelinesStream.set_friends(self.main_stream.friends)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def listen_stream_error(self):
|
||||||
|
if hasattr(self, "main_stream"):
|
||||||
|
log.debug("Disconnecting the main stream...")
|
||||||
|
self.main_stream.disconnect()
|
||||||
|
del self.main_stream
|
||||||
|
if hasattr(self, "timelinesStream"):
|
||||||
|
log.debug("disconnecting the timelines stream...")
|
||||||
|
self.timelinesStream.disconnect()
|
||||||
|
del self.timelinesStream
|
||||||
|
|
||||||
|
def check_connection(self):
|
||||||
|
instan = 0
|
||||||
|
self.counter += 1
|
||||||
|
if self.counter >= 4:
|
||||||
|
del self.twitter
|
||||||
|
self.logged = False
|
||||||
|
self.twitter = twitter.twitter.twitter()
|
||||||
|
self.login(False)
|
||||||
|
pub.sendMessage("restart_streams", session=self.session_id)
|
||||||
|
if self.reconnection_function_active == True: return
|
||||||
|
self.reconnection_function_active = True
|
||||||
|
if not hasattr(self, "main_stream"):
|
||||||
|
self.get_main_stream()
|
||||||
|
if not hasattr(self, "timelinesStream"):
|
||||||
|
self.get_timelines()
|
||||||
|
self.reconnection_function_active = False
|
||||||
|
if hasattr(self, "timelinesStream") and not hasattr(self.timelinesStream, "friends"):
|
||||||
|
self.add_friends()
|
||||||
|
# try:
|
||||||
|
# urllib2.urlopen("http://74.125.228.231", timeout=5)
|
||||||
|
# except urllib2.URLError:
|
||||||
|
# pub.sendMessage("stream-error", session=self.session_id)
|
||||||
|
|
||||||
|
def remove_stream(self, stream):
|
||||||
|
if stream == "timelinesStream":
|
||||||
|
if hasattr(self, "timelinesStream"):
|
||||||
|
self.timelinesStream.disconnect()
|
||||||
|
del self.timelinesStream
|
||||||
|
else:
|
||||||
|
self.main_stream.disconnect()
|
||||||
|
del self.main_stream
|
||||||
|
|
||||||
|
def shelve(self):
|
||||||
|
"Shelve the database to allow for persistance."
|
||||||
|
shelfname=paths.config_path(str(self.session_id)+"/cache.db")
|
||||||
|
if self.settings["general"]["persist_size"] == 0:
|
||||||
|
if os.path.exists(shelfname):
|
||||||
|
os.remove(shelfname)
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
if not os.path.exists(shelfname):
|
||||||
|
output.speak("Generating database, this might take a while.",True)
|
||||||
|
shelf=shelve.open(paths.config_path(shelfname),'c')
|
||||||
|
for key,value in self.db.items():
|
||||||
|
if type(key) != str and type(key) != unicode:
|
||||||
|
output.speak("Uh oh, while shelving the database, a key of type " + str(type(key)) + " has been found. It will be converted to type str, but this will cause all sorts of problems on deshelve. Please bring this to the attention of the " + application.name + " developers immediately. More information about the error will be written to the error log.",True)
|
||||||
|
log.error("Uh oh, " + str(key) + " is of type " + str(type(key)) + "!")
|
||||||
|
# Convert unicode objects to UTF-8 strings before shelve these objects.
|
||||||
|
if type(value) == list and self.settings["general"]["persist_size"] != -1 and len(value) > self.settings["general"]["persist_size"]:
|
||||||
|
shelf[str(key.encode("utf-8"))]=value[self.settings["general"]["persist_size"]:]
|
||||||
|
else:
|
||||||
|
shelf[str(key.encode("utf-8"))]=value
|
||||||
|
shelf.close()
|
||||||
|
except:
|
||||||
|
output.speak("An exception occurred while shelving the " + application.name + " database. It will be deleted and rebuilt automatically. If this error persists, send the error log to the " + application.name + " developers.",True)
|
||||||
|
log.exception("Exception while shelving" + shelfname)
|
||||||
|
os.remove(shelfname)
|
||||||
|
|
||||||
|
def deshelve(self):
|
||||||
|
"Import a shelved database."
|
||||||
|
shelfname=paths.config_path(str(self.session_id)+"/cache.db")
|
||||||
|
if self.settings["general"]["persist_size"] == 0:
|
||||||
|
if os.path.exists(shelfname):
|
||||||
|
os.remove(shelfname)
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
shelf=shelve.open(paths.config_path(shelfname),'c')
|
||||||
|
for key,value in shelf.items():
|
||||||
|
self.db[key]=value
|
||||||
|
shelf.close()
|
||||||
|
except:
|
||||||
|
output.speak("An exception occurred while deshelving the " + application.name + " database. It will be deleted and rebuilt automatically. If this error persists, send the error log to the " + application.name + " developers.",True)
|
||||||
|
log.exception("Exception while deshelving" + shelfname)
|
||||||
|
try:
|
||||||
|
os.remove(shelfname)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def check_quoted_status(self, tweet):
|
||||||
|
status = tweets.is_long(tweet)
|
||||||
|
if status != False and config.app["app-settings"]["handle_longtweets"]:
|
||||||
|
tweet = self.get_quoted_tweet(tweet)
|
||||||
|
return tweet
|
||||||
|
|
||||||
|
def get_quoted_tweet(self, tweet):
|
||||||
|
quoted_tweet = tweet
|
||||||
|
if "full_text" in tweet:
|
||||||
|
value = "full_text"
|
||||||
|
else:
|
||||||
|
value = "text"
|
||||||
|
urls = utils.find_urls_in_text(quoted_tweet[value])
|
||||||
|
for url in range(0, len(urls)):
|
||||||
|
try: quoted_tweet[value] = quoted_tweet[value].replace(urls[url], quoted_tweet["entities"]["urls"][url]["expanded_url"])
|
||||||
|
except IndexError: pass
|
||||||
|
id = tweets.is_long(quoted_tweet)
|
||||||
|
try: original_tweet = self.twitter.twitter.show_status(id=id, tweet_mode="extended")
|
||||||
|
except: return quoted_tweet
|
||||||
|
original_tweet = self.check_long_tweet(original_tweet)
|
||||||
|
urls = utils.find_urls_in_text(original_tweet["full_text"])
|
||||||
|
for url in range(0, len(urls)):
|
||||||
|
try: original_tweet["full_text"] = original_tweet["full_text"].replace(urls[url], original_tweet["entities"]["urls"][url]["expanded_url"])
|
||||||
|
except IndexError: pass
|
||||||
|
return compose.compose_quoted_tweet(quoted_tweet, original_tweet)
|
||||||
|
|
||||||
|
def check_long_tweet(self, tweet):
|
||||||
|
long = twishort.is_long(tweet)
|
||||||
|
if long != False and config.app["app-settings"]["handle_longtweets"]:
|
||||||
|
tweet["message"] = twishort.get_full_text(long)
|
||||||
|
if tweet["message"] == False: return False
|
||||||
|
tweet["twishort"] = True
|
||||||
|
for i in tweet["entities"]["user_mentions"]:
|
||||||
|
if "@%s" % (i["screen_name"]) not in tweet["message"] and i["screen_name"] != tweet["user"]["screen_name"]:
|
||||||
|
if "retweeted_status" in tweet and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
|
||||||
|
continue
|
||||||
|
tweet["message"] = u"@%s %s" % (i["screen_name"], tweet["message"])
|
||||||
|
>>>>>>> Prepare for py3 port.
|
||||||
return tweet
|
return tweet
|
@ -1,19 +1,20 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import shutil
|
import shutil
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import platform
|
import platform
|
||||||
import output
|
import output
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
import wxUI as view
|
from . import wxUI as view
|
||||||
from controller import settings
|
from controller import settings
|
||||||
elif platform.system() == "Linux":
|
elif platform.system() == "Linux":
|
||||||
import gtkUI as view
|
from . import gtkUI as view
|
||||||
import paths
|
import paths
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import session
|
from . import session
|
||||||
import manager
|
from . import manager
|
||||||
import config_utils
|
import config_utils
|
||||||
import config
|
import config
|
||||||
|
|
||||||
@ -75,7 +76,7 @@ class sessionManagerController(object):
|
|||||||
def do_ok(self):
|
def do_ok(self):
|
||||||
log.debug("Starting sessions...")
|
log.debug("Starting sessions...")
|
||||||
for i in self.sessions:
|
for i in self.sessions:
|
||||||
if session.sessions.has_key(i) == True: continue
|
if (i in session.sessions) == True: continue
|
||||||
s = session.Session(i)
|
s = session.Session(i)
|
||||||
s.get_configuration()
|
s.get_configuration()
|
||||||
if i not in config.app["sessions"]["ignored_sessions"]:
|
if i not in config.app["sessions"]["ignored_sessions"]:
|
||||||
|
@ -1 +1,2 @@
|
|||||||
import buffers, utils, compose, twitter
|
from __future__ import absolute_import
|
||||||
|
from . import buffers, utils, compose, twitter
|
||||||
|
@ -1 +1,2 @@
|
|||||||
import stream, indibidual
|
from __future__ import absolute_import
|
||||||
|
from . import stream, indibidual
|
@ -41,7 +41,7 @@ class timelinesStreamer(TwythonStreamer):
|
|||||||
try:
|
try:
|
||||||
i.users.index(data["user"]["id"])
|
i.users.index(data["user"]["id"])
|
||||||
usr = data["in_reply_to_user_id"]
|
usr = data["in_reply_to_user_id"]
|
||||||
if (usr != None and usr in self.friends) or data.has_key("retweeted_status"):
|
if (usr != None and usr in self.friends) or "retweeted_status" in data:
|
||||||
data = self.session.check_quoted_status(data)
|
data = self.session.check_quoted_status(data)
|
||||||
data = self.session.check_long_tweet(data)
|
data = self.session.check_long_tweet(data)
|
||||||
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data)
|
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data)
|
||||||
@ -61,10 +61,10 @@ class timelinesStreamer(TwythonStreamer):
|
|||||||
|
|
||||||
def on_success(self, data):
|
def on_success(self, data):
|
||||||
if "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
|
if "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
|
||||||
if data.has_key("extended_tweet"):
|
if "extended_tweet" in data:
|
||||||
data["full_text"] = data["extended_tweet"]["full_text"]
|
data["full_text"] = data["extended_tweet"]["full_text"]
|
||||||
if data.has_key("retweeted_status"):
|
if "retweeted_status" in data:
|
||||||
if data["retweeted_status"].has_key("extended_tweet"):
|
if "extended_tweet" in data["retweeted_status"]:
|
||||||
data["retweeted_status"]["full_text"] = data["retweeted_status"]["extended_tweet"]["full_text"]
|
data["retweeted_status"]["full_text"] = data["retweeted_status"]["extended_tweet"]["full_text"]
|
||||||
data["full_text"] = data["text"]
|
data["full_text"] = data["text"]
|
||||||
data["retweeted_status"]["entities"] = data["retweeted_status"]["extended_tweet"]["entities"]
|
data["retweeted_status"]["entities"] = data["retweeted_status"]["extended_tweet"]["entities"]
|
||||||
|
@ -26,7 +26,7 @@ class streamer(TwythonStreamer):
|
|||||||
return self.session.db["user_name"]
|
return self.session.db["user_name"]
|
||||||
|
|
||||||
def put_data(self, place, data):
|
def put_data(self, place, data):
|
||||||
if self.session.db.has_key(place):
|
if place in self.session.db:
|
||||||
if utils.find_item(data["id"], self.session.db[place]) != None:
|
if utils.find_item(data["id"], self.session.db[place]) != None:
|
||||||
log.error("duplicated tweet. Ignoring it...")
|
log.error("duplicated tweet. Ignoring it...")
|
||||||
return False
|
return False
|
||||||
@ -129,11 +129,11 @@ class streamer(TwythonStreamer):
|
|||||||
self.friends = data["friends"]
|
self.friends = data["friends"]
|
||||||
pub.sendMessage("friends-receibed")
|
pub.sendMessage("friends-receibed")
|
||||||
elif "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
|
elif "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
|
||||||
if data.has_key("extended_tweet"):
|
if "extended_tweet" in data:
|
||||||
data["full_text"] = data["extended_tweet"]["full_text"]
|
data["full_text"] = data["extended_tweet"]["full_text"]
|
||||||
data["entities"] = data["extended_tweet"]["entities"]
|
data["entities"] = data["extended_tweet"]["entities"]
|
||||||
if data.has_key("retweeted_status"):
|
if "retweeted_status" in data:
|
||||||
if data["retweeted_status"].has_key("extended_tweet"):
|
if "extended_tweet" in data["retweeted_status"]:
|
||||||
data["retweeted_status"]["full_text"] = data["retweeted_status"]["extended_tweet"]["full_text"]
|
data["retweeted_status"]["full_text"] = data["retweeted_status"]["extended_tweet"]["full_text"]
|
||||||
data["full_text"] = data["text"]
|
data["full_text"] = data["text"]
|
||||||
data["retweeted_status"]["entities"] = data["retweeted_status"]["extended_tweet"]["entities"]
|
data["retweeted_status"]["entities"] = data["retweeted_status"]["extended_tweet"]["entities"]
|
||||||
@ -144,7 +144,7 @@ class streamer(TwythonStreamer):
|
|||||||
d = self.put_data("home_timeline", data)
|
d = self.put_data("home_timeline", data)
|
||||||
if d != False:
|
if d != False:
|
||||||
pub.sendMessage("item-in-home", data=data, user=self.get_user())
|
pub.sendMessage("item-in-home", data=data, user=self.get_user())
|
||||||
elif data.has_key("event"):
|
elif "event" in data:
|
||||||
if "favorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:
|
if "favorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:
|
||||||
self.check_favs(data)
|
self.check_favs(data)
|
||||||
elif "unfavorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:
|
elif "unfavorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import platform
|
import platform
|
||||||
system = platform.system()
|
system = platform.system()
|
||||||
import utils
|
from . import utils
|
||||||
import re
|
import re
|
||||||
import htmlentitydefs
|
import html.entities
|
||||||
import time
|
import time
|
||||||
import output
|
import output
|
||||||
import languageHandler
|
import languageHandler
|
||||||
@ -21,10 +21,10 @@ def StripChars(s):
|
|||||||
If we match &blah; and it's not found, &blah; will be returned.
|
If we match &blah; and it's not found, &blah; will be returned.
|
||||||
if we match #\d+, unichr(digits) will be returned.
|
if we match #\d+, unichr(digits) will be returned.
|
||||||
Else, a unicode string will be returned."""
|
Else, a unicode string will be returned."""
|
||||||
if match.group(1).startswith('#'): return unichr(int(match.group(1)[1:]))
|
if match.group(1).startswith('#'): return chr(int(match.group(1)[1:]))
|
||||||
replacement = htmlentitydefs.entitydefs.get(match.group(1), "&%s;" % match.group(1))
|
replacement = html.entities.entitydefs.get(match.group(1), "&%s;" % match.group(1))
|
||||||
return replacement.decode('iso-8859-1')
|
return replacement.decode('iso-8859-1')
|
||||||
return unicode(entity_re.sub(matchFunc, s))
|
return str(entity_re.sub(matchFunc, s))
|
||||||
|
|
||||||
chars = "abcdefghijklmnopqrstuvwxyz"
|
chars = "abcdefghijklmnopqrstuvwxyz"
|
||||||
|
|
||||||
@ -35,16 +35,16 @@ def compose_tweet(tweet, db, relative_times, show_screen_names=False):
|
|||||||
if relative_times == True:
|
if relative_times == True:
|
||||||
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
ts = original_date.replace(seconds=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = tweet["created_at"]
|
ts = tweet["created_at"]
|
||||||
if tweet.has_key("message"):
|
if "message" in tweet:
|
||||||
value = "message"
|
value = "message"
|
||||||
elif tweet.has_key("full_text"):
|
elif "full_text" in tweet:
|
||||||
value = "full_text"
|
value = "full_text"
|
||||||
else:
|
else:
|
||||||
value = "text"
|
value = "text"
|
||||||
if tweet.has_key("retweeted_status") and value != "message":
|
if "retweeted_status" in tweet and value != "message":
|
||||||
text = StripChars(tweet["retweeted_status"][value])
|
text = StripChars(tweet["retweeted_status"][value])
|
||||||
else:
|
else:
|
||||||
text = StripChars(tweet[value])
|
text = StripChars(tweet[value])
|
||||||
@ -53,14 +53,14 @@ def compose_tweet(tweet, db, relative_times, show_screen_names=False):
|
|||||||
else:
|
else:
|
||||||
user = tweet["user"]["name"]
|
user = tweet["user"]["name"]
|
||||||
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
|
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
|
||||||
if tweet.has_key("retweeted_status"):
|
if "retweeted_status" in tweet:
|
||||||
if tweet.has_key("message") == False and tweet["retweeted_status"]["is_quote_status"] == False:
|
if ("message" in tweet) == False and tweet["retweeted_status"]["is_quote_status"] == False:
|
||||||
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], text)
|
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], text)
|
||||||
elif tweet["retweeted_status"]["is_quote_status"]:
|
elif tweet["retweeted_status"]["is_quote_status"]:
|
||||||
text = "%s" % (text)
|
text = "%s" % (text)
|
||||||
else:
|
else:
|
||||||
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], text)
|
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], text)
|
||||||
if tweet.has_key("message") == False:
|
if ("message" in tweet) == False:
|
||||||
urls = utils.find_urls_in_text(text)
|
urls = utils.find_urls_in_text(text)
|
||||||
for url in range(0, len(urls)):
|
for url in range(0, len(urls)):
|
||||||
try:
|
try:
|
||||||
@ -77,16 +77,16 @@ def compose_dm(tweet, db, relative_times, show_screen_names=False):
|
|||||||
if relative_times == True:
|
if relative_times == True:
|
||||||
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
ts = original_date.replace(seconds=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = tweet["created_at"]
|
ts = tweet["created_at"]
|
||||||
text = StripChars(tweet["text"])
|
text = StripChars(tweet["text"])
|
||||||
source = "DM"
|
source = "DM"
|
||||||
if db["user_name"] == tweet["sender"]["screen_name"]:
|
if db["user_name"] == tweet["sender"]["screen_name"]:
|
||||||
if show_screen_names:
|
if show_screen_names:
|
||||||
user = _(u"Dm to %s ") % (tweet["recipient"]["screen_name"],)
|
user = _("Dm to %s ") % (tweet["recipient"]["screen_name"],)
|
||||||
else:
|
else:
|
||||||
user = _(u"Dm to %s ") % (tweet["recipient"]["name"],)
|
user = _("Dm to %s ") % (tweet["recipient"]["name"],)
|
||||||
else:
|
else:
|
||||||
if show_screen_names:
|
if show_screen_names:
|
||||||
user = tweet["sender"]["screen_name"]
|
user = tweet["sender"]["screen_name"]
|
||||||
@ -101,7 +101,7 @@ def compose_dm(tweet, db, relative_times, show_screen_names=False):
|
|||||||
|
|
||||||
def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False):
|
def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False):
|
||||||
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
|
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
|
||||||
if quoted_tweet.has_key("full_text"):
|
if "full_text" in quoted_tweet:
|
||||||
value = "full_text"
|
value = "full_text"
|
||||||
else:
|
else:
|
||||||
value = "text"
|
value = "text"
|
||||||
@ -115,13 +115,13 @@ def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False):
|
|||||||
except KeyError: text = "%s" % (StripChars(quoted_tweet[value]))
|
except KeyError: text = "%s" % (StripChars(quoted_tweet[value]))
|
||||||
if text[-1] in chars: text=text+"."
|
if text[-1] in chars: text=text+"."
|
||||||
original_user = original_tweet["user"]["screen_name"]
|
original_user = original_tweet["user"]["screen_name"]
|
||||||
if original_tweet.has_key("message"):
|
if "message" in original_tweet:
|
||||||
original_text = StripChars(original_tweet["message"])
|
original_text = StripChars(original_tweet["message"])
|
||||||
elif original_tweet.has_key("full_text"):
|
elif "full_text" in original_tweet:
|
||||||
original_text = StripChars(original_tweet["full_text"])
|
original_text = StripChars(original_tweet["full_text"])
|
||||||
else:
|
else:
|
||||||
original_text = StripChars(original_tweet["text"])
|
original_text = StripChars(original_tweet["text"])
|
||||||
quoted_tweet["message"] = _(u"{0}. Quoted tweet from @{1}: {2}").format( quoted_tweet[value], original_user, original_text)
|
quoted_tweet["message"] = _("{0}. Quoted tweet from @{1}: {2}").format( quoted_tweet[value], original_user, original_text)
|
||||||
quoted_tweet = tweets.clear_url(quoted_tweet)
|
quoted_tweet = tweets.clear_url(quoted_tweet)
|
||||||
return quoted_tweet
|
return quoted_tweet
|
||||||
|
|
||||||
@ -131,21 +131,21 @@ def compose_followers_list(tweet, db, relative_times=True, show_screen_names=Fal
|
|||||||
if relative_times == True:
|
if relative_times == True:
|
||||||
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
ts = original_date.replace(seconds=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = tweet["created_at"]
|
ts = tweet["created_at"]
|
||||||
if tweet.has_key("status"):
|
if "status" in tweet:
|
||||||
if len(tweet["status"]) > 4 and system == "Windows":
|
if len(tweet["status"]) > 4 and system == "Windows":
|
||||||
original_date2 = arrow.get(tweet["status"]["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
original_date2 = arrow.get(tweet["status"]["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
||||||
if relative_times:
|
if relative_times:
|
||||||
ts2 = original_date2.humanize(locale=languageHandler.getLanguage())
|
ts2 = original_date2.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts2 = original_date2.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
ts2 = original_date2.replace(seconds=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts2 = _("Unavailable")
|
ts2 = _("Unavailable")
|
||||||
else:
|
else:
|
||||||
ts2 = _("Unavailable")
|
ts2 = _("Unavailable")
|
||||||
return [_(u"%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined Twitter %s") % (tweet["name"], tweet["screen_name"], tweet["followers_count"], tweet["friends_count"], tweet["statuses_count"], ts2, ts)]
|
return [_("%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined Twitter %s") % (tweet["name"], tweet["screen_name"], tweet["followers_count"], tweet["friends_count"], tweet["statuses_count"], ts2, ts)]
|
||||||
|
|
||||||
def compose_event(data, username, show_screen_names=False):
|
def compose_event(data, username, show_screen_names=False):
|
||||||
if show_screen_names:
|
if show_screen_names:
|
||||||
@ -155,45 +155,45 @@ def compose_event(data, username, show_screen_names=False):
|
|||||||
if data["event"] == "block":
|
if data["event"] == "block":
|
||||||
event = _("You've blocked %s") % (data["target"][value])
|
event = _("You've blocked %s") % (data["target"][value])
|
||||||
elif data["event"] == "unblock":
|
elif data["event"] == "unblock":
|
||||||
event = _(u"You've unblocked %s") % (data["target"][value])
|
event = _("You've unblocked %s") % (data["target"][value])
|
||||||
elif data["event"] == "follow":
|
elif data["event"] == "follow":
|
||||||
if data["target"]["screen_name"] == username:
|
if data["target"]["screen_name"] == username:
|
||||||
event = _(u"%s(@%s) has followed you") % (data["source"]["name"], data["source"]["screen_name"])
|
event = _("%s(@%s) has followed you") % (data["source"]["name"], data["source"]["screen_name"])
|
||||||
elif data["source"]["screen_name"] == username:
|
elif data["source"]["screen_name"] == username:
|
||||||
event = _(u"You've followed %s(@%s)") % (data["target"]["name"], data["target"]["screen_name"])
|
event = _("You've followed %s(@%s)") % (data["target"]["name"], data["target"]["screen_name"])
|
||||||
elif data["event"] == "unfollow":
|
elif data["event"] == "unfollow":
|
||||||
event = _(u"You've unfollowed %s (@%s)") % (data["target"]["name"], data["target"]["screen_name"])
|
event = _("You've unfollowed %s (@%s)") % (data["target"]["name"], data["target"]["screen_name"])
|
||||||
elif data["event"] == "favorite":
|
elif data["event"] == "favorite":
|
||||||
if data["source"]["screen_name"] == username:
|
if data["source"]["screen_name"] == username:
|
||||||
event = _(u"You've liked: %s, %s") % (data["target"][value], data["target_object"]["text"])
|
event = _("You've liked: %s, %s") % (data["target"][value], data["target_object"]["text"])
|
||||||
else:
|
else:
|
||||||
event = _(u"%s(@%s) has liked: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["text"])
|
event = _("%s(@%s) has liked: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["text"])
|
||||||
elif data["event"] == "unfavorite":
|
elif data["event"] == "unfavorite":
|
||||||
if data["source"]["screen_name"] == username: event = _(u"You've unliked: %s, %s") % (data["target"][value], data["target_object"]["text"])
|
if data["source"]["screen_name"] == username: event = _("You've unliked: %s, %s") % (data["target"][value], data["target_object"]["text"])
|
||||||
else: event = _(u"%s(@%s) has unliked: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["text"])
|
else: event = _("%s(@%s) has unliked: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["text"])
|
||||||
elif data["event"] == "list_created":
|
elif data["event"] == "list_created":
|
||||||
event = _(u"You've created the list %s") % (data["target_object"]["name"])
|
event = _("You've created the list %s") % (data["target_object"]["name"])
|
||||||
elif data["event"] == "list_destroyed":
|
elif data["event"] == "list_destroyed":
|
||||||
event = _("You've deleted the list %s") % (data["target_object"]["name"])
|
event = _("You've deleted the list %s") % (data["target_object"]["name"])
|
||||||
elif data["event"] == "list_updated":
|
elif data["event"] == "list_updated":
|
||||||
event = _("You've updated the list %s") % (data["target_object"]["name"])
|
event = _("You've updated the list %s") % (data["target_object"]["name"])
|
||||||
elif data["event"] == "list_member_added":
|
elif data["event"] == "list_member_added":
|
||||||
if data["source"]["screen_name"] == username: event = _(u"You've added %s(@%s) to the list %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["name"])
|
if data["source"]["screen_name"] == username: event = _("You've added %s(@%s) to the list %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["name"])
|
||||||
else: event = _(u"%s(@%s) has added you to the list %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["name"])
|
else: event = _("%s(@%s) has added you to the list %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["name"])
|
||||||
elif data["event"] == "list_member_removed":
|
elif data["event"] == "list_member_removed":
|
||||||
if data["source"]["screen_name"] == username: event = _(u"You'be removed %s(@%s) from the list %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["name"])
|
if data["source"]["screen_name"] == username: event = _("You'be removed %s(@%s) from the list %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["name"])
|
||||||
else: event = _(u"%s(@%s) has removed you from the list %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["name"])
|
else: event = _("%s(@%s) has removed you from the list %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["name"])
|
||||||
elif data["event"] == "list_user_subscribed":
|
elif data["event"] == "list_user_subscribed":
|
||||||
if data["source"]["screen_name"] == username: event = _(u"You've subscribed to the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["target"]["name"], data["target"]["screen_name"])
|
if data["source"]["screen_name"] == username: event = _("You've subscribed to the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["target"]["name"], data["target"]["screen_name"])
|
||||||
else: event = _(u"%s(@%s) has subscribed you to the list %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["name"])
|
else: event = _("%s(@%s) has subscribed you to the list %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["name"])
|
||||||
elif data["event"] == "list_user_unsubscribed":
|
elif data["event"] == "list_user_unsubscribed":
|
||||||
if data["source"]["screen_name"] == username: event = _(u"You've unsubscribed from the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["target"]["name"], data["target"]["screen_name"])
|
if data["source"]["screen_name"] == username: event = _("You've unsubscribed from the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["target"]["name"], data["target"]["screen_name"])
|
||||||
else: event = _("You've been unsubscribed from the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["source"]["name"], data["source"]["screen_name"])
|
else: event = _("You've been unsubscribed from the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["source"]["name"], data["source"]["screen_name"])
|
||||||
elif data["event"] == "retweeted_retweet":
|
elif data["event"] == "retweeted_retweet":
|
||||||
if data["source"]["screen_name"] == username: event = _(u"You have retweeted a retweet from %s(@%s): %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["retweeted_status"]["text"])
|
if data["source"]["screen_name"] == username: event = _("You have retweeted a retweet from %s(@%s): %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["retweeted_status"]["text"])
|
||||||
else: event = _(u"%s(@%s) has retweeted your retweet: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["retweeted_status"]["text"])
|
else: event = _("%s(@%s) has retweeted your retweet: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["retweeted_status"]["text"])
|
||||||
elif data["event"] == "quoted_tweet":
|
elif data["event"] == "quoted_tweet":
|
||||||
event = _(u"@{0} quoted your tweet: {1}").format(data["source"]["screen_name"], data["target_object"]["text"])
|
event = _("@{0} quoted your tweet: {1}").format(data["source"]["screen_name"], data["target_object"]["text"])
|
||||||
else:
|
else:
|
||||||
event = _("Unknown")
|
event = _("Unknown")
|
||||||
log.error("event: %s\n target: %s\n source: %s\n target_object: %s" % (data["event"], data["target"], data["source"], data["target_object"]))
|
log.error("event: %s\n target: %s\n source: %s\n target_object: %s" % (data["event"], data["target"], data["source"], data["target_object"]))
|
||||||
@ -201,10 +201,10 @@ def compose_event(data, username, show_screen_names=False):
|
|||||||
|
|
||||||
def compose_list(list):
|
def compose_list(list):
|
||||||
name = list["name"]
|
name = list["name"]
|
||||||
if list["description"] == None: description = _(u"No description available")
|
if list["description"] == None: description = _("No description available")
|
||||||
else: description = list["description"]
|
else: description = list["description"]
|
||||||
user = list["user"]["name"]
|
user = list["user"]["name"]
|
||||||
members = str(list["member_count"])
|
members = str(list["member_count"])
|
||||||
if list["mode"] == "private": status = _(u"private")
|
if list["mode"] == "private": status = _("private")
|
||||||
else: status = _(u"public")
|
else: status = _("public")
|
||||||
return [name, description, user, members, status]
|
return [name, description, user, members, status]
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import config
|
import config
|
||||||
import random
|
import random
|
||||||
import BaseHTTPServer
|
import BaseHTTPServer
|
||||||
import webbrowser
|
import webbrowser
|
||||||
from twython import Twython, TwythonError
|
from twython import Twython, TwythonError
|
||||||
from keys import keyring
|
from keys import keyring
|
||||||
import authorisationHandler
|
from . import authorisationHandler
|
||||||
from requests import certs
|
from requests import certs
|
||||||
import logging
|
import logging
|
||||||
log = logging.getLogger("sessionTwitter")
|
log = logging.getLogger("sessionTwitter")
|
||||||
|
@ -23,9 +23,9 @@ def find_urls_in_text(text):
|
|||||||
|
|
||||||
def find_urls (tweet):
|
def find_urls (tweet):
|
||||||
urls = []
|
urls = []
|
||||||
if tweet.has_key("message"):
|
if "message" in tweet:
|
||||||
i = "message"
|
i = "message"
|
||||||
elif tweet.has_key("full_text"):
|
elif "full_text" in tweet:
|
||||||
i = "full_text"
|
i = "full_text"
|
||||||
else:
|
else:
|
||||||
i = "text"
|
i = "text"
|
||||||
@ -64,18 +64,18 @@ def is_audio(tweet):
|
|||||||
if i["text"] == "audio":
|
if i["text"] == "audio":
|
||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
print tweet["entities"]["hashtags"]
|
print(tweet["entities"]["hashtags"])
|
||||||
log.exception("Exception while executing is_audio hashtag algorithm")
|
log.exception("Exception while executing is_audio hashtag algorithm")
|
||||||
|
|
||||||
def is_geocoded(tweet):
|
def is_geocoded(tweet):
|
||||||
if tweet.has_key("coordinates") and tweet["coordinates"] != None:
|
if "coordinates" in tweet and tweet["coordinates"] != None:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def is_media(tweet):
|
def is_media(tweet):
|
||||||
if tweet["entities"].has_key("media") == False:
|
if ("media" in tweet["entities"]) == False:
|
||||||
return False
|
return False
|
||||||
for i in tweet["entities"]["media"]:
|
for i in tweet["entities"]["media"]:
|
||||||
if i.has_key("type") and i["type"] == "photo":
|
if "type" in i and i["type"] == "photo":
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@ -90,10 +90,10 @@ def get_all_mentioned(tweet, conf, field="screen_name"):
|
|||||||
|
|
||||||
def get_all_users(tweet, conf):
|
def get_all_users(tweet, conf):
|
||||||
string = []
|
string = []
|
||||||
if tweet.has_key("retweeted_status"):
|
if "retweeted_status" in tweet:
|
||||||
string.append(tweet["user"]["screen_name"])
|
string.append(tweet["user"]["screen_name"])
|
||||||
tweet = tweet["retweeted_status"]
|
tweet = tweet["retweeted_status"]
|
||||||
if tweet.has_key("sender"):
|
if "sender" in tweet:
|
||||||
string.append(tweet["sender"]["screen_name"])
|
string.append(tweet["sender"]["screen_name"])
|
||||||
else:
|
else:
|
||||||
if tweet["user"]["screen_name"] != conf["user_name"]:
|
if tweet["user"]["screen_name"] != conf["user_name"]:
|
||||||
@ -129,9 +129,9 @@ def api_call(parent=None, call_name=None, preexec_message="", success="", succes
|
|||||||
return val
|
return val
|
||||||
|
|
||||||
def is_allowed(tweet, clients):
|
def is_allowed(tweet, clients):
|
||||||
if tweet.has_key("sender"): return True
|
if "sender" in tweet: return True
|
||||||
allowed = True
|
allowed = True
|
||||||
if tweet.has_key("retweeted_status"): tweet = tweet["retweeted_status"]
|
if "retweeted_status" in tweet: tweet = tweet["retweeted_status"]
|
||||||
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
|
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
|
||||||
for i in clients:
|
for i in clients:
|
||||||
if i.lower() == source.lower():
|
if i.lower() == source.lower():
|
||||||
@ -141,9 +141,9 @@ def is_allowed(tweet, clients):
|
|||||||
|
|
||||||
def twitter_error(error):
|
def twitter_error(error):
|
||||||
if error.error_code == 403:
|
if error.error_code == 403:
|
||||||
msg = _(u"Sorry, you are not authorised to see this status.")
|
msg = _("Sorry, you are not authorised to see this status.")
|
||||||
elif error.error_code == 404:
|
elif error.error_code == 404:
|
||||||
msg = _(u"No status found with that ID")
|
msg = _("No status found with that ID")
|
||||||
else:
|
else:
|
||||||
msg = _(u"Error code {0}").format(error.error_code,)
|
msg = _("Error code {0}").format(error.error_code,)
|
||||||
output.speak(msg)
|
output.speak(msg)
|
@ -1,11 +1,11 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import application
|
import application
|
||||||
import update
|
from . import update
|
||||||
import platform
|
import platform
|
||||||
import logging
|
import logging
|
||||||
import output
|
import output
|
||||||
from requests.exceptions import ConnectionError
|
from requests.exceptions import ConnectionError
|
||||||
from wxUpdater import *
|
from .wxUpdater import *
|
||||||
logger = logging.getLogger("updater")
|
logger = logging.getLogger("updater")
|
||||||
|
|
||||||
def do_update(endpoint=application.update_url):
|
def do_update(endpoint=application.update_url):
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
import application
|
import application
|
||||||
import utils
|
from . import utils
|
||||||
|
|
||||||
progress_dialog = None
|
progress_dialog = None
|
||||||
|
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
import shorteners
|
from __future__ import absolute_import
|
||||||
from __main__ import *
|
from . import shorteners
|
||||||
|
from .__main__ import *
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
import shorteners
|
from . import shorteners
|
||||||
|
|
||||||
|
|
||||||
def service_selecter (func):
|
def service_selecter (func):
|
||||||
@ -27,6 +28,7 @@ def unshorten (url, service=None, **kwargs):
|
|||||||
def default_service ():
|
def default_service ():
|
||||||
return shorteners.AcortameShortener
|
return shorteners.AcortameShortener
|
||||||
|
|
||||||
|
|
||||||
def find_service (service, **kwargs):
|
def find_service (service, **kwargs):
|
||||||
for i in shorteners.__all__:
|
for i in shorteners.__all__:
|
||||||
obj = getattr(shorteners, i)(**kwargs)
|
obj = getattr(shorteners, i)(**kwargs)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
from hkcim import HKCShortener
|
from .hkcim import HKCShortener
|
||||||
from isgd import IsgdShortener
|
from .isgd import IsgdShortener
|
||||||
from onjme import OnjmeShortener
|
from .onjme import OnjmeShortener
|
||||||
from tinyarrows import TinyArrowsShortener
|
from .tinyarrows import TinyArrowsShortener
|
||||||
from tinyurl import TinyurlShortener
|
from .tinyurl import TinyurlShortener
|
||||||
from xedcc import XedccShortener
|
from .xedcc import XedccShortener
|
||||||
from clckru import ClckruShortener
|
from .clckru import ClckruShortener
|
||||||
from acortame import AcortameShortener
|
from .acortame import AcortameShortener
|
||||||
__all__ = ["HKCShortener", "IsgdShortener", "OnjmeShortener", "TinyArrowsShortener", "TinyurlShortener", "XedccShortener", "ClckruShortener", "AcortameShortener"]
|
__all__ = ["HKCShortener", "IsgdShortener", "OnjmeShortener", "TinyArrowsShortener", "TinyurlShortener", "XedccShortener", "ClckruShortener", "AcortameShortener"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
import requests
|
import requests
|
||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
|
|
||||||
|
|
||||||
class ClckruShortener (URLShortener):
|
class ClckruShortener (URLShortener):
|
||||||
@ -10,7 +10,7 @@ class ClckruShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get ("http://clck.ru/--?url=" + urllib.quote(url))
|
api = requests.get ("http://clck.ru/--?url=" + urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer
|
return answer
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
import requests
|
import requests
|
||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
|
|
||||||
class HKCShortener (URLShortener):
|
class HKCShortener (URLShortener):
|
||||||
def __init__ (self, *args, **kwargs):
|
def __init__ (self, *args, **kwargs):
|
||||||
@ -9,7 +9,7 @@ class HKCShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get ("http://hkc.im/yourls-api.php?action=shorturl&format=simple&url=" + urllib.quote(url))
|
api = requests.get ("http://hkc.im/yourls-api.php?action=shorturl&format=simple&url=" + urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer
|
return answer
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
import requests
|
import requests
|
||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
|
|
||||||
|
|
||||||
class IsgdShortener (URLShortener):
|
class IsgdShortener (URLShortener):
|
||||||
@ -10,7 +10,7 @@ class IsgdShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get ("http://is.gd/api.php?longurl=" + urllib.quote(url))
|
api = requests.get ("http://is.gd/api.php?longurl=" + urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer
|
return answer
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
import requests
|
import requests
|
||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
|
|
||||||
class OnjmeShortener (URLShortener):
|
class OnjmeShortener (URLShortener):
|
||||||
def __init__ (self, *args, **kwargs):
|
def __init__ (self, *args, **kwargs):
|
||||||
@ -9,7 +9,7 @@ class OnjmeShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get ("http://onj.me/yourls-api.php?action=shorturl&format=simple&url=" + urllib.quote(url))
|
api = requests.get ("http://onj.me/yourls-api.php?action=shorturl&format=simple&url=" + urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer
|
return answer
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
import requests
|
import requests
|
||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
|
|
||||||
class TinyArrowsShortener (URLShortener):
|
class TinyArrowsShortener (URLShortener):
|
||||||
def __init__ (self, *args, **kwargs):
|
def __init__ (self, *args, **kwargs):
|
||||||
@ -9,7 +9,7 @@ class TinyArrowsShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get("http://tinyarro.ws/api-create.php?utfpure=1&url=%s" % urllib.quote(url))
|
api = requests.get("http://tinyarro.ws/api-create.php?utfpure=1&url=%s" % urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer.decode('UTF-8')
|
return answer.decode('UTF-8')
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
import requests
|
import requests
|
||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
class TinyurlShortener (URLShortener):
|
class TinyurlShortener (URLShortener):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.name = "TinyURL.com"
|
self.name = "TinyURL.com"
|
||||||
@ -8,7 +8,7 @@ class TinyurlShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get ("http://tinyurl.com/api-create.php?url=" + urllib.quote(url))
|
api = requests.get ("http://tinyurl.com/api-create.php?url=" + urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer
|
return answer
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import urllib
|
import urllib.request, urllib.parse, urllib.error
|
||||||
import requests
|
import requests
|
||||||
from url_shortener import URLShortener
|
from .url_shortener import URLShortener
|
||||||
|
|
||||||
class XedccShortener (URLShortener):
|
class XedccShortener (URLShortener):
|
||||||
def __init__ (self, *args, **kwargs):
|
def __init__ (self, *args, **kwargs):
|
||||||
@ -9,7 +9,7 @@ class XedccShortener (URLShortener):
|
|||||||
|
|
||||||
def _shorten (self, url):
|
def _shorten (self, url):
|
||||||
answer = url
|
answer = url
|
||||||
api = requests.get ("http://xed.cc/yourls-api.php?action=shorturl&format=simple&url=" + urllib.quote(url))
|
api = requests.get ("http://xed.cc/yourls-api.php?action=shorturl&format=simple&url=" + urllib.parse.quote(url))
|
||||||
if api.status_code == 200:
|
if api.status_code == 200:
|
||||||
answer = api.text
|
answer = api.text
|
||||||
return answer
|
return answer
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
import platform
|
import platform
|
||||||
if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
from wxUtils import *
|
from .wxUtils import *
|
||||||
#elif platform.system() == "Linux":
|
#elif platform.system() == "Linux":
|
||||||
# from gtkUtils import *
|
# from gtkUtils import *
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import wx
|
import wx
|
||||||
|
from wx import adv
|
||||||
import paths
|
import paths
|
||||||
import languageHandler
|
import languageHandler
|
||||||
import sys
|
import sys
|
||||||
@ -52,8 +53,8 @@ NOTEBOOK_PAGE_CHANGED = wx.EVT_TREEBOOK_PAGE_CHANGED
|
|||||||
RADIOBUTTON = wx.EVT_RADIOBUTTON
|
RADIOBUTTON = wx.EVT_RADIOBUTTON
|
||||||
|
|
||||||
# Taskbar mouse clicks.
|
# Taskbar mouse clicks.
|
||||||
TASKBAR_RIGHT_CLICK = wx.EVT_TASKBAR_RIGHT_DOWN
|
TASKBAR_RIGHT_CLICK = adv.EVT_TASKBAR_RIGHT_DOWN
|
||||||
TASKBAR_LEFT_CLICK = wx.EVT_TASKBAR_LEFT_DOWN
|
TASKBAR_LEFT_CLICK = adv.EVT_TASKBAR_LEFT_DOWN
|
||||||
|
|
||||||
def exit_application():
|
def exit_application():
|
||||||
""" Closes the current window cleanly. """
|
""" Closes the current window cleanly. """
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from base import basePanel
|
from __future__ import absolute_import
|
||||||
from dm import dmPanel
|
from .base import basePanel
|
||||||
from events import eventsPanel
|
from .dm import dmPanel
|
||||||
from favourites import favsPanel
|
from .events import eventsPanel
|
||||||
from lists import listPanel
|
from .favourites import favsPanel
|
||||||
from panels import accountPanel, emptyPanel
|
from .lists import listPanel
|
||||||
from people import peoplePanel
|
from .panels import accountPanel, emptyPanel
|
||||||
from trends import trendsPanel
|
from .people import peoplePanel
|
||||||
from tweet_searches import searchPanel
|
from .trends import trendsPanel
|
||||||
from user_searches import searchUsersPanel
|
from .tweet_searches import searchPanel
|
||||||
|
from .user_searches import searchUsersPanel
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from base import basePanel
|
from .base import basePanel
|
||||||
|
|
||||||
class dmPanel(basePanel):
|
class dmPanel(basePanel):
|
||||||
def __init__(self, parent, name):
|
def __init__(self, parent, name):
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from base import basePanel
|
from .base import basePanel
|
||||||
|
|
||||||
class favsPanel(basePanel):
|
class favsPanel(basePanel):
|
||||||
def __init__(self, parent, name):
|
def __init__(self, parent, name):
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from base import basePanel
|
from .base import basePanel
|
||||||
|
|
||||||
class listPanel(basePanel):
|
class listPanel(basePanel):
|
||||||
def __init__(self, parent, name):
|
def __init__(self, parent, name):
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from multiplatform_widgets import widgets
|
from multiplatform_widgets import widgets
|
||||||
from base import basePanel
|
from .base import basePanel
|
||||||
|
|
||||||
class peoplePanel(basePanel):
|
class peoplePanel(basePanel):
|
||||||
""" Buffer used to show people."""
|
""" Buffer used to show people."""
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from base import basePanel
|
from .base import basePanel
|
||||||
|
|
||||||
class searchPanel(basePanel):
|
class searchPanel(basePanel):
|
||||||
def __init__(self, parent, name):
|
def __init__(self, parent, name):
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
from tweet_searches import searchPanel
|
from .tweet_searches import searchPanel
|
||||||
from multiplatform_widgets import widgets
|
from multiplatform_widgets import widgets
|
||||||
|
|
||||||
class searchUsersPanel(searchPanel):
|
class searchUsersPanel(searchPanel):
|
||||||
|
@ -1 +1,2 @@
|
|||||||
import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils
|
from __future__ import absolute_import
|
||||||
|
from . import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import baseDialog
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import baseDialog
|
||||||
import wx
|
import wx
|
||||||
import logging as original_logger
|
import logging as original_logger
|
||||||
import application
|
import application
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import baseDialog
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import baseDialog
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
class findDialog(baseDialog.BaseWXDialog):
|
class findDialog(baseDialog.BaseWXDialog):
|
||||||
|
@ -70,19 +70,19 @@ class tweet(textLimited):
|
|||||||
self.mainBox = wx.BoxSizer(wx.VERTICAL)
|
self.mainBox = wx.BoxSizer(wx.VERTICAL)
|
||||||
self.createTextArea(message, text)
|
self.createTextArea(message, text)
|
||||||
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
||||||
self.long_tweet = wx.CheckBox(self.panel, -1, _(u"&Long tweet"))
|
self.long_tweet = wx.CheckBox(self.panel, -1, _("&Long tweet"))
|
||||||
self.upload_image = wx.Button(self.panel, -1, _(u"&Upload image..."), size=wx.DefaultSize)
|
self.upload_image = wx.Button(self.panel, -1, _("&Upload image..."), size=wx.DefaultSize)
|
||||||
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
self.attach = wx.Button(self.panel, -1, _(u"&Attach audio..."), size=wx.DefaultSize)
|
self.attach = wx.Button(self.panel, -1, _("&Attach audio..."), size=wx.DefaultSize)
|
||||||
self.shortenButton = wx.Button(self.panel, -1, _(u"Sh&orten URL"), size=wx.DefaultSize)
|
self.shortenButton = wx.Button(self.panel, -1, _("Sh&orten URL"), size=wx.DefaultSize)
|
||||||
self.unshortenButton = wx.Button(self.panel, -1, _(u"&Expand URL"), size=wx.DefaultSize)
|
self.unshortenButton = wx.Button(self.panel, -1, _("&Expand URL"), size=wx.DefaultSize)
|
||||||
self.shortenButton.Disable()
|
self.shortenButton.Disable()
|
||||||
self.unshortenButton.Disable()
|
self.unshortenButton.Disable()
|
||||||
self.translateButton = wx.Button(self.panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
self.translateButton = wx.Button(self.panel, -1, _("&Translate..."), size=wx.DefaultSize)
|
||||||
self.autocompletionButton = wx.Button(self.panel, -1, _(u"Auto&complete users"))
|
self.autocompletionButton = wx.Button(self.panel, -1, _("Auto&complete users"))
|
||||||
self.okButton = wx.Button(self.panel, wx.ID_OK, _(u"Sen&d"), size=wx.DefaultSize)
|
self.okButton = wx.Button(self.panel, wx.ID_OK, _("Sen&d"), size=wx.DefaultSize)
|
||||||
self.okButton.SetDefault()
|
self.okButton.SetDefault()
|
||||||
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _("C&lose"), size=wx.DefaultSize)
|
||||||
self.buttonsBox1 = wx.BoxSizer(wx.HORIZONTAL)
|
self.buttonsBox1 = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
self.buttonsBox1.Add(self.upload_image, 0, wx.ALL, 10)
|
self.buttonsBox1.Add(self.upload_image, 0, wx.ALL, 10)
|
||||||
self.buttonsBox1.Add(self.spellcheck, 0, wx.ALL, 10)
|
self.buttonsBox1.Add(self.spellcheck, 0, wx.ALL, 10)
|
||||||
@ -113,7 +113,7 @@ class tweet(textLimited):
|
|||||||
self.SetClientSize(self.mainBox.CalcMin())
|
self.SetClientSize(self.mainBox.CalcMin())
|
||||||
|
|
||||||
def get_image(self):
|
def get_image(self):
|
||||||
openFileDialog = wx.FileDialog(self, _(u"Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
|
openFileDialog = wx.FileDialog(self, _("Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
|
||||||
if openFileDialog.ShowModal() == wx.ID_CANCEL:
|
if openFileDialog.ShowModal() == wx.ID_CANCEL:
|
||||||
return None
|
return None
|
||||||
return open(openFileDialog.GetPath(), "rb")
|
return open(openFileDialog.GetPath(), "rb")
|
||||||
@ -123,25 +123,25 @@ class retweet(tweet):
|
|||||||
def createControls(self, title, message, text):
|
def createControls(self, title, message, text):
|
||||||
self.mainBox = wx.BoxSizer(wx.VERTICAL)
|
self.mainBox = wx.BoxSizer(wx.VERTICAL)
|
||||||
self.createTextArea(message, "")
|
self.createTextArea(message, "")
|
||||||
label = wx.StaticText(self.panel, -1, _(u"Retweet"))
|
label = wx.StaticText(self.panel, -1, _("Retweet"))
|
||||||
self.text2 = wx.TextCtrl(self.panel, -1, text, size=(439, -1), style=wx.TE_MULTILINE|wx.TE_READONLY)
|
self.text2 = wx.TextCtrl(self.panel, -1, text, size=(439, -1), style=wx.TE_MULTILINE|wx.TE_READONLY)
|
||||||
self.retweetBox = wx.BoxSizer(wx.HORIZONTAL)
|
self.retweetBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
self.retweetBox.Add(label, 0, wx.ALL, 5)
|
self.retweetBox.Add(label, 0, wx.ALL, 5)
|
||||||
self.retweetBox.Add(self.text2, 0, wx.ALL, 5)
|
self.retweetBox.Add(self.text2, 0, wx.ALL, 5)
|
||||||
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
||||||
self.mainBox.Add(self.retweetBox, 0, wx.ALL, 5)
|
self.mainBox.Add(self.retweetBox, 0, wx.ALL, 5)
|
||||||
self.upload_image = wx.Button(self.panel, -1, _(u"&Upload image..."), size=wx.DefaultSize)
|
self.upload_image = wx.Button(self.panel, -1, _("&Upload image..."), size=wx.DefaultSize)
|
||||||
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
self.attach = wx.Button(self.panel, -1, _(u"&Attach audio..."), size=wx.DefaultSize)
|
self.attach = wx.Button(self.panel, -1, _("&Attach audio..."), size=wx.DefaultSize)
|
||||||
self.shortenButton = wx.Button(self.panel, -1, _(u"Sh&orten URL"), size=wx.DefaultSize)
|
self.shortenButton = wx.Button(self.panel, -1, _("Sh&orten URL"), size=wx.DefaultSize)
|
||||||
self.unshortenButton = wx.Button(self.panel, -1, _(u"&Expand URL"), size=wx.DefaultSize)
|
self.unshortenButton = wx.Button(self.panel, -1, _("&Expand URL"), size=wx.DefaultSize)
|
||||||
self.shortenButton.Disable()
|
self.shortenButton.Disable()
|
||||||
self.unshortenButton.Disable()
|
self.unshortenButton.Disable()
|
||||||
self.translateButton = wx.Button(self.panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
self.translateButton = wx.Button(self.panel, -1, _("&Translate..."), size=wx.DefaultSize)
|
||||||
self.autocompletionButton = wx.Button(self.panel, -1, _(u"Auto&complete users"))
|
self.autocompletionButton = wx.Button(self.panel, -1, _("Auto&complete users"))
|
||||||
self.okButton = wx.Button(self.panel, wx.ID_OK, _(u"Sen&d"), size=wx.DefaultSize)
|
self.okButton = wx.Button(self.panel, wx.ID_OK, _("Sen&d"), size=wx.DefaultSize)
|
||||||
self.okButton.SetDefault()
|
self.okButton.SetDefault()
|
||||||
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _("C&lose"), size=wx.DefaultSize)
|
||||||
self.buttonsBox1 = wx.BoxSizer(wx.HORIZONTAL)
|
self.buttonsBox1 = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
self.buttonsBox1.Add(self.upload_image, 0, wx.ALL, 10)
|
self.buttonsBox1.Add(self.upload_image, 0, wx.ALL, 10)
|
||||||
self.buttonsBox1.Add(self.spellcheck, 0, wx.ALL, 10)
|
self.buttonsBox1.Add(self.spellcheck, 0, wx.ALL, 10)
|
||||||
@ -172,7 +172,7 @@ class retweet(tweet):
|
|||||||
self.SetClientSize(self.mainBox.CalcMin())
|
self.SetClientSize(self.mainBox.CalcMin())
|
||||||
|
|
||||||
def get_image(self):
|
def get_image(self):
|
||||||
openFileDialog = wx.FileDialog(self, _(u"Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
|
openFileDialog = wx.FileDialog(self, _("Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
|
||||||
if openFileDialog.ShowModal() == wx.ID_CANCEL:
|
if openFileDialog.ShowModal() == wx.ID_CANCEL:
|
||||||
return None
|
return None
|
||||||
return open(openFileDialog.GetPath(), "rb")
|
return open(openFileDialog.GetPath(), "rb")
|
||||||
@ -181,9 +181,9 @@ class dm(textLimited):
|
|||||||
def createControls(self, title, message, users):
|
def createControls(self, title, message, users):
|
||||||
self.panel = wx.Panel(self)
|
self.panel = wx.Panel(self)
|
||||||
self.mainBox = wx.BoxSizer(wx.VERTICAL)
|
self.mainBox = wx.BoxSizer(wx.VERTICAL)
|
||||||
label = wx.StaticText(self.panel, -1, _(u"&Recipient"))
|
label = wx.StaticText(self.panel, -1, _("&Recipient"))
|
||||||
self.cb = wx.ComboBox(self.panel, -1, choices=users, value=users[0], size=wx.DefaultSize)
|
self.cb = wx.ComboBox(self.panel, -1, choices=users, value=users[0], size=wx.DefaultSize)
|
||||||
self.autocompletionButton = wx.Button(self.panel, -1, _(u"Auto&complete users"))
|
self.autocompletionButton = wx.Button(self.panel, -1, _("Auto&complete users"))
|
||||||
self.createTextArea(message, text="")
|
self.createTextArea(message, text="")
|
||||||
userBox = wx.BoxSizer(wx.HORIZONTAL)
|
userBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
userBox.Add(label, 0, wx.ALL, 5)
|
userBox.Add(label, 0, wx.ALL, 5)
|
||||||
@ -192,15 +192,15 @@ class dm(textLimited):
|
|||||||
self.mainBox.Add(userBox, 0, wx.ALL, 5)
|
self.mainBox.Add(userBox, 0, wx.ALL, 5)
|
||||||
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
||||||
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
self.attach = wx.Button(self.panel, -1, _(u"&Attach audio..."), size=wx.DefaultSize)
|
self.attach = wx.Button(self.panel, -1, _("&Attach audio..."), size=wx.DefaultSize)
|
||||||
self.shortenButton = wx.Button(self.panel, -1, _(u"Sh&orten URL"), size=wx.DefaultSize)
|
self.shortenButton = wx.Button(self.panel, -1, _("Sh&orten URL"), size=wx.DefaultSize)
|
||||||
self.unshortenButton = wx.Button(self.panel, -1, _(u"&Expand URL"), size=wx.DefaultSize)
|
self.unshortenButton = wx.Button(self.panel, -1, _("&Expand URL"), size=wx.DefaultSize)
|
||||||
self.shortenButton.Disable()
|
self.shortenButton.Disable()
|
||||||
self.unshortenButton.Disable()
|
self.unshortenButton.Disable()
|
||||||
self.translateButton = wx.Button(self.panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
self.translateButton = wx.Button(self.panel, -1, _("&Translate..."), size=wx.DefaultSize)
|
||||||
self.okButton = wx.Button(self.panel, wx.ID_OK, _(u"Sen&d"), size=wx.DefaultSize)
|
self.okButton = wx.Button(self.panel, wx.ID_OK, _("Sen&d"), size=wx.DefaultSize)
|
||||||
self.okButton.SetDefault()
|
self.okButton.SetDefault()
|
||||||
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _("C&lose"), size=wx.DefaultSize)
|
||||||
self.buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
self.buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
self.buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
self.buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
||||||
self.buttonsBox.Add(self.attach, 0, wx.ALL, 5)
|
self.buttonsBox.Add(self.attach, 0, wx.ALL, 5)
|
||||||
@ -232,7 +232,7 @@ class dm(textLimited):
|
|||||||
class reply(textLimited):
|
class reply(textLimited):
|
||||||
|
|
||||||
def get_image(self):
|
def get_image(self):
|
||||||
openFileDialog = wx.FileDialog(self, _(u"Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
|
openFileDialog = wx.FileDialog(self, _("Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
|
||||||
if openFileDialog.ShowModal() == wx.ID_CANCEL:
|
if openFileDialog.ShowModal() == wx.ID_CANCEL:
|
||||||
return None
|
return None
|
||||||
return open(openFileDialog.GetPath(), "rb")
|
return open(openFileDialog.GetPath(), "rb")
|
||||||
@ -242,7 +242,7 @@ class reply(textLimited):
|
|||||||
self.createTextArea(message, text)
|
self.createTextArea(message, text)
|
||||||
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
self.mainBox.Add(self.textBox, 0, wx.ALL, 5)
|
||||||
self.usersbox = wx.BoxSizer(wx.VERTICAL)
|
self.usersbox = wx.BoxSizer(wx.VERTICAL)
|
||||||
self.mentionAll = wx.CheckBox(self.panel, -1, _(u"&Mention to all"), size=wx.DefaultSize)
|
self.mentionAll = wx.CheckBox(self.panel, -1, _("&Mention to all"), size=wx.DefaultSize)
|
||||||
self.mentionAll.Disable()
|
self.mentionAll.Disable()
|
||||||
self.usersbox.Add(self.mentionAll, 0, wx.ALL, 5)
|
self.usersbox.Add(self.mentionAll, 0, wx.ALL, 5)
|
||||||
self.checkboxes = []
|
self.checkboxes = []
|
||||||
@ -251,19 +251,19 @@ class reply(textLimited):
|
|||||||
self.checkboxes.append(user_checkbox)
|
self.checkboxes.append(user_checkbox)
|
||||||
self.usersbox.Add(self.checkboxes[-1], 0, wx.ALL, 5)
|
self.usersbox.Add(self.checkboxes[-1], 0, wx.ALL, 5)
|
||||||
self.mainBox.Add(self.usersbox, 0, wx.ALL, 10)
|
self.mainBox.Add(self.usersbox, 0, wx.ALL, 10)
|
||||||
self.long_tweet = wx.CheckBox(self.panel, -1, _(u"&Long tweet"))
|
self.long_tweet = wx.CheckBox(self.panel, -1, _("&Long tweet"))
|
||||||
self.upload_image = wx.Button(self.panel, -1, _(u"&Upload image..."), size=wx.DefaultSize)
|
self.upload_image = wx.Button(self.panel, -1, _("&Upload image..."), size=wx.DefaultSize)
|
||||||
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
self.spellcheck = wx.Button(self.panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
self.attach = wx.Button(self.panel, -1, _(u"&Attach audio..."), size=wx.DefaultSize)
|
self.attach = wx.Button(self.panel, -1, _("&Attach audio..."), size=wx.DefaultSize)
|
||||||
self.shortenButton = wx.Button(self.panel, -1, _(u"Sh&orten URL"), size=wx.DefaultSize)
|
self.shortenButton = wx.Button(self.panel, -1, _("Sh&orten URL"), size=wx.DefaultSize)
|
||||||
self.unshortenButton = wx.Button(self.panel, -1, _(u"&Expand URL"), size=wx.DefaultSize)
|
self.unshortenButton = wx.Button(self.panel, -1, _("&Expand URL"), size=wx.DefaultSize)
|
||||||
self.shortenButton.Disable()
|
self.shortenButton.Disable()
|
||||||
self.unshortenButton.Disable()
|
self.unshortenButton.Disable()
|
||||||
self.translateButton = wx.Button(self.panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
self.translateButton = wx.Button(self.panel, -1, _("&Translate..."), size=wx.DefaultSize)
|
||||||
self.autocompletionButton = wx.Button(self.panel, -1, _(u"Auto&complete users"))
|
self.autocompletionButton = wx.Button(self.panel, -1, _("Auto&complete users"))
|
||||||
self.okButton = wx.Button(self.panel, wx.ID_OK, _(u"Sen&d"), size=wx.DefaultSize)
|
self.okButton = wx.Button(self.panel, wx.ID_OK, _("Sen&d"), size=wx.DefaultSize)
|
||||||
self.okButton.SetDefault()
|
self.okButton.SetDefault()
|
||||||
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
cancelButton = wx.Button(self.panel, wx.ID_CANCEL, _("C&lose"), size=wx.DefaultSize)
|
||||||
self.buttonsBox1 = wx.BoxSizer(wx.HORIZONTAL)
|
self.buttonsBox1 = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
self.buttonsBox1.Add(self.upload_image, 0, wx.ALL, 10)
|
self.buttonsBox1.Add(self.upload_image, 0, wx.ALL, 10)
|
||||||
self.buttonsBox1.Add(self.spellcheck, 0, wx.ALL, 10)
|
self.buttonsBox1.Add(self.spellcheck, 0, wx.ALL, 10)
|
||||||
@ -296,16 +296,16 @@ class reply(textLimited):
|
|||||||
|
|
||||||
class viewTweet(widgetUtils.BaseDialog):
|
class viewTweet(widgetUtils.BaseDialog):
|
||||||
def set_title(self, lenght):
|
def set_title(self, lenght):
|
||||||
self.SetTitle(_(u"Tweet - %i characters ") % (lenght,))
|
self.SetTitle(_("Tweet - %i characters ") % (lenght,))
|
||||||
|
|
||||||
def __init__(self, text, rt_count, favs_count,source, *args, **kwargs):
|
def __init__(self, text, rt_count, favs_count,source, *args, **kwargs):
|
||||||
super(viewTweet, self).__init__(None, size=(850,850))
|
super(viewTweet, self).__init__(None, size=(850,850))
|
||||||
panel = wx.Panel(self)
|
panel = wx.Panel(self)
|
||||||
label = wx.StaticText(panel, -1, _(u"Tweet"))
|
label = wx.StaticText(panel, -1, _("Tweet"))
|
||||||
self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
||||||
dc = wx.WindowDC(self.text)
|
dc = wx.WindowDC(self.text)
|
||||||
dc.SetFont(self.text.GetFont())
|
dc.SetFont(self.text.GetFont())
|
||||||
(x, y, z) = dc.GetMultiLineTextExtent("0"*140)
|
(x, y) = dc.GetMultiLineTextExtent("0"*140)
|
||||||
self.text.SetSize((x, y))
|
self.text.SetSize((x, y))
|
||||||
self.text.SetFocus()
|
self.text.SetFocus()
|
||||||
textBox = wx.BoxSizer(wx.HORIZONTAL)
|
textBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
@ -313,28 +313,28 @@ class viewTweet(widgetUtils.BaseDialog):
|
|||||||
textBox.Add(self.text, 1, wx.EXPAND, 5)
|
textBox.Add(self.text, 1, wx.EXPAND, 5)
|
||||||
mainBox = wx.BoxSizer(wx.VERTICAL)
|
mainBox = wx.BoxSizer(wx.VERTICAL)
|
||||||
mainBox.Add(textBox, 0, wx.ALL, 5)
|
mainBox.Add(textBox, 0, wx.ALL, 5)
|
||||||
label2 = wx.StaticText(panel, -1, _(u"Image description"))
|
label2 = wx.StaticText(panel, -1, _("Image description"))
|
||||||
self.image_description = wx.TextCtrl(panel, -1, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
self.image_description = wx.TextCtrl(panel, -1, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
||||||
dc = wx.WindowDC(self.image_description)
|
dc = wx.WindowDC(self.image_description)
|
||||||
dc.SetFont(self.image_description.GetFont())
|
dc.SetFont(self.image_description.GetFont())
|
||||||
(x, y, z) = dc.GetMultiLineTextExtent("0"*450)
|
(x, y) = dc.GetMultiLineTextExtent("0"*450)
|
||||||
self.image_description.SetSize((x, y))
|
self.image_description.SetSize((x, y))
|
||||||
self.image_description.Enable(False)
|
self.image_description.Enable(False)
|
||||||
iBox = wx.BoxSizer(wx.HORIZONTAL)
|
iBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
iBox.Add(label2, 0, wx.ALL, 5)
|
iBox.Add(label2, 0, wx.ALL, 5)
|
||||||
iBox.Add(self.image_description, 1, wx.EXPAND, 5)
|
iBox.Add(self.image_description, 1, wx.EXPAND, 5)
|
||||||
mainBox.Add(iBox, 0, wx.ALL, 5)
|
mainBox.Add(iBox, 0, wx.ALL, 5)
|
||||||
rtCountLabel = wx.StaticText(panel, -1, _(u"Retweets: "))
|
rtCountLabel = wx.StaticText(panel, -1, _("Retweets: "))
|
||||||
rtCount = wx.TextCtrl(panel, -1, rt_count, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
rtCount = wx.TextCtrl(panel, -1, rt_count, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
rtBox = wx.BoxSizer(wx.HORIZONTAL)
|
rtBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
rtBox.Add(rtCountLabel, 0, wx.ALL, 5)
|
rtBox.Add(rtCountLabel, 0, wx.ALL, 5)
|
||||||
rtBox.Add(rtCount, 0, wx.ALL, 5)
|
rtBox.Add(rtCount, 0, wx.ALL, 5)
|
||||||
favsCountLabel = wx.StaticText(panel, -1, _(u"Likes: "))
|
favsCountLabel = wx.StaticText(panel, -1, _("Likes: "))
|
||||||
favsCount = wx.TextCtrl(panel, -1, favs_count, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
favsCount = wx.TextCtrl(panel, -1, favs_count, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
favsBox = wx.BoxSizer(wx.HORIZONTAL)
|
favsBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
favsBox.Add(favsCountLabel, 0, wx.ALL, 5)
|
favsBox.Add(favsCountLabel, 0, wx.ALL, 5)
|
||||||
favsBox.Add(favsCount, 0, wx.ALL, 5)
|
favsBox.Add(favsCount, 0, wx.ALL, 5)
|
||||||
sourceLabel = wx.StaticText(panel, -1, _(u"Source: "))
|
sourceLabel = wx.StaticText(panel, -1, _("Source: "))
|
||||||
sourceTweet = wx.TextCtrl(panel, -1, source, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
sourceTweet = wx.TextCtrl(panel, -1, source, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
sourceBox = wx.BoxSizer(wx.HORIZONTAL)
|
sourceBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
sourceBox.Add(sourceLabel, 0, wx.ALL, 5)
|
sourceBox.Add(sourceLabel, 0, wx.ALL, 5)
|
||||||
@ -345,10 +345,10 @@ class viewTweet(widgetUtils.BaseDialog):
|
|||||||
infoBox.Add(sourceBox, 0, wx.ALL, 5)
|
infoBox.Add(sourceBox, 0, wx.ALL, 5)
|
||||||
mainBox.Add(infoBox, 0, wx.ALL, 5)
|
mainBox.Add(infoBox, 0, wx.ALL, 5)
|
||||||
self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
self.unshortenButton = wx.Button(panel, -1, _(u"&Expand URL"), size=wx.DefaultSize)
|
self.unshortenButton = wx.Button(panel, -1, _("&Expand URL"), size=wx.DefaultSize)
|
||||||
self.unshortenButton.Disable()
|
self.unshortenButton.Disable()
|
||||||
self.translateButton = wx.Button(panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
self.translateButton = wx.Button(panel, -1, _("&Translate..."), size=wx.DefaultSize)
|
||||||
cancelButton = wx.Button(panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
cancelButton = wx.Button(panel, wx.ID_CANCEL, _("C&lose"), size=wx.DefaultSize)
|
||||||
cancelButton.SetDefault()
|
cancelButton.SetDefault()
|
||||||
buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
||||||
@ -392,13 +392,13 @@ class viewNonTweet(widgetUtils.BaseDialog):
|
|||||||
|
|
||||||
def __init__(self, text, *args, **kwargs):
|
def __init__(self, text, *args, **kwargs):
|
||||||
super(viewNonTweet, self).__init__(None, size=(850,850))
|
super(viewNonTweet, self).__init__(None, size=(850,850))
|
||||||
self.SetTitle(_(u"View"))
|
self.SetTitle(_("View"))
|
||||||
panel = wx.Panel(self)
|
panel = wx.Panel(self)
|
||||||
label = wx.StaticText(panel, -1, _(u"Item"))
|
label = wx.StaticText(panel, -1, _("Item"))
|
||||||
self.text = wx.TextCtrl(parent=panel, id=-1, value=text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
self.text = wx.TextCtrl(parent=panel, id=-1, value=text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
||||||
dc = wx.WindowDC(self.text)
|
dc = wx.WindowDC(self.text)
|
||||||
dc.SetFont(self.text.GetFont())
|
dc.SetFont(self.text.GetFont())
|
||||||
(x, y, z) = dc.GetMultiLineTextExtent("0"*140)
|
(x, y) = dc.GetMultiLineTextExtent("0"*140)
|
||||||
self.text.SetSize((x, y))
|
self.text.SetSize((x, y))
|
||||||
self.text.SetFocus()
|
self.text.SetFocus()
|
||||||
textBox = wx.BoxSizer(wx.HORIZONTAL)
|
textBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
@ -407,10 +407,10 @@ class viewNonTweet(widgetUtils.BaseDialog):
|
|||||||
mainBox = wx.BoxSizer(wx.VERTICAL)
|
mainBox = wx.BoxSizer(wx.VERTICAL)
|
||||||
mainBox.Add(textBox, 0, wx.ALL, 5)
|
mainBox.Add(textBox, 0, wx.ALL, 5)
|
||||||
self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
self.unshortenButton = wx.Button(panel, -1, _(u"&Expand URL"), size=wx.DefaultSize)
|
self.unshortenButton = wx.Button(panel, -1, _("&Expand URL"), size=wx.DefaultSize)
|
||||||
self.unshortenButton.Disable()
|
self.unshortenButton.Disable()
|
||||||
self.translateButton = wx.Button(panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
self.translateButton = wx.Button(panel, -1, _("&Translate..."), size=wx.DefaultSize)
|
||||||
cancelButton = wx.Button(panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
cancelButton = wx.Button(panel, wx.ID_CANCEL, _("C&lose"), size=wx.DefaultSize)
|
||||||
cancelButton.SetDefault()
|
cancelButton.SetDefault()
|
||||||
buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import baseDialog
|
from . import baseDialog
|
||||||
import wx
|
import wx
|
||||||
from extra import translator
|
from extra import translator
|
||||||
|
|
||||||
@ -9,39 +10,40 @@ class searchDialog(baseDialog.BaseWXDialog):
|
|||||||
super(searchDialog, self).__init__(None, -1)
|
super(searchDialog, self).__init__(None, -1)
|
||||||
panel = wx.Panel(self)
|
panel = wx.Panel(self)
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
self.SetTitle(_(u"Search on Twitter"))
|
self.SetTitle(_("Search on Twitter"))
|
||||||
label = wx.StaticText(panel, -1, _(u"&Search"))
|
label = wx.StaticText(panel, -1, _("&Search"))
|
||||||
self.term = wx.TextCtrl(panel, -1, value)
|
self.term = wx.TextCtrl(panel, -1, value)
|
||||||
dc = wx.WindowDC(self.term)
|
dc = wx.WindowDC(self.term)
|
||||||
dc.SetFont(self.term.GetFont())
|
dc.SetFont(self.term.GetFont())
|
||||||
self.term.SetSize(dc.GetTextExtent("0"*40))
|
self.term.SetSize(dc.GetTextExtent("0"*40))
|
||||||
sizer.Add(label, 0, wx.ALL, 5)
|
sizer.Add(label, 0, wx.ALL, 5)
|
||||||
sizer.Add(self.term, 0, wx.ALL, 5)
|
sizer.Add(self.term, 0, wx.ALL, 5)
|
||||||
self.tweets = wx.RadioButton(panel, -1, _(u"Tweets"), style=wx.RB_GROUP)
|
self.tweets = wx.RadioButton(panel, -1, _("Tweets"), style=wx.RB_GROUP)
|
||||||
self.users = wx.RadioButton(panel, -1, _(u"Users"))
|
self.users = wx.RadioButton(panel, -1, _("Users"))
|
||||||
widgetUtils.connect_event(self.tweets, widgetUtils.RADIOBUTTON, self.show_advanced_search)
|
widgetUtils.connect_event(self.tweets, widgetUtils.RADIOBUTTON, self.show_advanced_search)
|
||||||
widgetUtils.connect_event(self.users, widgetUtils.RADIOBUTTON, self.hide_advanced_search)
|
widgetUtils.connect_event(self.users, widgetUtils.RADIOBUTTON, self.hide_advanced_search)
|
||||||
radioSizer = wx.BoxSizer(wx.HORIZONTAL)
|
radioSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
radioSizer.Add(self.tweets, 0, wx.ALL, 5)
|
radioSizer.Add(self.tweets, 0, wx.ALL, 5)
|
||||||
radioSizer.Add(self.users, 0, wx.ALL, 5)
|
radioSizer.Add(self.users, 0, wx.ALL, 5)
|
||||||
sizer.Add(radioSizer, 0, wx.ALL, 5)
|
sizer.Add(radioSizer, 0, wx.ALL, 5)
|
||||||
lang = wx.StaticText(panel, -1, _(u"&Language for results: "))
|
lang = wx.StaticText(panel, -1, _("&Language for results: "))
|
||||||
langs = [x for x in translator.translator.languages.values()]
|
langs = [x[1] for x in translator.translator.available_languages()]
|
||||||
langs.insert(0, _(u"any"))
|
langs[:] = langs[1:]
|
||||||
|
langs.insert(0, _("any"))
|
||||||
self.lang = wx.ComboBox(panel, -1, choices=langs, value=langs[0], style = wx.CB_READONLY)
|
self.lang = wx.ComboBox(panel, -1, choices=langs, value=langs[0], style = wx.CB_READONLY)
|
||||||
langBox = wx.BoxSizer(wx.HORIZONTAL)
|
langBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
langBox.Add(lang, 0, wx.ALL, 5)
|
langBox.Add(lang, 0, wx.ALL, 5)
|
||||||
langBox.Add(self.lang, 0, wx.ALL, 5)
|
langBox.Add(self.lang, 0, wx.ALL, 5)
|
||||||
sizer.Add(langBox, 0, wx.ALL, 5)
|
sizer.Add(langBox, 0, wx.ALL, 5)
|
||||||
resulttype = wx.StaticText(panel, -1, _(U"Results &type: "))
|
resulttype = wx.StaticText(panel, -1, _("Results &type: "))
|
||||||
self.resultstype = wx.ComboBox(panel, -1, choices=[_(u"Mixed"), _(u"Recent"), _(u"Popular")], value=_(u"Mixed"), style=wx.CB_READONLY)
|
self.resultstype = wx.ComboBox(panel, -1, choices=[_("Mixed"), _("Recent"), _("Popular")], value=_("Mixed"), style=wx.CB_READONLY)
|
||||||
rBox = wx.BoxSizer(wx.HORIZONTAL)
|
rBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
rBox.Add(resulttype, 0, wx.ALL, 5)
|
rBox.Add(resulttype, 0, wx.ALL, 5)
|
||||||
rBox.Add(self.resultstype, 0, wx.ALL, 5)
|
rBox.Add(self.resultstype, 0, wx.ALL, 5)
|
||||||
sizer.Add(rBox, 0, wx.ALL, 5)
|
sizer.Add(rBox, 0, wx.ALL, 5)
|
||||||
ok = wx.Button(panel, wx.ID_OK, _(u"&OK"))
|
ok = wx.Button(panel, wx.ID_OK, _("&OK"))
|
||||||
ok.SetDefault()
|
ok.SetDefault()
|
||||||
cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close"))
|
cancel = wx.Button(panel, wx.ID_CANCEL, _("&Close"))
|
||||||
btnsizer = wx.BoxSizer()
|
btnsizer = wx.BoxSizer()
|
||||||
btnsizer.Add(ok, 0, wx.ALL, 5)
|
btnsizer.Add(ok, 0, wx.ALL, 5)
|
||||||
btnsizer.Add(cancel, 0, wx.ALL, 5)
|
btnsizer.Add(cancel, 0, wx.ALL, 5)
|
||||||
@ -50,18 +52,13 @@ class searchDialog(baseDialog.BaseWXDialog):
|
|||||||
self.SetClientSize(sizer.CalcMin())
|
self.SetClientSize(sizer.CalcMin())
|
||||||
|
|
||||||
def get_language(self):
|
def get_language(self):
|
||||||
l = self.lang.GetStringSelection()
|
return [x[0] for x in translator.translator.available_languages()][self.lang.GetSelection()]
|
||||||
if l == _(u"any"):
|
|
||||||
return ""
|
|
||||||
for langcode, langname in translator.translator.languages.iteritems():
|
|
||||||
if langname == l:
|
|
||||||
return langcode
|
|
||||||
|
|
||||||
def get_result_type(self):
|
def get_result_type(self):
|
||||||
r = self.resultstype.GetValue()
|
r = self.resultstype.GetValue()
|
||||||
if r == _(u"Mixed"): return "mixed"
|
if r == _("Mixed"): return "mixed"
|
||||||
elif r == _(u"Recent"): return "recent"
|
elif r == _("Recent"): return "recent"
|
||||||
elif r == _(u"Popular"): return "popular"
|
elif r == _("Popular"): return "popular"
|
||||||
|
|
||||||
def hide_advanced_search(self, *args, **kwargs):
|
def hide_advanced_search(self, *args, **kwargs):
|
||||||
self.lang.Hide()
|
self.lang.Hide()
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
import baseDialog
|
from . import baseDialog
|
||||||
|
|
||||||
class showUserProfile(baseDialog.BaseWXDialog):
|
class showUserProfile(baseDialog.BaseWXDialog):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import baseDialog
|
from __future__ import absolute_import
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import baseDialog
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
class trendingTopicsDialog(baseDialog.BaseWXDialog):
|
class trendingTopicsDialog(baseDialog.BaseWXDialog):
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
import baseDialog
|
from . import baseDialog
|
||||||
|
|
||||||
class updateProfileDialog(baseDialog.BaseWXDialog):
|
class updateProfileDialog(baseDialog.BaseWXDialog):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -16,8 +16,9 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
############################################################
|
############################################################
|
||||||
|
from __future__ import absolute_import
|
||||||
import wx
|
import wx
|
||||||
import baseDialog
|
from . import baseDialog
|
||||||
|
|
||||||
class selectUserDialog(baseDialog.BaseWXDialog):
|
class selectUserDialog(baseDialog.BaseWXDialog):
|
||||||
def __init__(self, title, users):
|
def __init__(self, title, users):
|
||||||
|
@ -5,93 +5,93 @@ class basePanelMenu(wx.Menu):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(basePanelMenu, self).__init__()
|
super(basePanelMenu, self).__init__()
|
||||||
self.retweet = wx.MenuItem(self, wx.NewId(), _(u"&Retweet"))
|
self.retweet = wx.MenuItem(self, wx.NewId(), _(u"&Retweet"))
|
||||||
self.AppendItem(self.retweet)
|
self.Append(self.retweet)
|
||||||
self.reply = wx.MenuItem(self, wx.NewId(), _(u"Re&ply"))
|
self.reply = wx.MenuItem(self, wx.NewId(), _(u"Re&ply"))
|
||||||
self.AppendItem(self.reply)
|
self.Append(self.reply)
|
||||||
self.fav = wx.MenuItem(self, wx.NewId(), _(u"&Like"))
|
self.fav = wx.MenuItem(self, wx.NewId(), _(u"&Like"))
|
||||||
self.AppendItem(self.fav)
|
self.Append(self.fav)
|
||||||
self.unfav = wx.MenuItem(self, wx.NewId(), _(u"&Unlike"))
|
self.unfav = wx.MenuItem(self, wx.NewId(), _(u"&Unlike"))
|
||||||
self.AppendItem(self.unfav)
|
self.Append(self.unfav)
|
||||||
self.openUrl = wx.MenuItem(self, wx.NewId(), _(u"&Open URL"))
|
self.openUrl = wx.MenuItem(self, wx.NewId(), _(u"&Open URL"))
|
||||||
self.AppendItem(self.openUrl)
|
self.Append(self.openUrl)
|
||||||
self.play = wx.MenuItem(self, wx.NewId(), _(u"&Play audio"))
|
self.play = wx.MenuItem(self, wx.NewId(), _(u"&Play audio"))
|
||||||
self.AppendItem(self.play)
|
self.Append(self.play)
|
||||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show tweet"))
|
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show tweet"))
|
||||||
self.AppendItem(self.view)
|
self.Append(self.view)
|
||||||
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
||||||
self.AppendItem(self.copy)
|
self.Append(self.copy)
|
||||||
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
||||||
self.AppendItem(self.remove)
|
self.Append(self.remove)
|
||||||
self.userActions = wx.MenuItem(self, wx.NewId(), _(u"&User actions..."))
|
self.userActions = wx.MenuItem(self, wx.NewId(), _(u"&User actions..."))
|
||||||
self.AppendItem(self.userActions)
|
self.Append(self.userActions)
|
||||||
|
|
||||||
class dmPanelMenu(wx.Menu):
|
class dmPanelMenu(wx.Menu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(dmPanelMenu, self).__init__()
|
super(dmPanelMenu, self).__init__()
|
||||||
self.reply = wx.MenuItem(self, wx.NewId(), _(u"Re&ply"))
|
self.reply = wx.MenuItem(self, wx.NewId(), _(u"Re&ply"))
|
||||||
self.AppendItem(self.reply)
|
self.append(self.reply)
|
||||||
self.openUrl = wx.MenuItem(self, wx.NewId(), _(u"&Open URL"))
|
self.openUrl = wx.MenuItem(self, wx.NewId(), _(u"&Open URL"))
|
||||||
self.AppendItem(self.openUrl)
|
self.append(self.openUrl)
|
||||||
self.play = wx.MenuItem(self, wx.NewId(), _(u"&Play audio"))
|
self.play = wx.MenuItem(self, wx.NewId(), _(u"&Play audio"))
|
||||||
self.AppendItem(self.play)
|
self.append(self.play)
|
||||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show direct message"))
|
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show direct message"))
|
||||||
self.AppendItem(self.view)
|
self.append(self.view)
|
||||||
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
||||||
self.AppendItem(self.copy)
|
self.append(self.copy)
|
||||||
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
||||||
self.AppendItem(self.remove)
|
self.append(self.remove)
|
||||||
self.userActions = wx.MenuItem(self, wx.NewId(), _(u"&User actions..."))
|
self.userActions = wx.MenuItem(self, wx.NewId(), _(u"&User actions..."))
|
||||||
self.AppendItem(self.userActions)
|
self.append(self.userActions)
|
||||||
|
|
||||||
class sentPanelMenu(wx.Menu):
|
class sentPanelMenu(wx.Menu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(sentPanelMenu, self).__init__()
|
super(sentPanelMenu, self).__init__()
|
||||||
self.openUrl = wx.MenuItem(self, wx.NewId(), _(u"&Open URL"))
|
self.openUrl = wx.MenuItem(self, wx.NewId(), _(u"&Open URL"))
|
||||||
self.AppendItem(self.openUrl)
|
self.append(self.openUrl)
|
||||||
self.play = wx.MenuItem(self, wx.NewId(), _(u"&Play audio"))
|
self.play = wx.MenuItem(self, wx.NewId(), _(u"&Play audio"))
|
||||||
self.AppendItem(self.play)
|
self.append(self.play)
|
||||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show tweet"))
|
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show tweet"))
|
||||||
self.AppendItem(self.view)
|
self.append(self.view)
|
||||||
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
||||||
self.AppendItem(self.copy)
|
self.append(self.copy)
|
||||||
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
||||||
self.AppendItem(self.remove)
|
self.append(self.remove)
|
||||||
|
|
||||||
class eventsPanelMenu(wx.Menu):
|
class eventsPanelMenu(wx.Menu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(eventsPanelMenu, self).__init__()
|
super(eventsPanelMenu, self).__init__()
|
||||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show event"))
|
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show event"))
|
||||||
self.AppendItem(self.view)
|
self.append(self.view)
|
||||||
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
||||||
self.AppendItem(self.copy)
|
self.append(self.copy)
|
||||||
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
self.remove = wx.MenuItem(self, wx.NewId(), _(u"&Delete"))
|
||||||
self.AppendItem(self.remove)
|
self.append(self.remove)
|
||||||
|
|
||||||
class peoplePanelMenu(wx.Menu):
|
class peoplePanelMenu(wx.Menu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(peoplePanelMenu, self).__init__()
|
super(peoplePanelMenu, self).__init__()
|
||||||
self.reply = wx.MenuItem(self, wx.NewId(), _(u"Direct &message"))
|
self.reply = wx.MenuItem(self, wx.NewId(), _(u"Direct &message"))
|
||||||
self.AppendItem(self.reply)
|
self.append(self.reply)
|
||||||
self.lists = wx.MenuItem(self, wx.NewId(), _(u"&View lists"))
|
self.lists = wx.MenuItem(self, wx.NewId(), _(u"&View lists"))
|
||||||
self.AppendItem(self.lists)
|
self.append(self.lists)
|
||||||
self.lists.Enable(False)
|
self.lists.Enable(False)
|
||||||
self.details = wx.MenuItem(self, wx.NewId(), _(u"Show user &profile"))
|
self.details = wx.MenuItem(self, wx.NewId(), _(u"Show user &profile"))
|
||||||
self.AppendItem(self.details)
|
self.append(self.details)
|
||||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show user"))
|
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show user"))
|
||||||
self.AppendItem(self.view)
|
self.append(self.view)
|
||||||
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
||||||
self.AppendItem(self.copy)
|
self.append(self.copy)
|
||||||
self.userActions = wx.MenuItem(self, wx.NewId(), _(u"&User actions..."))
|
self.userActions = wx.MenuItem(self, wx.NewId(), _(u"&User actions..."))
|
||||||
self.AppendItem(self.userActions)
|
self.append(self.userActions)
|
||||||
|
|
||||||
class trendsPanelMenu(wx.Menu):
|
class trendsPanelMenu(wx.Menu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(trendsPanelMenu, self).__init__()
|
super(trendsPanelMenu, self).__init__()
|
||||||
self.search_topic = wx.MenuItem(self, wx.NewId(), _(u"Search topic"))
|
self.search_topic = wx.MenuItem(self, wx.NewId(), _(u"Search topic"))
|
||||||
self.AppendItem(self.search_topic)
|
self.append(self.search_topic)
|
||||||
self.tweetThisTrend = wx.MenuItem(self, wx.NewId(), _(u"&Tweet about this trend"))
|
self.tweetThisTrend = wx.MenuItem(self, wx.NewId(), _(u"&Tweet about this trend"))
|
||||||
self.AppendItem(self.tweetThisTrend)
|
self.append(self.tweetThisTrend)
|
||||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show item"))
|
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show item"))
|
||||||
self.AppendItem(self.view)
|
self.append(self.view)
|
||||||
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
self.copy = wx.MenuItem(self, wx.NewId(), _(u"&Copy to clipboard"))
|
||||||
self.AppendItem(self.copy)
|
self.append(self.copy)
|
||||||
|
@ -19,11 +19,12 @@
|
|||||||
############################################################
|
############################################################
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
|
from wx import adv
|
||||||
import application
|
import application
|
||||||
import paths
|
import paths
|
||||||
import os
|
import os
|
||||||
|
|
||||||
class SysTrayIcon(wx.TaskBarIcon):
|
class SysTrayIcon(adv.TaskBarIcon):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(SysTrayIcon, self).__init__()
|
super(SysTrayIcon, self).__init__()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user