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)
time_to_check_streams = integer(default=30)
announce_stream_status = boolean(default=True)
auto_connect_streams = boolean(default=True)
ask_at_exit = boolean(default=True)
[sound]
@ -87,4 +86,3 @@ search = string(default="control+win+-")
edit_keystrokes = string(default="control+win+k")
view_user_lists = string(default="control+win+l")
get_more_items = string(default="alt+win+pageup")
connect_streams = string(default="win+alt+s")

View File

@ -2,7 +2,7 @@
name = 'TW Blue'
snapshot = False
if snapshot == False:
version = "0.47"
version = "0.48"
update_url = 'http://twblue.com.mx/updates/tw_blue.json'
else:
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."
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"
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
app_key = '8pDLbyOW3saYnvSZ4uLFg'

View File

@ -50,7 +50,7 @@ class general(wx.Panel):
langBox.Add(language, 0, wx.ALL, 5)
langBox.Add(self.language, 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"])
sizer.Add(self.ask_at_exit, 0, wx.ALL, 5)
self.relative_time = wx.CheckBox(self, -1, _(U"Relative times"))

View File

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

View File

@ -41,5 +41,5 @@ actions = {
"search": _(u"Search on twitter"),
"edit_keystrokes": _(u"Shows the keystroke editor"),
"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))
def check_tls(self, data):
print "checking timelines..."
for i in config.main["other_buffers"]["timelines"]:
if data["user"]["screen_name"] == i:
print "I found it"
tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data)
announce = _(u"One tweet from %s") % (data["user"]["name"])
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()):
if self.parent.nb.GetPage(i).type == "list":
try:
@ -34,13 +36,13 @@ class streamer(TwythonStreamer):
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])
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:
pass
def on_success(self, data):
try:
if "text" in data:
if data.has_key("text"):
self.check_tls(data)
except:
pass

View File

