Timelines should be updated properly; changes for the 0.48 version

This commit is contained in:
Manuel Cortez 2014-11-09 06:07:36 -06:00
parent d2c89a1f91
commit 1a2f834a27
11 changed files with 810 additions and 874 deletions

View File

@ -14,7 +14,6 @@ max_tweets_per_call = integer(default=100)
reverse_timelines = boolean(default=False) reverse_timelines = boolean(default=False)
time_to_check_streams = integer(default=30) time_to_check_streams = integer(default=30)
announce_stream_status = boolean(default=True) announce_stream_status = boolean(default=True)
auto_connect_streams = boolean(default=True)
ask_at_exit = boolean(default=True) ask_at_exit = boolean(default=True)
[sound] [sound]
@ -87,4 +86,3 @@ search = string(default="control+win+-")
edit_keystrokes = string(default="control+win+k") edit_keystrokes = string(default="control+win+k")
view_user_lists = string(default="control+win+l") view_user_lists = string(default="control+win+l")
get_more_items = string(default="alt+win+pageup") get_more_items = string(default="alt+win+pageup")
connect_streams = string(default="win+alt+s")

View File

@ -2,7 +2,7 @@
name = 'TW Blue' name = 'TW Blue'
snapshot = False snapshot = False
if snapshot == False: if snapshot == False:
version = "0.47" version = "0.48"
update_url = 'http://twblue.com.mx/updates/tw_blue.json' update_url = 'http://twblue.com.mx/updates/tw_blue.json'
else: else:
version = "4" version = "4"
@ -13,7 +13,7 @@ copyright = u"copyright (C) 2013-2014, Manuel cortéz"
description = u"TW Blue is an app designed to use Twitter in a simple and fast way and avoiding, as far as possible, the consumtion of excessive resources of the machine where its running. With this app youll have access to most twitter features." description = u"TW Blue is an app designed to use Twitter in a simple and fast way and avoiding, as far as possible, the consumtion of excessive resources of the machine where its running. With this app youll have access to most twitter features."
translators = [u"Bryner Villalobos (English)", u"Mohammed Al Shara (Arabic)", u"Salva Doménech, Juan Carlos Rivilla(Catalan)", u"Manuel cortéz(Spanish)", u"Sukil Etxenike Arizaleta(Basque)", u"Jani Kinnunen(finnish)", u"Javier Currás, José Manuel Delicado, Alba Quinteiro(Galician)", u"Robert Osztolykan(Hungarian)", u"Paweł Masarczyk(Polish)", u"Odenilton Júnior Santos(Portuguese)", u"Alexander Jaszyn(Russian)", u"Burak (Turkish)"] translators = [u"Bryner Villalobos (English)", u"Mohammed Al Shara (Arabic)", u"Salva Doménech, Juan Carlos Rivilla(Catalan)", u"Manuel cortéz(Spanish)", u"Sukil Etxenike Arizaleta(Basque)", u"Jani Kinnunen(finnish)", u"Javier Currás, José Manuel Delicado, Alba Quinteiro(Galician)", u"Robert Osztolykan(Hungarian)", u"Paweł Masarczyk(Polish)", u"Odenilton Júnior Santos(Portuguese)", u"Alexander Jaszyn(Russian)", u"Burak (Turkish)"]
url = u"http://twblue.com.mx" url = u"http://twblue.com.mx"
report_bugs_url = "http://twblue.com.mx/errores/api/soap/mantisconnect.php?wsdl" #report_bugs_url = "http://twblue.com.mx/errores/api/soap/mantisconnect.php?wsdl"
# Tokens # Tokens
app_key = '8pDLbyOW3saYnvSZ4uLFg' app_key = '8pDLbyOW3saYnvSZ4uLFg'

View File

@ -50,7 +50,7 @@ class general(wx.Panel):
langBox.Add(language, 0, wx.ALL, 5) langBox.Add(language, 0, wx.ALL, 5)
langBox.Add(self.language, 0, wx.ALL, 5) langBox.Add(self.language, 0, wx.ALL, 5)
sizer.Add(langBox, 0, wx.ALL, 5) sizer.Add(langBox, 0, wx.ALL, 5)
self.ask_at_exit = wx.CheckBox(self, -1, _(U"Ask to exit TWBlue")) self.ask_at_exit = wx.CheckBox(self, -1, _(U"ask before exiting TwBlue?"))
self.ask_at_exit.SetValue(config.main["general"]["ask_at_exit"]) self.ask_at_exit.SetValue(config.main["general"]["ask_at_exit"])
sizer.Add(self.ask_at_exit, 0, wx.ALL, 5) sizer.Add(self.ask_at_exit, 0, wx.ALL, 5)
self.relative_time = wx.CheckBox(self, -1, _(U"Relative times")) self.relative_time = wx.CheckBox(self, -1, _(U"Relative times"))

View File