@ -27,7 +27,7 @@ class streamer(TwythonStreamer):
if config.main["other_buffers"]["show_blocks"] == True:
tweet_event = event.event(event.EVT_OBJECT, 1)
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):
if config.main["other_buffers"]["show_blocks"] == True:
@ -35,20 +35,20 @@ class streamer(TwythonStreamer):
self.db.settings["blocks"].pop(item)
deleted_event = event.event(event.EVT_DELETED, 1)
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())
def check_send(self, data):
if self.db.settings["user_name"] == data["user"]["screen_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1)
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):
if data["source"]["screen_name"] == self.db.settings["user_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1)
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):
if "@%s" % (self.db.settings["user_name"]) in data["text"]:
@ -56,30 +56,30 @@ class streamer(TwythonStreamer):
tweet_event.SetItem(data)
text = _(u"One mention from %s ") % (data["user"]["name"])
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):
if self.db.settings["user_name"] == data["direct_message"]["sender"]["screen_name"]:
tweet_event = event.event(event.EVT_OBJECT, 1)
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"]:
tweet_event = event.event(event.EVT_OBJECT, 1)
tweet_event.SetItem(data["direct_message"])
text = _(u"One direct message")
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):
if data["target"]["screen_name"] == self.db.settings["user_name"]:
if config.main["other_buffers"]["show_followers"] == True:
tweet_event = event.event(event.EVT_OBJECT, 1)
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:
tweet_event = event.event(event.EVT_OBJECT, 1)
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):
if self.db.settings["user_name"] == data["source"]["screen_name"]:
@ -88,7 +88,7 @@ class streamer(TwythonStreamer):
self.db.settings["favs"].pop(item)
deleted_event = event.event(event.EVT_DELETED, 1)
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):
if config.main["other_buffers"]["show_friends"] == True:
@ -98,7 +98,7 @@ class streamer(TwythonStreamer):
deleted_event.SetItem(item)
self.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):
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"]:
tweet_event = event.event(event.EVT_OBJECT, 1)
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"):
if "favorite" == data["event"] and config.main["other_buffers"]["show_favourites"] == True:
self.check_favs(data)
@ -163,7 +163,7 @@ class streamer(TwythonStreamer):
tweet_event.SetAnnounce(text)
# deleted_event = event.event(event.EVT_DELETED, 1)
# 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")
except:
pass

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,22 +15,22 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n"
#: ../src\extra\AudioUploader\gui.py:31 ../src\gui\dialogs\message.py:169
#: ../src\gui\dialogs\message.py:257
#: ../src\extra\AudioUploader\gui.py:31 ../src\gui\dialogs\message.py:173
#: ../src\gui\dialogs\message.py:261
msgid "Attach audio"
msgstr ""
#: ../src\extra\AudioUploader\gui.py:38 ../src\extra\AudioUploader\gui.py:146
#: ../src\extra\AudioUploader\gui.py:156
#: ../src\extra\AudioUploader\gui.py:38 ../src\extra\AudioUploader\gui.py:147
#: ../src\extra\AudioUploader\gui.py:157
msgid "Play"
msgstr ""
#: ../src\extra\AudioUploader\gui.py:41 ../src\extra\AudioUploader\gui.py:75
#: ../src\extra\AudioUploader\gui.py:80 ../src\extra\AudioUploader\gui.py:107
#: ../src\extra\AudioUploader\gui.py:41 ../src\extra\AudioUploader\gui.py:76
#: ../src\extra\AudioUploader\gui.py:81 ../src\extra\AudioUploader\gui.py:108
msgid "Pause"
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"
msgstr ""
@ -54,45 +54,45 @@ msgstr ""
msgid "Cancel"
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"
msgstr ""
#: ../src\extra\AudioUploader\gui.py:95
#: ../src\extra\AudioUploader\gui.py:96
msgid "Stop recording"
msgstr ""
#: ../src\extra\AudioUploader\gui.py:96
#: ../src\extra\AudioUploader\gui.py:97
msgid "Recording"
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"
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
msgid "Discarded"
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
msgid "Playing..."
msgstr ""
#: ../src\extra\AudioUploader\gui.py:142
#: ../src\extra\AudioUploader\gui.py:143
msgid "Stop"
msgstr ""
#: ../src\extra\AudioUploader\gui.py:161
#: ../src\extra\AudioUploader\gui.py:162
msgid "Recoding audio..."
msgstr ""
#: ../src\extra\AudioUploader\gui.py:185
#: ../src\extra\AudioUploader\gui.py:186
msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav"
msgstr ""
#: ../src\extra\AudioUploader\gui.py:185
#: ../src\extra\AudioUploader\gui.py:186
msgid "Select the audio file to be uploaded"
msgstr ""
@ -297,8 +297,8 @@ msgstr ""
msgid "The spelling review has finished."
msgstr ""
#: ../src\extra\translator\gui.py:24 ../src\gui\dialogs\message.py:177
#: ../src\gui\dialogs\message.py:265 ../src\gui\dialogs\message.py:351
#: ../src\extra\translator\gui.py:24 ../src\gui\dialogs\message.py:181
#: ../src\gui\dialogs\message.py:269 ../src\gui\dialogs\message.py:355
msgid "Translate message"
msgstr ""
@ -697,15 +697,16 @@ msgstr ""
#: ../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\dialogs\message.py:333
#: ../src\gui\dialogs\message.py:337
msgid "Tweet"
msgstr ""
#: ../src\gui\buffers\base.py:82 ../src\gui\buffers\base.py:240
#: ../src\gui\buffers\base.py:243
msgid "Retweet"
msgstr ""
#: ../src\gui\buffers\base.py:84
#: ../src\gui\buffers\base.py:84 ../src\gui\buffers\base.py:259
msgid "Reply"
msgstr ""
@ -720,7 +721,7 @@ msgstr ""
#: ../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\tweet_searches.py:45
#: ../src\gui\buffers\user_searches.py:49
#: ../src\gui\buffers\user_searches.py:56
msgid "Attention"
msgstr ""
@ -737,6 +738,11 @@ msgstr ""
msgid "Direct message to %s"
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
msgid "Write the tweet here"
msgstr ""
@ -749,7 +755,7 @@ msgstr ""
msgid "Add your comment to the tweet"
msgstr ""
#: ../src\gui\buffers\base.py:259 ../src\gui\buffers\people.py:64
#: ../src\gui\buffers\base.py:259
msgid "Reply to %s"
msgstr ""
@ -784,6 +790,7 @@ msgstr ""
#: ../src\gui\buffers\events.py:35 ../src\gui\buffers\panels.py:37
#: ../src\gui\buffers\tweet_searches.py:58
#: ../src\gui\buffers\user_searches.py:64
msgid "This action is not supported for this buffer"
msgstr ""
@ -811,12 +818,16 @@ msgstr ""
msgid "Announce"
msgstr ""
#: ../src\gui\buffers\people.py:46
#: ../src\gui\buffers\people.py:46 ../src\gui\buffers\people.py:64
msgid "Mention"
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\user_searches.py:49
#: ../src\gui\buffers\user_searches.py:56
msgid "Do you really want to delete this search term?"
msgstr ""
@ -825,196 +836,200 @@ msgid "Language"
msgstr ""
#: ../src\gui\dialogs\configuration.py:53
msgid "ask before exiting TwBlue?"
msgstr ""
#: ../src\gui\dialogs\configuration.py:56
msgid "Relative times"
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"
msgstr ""
#: ../src\gui\dialogs\configuration.py:60
#: ../src\gui\dialogs\configuration.py:63
msgid "Activate the auto-start of the invisible interface"
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):"
msgstr ""
#: ../src\gui\dialogs\configuration.py:72
#: ../src\gui\dialogs\configuration.py:75
msgid "Items on each API call"
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"
msgstr ""
#: ../src\gui\dialogs\configuration.py:94
#: ../src\gui\dialogs\configuration.py:97
msgid "Show followers"
msgstr ""
#: ../src\gui\dialogs\configuration.py:97
#: ../src\gui\dialogs\configuration.py:100
msgid "Show friends"
msgstr ""
#: ../src\gui\dialogs\configuration.py:100
#: ../src\gui\dialogs\configuration.py:103
msgid "Show favourites"
msgstr ""
#: ../src\gui\dialogs\configuration.py:103
#: ../src\gui\dialogs\configuration.py:106
msgid "Show blocked users"
msgstr ""
#: ../src\gui\dialogs\configuration.py:106
#: ../src\gui\dialogs\configuration.py:109
msgid "Show muted users"
msgstr ""
#: ../src\gui\dialogs\configuration.py:109
#: ../src\gui\dialogs\configuration.py:112
msgid "Show events"
msgstr ""
#: ../src\gui\dialogs\configuration.py:119
#: ../src\gui\dialogs\configuration.py:267
#: ../src\gui\dialogs\configuration.py:122
#: ../src\gui\dialogs\configuration.py:270
msgid "Ignored clients"
msgstr ""
#: ../src\gui\dialogs\configuration.py:125
#: ../src\gui\dialogs\configuration.py:128
msgid "Add client"
msgstr ""
#: ../src\gui\dialogs\configuration.py:126
#: ../src\gui\dialogs\configuration.py:129
msgid "Remove client"
msgstr ""
#: ../src\gui\dialogs\configuration.py:137
#: ../src\gui\dialogs\configuration.py:140
msgid "Add a new ignored client"
msgstr ""
#: ../src\gui\dialogs\configuration.py:137
#: ../src\gui\dialogs\configuration.py:140
msgid "Enter the name of the client here"
msgstr ""
#: ../src\gui\dialogs\configuration.py:154
#: ../src\gui\dialogs\configuration.py:157
msgid "Volume"
msgstr ""
#: ../src\gui\dialogs\configuration.py:163
#: ../src\gui\dialogs\configuration.py:166
msgid "Global mute"
msgstr ""
#: ../src\gui\dialogs\configuration.py:167
#: ../src\gui\dialogs\configuration.py:170
msgid "Output device"
msgstr ""
#: ../src\gui\dialogs\configuration.py:176
#: ../src\gui\dialogs\configuration.py:179
msgid "Input device"
msgstr ""
#: ../src\gui\dialogs\configuration.py:187
#: ../src\gui\dialogs\configuration.py:190
msgid "Sound pack"
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"
msgstr ""
#: ../src\gui\dialogs\configuration.py:213
#: ../src\gui\dialogs\configuration.py:237
#: ../src\gui\dialogs\configuration.py:216
#: ../src\gui\dialogs\configuration.py:240
msgid "Unlink your Dropbox account"
msgstr ""
#: ../src\gui\dialogs\configuration.py:215
#: ../src\gui\dialogs\configuration.py:232
#: ../src\gui\dialogs\configuration.py:240
#: ../src\gui\dialogs\configuration.py:244
#: ../src\gui\dialogs\configuration.py:251
#: ../src\gui\dialogs\configuration.py:218
#: ../src\gui\dialogs\configuration.py:235
#: ../src\gui\dialogs\configuration.py:243
#: ../src\gui\dialogs\configuration.py:247
#: ../src\gui\dialogs\configuration.py:254
msgid "Link your Dropbox account"
msgstr ""
#: ../src\gui\dialogs\configuration.py:225
#: ../src\gui\dialogs\configuration.py:228
msgid "Authorisation"
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."
msgstr ""
#: ../src\gui\dialogs\configuration.py:227
#: ../src\gui\dialogs\configuration.py:230
msgid "Enter the code here."
msgstr ""
#: ../src\gui\dialogs\configuration.py:227
#: ../src\gui\dialogs\configuration.py:230
msgid "Verification code"
msgstr ""
#: ../src\gui\dialogs\configuration.py:239
#: ../src\gui\dialogs\configuration.py:242
msgid "Error during authorisation. Try again later."
msgstr ""
#: ../src\gui\dialogs\configuration.py:239
#: ../src\gui\dialogs\configuration.py:242
msgid "Error!"
msgstr ""
#: ../src\gui\dialogs\configuration.py:258
#: ../src\gui\dialogs\configuration.py:261
msgid "TW Blue preferences"
msgstr ""
#: ../src\gui\dialogs\configuration.py:262
#: ../src\gui\dialogs\configuration.py:265
msgid "General"
msgstr ""
#: ../src\gui\dialogs\configuration.py:265
#: ../src\gui\dialogs\configuration.py:268
msgid "Show other buffers"
msgstr ""
#: ../src\gui\dialogs\configuration.py:269
#: ../src\gui\dialogs\configuration.py:272
msgid "Sound"
msgstr ""
#: ../src\gui\dialogs\configuration.py:271
#: ../src\gui\dialogs\configuration.py:274
msgid "Audio Services"
msgstr ""
#: ../src\gui\dialogs\configuration.py:274
#: ../src\gui\dialogs\configuration.py:277
msgid "Save"
msgstr ""
#: ../src\gui\dialogs\configuration.py:277 ../src\gui\dialogs\follow.py:64
#: ../src\gui\dialogs\message.py:182 ../src\gui\dialogs\message.py:270
#: ../src\gui\dialogs\message.py:353 ../src\gui\dialogs\search.py:42
#: ../src\gui\dialogs\show_user.py:42 ../src\gui\dialogs\update_profile.py:56
#: ../src\gui\dialogs\utils.py:42
#: ../src\gui\dialogs\configuration.py:280 ../src\gui\dialogs\follow.py:64
#: ../src\gui\dialogs\message.py:186 ../src\gui\dialogs\message.py:274
#: ../src\gui\dialogs\message.py:357 ../src\gui\dialogs\search.py:42
#: ../src\gui\dialogs\show_user.py:42 ../src\gui\dialogs\trending.py:42
#: ../src\gui\dialogs\update_profile.py:56 ../src\gui\dialogs\utils.py:42
msgid "Close"
msgstr ""
#: ../src\gui\dialogs\configuration.py:290
#: ../src\gui\dialogs\configuration.py:293
msgid "Followers"
msgstr ""
#: ../src\gui\dialogs\configuration.py:304
#: ../src\gui\dialogs\configuration.py:307
msgid "friends"
msgstr ""
#: ../src\gui\dialogs\configuration.py:318
#: ../src\gui\dialogs\configuration.py:321
msgid "Favorites"
msgstr ""
#: ../src\gui\dialogs\configuration.py:332
#: ../src\gui\dialogs\configuration.py:335
msgid "Events"
msgstr ""
#: ../src\gui\dialogs\configuration.py:343
#: ../src\gui\dialogs\configuration.py:346
msgid "Blocked users"
msgstr ""
#: ../src\gui\dialogs\configuration.py:357
#: ../src\gui\dialogs\configuration.py:360
msgid "Muted users"
msgstr ""
#: ../src\gui\dialogs\configuration.py:416
#: ../src\gui\dialogs\configuration.py:420
msgid "Restart TW Blue"
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."
msgstr ""
@ -1051,7 +1066,7 @@ msgid "Report as spam"
msgstr ""
#: ../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"
msgstr ""
@ -1163,105 +1178,105 @@ msgstr ""
msgid "Select a list to remove the user"
msgstr ""
#: ../src\gui\dialogs\message.py:42
msgid "New tweet"
msgstr ""
#: ../src\gui\dialogs\message.py:76
msgid "Attaching..."
#: ../src\gui\dialogs\message.py:43 ../src\gui\dialogs\message.py:146
msgid "%s - %s of 140 characters"
msgstr ""
#: ../src\gui\dialogs\message.py:77
msgid "Attaching..."
msgstr ""
#: ../src\gui\dialogs\message.py:78
msgid "Uploading..."
msgstr ""
#: ../src\gui\dialogs\message.py:96
#: ../src\gui\dialogs\message.py:100
msgid "Unable to upload the audio"
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"
msgstr ""
#: ../src\gui\dialogs\message.py:122
#: ../src\gui\dialogs\message.py:126
msgid "There's no URL to be shortened"
msgstr ""
#: ../src\gui\dialogs\message.py:125
#: ../src\gui\dialogs\message.py:129
msgid "URL shortened"
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"
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"
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:88
msgid "Upload a picture"
msgstr ""
#: ../src\gui\dialogs\message.py:167 ../src\gui\dialogs\message.py:255
#: ../src\gui\dialogs\message.py:346
#: ../src\gui\dialogs\message.py:171 ../src\gui\dialogs\message.py:259
#: ../src\gui\dialogs\message.py:350
msgid "Spelling correction"
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"
msgstr ""
#: ../src\gui\dialogs\message.py:173 ../src\gui\dialogs\message.py:261
#: ../src\gui\dialogs\message.py:348
#: ../src\gui\dialogs\message.py:177 ../src\gui\dialogs\message.py:265
#: ../src\gui\dialogs\message.py:352
msgid "Expand URL"
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"
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:95
msgid "Discard image"
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"
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"
msgstr ""
#: ../src\gui\dialogs\message.py:249
#: ../src\gui\dialogs\message.py:253
msgid "Recipient"
msgstr ""
#: ../src\gui\dialogs\message.py:304
#: ../src\gui\dialogs\message.py:308
msgid "Mention to all"
msgstr ""
#: ../src\gui\dialogs\message.py:331
#: ../src\gui\dialogs\message.py:335
msgid "Tweet - %i characters "
msgstr ""
#: ../src\gui\dialogs\search.py:26
#: ../src\gui\dialogs\search.py:26 ../src\gui\dialogs\trending.py:26
msgid "Search on Twitter"
msgstr ""
#: ../src\gui\dialogs\search.py:27
#: ../src\gui\dialogs\search.py:27 ../src\gui\dialogs\trending.py:27
msgid "Search"
msgstr ""
#: ../src\gui\dialogs\search.py:34
#: ../src\gui\dialogs\search.py:34 ../src\gui\dialogs\trending.py:34
msgid "Tweets"
msgstr ""
#: ../src\gui\dialogs\search.py:35
#: ../src\gui\dialogs\search.py:35 ../src\gui\dialogs\trending.py:35
msgid "Users"
msgstr ""

File diff suppressed because it is too large Load Diff