@ -123,8 +123,8 @@ class mainFrame(wx.Frame):
# buffer menu # buffer menu
buffer = wx.Menu() buffer = wx.Menu()
load_more_items = buffer.Append(wx.NewId(), _(u"Load more items")) load_previous_items = buffer.Append(wx.NewId(), _(u"&Load previous items"))
self.Bind(wx.EVT_MENU, self.get_more_items, load_more_items) self.Bind(wx.EVT_MENU, self.get_more_items, load_previous_items)
mute = buffer.Append(wx.NewId(), _(u"&Mute")) mute = buffer.Append(wx.NewId(), _(u"&Mute"))
self.Bind(wx.EVT_MENU, self.toggle_mute, mute) self.Bind(wx.EVT_MENU, self.toggle_mute, mute)
autoread = buffer.Append(wx.NewId(), _(u"&Autoread tweets for this buffer")) autoread = buffer.Append(wx.NewId(), _(u"&Autoread tweets for this buffer"))
@ -343,9 +343,8 @@ class mainFrame(wx.Frame):
if run_streams == True: if run_streams == True:
self.get_home() self.get_home()
self.get_tls() self.get_tls()
if config.main["general"]["auto_connect_streams"] == True: self.check_streams = RepeatingTimer(config.main["general"]["time_to_check_streams"], self.check_stream_up)
self.check_streams = RepeatingTimer(config.main["general"]["time_to_check_streams"], self.check_stream_up) self.check_streams.start()
self.check_streams.start()
# If all it's done, then play a nice sound saying that all it's OK. # If all it's done, then play a nice sound saying that all it's OK.
sound.player.play("ready.ogg") sound.player.play("ready.ogg")
@ -394,24 +393,24 @@ class mainFrame(wx.Frame):
def get_tls(self): def get_tls(self):
""" Setting the stream for individual user timelines.""" """ Setting the stream for individual user timelines."""
try: # try:
self.stream2 = twitter.buffers.indibidual.streamer(application.app_key, application.app_secret, config.main["twitter"]["user_key"], config.main["twitter"]["user_secret"], parent=self) self.stream2 = twitter.buffers.indibidual.streamer(application.app_key, application.app_secret, config.main["twitter"]["user_key"], config.main["twitter"]["user_secret"], parent=self)
# The self.ids contains all IDS for the follow argument of the stream. # The self.ids contains all IDS for the follow argument of the stream.
ids = "" ids = ""
# If we have more than 0 items on a list, then. # If we have more than 0 items on a list, then.
for i in config.main["other_buffers"]["timelines"]: for i in config.main["other_buffers"]["timelines"]:
ids = ids+self.db.settings[i][0]["user"]["id_str"]+", " ids = ids+self.db.settings[i][0]["user"]["id_str"]+", "
for i in range(0, self.nb.GetPageCount()): for i in range(0, self.nb.GetPageCount()):
if self.nb.GetPage(i).type == "list": if self.nb.GetPage(i).type == "list":
for z in self.nb.GetPage(i).users: for z in self.nb.GetPage(i).users:
ids+= str(z)+", " ids+= str(z)+", "
if ids != "": if ids != "":
# try: # try:
call_threaded(self.stream2.statuses.filter, follow=ids) call_threaded(self.stream2.statuses.filter, follow=ids)
# except: # except:
# pass # pass
except: # except:
self.stream2.disconnect() # self.stream2.disconnect()
def check_stream_up(self): def check_stream_up(self):
try: try:
@ -950,22 +949,15 @@ class mainFrame(wx.Frame):
def get_more_items(self, event=None): def get_more_items(self, event=None):
self.nb.GetCurrentPage().get_more_items() self.nb.GetCurrentPage().get_more_items()
def connect_streams(self): def search_buffer(self, buffer_type=None, name_buffer=None):
disconnect = False page = None
if self.stream.connected == False: for i in range(0, self.nb.GetPageCount()):
output.speak(_(u"Trying to reconnect the main stream")) page = self.nb.GetPage(i)
disconnect = True if page.type != buffer_type:
del self.stream continue
call_threaded(self.init) if page.name_buffer == name_buffer:
self.get_home() return page
if hasattr(self, "stream2") and self.stream2.connected == False: return page
output.speak(_(u"Trying to reconnect the buffers stream"))
disconnect = True
log.debug("Trying reconnects the timelines stream...")
del self.stream2
self.get_tls()
if disconnect == False:
output.speak(_(u"All streams are working properly"))
### Close App ### Close App
def Destroy(self): def Destroy(self):

View File

@ -41,5 +41,5 @@ actions = {
"search": _(u"Search on twitter"), "search": _(u"Search on twitter"),
"edit_keystrokes": _(u"Shows the keystroke editor"), "edit_keystrokes": _(u"Shows the keystroke editor"),
"view_user_lists": _(u"Show lists for a specified user"), "view_user_lists": _(u"Show lists for a specified user"),
"get_more_items": _(u"Load previous item for a buffer"), "get_more_items": _(u"loads previous items to any buffer"),
} }

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -19,13 +19,15 @@ class streamer(TwythonStreamer):
log.debug("%s: %s" % (status_code, data)) log.debug("%s: %s" % (status_code, data))
def check_tls(self, data): def check_tls(self, data):
print "checking timelines..."
for i in config.main["other_buffers"]["timelines"]: for i in config.main["other_buffers"]["timelines"]:
if data["user"]["screen_name"] == i: if data["user"]["screen_name"] == i:
print "I found it"
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data) tweet_event.SetItem(data)
announce = _(u"One tweet from %s") % (data["user"]["name"]) announce = _(u"One tweet from %s") % (data["user"]["name"])
tweet_event.SetAnnounce(announce) tweet_event.SetAnnounce(announce)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index(i)), tweet_event) wx.PostEvent(self.parent.search_buffer(buffer_type="timeline", name_buffer=data["user"]["screen_name"]), tweet_event)
for i in range(0, self.parent.nb.GetPageCount()): for i in range(0, self.parent.nb.GetPageCount()):
if self.parent.nb.GetPage(i).type == "list": if self.parent.nb.GetPage(i).type == "list":
try: try:
@ -34,13 +36,13 @@ class streamer(TwythonStreamer):
tweet_event.SetItem(data) tweet_event.SetItem(data)
announce = _(u"One tweet from %s in the list %s") % (data["user"]["name"], self.parent.nb.GetPage(i).name_buffer[:-5]) announce = _(u"One tweet from %s in the list %s") % (data["user"]["name"], self.parent.nb.GetPage(i).name_buffer[:-5])
tweet_event.SetAnnounce(announce) tweet_event.SetAnnounce(announce)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index(self.parent.nb.GetPage(i).name_buffer)), tweet_event) wx.PostEvent(self.parent.nb.GetPage(i), tweet_event)
except ValueError: except ValueError:
pass pass
def on_success(self, data): def on_success(self, data):
try: try:
if "text" in data: if data.has_key("text"):
self.check_tls(data) self.check_tls(data)
except: except:
pass pass

View File

@ -27,7 +27,7 @@ class streamer(TwythonStreamer):
if config.main["other_buffers"]["show_blocks"] == True: if config.main["other_buffers"]["show_blocks"] == True:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["target"]) tweet_event.SetItem(data["target"])
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("blocks")), tweet_event) wx.PostEvent(self.parent.search_buffer("people", "blocks"), tweet_event)
def unblock(self, data): def unblock(self, data):
if config.main["other_buffers"]["show_blocks"] == True: if config.main["other_buffers"]["show_blocks"] == True:
@ -35,20 +35,20 @@ class streamer(TwythonStreamer):
self.db.settings["blocks"].pop(item) self.db.settings["blocks"].pop(item)
deleted_event = event.event(event.EVT_DELETED, 1) deleted_event = event.event(event.EVT_DELETED, 1)
deleted_event.SetItem(item) deleted_event.SetItem(item)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("blocks")), deleted_event) wx.PostEvent(self.parent.search_buffer("people", "blocks"), deleted_event)
wx.PostEvent(self.parent, event.ResultEvent()) wx.PostEvent(self.parent, event.ResultEvent())
def check_send(self, data): def check_send(self, data):
if self.db.settings["user_name"] == data["user"]["screen_name"]: if self.db.settings["user_name"] == data["user"]["screen_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data) tweet_event.SetItem(data)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("sent")), tweet_event) wx.PostEvent(self.parent.search_buffer("buffer", "sent"), tweet_event)
def check_favs(self, data): def check_favs(self, data):
if data["source"]["screen_name"] == self.db.settings["user_name"]: if data["source"]["screen_name"] == self.db.settings["user_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["target_object"]) tweet_event.SetItem(data["target_object"])
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("favs")), tweet_event) wx.PostEvent(self.parent.search_buffer("buffer", "favs"), tweet_event)
def check_mentions(self, data): def check_mentions(self, data):
if "@%s" % (self.db.settings["user_name"]) in data["text"]: if "@%s" % (self.db.settings["user_name"]) in data["text"]:
@ -56,30 +56,30 @@ class streamer(TwythonStreamer):
tweet_event.SetItem(data) tweet_event.SetItem(data)
text = _(u"One mention from %s ") % (data["user"]["name"]) text = _(u"One mention from %s ") % (data["user"]["name"])
tweet_event.SetAnnounce(text) tweet_event.SetAnnounce(text)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("mentions")), tweet_event) wx.PostEvent(self.parent.search_buffer("buffer", "mentions"), tweet_event)
def process_dm(self, data): def process_dm(self, data):
if self.db.settings["user_name"] == data["direct_message"]["sender"]["screen_name"]: if self.db.settings["user_name"] == data["direct_message"]["sender"]["screen_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["direct_message"]) tweet_event.SetItem(data["direct_message"])
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("sent")), tweet_event) wx.PostEvent(self.parent.search_buffer("buffer", "sent"), tweet_event)
if self.db.settings["user_name"] != data["direct_message"]["sender"]["screen_name"]: if self.db.settings["user_name"] != data["direct_message"]["sender"]["screen_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["direct_message"]) tweet_event.SetItem(data["direct_message"])
text = _(u"One direct message") text = _(u"One direct message")
tweet_event.SetAnnounce(text) tweet_event.SetAnnounce(text)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("direct_messages")), tweet_event) wx.PostEvent(self.parent.search_buffer("buffer", "direct_messages"), tweet_event)
def check_follower(self, data): def check_follower(self, data):
if data["target"]["screen_name"] == self.db.settings["user_name"]: if data["target"]["screen_name"] == self.db.settings["user_name"]:
if config.main["other_buffers"]["show_followers"] == True: if config.main["other_buffers"]["show_followers"] == True:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["source"]) tweet_event.SetItem(data["source"])
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("followers")), tweet_event) wx.PostEvent(self.parent.search_buffer("people", "followers"), tweet_event)
elif data["source"]["screen_name"] == self.db.settings["user_name"] and config.main["other_buffers"]["show_friends"] == True: elif data["source"]["screen_name"] == self.db.settings["user_name"] and config.main["other_buffers"]["show_friends"] == True:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["target"]) tweet_event.SetItem(data["target"])
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("friends")), tweet_event) wx.PostEvent(self.parent.search_buffer("people", "friends"), tweet_event)
def remove_fav(self, data): def remove_fav(self, data):
if self.db.settings["user_name"] == data["source"]["screen_name"]: if self.db.settings["user_name"] == data["source"]["screen_name"]:
@ -88,7 +88,7 @@ class streamer(TwythonStreamer):
self.db.settings["favs"].pop(item) self.db.settings["favs"].pop(item)
deleted_event = event.event(event.EVT_DELETED, 1) deleted_event = event.event(event.EVT_DELETED, 1)
deleted_event.SetItem(item) deleted_event.SetItem(item)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("favs")), deleted_event) wx.PostEvent(self.parent.search_buffer("buffer", "favs"), deleted_event)
def remove_friend(self, data): def remove_friend(self, data):
if config.main["other_buffers"]["show_friends"] == True: if config.main["other_buffers"]["show_friends"] == True:
@ -98,7 +98,7 @@ class streamer(TwythonStreamer):
deleted_event.SetItem(item) deleted_event.SetItem(item)
self.friends.pop(item) self.friends.pop(item)
self.db.settings["friends"].pop(item) self.db.settings["friends"].pop(item)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("friends")), deleted_event) wx.PostEvent(self.parent.search_buffer("people", "friends"), deleted_event)
def on_success(self, data): def on_success(self, data):
try: try:
@ -113,7 +113,7 @@ class streamer(TwythonStreamer):
if data["user"]["id"] in self.friends or data["user"]["screen_name"] == self.db.settings["user_name"]: if data["user"]["id"] in self.friends or data["user"]["screen_name"] == self.db.settings["user_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1) tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data) tweet_event.SetItem(data)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("home_timeline")), tweet_event) wx.PostEvent(self.parent.search_buffer("buffer", "home_timeline"), tweet_event)
elif data.has_key("event"): elif data.has_key("event"):
if "favorite" == data["event"] and config.main["other_buffers"]["show_favourites"] == True: if "favorite" == data["event"] and config.main["other_buffers"]["show_favourites"] == True:
self.check_favs(data) self.check_favs(data)
@ -163,7 +163,7 @@ class streamer(TwythonStreamer):
tweet_event.SetAnnounce(text) tweet_event.SetAnnounce(text)
# deleted_event = event.event(event.EVT_DELETED, 1) # deleted_event = event.event(event.EVT_DELETED, 1)
# deleted_event.SetItem(evento) # deleted_event.SetItem(evento)
wx.PostEvent(self.parent.nb.GetPage(self.db.settings["buffers"].index("events")), tweet_event) wx.PostEvent(self.parent.search_buffer("event", "events"), tweet_event)
# self.sound.play("new_event.ogg") # self.sound.play("new_event.ogg")
except: except:
pass pass

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-10-13 09:41+Hora de verano central (México)\n" "POT-Creation-Date: 2014-11-08 16:42+Hora estándar central (México)\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,22 +15,22 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: ../src\extra\AudioUploader\gui.py:31 ../src\gui\dialogs\message.py:169 #: ../src\extra\AudioUploader\gui.py:31 ../src\gui\dialogs\message.py:173
#: ../src\gui\dialogs\message.py:257 #: ../src\gui\dialogs\message.py:261
msgid "Attach audio" msgid "Attach audio"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:38 ../src\extra\AudioUploader\gui.py:146 #: ../src\extra\AudioUploader\gui.py:38 ../src\extra\AudioUploader\gui.py:147
#: ../src\extra\AudioUploader\gui.py:156 #: ../src\extra\AudioUploader\gui.py:157
msgid "Play" msgid "Play"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:41 ../src\extra\AudioUploader\gui.py:75 #: ../src\extra\AudioUploader\gui.py:41 ../src\extra\AudioUploader\gui.py:76
#: ../src\extra\AudioUploader\gui.py:80 ../src\extra\AudioUploader\gui.py:107 #: ../src\extra\AudioUploader\gui.py:81 ../src\extra\AudioUploader\gui.py:108
msgid "Pause" msgid "Pause"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:44 ../src\extra\AudioUploader\gui.py:103 #: ../src\extra\AudioUploader\gui.py:44 ../src\extra\AudioUploader\gui.py:104
msgid "Record" msgid "Record"
msgstr "" msgstr ""
@ -54,45 +54,45 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:77 ../src\extra\AudioUploader\gui.py:78 #: ../src\extra\AudioUploader\gui.py:78 ../src\extra\AudioUploader\gui.py:79
msgid "Resume" msgid "Resume"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:95 #: ../src\extra\AudioUploader\gui.py:96
msgid "Stop recording" msgid "Stop recording"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:96 #: ../src\extra\AudioUploader\gui.py:97
msgid "Recording" msgid "Recording"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:101 ../src\extra\AudioUploader\gui.py:153 #: ../src\extra\AudioUploader\gui.py:102 ../src\extra\AudioUploader\gui.py:154
msgid "Stopped" msgid "Stopped"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:128 ../src\gui\dialogs\message.py:218 #: ../src\extra\AudioUploader\gui.py:129 ../src\gui\dialogs\message.py:222
#: ../src\gui\dialogs\update_profile.py:87 #: ../src\gui\dialogs\update_profile.py:87
msgid "Discarded" msgid "Discarded"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:138 ../src\gui\buffers\base.py:339 #: ../src\extra\AudioUploader\gui.py:139 ../src\gui\buffers\base.py:339
#: ../src\gui\buffers\base.py:351 #: ../src\gui\buffers\base.py:351
msgid "Playing..." msgid "Playing..."
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:142 #: ../src\extra\AudioUploader\gui.py:143
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:161 #: ../src\extra\AudioUploader\gui.py:162
msgid "Recoding audio..." msgid "Recoding audio..."
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:185 #: ../src\extra\AudioUploader\gui.py:186
msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:185 #: ../src\extra\AudioUploader\gui.py:186
msgid "Select the audio file to be uploaded" msgid "Select the audio file to be uploaded"
msgstr "" msgstr ""
@ -297,8 +297,8 @@ msgstr ""
msgid "The spelling review has finished." msgid "The spelling review has finished."
msgstr "" msgstr ""
#: ../src\extra\translator\gui.py:24 ../src\gui\dialogs\message.py:177 #: ../src\extra\translator\gui.py:24 ../src\gui\dialogs\message.py:181
#: ../src\gui\dialogs\message.py:265 ../src\gui\dialogs\message.py:351 #: ../src\gui\dialogs\message.py:269 ../src\gui\dialogs\message.py:355
msgid "Translate message" msgid "Translate message"
msgstr "" msgstr ""
@ -697,15 +697,16 @@ msgstr ""
#: ../src\gui\buffers\base.py:80 ../src\gui\buffers\base.py:228 #: ../src\gui\buffers\base.py:80 ../src\gui\buffers\base.py:228
#: ../src\gui\buffers\events.py:62 ../src\gui\buffers\events.py:78 #: ../src\gui\buffers\events.py:62 ../src\gui\buffers\events.py:78
#: ../src\gui\dialogs\message.py:333 #: ../src\gui\dialogs\message.py:337
msgid "Tweet" msgid "Tweet"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:82 ../src\gui\buffers\base.py:240 #: ../src\gui\buffers\base.py:82 ../src\gui\buffers\base.py:240
#: ../src\gui\buffers\base.py:243
msgid "Retweet" msgid "Retweet"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:84 #: ../src\gui\buffers\base.py:84 ../src\gui\buffers\base.py:259
msgid "Reply" msgid "Reply"
msgstr "" msgstr ""
@ -720,7 +721,7 @@ msgstr ""
#: ../src\gui\buffers\base.py:100 ../src\gui\buffers\favourites.py:41 #: ../src\gui\buffers\base.py:100 ../src\gui\buffers\favourites.py:41
#: ../src\gui\buffers\lists.py:46 ../src\gui\buffers\trends.py:41 #: ../src\gui\buffers\lists.py:46 ../src\gui\buffers\trends.py:41
#: ../src\gui\buffers\tweet_searches.py:45 #: ../src\gui\buffers\tweet_searches.py:45
#: ../src\gui\buffers\user_searches.py:49 #: ../src\gui\buffers\user_searches.py:56
msgid "Attention" msgid "Attention"
msgstr "" msgstr ""
@ -737,6 +738,11 @@ msgstr ""
msgid "Direct message to %s" msgid "Direct message to %s"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:220 ../src\gui\buffers\dm.py:44
#: ../src\gui\buffers\people.py:56
msgid "New direct message"
msgstr ""
#: ../src\gui\buffers\base.py:228 ../src\gui\buffers\events.py:78 #: ../src\gui\buffers\base.py:228 ../src\gui\buffers\events.py:78
msgid "Write the tweet here" msgid "Write the tweet here"
msgstr "" msgstr ""
@ -749,7 +755,7 @@ msgstr ""
msgid "Add your comment to the tweet" msgid "Add your comment to the tweet"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:259 ../src\gui\buffers\people.py:64 #: ../src\gui\buffers\base.py:259
msgid "Reply to %s" msgid "Reply to %s"
msgstr "" msgstr ""
@ -784,6 +790,7 @@ msgstr ""
#: ../src\gui\buffers\events.py:35 ../src\gui\buffers\panels.py:37 #: ../src\gui\buffers\events.py:35 ../src\gui\buffers\panels.py:37
#: ../src\gui\buffers\tweet_searches.py:58 #: ../src\gui\buffers\tweet_searches.py:58
#: ../src\gui\buffers\user_searches.py:64
msgid "This action is not supported for this buffer" msgid "This action is not supported for this buffer"
msgstr "" msgstr ""
@ -811,12 +818,16 @@ msgstr ""
msgid "Announce" msgid "Announce"
msgstr "" msgstr ""
#: ../src\gui\buffers\people.py:46 #: ../src\gui\buffers\people.py:46 ../src\gui\buffers\people.py:64
msgid "Mention" msgid "Mention"
msgstr "" msgstr ""
#: ../src\gui\buffers\people.py:64
msgid "Mention to %s"
msgstr ""
#: ../src\gui\buffers\trends.py:41 ../src\gui\buffers\tweet_searches.py:45 #: ../src\gui\buffers\trends.py:41 ../src\gui\buffers\tweet_searches.py:45
#: ../src\gui\buffers\user_searches.py:49 #: ../src\gui\buffers\user_searches.py:56
msgid "Do you really want to delete this search term?" msgid "Do you really want to delete this search term?"
msgstr "" msgstr ""
@ -825,196 +836,200 @@ msgid "Language"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:53 #: ../src\gui\dialogs\configuration.py:53
msgid "ask before exiting TwBlue?"
msgstr ""
#: ../src\gui\dialogs\configuration.py:56
msgid "Relative times" msgid "Relative times"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:57 #: ../src\gui\dialogs\configuration.py:60
msgid "Activate Sapi5 when any other screen reader is not being run" msgid "Activate Sapi5 when any other screen reader is not being run"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:60 #: ../src\gui\dialogs\configuration.py:63
msgid "Activate the auto-start of the invisible interface" msgid "Activate the auto-start of the invisible interface"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:64 #: ../src\gui\dialogs\configuration.py:67
msgid "API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):" msgid "API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:72 #: ../src\gui\dialogs\configuration.py:75
msgid "Items on each API call" msgid "Items on each API call"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:79 #: ../src\gui\dialogs\configuration.py:82
msgid "Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end" msgid "Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:94 #: ../src\gui\dialogs\configuration.py:97
msgid "Show followers" msgid "Show followers"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:97 #: ../src\gui\dialogs\configuration.py:100
msgid "Show friends" msgid "Show friends"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:100 #: ../src\gui\dialogs\configuration.py:103
msgid "Show favourites" msgid "Show favourites"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:103 #: ../src\gui\dialogs\configuration.py:106
msgid "Show blocked users" msgid "Show blocked users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:106 #: ../src\gui\dialogs\configuration.py:109
msgid "Show muted users" msgid "Show muted users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:109 #: ../src\gui\dialogs\configuration.py:112
msgid "Show events" msgid "Show events"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:119 #: ../src\gui\dialogs\configuration.py:122
#: ../src\gui\dialogs\configuration.py:267 #: ../src\gui\dialogs\configuration.py:270
msgid "Ignored clients" msgid "Ignored clients"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:125 #: ../src\gui\dialogs\configuration.py:128
msgid "Add client" msgid "Add client"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:126 #: ../src\gui\dialogs\configuration.py:129
msgid "Remove client" msgid "Remove client"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:137 #: ../src\gui\dialogs\configuration.py:140
msgid "Add a new ignored client" msgid "Add a new ignored client"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:137 #: ../src\gui\dialogs\configuration.py:140
msgid "Enter the name of the client here" msgid "Enter the name of the client here"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:154 #: ../src\gui\dialogs\configuration.py:157
msgid "Volume" msgid "Volume"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:163 #: ../src\gui\dialogs\configuration.py:166
msgid "Global mute" msgid "Global mute"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:167 #: ../src\gui\dialogs\configuration.py:170
msgid "Output device" msgid "Output device"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:176 #: ../src\gui\dialogs\configuration.py:179
msgid "Input device" msgid "Input device"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:187 #: ../src\gui\dialogs\configuration.py:190
msgid "Sound pack" msgid "Sound pack"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:200 #: ../src\gui\dialogs\configuration.py:203
msgid "If you've got a SndUp account, enter your API Key here. Whether the API Key is wrong, the App will fail to upload anything to the server. Whether there's no API Key here, then the audio files will be uploaded anonimously" msgid "If you've got a SndUp account, enter your API Key here. Whether the API Key is wrong, the App will fail to upload anything to the server. Whether there's no API Key here, then the audio files will be uploaded anonimously"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:213 #: ../src\gui\dialogs\configuration.py:216
#: ../src\gui\dialogs\configuration.py:237 #: ../src\gui\dialogs\configuration.py:240
msgid "Unlink your Dropbox account" msgid "Unlink your Dropbox account"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:215 #: ../src\gui\dialogs\configuration.py:218
#: ../src\gui\dialogs\configuration.py:232 #: ../src\gui\dialogs\configuration.py:235
#: ../src\gui\dialogs\configuration.py:240 #: ../src\gui\dialogs\configuration.py:243
#: ../src\gui\dialogs\configuration.py:244 #: ../src\gui\dialogs\configuration.py:247
#: ../src\gui\dialogs\configuration.py:251 #: ../src\gui\dialogs\configuration.py:254
msgid "Link your Dropbox account" msgid "Link your Dropbox account"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:225 #: ../src\gui\dialogs\configuration.py:228
msgid "Authorisation" msgid "Authorisation"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:225 #: ../src\gui\dialogs\configuration.py:228
msgid "The authorisation request will be shown on your browser. Copy the code tat Dropbox will provide and, in the text box that will appear on TW Blue, paste it. This code is necessary to continue. You only need to do it once." msgid "The authorisation request will be shown on your browser. Copy the code tat Dropbox will provide and, in the text box that will appear on TW Blue, paste it. This code is necessary to continue. You only need to do it once."
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:227 #: ../src\gui\dialogs\configuration.py:230
msgid "Enter the code here." msgid "Enter the code here."
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:227 #: ../src\gui\dialogs\configuration.py:230
msgid "Verification code" msgid "Verification code"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:239 #: ../src\gui\dialogs\configuration.py:242
msgid "Error during authorisation. Try again later." msgid "Error during authorisation. Try again later."
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:239 #: ../src\gui\dialogs\configuration.py:242
msgid "Error!" msgid "Error!"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:258 #: ../src\gui\dialogs\configuration.py:261
msgid "TW Blue preferences" msgid "TW Blue preferences"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:262 #: ../src\gui\dialogs\configuration.py:265
msgid "General" msgid "General"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:265 #: ../src\gui\dialogs\configuration.py:268
msgid "Show other buffers" msgid "Show other buffers"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:269 #: ../src\gui\dialogs\configuration.py:272
msgid "Sound" msgid "Sound"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:271 #: ../src\gui\dialogs\configuration.py:274
msgid "Audio Services" msgid "Audio Services"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:274 #: ../src\gui\dialogs\configuration.py:277
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:277 ../src\gui\dialogs\follow.py:64 #: ../src\gui\dialogs\configuration.py:280 ../src\gui\dialogs\follow.py:64
#: ../src\gui\dialogs\message.py:182 ../src\gui\dialogs\message.py:270 #: ../src\gui\dialogs\message.py:186 ../src\gui\dialogs\message.py:274
#: ../src\gui\dialogs\message.py:353 ../src\gui\dialogs\search.py:42 #: ../src\gui\dialogs\message.py:357 ../src\gui\dialogs\search.py:42
#: ../src\gui\dialogs\show_user.py:42 ../src\gui\dialogs\update_profile.py:56 #: ../src\gui\dialogs\show_user.py:42 ../src\gui\dialogs\trending.py:42
#: ../src\gui\dialogs\utils.py:42 #: ../src\gui\dialogs\update_profile.py:56 ../src\gui\dialogs\utils.py:42
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:290 #: ../src\gui\dialogs\configuration.py:293
msgid "Followers" msgid "Followers"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:304 #: ../src\gui\dialogs\configuration.py:307
msgid "friends" msgid "friends"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:318 #: ../src\gui\dialogs\configuration.py:321
msgid "Favorites" msgid "Favorites"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:332 #: ../src\gui\dialogs\configuration.py:335
msgid "Events" msgid "Events"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:343 #: ../src\gui\dialogs\configuration.py:346
msgid "Blocked users" msgid "Blocked users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:357 #: ../src\gui\dialogs\configuration.py:360
msgid "Muted users" msgid "Muted users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:416 #: ../src\gui\dialogs\configuration.py:420
msgid "Restart TW Blue" msgid "Restart TW Blue"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:416 #: ../src\gui\dialogs\configuration.py:420
msgid "The application requires to be restarted to save these changes. Press OK to do it now." msgid "The application requires to be restarted to save these changes. Press OK to do it now."
msgstr "" msgstr ""
@ -1051,7 +1066,7 @@ msgid "Report as spam"
msgstr "" msgstr ""
#: ../src\gui\dialogs\follow.py:61 ../src\gui\dialogs\search.py:40 #: ../src\gui\dialogs\follow.py:61 ../src\gui\dialogs\search.py:40
#: ../src\gui\dialogs\utils.py:39 #: ../src\gui\dialogs\trending.py:40 ../src\gui\dialogs\utils.py:39
msgid "OK" msgid "OK"
msgstr "" msgstr ""
@ -1163,105 +1178,105 @@ msgstr ""
msgid "Select a list to remove the user" msgid "Select a list to remove the user"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:42 #: ../src\gui\dialogs\message.py:43 ../src\gui\dialogs\message.py:146
msgid "New tweet" msgid "%s - %s of 140 characters"
msgstr ""
#: ../src\gui\dialogs\message.py:76
msgid "Attaching..."
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:77 #: ../src\gui\dialogs\message.py:77
msgid "Attaching..."
msgstr ""
#: ../src\gui\dialogs\message.py:78
msgid "Uploading..." msgid "Uploading..."
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:96 #: ../src\gui\dialogs\message.py:100
msgid "Unable to upload the audio" msgid "Unable to upload the audio"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:110 ../src\gui\dialogs\message.py:396 #: ../src\gui\dialogs\message.py:114 ../src\gui\dialogs\message.py:400
msgid "Translated" msgid "Translated"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:122 #: ../src\gui\dialogs\message.py:126
msgid "There's no URL to be shortened" msgid "There's no URL to be shortened"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:125 #: ../src\gui\dialogs\message.py:129
msgid "URL shortened" msgid "URL shortened"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:133 ../src\gui\dialogs\message.py:408 #: ../src\gui\dialogs\message.py:137 ../src\gui\dialogs\message.py:412
msgid "There's no URL to be expanded" msgid "There's no URL to be expanded"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:136 ../src\gui\dialogs\message.py:411 #: ../src\gui\dialogs\message.py:140 ../src\gui\dialogs\message.py:415
msgid "URL expanded" msgid "URL expanded"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:164 ../src\gui\dialogs\message.py:219 #: ../src\gui\dialogs\message.py:168 ../src\gui\dialogs\message.py:223
#: ../src\gui\dialogs\update_profile.py:51 #: ../src\gui\dialogs\update_profile.py:51
#: ../src\gui\dialogs\update_profile.py:88 #: ../src\gui\dialogs\update_profile.py:88
msgid "Upload a picture" msgid "Upload a picture"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:167 ../src\gui\dialogs\message.py:255 #: ../src\gui\dialogs\message.py:171 ../src\gui\dialogs\message.py:259
#: ../src\gui\dialogs\message.py:346 #: ../src\gui\dialogs\message.py:350
msgid "Spelling correction" msgid "Spelling correction"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:171 ../src\gui\dialogs\message.py:259 #: ../src\gui\dialogs\message.py:175 ../src\gui\dialogs\message.py:263
msgid "Shorten URL" msgid "Shorten URL"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:173 ../src\gui\dialogs\message.py:261 #: ../src\gui\dialogs\message.py:177 ../src\gui\dialogs\message.py:265
#: ../src\gui\dialogs\message.py:348 #: ../src\gui\dialogs\message.py:352
msgid "Expand URL" msgid "Expand URL"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:179 ../src\gui\dialogs\message.py:267 #: ../src\gui\dialogs\message.py:183 ../src\gui\dialogs\message.py:271
msgid "Send" msgid "Send"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:215 ../src\gui\dialogs\message.py:226 #: ../src\gui\dialogs\message.py:219 ../src\gui\dialogs\message.py:230
#: ../src\gui\dialogs\update_profile.py:84 #: ../src\gui\dialogs\update_profile.py:84
#: ../src\gui\dialogs\update_profile.py:95 #: ../src\gui\dialogs\update_profile.py:95
msgid "Discard image" msgid "Discard image"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:221 ../src\gui\dialogs\update_profile.py:90 #: ../src\gui\dialogs\message.py:225 ../src\gui\dialogs\update_profile.py:90
msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:221 ../src\gui\dialogs\update_profile.py:90 #: ../src\gui\dialogs\message.py:225 ../src\gui\dialogs\update_profile.py:90
msgid "Select the picture to be uploaded" msgid "Select the picture to be uploaded"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:249 #: ../src\gui\dialogs\message.py:253
msgid "Recipient" msgid "Recipient"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:304 #: ../src\gui\dialogs\message.py:308
msgid "Mention to all" msgid "Mention to all"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:331 #: ../src\gui\dialogs\message.py:335
msgid "Tweet - %i characters " msgid "Tweet - %i characters "
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:26 #: ../src\gui\dialogs\search.py:26 ../src\gui\dialogs\trending.py:26
msgid "Search on Twitter" msgid "Search on Twitter"
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:27 #: ../src\gui\dialogs\search.py:27 ../src\gui\dialogs\trending.py:27
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:34 #: ../src\gui\dialogs\search.py:34 ../src\gui\dialogs\trending.py:34
msgid "Tweets" msgid "Tweets"
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:35 #: ../src\gui\dialogs\search.py:35 ../src\gui\dialogs\trending.py:35
msgid "Users" msgid "Users"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff