diff --git a/src/gtkUI/__init__.py b/src/gtkUI/__init__.py deleted file mode 100644 index 096e5554..00000000 --- a/src/gtkUI/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- -""" This is the GTK view module for TWBlue. -As of April 3 2015, there are the things that have been implemented: -* the main view (partially implemented) -* All buffers. -* Three of the most common message dialogs. -* Dialogs for tweet, reply, retweet, send a direct message and view a tweet. - -And we need to implement: -* All the other dialogs. -""" diff --git a/src/gtkUI/buffers/__init__.py b/src/gtkUI/buffers/__init__.py deleted file mode 100644 index f60ca1ce..00000000 --- a/src/gtkUI/buffers/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- -from base import basePanel -from dm import dmPanel -from events import eventsPanel -from favourites import favsPanel -from lists import listPanel -from panels import accountPanel, emptyPanel -from people import peoplePanel -from trends import trendsPanel -from tweet_searches import searchPanel -from user_searches import searchUsersPanel diff --git a/src/gtkUI/buffers/base.py b/src/gtkUI/buffers/base.py deleted file mode 100644 index ffeef2a0..00000000 --- a/src/gtkUI/buffers/base.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -import widgetUtils -from gi.repository import Gtk - -class basePanel(Gtk.VBox): - - def create_list(self): - self.list = widgetUtils.list(_(u"User"), _(u"Text"), _(u"Date"), _(u"Client")) - - def __init__(self, parent, name): - super(basePanel, self).__init__(spacing=6) - self.name = name - self.type = "baseBuffer" - self.create_list() - self.tweet = Gtk.Button(_(u"Tweet")) - self.retweet = Gtk.Button(_(u"Retweet")) - self.reply = Gtk.Button(_(u"Reply")) - self.dm = Gtk.Button(_(u"Direct message")) - btnSizer = Gtk.Box(spacing=6) - btnSizer.add(self.tweet) - btnSizer.add(self.retweet) - btnSizer.add(self.reply) - btnSizer.add(self.dm) - self.add(self.list.list) - self.add(btnSizer) - - def set_position(self, reversed=False): - if reversed == False: - self.list.select_item(self.list.get_count()-1) - else: - self.list.select_item(0) - - def set_focus_function(self, f): - tree_selection = self.list.list.get_selection() - tree_selection.connect("changed", f) diff --git a/src/gtkUI/buffers/dm.py b/src/gtkUI/buffers/dm.py deleted file mode 100644 index cfdbd18c..00000000 --- a/src/gtkUI/buffers/dm.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils -from base import basePanel - -class dmPanel(basePanel): - def __init__(self, parent, name): - """ Class to DM'S. Reply and retweet buttons are not showed and they have your delete method for dm's.""" - super(dmPanel, self).__init__(parent, name) - self.retweet.hide() - self.retweet.set_no_show_all(True) - self.reply.hide() - self.reply.set_no_show_all(True) - self.type = "dm" diff --git a/src/gtkUI/buffers/events.py b/src/gtkUI/buffers/events.py deleted file mode 100644 index 1b3a5af5..00000000 --- a/src/gtkUI/buffers/events.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -import widgetUtils -from gi.repository import Gtk - -class eventsPanel(Gtk.VBox): - """ Buffer to show events. Different than tweets or people.""" - - def __init__(self, parent, name): - self.type = "event" - super(eventsPanel, self).__init__(spacing=6) - self.name = name - self.list = widgetUtils.list(_(u"Date"), _(u"Event")) - self.add(self.list.list) - self.tweet = Gtk.Button(_(u"Tweet")) - self.delete_event = Gtk.Button(_(u"Remove event")) - btnBox = Gtk.Box(spacing=6) - btnBox.add(self.tweet) - btnBox.add(self.delete_event) - self.add(btnBox) - - def set_position(self, reversed=False): - if reversed == False: - self.list.select_item(self.list.get_count()-1) - else: - self.list.select_item(0) diff --git a/src/gtkUI/buffers/favourites.py b/src/gtkUI/buffers/favourites.py deleted file mode 100644 index 916f21a6..00000000 --- a/src/gtkUI/buffers/favourites.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from base import basePanel - -class favsPanel(basePanel): - def __init__(self, parent, name): - super(favsPanel, self).__init__(parent, name) - self.type = "favourites_timeline" diff --git a/src/gtkUI/buffers/lists.py b/src/gtkUI/buffers/lists.py deleted file mode 100644 index ffb77981..00000000 --- a/src/gtkUI/buffers/lists.py +++ /dev/null @@ -1,9 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from base import basePanel - -class listPanel(basePanel): - def __init__(self, parent, name): - super(listPanel, self).__init__(parent, name) - self.type = "list" - self.users = [] diff --git a/src/gtkUI/buffers/panels.py b/src/gtkUI/buffers/panels.py deleted file mode 100644 index dbfa9fe9..00000000 --- a/src/gtkUI/buffers/panels.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils - -class accountPanel(Gtk.VBox): - def __init__(self, parent, name=None): - super(accountPanel, self).__init__(spacing=5) - self.name = name - self.type = "account" - self.login = Gtk.Button(_(u"Login")) - self.add(self.login) - self.autostart_account = Gtk.ToggleButton(_(u"Log in automatically")) - self.add(self.autostart_account) - - def change_login(self, login=True): - if login == True: - self.login.set_label(_(u"Login")) - else: - self.login.set_label(_(u"Logout")) - - def change_autostart(self, autostart=True): - self.autostart_account.set_active(autostart) - - def get_autostart(self): - print "actived" - print self.autostart_account.get_active() - return self.autostart_account.get_active() - -class emptyPanel(Gtk.VBox): - def __init__(self, parent, name): - super(emptyPanel, self).__init__(spacing=6) - self.name = name - self.type = "account" - diff --git a/src/gtkUI/buffers/people.py b/src/gtkUI/buffers/people.py deleted file mode 100644 index 4bf620fc..00000000 --- a/src/gtkUI/buffers/people.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils -from base import basePanel - -class peoplePanel(basePanel): - """ Buffer used to show people.""" - - def create_list(self): - self.list = widgetUtils.list(_(u"User")) - - def __init__(self, parent, name): - super(peoplePanel, self).__init__(parent, name) - self.type = "people" - self.reply.set_label(_(u"Mention")) - self.retweet.hide() - self.retweet.set_no_show_all(True) diff --git a/src/gtkUI/buffers/trends.py b/src/gtkUI/buffers/trends.py deleted file mode 100644 index 1e4b24a2..00000000 --- a/src/gtkUI/buffers/trends.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils - -class trendsPanel(Gtk.VBox): - def create_list(self): - """ Returns the list for put the tweets here.""" - self.list = widgetUtils.list(_(u"Trending topic")) - - def __init__(self, parent, name): - super(trendsPanel, self).__init__(spacing=6) - self.type = "trends" - self.create_list() - self.tweet = Gtk.Button(_(u"Tweet")) - self.tweetTrendBtn = Gtk.Button(_(u"Tweet about this trend")) - btnSizer = Gtk.Box(spacing=3) - btnSizer.add(self.tweet) - btnSizer.add(self.tweetTrendBtn) - self.add(btnSizer) - self.Add(self.list.list) - - def set_position(self, reversed=False): - if reversed == False: - self.list.select_item(self.list.get_count()-1) - else: - self.list.select_item(0) diff --git a/src/gtkUI/buffers/tweet_searches.py b/src/gtkUI/buffers/tweet_searches.py deleted file mode 100644 index 330014da..00000000 --- a/src/gtkUI/buffers/tweet_searches.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from base import basePanel - -class searchPanel(basePanel): - def __init__(self, parent, name): - super(searchPanel, self).__init__(parent, name) - self.type = "search" diff --git a/src/gtkUI/buffers/user_searches.py b/src/gtkUI/buffers/user_searches.py deleted file mode 100644 index 41b0ff9e..00000000 --- a/src/gtkUI/buffers/user_searches.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from tweet_searches import searchPanel -import widgetUtils - -class searchUsersPanel(searchPanel): - def create_list(self): - """ Returns the list for put the tweets here.""" - self.list = widgetUtils.list(_(u"User")) - - def __init__(self, parent, name): - self.create_list() - super(searchUsersPanel, self).__init__(parent, name) - self.type = "user_searches" diff --git a/src/gtkUI/commonMessageDialogs.py b/src/gtkUI/commonMessageDialogs.py deleted file mode 100644 index ca072336..00000000 --- a/src/gtkUI/commonMessageDialogs.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import application -def retweet_as_link(parent): - dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, unicode(application.name)) - dialog.format_secondary_text(_(u"This retweet is over 140 characters. Would you like to post it as a mention to the poster with your comments and a link to the original tweet?")) - answer = dialog.run() - dialog.destroy() - return answer - -def retweet_question(parent): - dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Retweet")) - dialog.format_secondary_text(_(u"Would you like to add a comment to this tweet?")) - answer = dialog.run() - dialog.destroy() - return answer - -def delete_tweet_dialog(parent): - dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Delete")) - dialog.format_secondary_text(_(u"Do you really want to delete this message? It will be deleted from Twitter as well.")) - answer = dialog.run() - dialog.destroy() - return answer - -def exit_dialog(parent): - dialog = Gtk.MessageDialog(parent, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Exit")) - dialog.format_secondary_text(_(u"Do you really want to close " + application.name + "?")) - answer = dialog.run() - dialog.destroy() - return answer - -def needs_restart(): - wx.MessageDialog(None, _(unicode(application.name+" must be restarted to save these changes. Press OK to restart now.")), _("Restart " + application.name), wx.OK).ShowModal() - -def delete_user_from_db(): - return wx.MessageDialog(None, _(u"Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore."), _(u"Confirm"), wx.YES_NO|wx.ICON_QUESTION).ShowModal() - -def get_ignored_client(): - entry = wx.TextEntryDialog(None, _(u"Enter the name of the client here"), _(u"Add a new ignored client")) - if entry.ShowModal() == wx.ID_OK: - return entry.GetValue() - return None - -def clear_list(): - dlg = wx.MessageDialog(None, _(u"Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter"), _(u"Empty buffer"), wx.ICON_QUESTION|wx.YES_NO) - return dlg.ShowModal() - -def remove_buffer(): - return wx.MessageDialog(None, _(u"Do you really want to delete this timeline?"), _(u"Attention"), style=wx.ICON_QUESTION|wx.YES_NO).ShowModal() - -def user_not_exist(): - return wx.MessageDialog(None, _(u"The user does not exist"), _(u"Error"), wx.ICON_ERROR).ShowModal() - -def timeline_exist(): - return wx.MessageDialog(None, _(u"There's currently a timeline for this user. You are not able to open another"), _(u"Existing timeline"), wx.ICON_ERROR).ShowModal() - -def no_tweets(): - return wx.MessageDialog(None, _(u"This user has no tweets. You can't open a timeline for this user"), _(u"Error!"), wx.ICON_ERROR).ShowModal() - -def protected_user(): - return wx.MessageDialog(None, _(u"This is a protected Twitter user. It means you can not open a timeline using the Streaming API. The user's tweets will not update due to a twitter policy. Do you want to continue?"), _(u"Warning"), wx.ICON_WARNING|wx.YES_NO).ShowModal() - -def no_following(): - return wx.MessageDialog(None, _(u"This is a protected user account, you need follow to this user for viewing your tweets or favourites."), _(u"Error"), wx.ICON_ERROR).ShowModal() diff --git a/src/gtkUI/dialogs/__init__.py b/src/gtkUI/dialogs/__init__.py deleted file mode 100644 index d8e11f66..00000000 --- a/src/gtkUI/dialogs/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#import trends, configuration, lists, message, search, show_user, update_profile, urlList, userSelection, utils diff --git a/src/gtkUI/dialogs/configuration.py b/src/gtkUI/dialogs/configuration.py deleted file mode 100644 index 6bc610bd..00000000 --- a/src/gtkUI/dialogs/configuration.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- -import baseDialog -import wx -import logging as original_logger -import application -class general(wx.Panel, baseDialog.BaseWXDialog): - def __init__(self, parent, languages): - super(general, self).__init__(parent) - sizer = wx.BoxSizer(wx.VERTICAL) - language = wx.StaticText(self, -1, _(u"Language")) - self.language = wx.ListBox(self, -1, choices=languages) - self.language.SetSize(self.language.GetBestSize()) - langBox = wx.BoxSizer(wx.HORIZONTAL) - 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 before exiting " + application.name)) - sizer.Add(self.ask_at_exit, 0, wx.ALL, 5) - self.use_invisible_shorcuts = wx.CheckBox(self, -1, _(u"Use invisible interface's keyboard shortcuts while GUI is visible")) - sizer.Add(self.use_invisible_shorcuts, 0, wx.ALL, 5) - self.disable_sapi5 = wx.CheckBox(self, -1, _(u"Activate Sapi5 when any other screen reader is not being run")) - sizer.Add(self.disable_sapi5, 0, wx.ALL, 5) - self.hide_gui = wx.CheckBox(self, -1, _(u"Hide GUI on launch")) - sizer.Add(self.hide_gui, 0, wx.ALL, 5) - self.SetSizer(sizer) - -class generalAccount(wx.Panel, baseDialog.BaseWXDialog): - def __init__(self, parent): - super(generalAccount, self).__init__(parent) - sizer = wx.BoxSizer(wx.VERTICAL) - self.au = wx.Button(self, wx.NewId(), _(u"Set the autocomplete function")) - sizer.Add(self.au, 0, wx.ALL, 5) - self.relative_time = wx.CheckBox(self, wx.NewId(), _(U"Relative times")) - sizer.Add(self.relative_time, 0, wx.ALL, 5) - apiCallsBox = wx.BoxSizer(wx.HORIZONTAL) - apiCallsBox.Add(wx.StaticText(self, -1, _(u"API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):")), 0, wx.ALL, 5) - self.apiCalls = wx.SpinCtrl(self, wx.NewId()) - self.apiCalls.SetRange(1, 10) - self.apiCalls.SetSize(self.apiCalls.GetBestSize()) - apiCallsBox.Add(self.apiCalls, 0, wx.ALL, 5) - sizer.Add(apiCallsBox, 0, wx.ALL, 5) - tweetsPerCallBox = wx.BoxSizer(wx.HORIZONTAL) - tweetsPerCallBox.Add(wx.StaticText(self, -1, _(u"Items on each API call")), 0, wx.ALL, 5) - self.itemsPerApiCall = wx.SpinCtrl(self, wx.NewId()) - self.itemsPerApiCall.SetRange(0, 200) - self.itemsPerApiCall.SetSize(self.itemsPerApiCall.GetBestSize()) - tweetsPerCallBox.Add(self.itemsPerApiCall, 0, wx.ALL, 5) - sizer.Add(tweetsPerCallBox, 0, wx.ALL, 5) - self.reverse_timelines = wx.CheckBox(self, wx.NewId(), _(u"Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end")) - sizer.Add(self.reverse_timelines, 0, wx.ALL, 5) - self.SetSizer(sizer) - -class other_buffers(wx.Panel): - def __init__(self, parent): - super(other_buffers, self).__init__(parent) - sizer = wx.BoxSizer(wx.VERTICAL) - self.SetSizer(sizer) - -class ignoredClients(wx.Panel): - def __init__(self, parent, choices): - super(ignoredClients, self).__init__(parent=parent) - sizer = wx.BoxSizer(wx.VERTICAL) - label = wx.StaticText(self, -1, _(u"Ignored clients")) - self.clients = wx.ListBox(self, -1, choices=choices) - self.clients.SetSize(self.clients.GetBestSize()) - clientsBox = wx.BoxSizer(wx.HORIZONTAL) - clientsBox.Add(label, 0, wx.ALL, 5) - clientsBox.Add(self.clients, 0, wx.ALL, 5) - self.add = wx.Button(self, -1, _(u"Add client")) - self.remove = wx.Button(self, -1, _(u"Remove client")) - btnBox = wx.BoxSizer(wx.HORIZONTAL) - btnBox.Add(self.add, 0, wx.ALL, 5) - btnBox.Add(self.remove, 0, wx.ALL, 5) - sizer.Add(clientsBox, 0, wx.ALL, 5) - sizer.Add(btnBox, 0, wx.ALL, 5) - self.SetSizer(sizer) - - def append(self, client): - self.clients.Append(client) - - def get_clients(self): - return self.clients.GetCount() - - def get_client_id(self): - return self.clients.GetSelection() - - def remove_(self, id): - self.clients.Delete(id) - -class sound(wx.Panel): - def __init__(self, parent, input_devices, output_devices, soundpacks): - wx.Panel.__init__(self, parent) - sizer = wx.BoxSizer(wx.VERTICAL) - volume = wx.StaticText(self, -1, _(u"Volume")) - self.volumeCtrl = wx.Slider(self) - self.volumeCtrl.SetRange(0, 100) - self.volumeCtrl.SetSize(self.volumeCtrl.GetBestSize()) - volumeBox = wx.BoxSizer(wx.HORIZONTAL) - volumeBox.Add(volume, 0, wx.ALL, 5) - volumeBox.Add(self.volumeCtrl, 0, wx.ALL, 5) - sizer.Add(volumeBox, 0, wx.ALL, 5) - self.session_mute = wx.CheckBox(self, -1, _(u"Session mute")) - sizer.Add(self.session_mute, 0, wx.ALL, 5) - output_label = wx.StaticText(self, -1, _(u"Output device")) - self.output = wx.ComboBox(self, -1, choices=output_devices, style=wx.CB_READONLY) - self.output.SetSize(self.output.GetBestSize()) - outputBox = wx.BoxSizer(wx.HORIZONTAL) - outputBox.Add(output_label, 0, wx.ALL, 5) - outputBox.Add(self.output, 0, wx.ALL, 5) - sizer.Add(outputBox, 0, wx.ALL, 5) - input_label = wx.StaticText(self, -1, _(u"Input device")) - self.input = wx.ComboBox(self, -1, choices=input_devices, style=wx.CB_READONLY) - self.input.SetSize(self.input.GetBestSize()) - inputBox = wx.BoxSizer(wx.HORIZONTAL) - inputBox.Add(input_label, 0, wx.ALL, 5) - inputBox.Add(self.input, 0, wx.ALL, 5) - sizer.Add(inputBox, 0, wx.ALL, 5) - soundBox = wx.BoxSizer(wx.VERTICAL) - soundpack_label = wx.StaticText(self, -1, _(u"Sound pack")) - self.soundpack = wx.ComboBox(self, -1, choices=soundpacks, style=wx.CB_READONLY) - self.soundpack.SetSize(self.soundpack.GetBestSize()) - soundBox.Add(soundpack_label, 0, wx.ALL, 5) - soundBox.Add(self.soundpack, 0, wx.ALL, 5) - sizer.Add(soundBox, 0, wx.ALL, 5) - self.SetSizer(sizer) - - def get(self, control): - return getattr(self, control).GetStringSelection() - -class audioServicesPanel(wx.Panel): - def __init__(self, parent): - super(audioServicesPanel, self).__init__(parent) - mainSizer = wx.BoxSizer(wx.VERTICAL) - apiKeyLabel = wx.StaticText(self, -1, _(u"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")) - self.apiKey = wx.TextCtrl(self, -1) - dc = wx.WindowDC(self.apiKey) - dc.SetFont(self.apiKey.GetFont()) - self.apiKey.SetSize(dc.GetTextExtent("0"*100)) - apiKeyBox = wx.BoxSizer(wx.HORIZONTAL) - apiKeyBox.Add(apiKeyLabel, 0, wx.ALL, 5) - apiKeyBox.Add(self.apiKey, 0, wx.ALL, 5) - mainSizer.Add(apiKeyBox, 0, wx.ALL, 5) - first_sizer = wx.BoxSizer(wx.HORIZONTAL) - self.dropbox = wx.Button(self, -1) - first_sizer.Add(self.dropbox, 0, wx.ALL, 5) - mainSizer.Add(first_sizer, 0, wx.ALL, 5) - self.SetSizer(mainSizer) - - def set_dropbox(self, active=True): - if active == True: - self.dropbox.SetLabel(_(u"Unlink your Dropbox account")) - else: - self.dropbox.SetLabel(_(u"Link your Dropbox account")) - - def show_dialog(self): - wx.MessageDialog(self, _(u"The authorization request will be opened in your browser. Copy the code from Dropbox and paste it into the text box which will appear. You only need to do this once."), _(u"Authorization"), wx.OK).ShowModal() - - def get_response(self): - dlg = wx.TextEntryDialog(self, _(u"Enter the code here."), _(u"Verification code")) - if dlg.ShowModal() == wx.ID_CANCEL: - return False - return dlg.GetValue() - - def show_error(self): - wx.MessageDialog(self, _(u"Error during authorisation. Try again later."), _(u"Error!"), wx.ICON_ERROR).ShowModal() - - def get_dropbox(self): - return self.dropbox.GetLabel() - -class configurationDialog(baseDialog.BaseWXDialog): - - def set_title(self, title): - self.SetTitle(title) - - def __init__(self): - super(configurationDialog, self).__init__(None, -1) - self.panel = wx.Panel(self) - self.SetTitle(_(u"TW Blue preferences")) - self.sizer = wx.BoxSizer(wx.VERTICAL) - self.notebook = wx.Notebook(self.panel) - - def create_general(self, languageList): - self.general = general(self.notebook, languageList) - self.notebook.AddPage(self.general, _(u"General")) - self.general.SetFocus() - - def create_general_account(self): - self.general = generalAccount(self.notebook) - self.notebook.AddPage(self.general, _(u"General")) - self.general.SetFocus() - - def create_other_buffers(self): - self.buffers = other_buffers(self.notebook) - self.notebook.AddPage(self.buffers, _(u"Show other buffers")) - - def create_ignored_clients(self, ignored_clients_list): - self.ignored_clients = ignoredClients(self.notebook, ignored_clients_list) - self.notebook.AddPage(self.ignored_clients, _(u"Ignored clients")) - - def create_sound(self, output_devices, input_devices, soundpacks): - self.sound = sound(self.notebook, output_devices, input_devices, soundpacks) - self.notebook.AddPage(self.sound, _(u"Sound")) - def create_audio_services(self): - self.services = audioServicesPanel(self.notebook) - self.notebook.AddPage(self.services, _(u"Audio Services")) - - def realize(self): - self.sizer.Add(self.notebook, 0, wx.ALL, 5) - ok_cancel_box = wx.BoxSizer(wx.HORIZONTAL) - ok = wx.Button(self.panel, wx.ID_OK, _(u"Save")) - ok.SetDefault() - cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"Close")) - self.SetEscapeId(cancel.GetId()) - ok_cancel_box.Add(ok, 0, wx.ALL, 5) - ok_cancel_box.Add(cancel, 0, wx.ALL, 5) - self.sizer.Add(ok_cancel_box, 0, wx.ALL, 5) - self.panel.SetSizer(self.sizer) - self.SetClientSize(self.sizer.CalcMin()) - - def get_value(self, panel, key): - p = getattr(self, panel) - return getattr(p, key).GetValue() - - def set_value(self, panel, key, value): - p = getattr(self, panel) - control = getattr(p, key) - getattr(control, "SetValue")(value) - diff --git a/src/gtkUI/dialogs/lists.py b/src/gtkUI/dialogs/lists.py deleted file mode 100644 index 95e8b7fe..00000000 --- a/src/gtkUI/dialogs/lists.py +++ /dev/null @@ -1,123 +0,0 @@ -# -*- coding: utf-8 -*- -import wx -from multiplatform_widgets import widgets - -class listViewer(wx.Dialog): - - def __init__(self, *args, **kwargs): - super(listViewer, self).__init__(parent=None, *args, **kwargs) - self.SetTitle(_(u"Lists manager")) - panel = wx.Panel(self) - label = wx.StaticText(panel, -1, _(u"Lists")) - self.lista = widgets.list(panel, _(u"List"), _(u"Description"), _(u"Owner"), _(u"Members"), _(u"mode"), size=(800, 800), style=wx.LC_REPORT|wx.LC_SINGLE_SEL) - self.lista.list.SetFocus() - sizer = wx.BoxSizer(wx.VERTICAL) - sizer.Add(label) - sizer.Add(self.lista.list) - self.createBtn = wx.Button(panel, wx.NewId(), _(u"Create a new list")) - self.editBtn = wx.Button(panel, -1, _(u"Edit")) - self.deleteBtn = wx.Button(panel, -1, _(u"Remove")) - self.view = wx.Button(panel, -1, _(u"Open in buffer")) -# self.members = wx.Button(panel, -1, _(u"View members")) -# self.members.Disable() -# self.subscriptors = wx.Button(panel, -1, _(u"View subscribers")) -# self.subscriptors.Disable() -# self.get_linkBtn = wx.Button(panel, -1, _(u"Get link for the list")) -# self.get_linkBtn.Bind(wx.EVT_BUTTON, self.onGetLink) - self.cancelBtn = wx.Button(panel, wx.ID_CANCEL) - btnSizer = wx.BoxSizer() - btnSizer.Add(self.createBtn) - btnSizer.Add(self.editBtn) - btnSizer.Add(self.cancelBtn) - panel.SetSizer(sizer) - - def populate_list(self, lists): - for item in lists: - self.lista.insert_item(False, *item) - - def get_item(self): - return self.lista.get_selected() - -class userListViewer(listViewer): - def __init__(self, username, *args, **kwargs): - self.username = username - super(userListViewer, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Viewing lists for %s") % (self.username)) - self.createBtn.SetLabel(_(u"Subscribe")) - self.deleteBtn.SetLabel(_(u"Unsubscribe")) - self.editBtn.Disable() - self.view.Disable() - -class createListDialog(wx.Dialog): - - def __init__(self, *args, **kwargs): - super(createListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Create a new list")) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - name = wx.StaticText(panel, -1, _(u"Name (20 characters maximun)")) - self.name = wx.TextCtrl(panel, -1) - nameSizer = wx.BoxSizer(wx.HORIZONTAL) - nameSizer.Add(name) - nameSizer.Add(self.name) - description = wx.StaticText(panel, -1, _(u"Description")) - self.description = wx.TextCtrl(panel, -1) - descriptionSizer = wx.BoxSizer(wx.HORIZONTAL) - descriptionSizer.Add(description) - descriptionSizer.Add(self.description) - mode = wx.StaticText(panel, -1, _(u"Mode")) - self.public = wx.RadioButton(panel, -1, _(u"Public"), style=wx.RB_GROUP) - self.private = wx.RadioButton(panel, -1, _(u"Private")) - modeBox = wx.BoxSizer(wx.HORIZONTAL) - modeBox.Add(mode) - modeBox.Add(self.public) - modeBox.Add(self.private) - ok = wx.Button(panel, wx.ID_OK) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL) - btnBox = wx.BoxSizer(wx.HORIZONTAL) - btnBox.Add(ok) - btnBox.Add(cancel) - sizer.Add(nameSizer) - sizer.Add(descriptionSizer) - sizer.Add(modeBox) - sizer.Add(btnBox) - - def get(self, field): - return getattr(self, field).GetValue() - -class editListDialog(createListDialog): - - def __init__(self, list, *args, **kwargs): - super(editListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Editing the list %s") % (list["name"])) - self.name.ChangeValue(list["name"]) - self.description.ChangeValue(list["description"]) - if list["mode"] == "public": - self.public.SetValue(True) - else: - self.private.SetValue(True) - -class addUserListDialog(listViewer): - def __init__(self, *args, **kwargs): - super(addUserListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Select a list to add the user")) - self.createBtn.SetLabel(_(u"Add")) - self.createBtn.SetDefault() - self.editBtn.Disable() - self.view.Disable() -# self.subscriptors.Disable() -# self.members.Disable() - self.deleteBtn.Disable() - -class removeUserListDialog(listViewer): - def __init__(self, *args, **kwargs): - super(removeUserListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Select a list to remove the user")) - self.createBtn.SetLabel(_(u"Remove")) - self.createBtn.SetDefault() - self.editBtn.Disable() - self.view.Disable() -# self.subscriptors.Disable() -# self.members.Disable() - self.deleteBtn.Disable() \ No newline at end of file diff --git a/src/gtkUI/dialogs/message.py b/src/gtkUI/dialogs/message.py deleted file mode 100644 index 5ed9f797..00000000 --- a/src/gtkUI/dialogs/message.py +++ /dev/null @@ -1,275 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils - -class textLimited(widgetUtils.baseDialog): - def __init__(self, *args, **kwargs): - super(textLimited, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL), *args, **kwargs) - - def createTextArea(self, message="", text=""): - self.label = Gtk.Label(message) - self.set_title(message, titleWindow=True) - self.text = Gtk.Entry() - self.text.set_max_length(140) - self.text.set_text(text) - self.text.set_placeholder_text(message) - self.set_title(str(len(text))) - self.textBox = Gtk.Box(spacing=10) - self.textBox.add(self.label) - self.textBox.add(self.text) - - def get(self, control): - if control == "upload_image": - return self.upload_image.get_label() - elif control == "cb": - return self.cb.get_active_text() - - def set(self, control, val): - if control == "upload_image": - self.upload_image.set_label(val) - elif control == "cb": - self.cb.set_active_text(val) - - def text_focus(self): - self.text.grab_focus() - - def get_text(self): - return self.text.get_text() - - def set_text(self, text): - self.text.set_text(text) - - def set_title(self, new_title, titleWindow=False): - if titleWindow == False: - self.text.set_placeholder_text(new_title) - else: - super(textLimited, self).set_title(new_title) -# self.set_title(new_title) - - def enable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).show() - - def disable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).hide() - - def set_cursor_at_end(self): - self.text.set_position(-1) - - def set_cursor_at_position(self, position): - self.text.set_position() - - def get_position(self): - return self.text.get_position() - -class tweet(textLimited): - def createControls(self, title, message, text): - self.createTextArea(message, text) - self.box.add(self.textBox) - self.upload_image = Gtk.Button(_(u"Upload image...")) - self.spellcheck = Gtk.Button(_("Check spelling...")) - self.attach = Gtk.Button(_(u"Attach audio...")) - self.shortenButton = Gtk.Button(_(u"Shorten URL")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.shortenButton.hide() - self.shortenButton.set_no_show_all(True) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate...")) - self.autocompletionButton = Gtk.Button(_(u"&Autocomplete users")) - self.buttonsBox1 = Gtk.Box(spacing=6) - self.buttonsBox1.add(self.upload_image) - self.buttonsBox1.add(self.spellcheck) - self.buttonsBox1.add(self.attach) - self.box.add(self.buttonsBox1) - self.buttonsBox2 = Gtk.Box(spacing=6) - self.buttonsBox2.add(self.shortenButton) - self.buttonsBox2.add(self.unshortenButton) - self.buttonsBox2.add(self.translateButton) - self.box.add(self.buttonsBox2) - - def __init__(self, title, message, text): - super(tweet, self).__init__() - self.createControls(message, title, text) - self.show_all() - - def get_image(self): - dialog = Gtk.FileChooserDialog(_(u"Select the picture to be uploaded"), self, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) - filter_jpg = Gtk.FileFilter() - filter_jpg.set_name(_(u"JPG images")) - filter_jpg.add_mime_type("image/jpeg") - dialog.add_filter(filter_jpg) - filter_gif = Gtk.FileFilter() - filter_gif.set_name(_(u"GIF images")) - filter_gif.add_mime_type("image/gif") - dialog.add_filter(filter_gif) - filter_png = Gtk.FileFilter() - filter_png.set_name(_(u"PNG Images")) - filter_png.add_mime_type("image/png") - dialog.add_filter(filter_png) - answer = dialog.run() - if answer == widgetUtils.OK: - image = dialog.get_filename() - dialog.destroy() - return open(image, "rb") - else: - dialog.destroy() - return None - -class dm(textLimited): - def createControls(self, title, message, users): - label = Gtk.Label(_(u"Recipient")) - self.cb = Gtk.ComboBoxText.new_with_entry() - self.cb.set_entry_text_column(0) - for user in users: - self.cb.append_text(user) - self.cb.get_child().set_placeholder_text(_(u"Recipient")) - self.cb.get_child().set_text(users[0]) - self.autocompletionButton = Gtk.Button(_(u"&Autocomplete users")) - self.createTextArea(message, text="") - userBox = Gtk.Box(spacing=8) - userBox.add(label) - userBox.add(self.cb) - userBox.add(self.autocompletionButton) - self.box.add(userBox) -# self.mainBox.Add(self.cb, 0, wx.ALL, 5) - self.box.add(self.textBox) - self.spellcheck = Gtk.Button(_("Spelling correction")) - self.attach = Gtk.Button(_(u"Attach audio")) - self.shortenButton = Gtk.Button(_(u"Shorten URL")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.shortenButton.hide() - self.shortenButton.set_no_show_all(True) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate message")) - self.buttonsBox = Gtk.Box(spacing=6) - self.buttonsBox.add(self.spellcheck) - self.buttonsBox.add(self.attach) - self.box.add(self.buttonsBox) - self.buttonsBox1 = Gtk.Box(spacing=6) - self.buttonsBox1.add(self.shortenButton) - self.buttonsBox1.add(self.unshortenButton) - self.buttonsBox1.add(self.translateButton) - self.box.add(self.buttonsBox1) - self.text.grab_focus() - - def __init__(self, title, message, users): - super(dm, self).__init__() - self.createControls(message, title, users) -# self.onTimer(wx.EVT_CHAR_HOOK) - self.show_all() - - def get_user(self): - return self.cb.get_text() - - def set_user(self, user): - return self.cb.set_value() - -class reply(tweet): - def __init__(self, title, message, text): - super(reply, self).__init__(message, title, text) - self.text.set_position(-1) - self.mentionAll = Gtk.Button(_(u"Men&tion to all")) - self.mentionAll.set_no_show_all(True) - self.mentionAll.hide() - self.buttonsBox1.add(self.mentionAll) - -class viewTweet(widgetUtils.baseDialog): - def set_title(self, lenght): - pass - self.set_title(_(u"Tweet - %i characters ") % (lenght,)) - - def __init__(self, text, rt_count, favs_count): - super(viewTweet, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL)) - label = Gtk.Label(_(u"Tweet")) - self.text = Gtk.TextView() - self.textBuffer = self.text.get_buffer() - self.textBuffer.set_text(text) - self.text.set_editable(False) -# self.textBuffer.set_placeholder_text(message) - textBox = Gtk.Box(spacing=6) - textBox.add(label) - textBox.add(self.text) - self.box.add(textBox) - rtCountLabel = Gtk.Label(_(u"Retweets: ")) - rtCount = Gtk.Entry() - rtCount.set_text(rt_count) - rtCount.set_editable(False) - rtBox = Gtk.Box(spacing=2) - rtBox.add(rtCountLabel) - rtBox.add(rtCount) - favsCountLabel = Gtk.Label(_(u"Favourites: ")) - favsCount = Gtk.Entry() - favsCount.set_text(favs_count) - favsCount.set_editable(False) - favsBox = Gtk.Box(spacing=2) - favsBox.add(favsCountLabel) - favsBox.add(favsCount) - infoBox = Gtk.Box(spacing=4) - infoBox.add(rtBox) - infoBox.add(favsBox) - self.box.add(infoBox) - self.spellcheck = Gtk.Button(_("Spelling correction")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate message")) - buttonsBox = Gtk.Box(spacing=6) - buttonsBox.add(self.spellcheck) - buttonsBox.add(self.unshortenButton) - buttonsBox.add(self.translateButton) - self.box.add(buttonsBox) - self.show_all() - - def set_text(self, text): - self.textBuffer.set_text(text) - - def get_text(self): - return self.textBuffer.get_text(self.textBuffer.get_start_iter(), self.textBuffer.get_end_iter(), False) - - def text_focus(self): - self.text.grab_focus() - - def enable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).show() - -class viewNonTweet(widgetUtils.baseDialog): - - def __init__(self, text): - super(viewNonTweet, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL)) - self.set_title(_(u"View")) - label = Gtk.Label(_(u"Item")) - self.text = Gtk.TextView() - self.text.set_editable(False) - self.text.get_buffer().set_text(text) - textBox = Gtk.Box(spacing=5) - textBox.add(label) - textBox.add(self.text) - self.box.Add(textBox) - self.spellcheck = Gtk.Button(_("Spelling correction")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate message")) - buttonsBox = Gtk.Box(spacing=6) - buttonsBox.add(self.spellcheck) - buttonsBox.add(self.unshortenButton) - buttonsBox.add(self.translateButton) - self.box.Add(buttonsBox) - self.show_all() - - def set_text(self, text): - self.text.get_buffer().set_text() - - def get_text(self): - return self.text.get_buffer().get_text() - - def text_focus(self): - self.text.grab_focus() - - def enable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).show() diff --git a/src/gtkUI/dialogs/search.py b/src/gtkUI/dialogs/search.py deleted file mode 100644 index 81b54272..00000000 --- a/src/gtkUI/dialogs/search.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -import baseDialog -import wx - -class searchDialog(baseDialog.BaseWXDialog): - def __init__(self, value=""): - super(searchDialog, self).__init__(None, -1) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - self.SetTitle(_(u"Search on Twitter")) - label = wx.StaticText(panel, -1, _(u"Search")) - self.term = wx.TextCtrl(panel, -1, value) - dc = wx.WindowDC(self.term) - dc.SetFont(self.term.GetFont()) - self.term.SetSize(dc.GetTextExtent("0"*40)) - sizer.Add(label, 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.users = wx.RadioButton(panel, -1, _(u"Users")) - radioSizer = wx.BoxSizer(wx.HORIZONTAL) - radioSizer.Add(self.tweets, 0, wx.ALL, 5) - radioSizer.Add(self.users, 0, wx.ALL, 5) - sizer.Add(radioSizer, 0, wx.ALL, 5) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok, 0, wx.ALL, 5) - btnsizer.Add(cancel, 0, wx.ALL, 5) - sizer.Add(btnsizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) \ No newline at end of file diff --git a/src/gtkUI/dialogs/show_user.py b/src/gtkUI/dialogs/show_user.py deleted file mode 100644 index ecc601a2..00000000 --- a/src/gtkUI/dialogs/show_user.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -import wx -import baseDialog - -class showUserProfile(baseDialog.BaseWXDialog): - def __init__(self): - super(showUserProfile, self).__init__(parent=None, id=wx.NewId()) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - static = wx.StaticText(panel, -1, _(u"Details")) - sizer.Add(static, 0, wx.ALL, 5) - self.text = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE|wx.TE_READONLY, size=(350, 250)) - self.text.SetFocus() - sizer.Add(self.text, 0, wx.ALL|wx.EXPAND, 5) - self.url = wx.Button(panel, -1, _(u"Go to URL"), size=wx.DefaultSize) - self.url.Disable() - close = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnSizer = wx.BoxSizer(wx.HORIZONTAL) - btnSizer.Add(self.url, 0, wx.ALL, 5) - btnSizer.Add(close, 0, wx.ALL, 5) - sizer.Add(btnSizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def enable_url(self, enabled=True): - self.url.Enable(enabled) \ No newline at end of file diff --git a/src/gtkUI/dialogs/trends.py b/src/gtkUI/dialogs/trends.py deleted file mode 100644 index 76275ec9..00000000 --- a/src/gtkUI/dialogs/trends.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -import baseDialog -import wx - -class trendingTopicsDialog(baseDialog.BaseWXDialog): - def __init__(self): - super(trendingTopicsDialog, self).__init__(None, -1) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - self.SetTitle(_(u"View trending topics")) - label = wx.StaticText(panel, -1, _(u"Trending topics by")) - sizer.Add(label, 0, wx.ALL, 5) - self.country = wx.RadioButton(panel, -1, _(u"Country"), style=wx.RB_GROUP) - self.city = wx.RadioButton(panel, -1, _(u"City")) - radioSizer = wx.BoxSizer(wx.HORIZONTAL) - radioSizer.Add(label, 0, wx.ALL, 5) - radioSizer.Add(self.country, 0, wx.ALL, 5) - radioSizer.Add(self.city, 0, wx.ALL, 5) - sizer.Add(radioSizer, 0, wx.ALL, 5) - label = wx.StaticText(panel, -1, _(u"Location")) - self.location = wx.ListBox(panel, -1, choices=[], style=wx.CB_READONLY) - locationBox = wx.BoxSizer(wx.HORIZONTAL) - locationBox.Add(label, 0, wx.ALL, 5) - locationBox.Add(self.location, 0, wx.ALL, 5) - sizer.Add(locationBox, 0, wx.ALL, 5) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok, 0, wx.ALL, 5) - btnsizer.Add(cancel, 0, wx.ALL, 5) - sizer.Add(btnsizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def get_active(self): - if self.country.GetValue() == True: - return "country" - else: - return "city" - - def get_item(self): - return self.location.GetStringSelection() - - def set(self, values): - self.location.Set(values) \ No newline at end of file diff --git a/src/gtkUI/dialogs/update_profile.py b/src/gtkUI/dialogs/update_profile.py deleted file mode 100644 index 027a2e74..00000000 --- a/src/gtkUI/dialogs/update_profile.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -import wx -import baseDialog - -class updateProfileDialog(baseDialog.BaseWXDialog): - def __init__(self): - super(updateProfileDialog, self).__init__(parent=None, id=-1) - self.SetTitle(_(u"Update your profile")) - panel = wx.Panel(self) - labelName = wx.StaticText(panel, -1, _(u"Name (20 characters maximum)")) - self.name = wx.TextCtrl(panel, -1) - self.name.SetFocus() - dc = wx.WindowDC(self.name) - dc.SetFont(self.name.GetFont()) - self.name.SetSize(dc.GetTextExtent("0"*20)) - labelLocation = wx.StaticText(panel, -1, _(u"Location")) - self.location = wx.TextCtrl(panel, -1) - dc = wx.WindowDC(self.location) - dc.SetFont(self.location.GetFont()) - self.location.SetSize(dc.GetTextExtent("0"*35)) - labelUrl = wx.StaticText(panel, -1, _(u"Website")) - self.url = wx.TextCtrl(panel, -1) - dc = wx.WindowDC(self.url) - dc.SetFont(self.url.GetFont()) - self.url.SetSize(dc.GetTextExtent("0"*22)) - labelDescription = wx.StaticText(panel, -1, _(u"Bio (160 characters maximum)")) - self.description = wx.TextCtrl(panel, -1, size=(400, 400)) - dc = wx.WindowDC(self.description) - dc.SetFont(self.description.GetFont()) - self.description.SetSize(dc.GetTextExtent("0"*160)) - self.image = None - self.upload_image = wx.Button(panel, -1, _(u"Upload a picture")) - self.ok = wx.Button(panel, wx.ID_OK, _(u"Update profile")) - self.ok.SetDefault() - close = wx.Button(panel, wx.ID_CANCEL, _("Close")) - sizer = wx.BoxSizer(wx.VERTICAL) - nameBox = wx.BoxSizer(wx.HORIZONTAL) - nameBox.Add(labelName, 0, wx.ALL, 5) - nameBox.Add(self.name, 0, wx.ALL, 5) - sizer.Add(nameBox, 0, wx.ALL, 5) - locationBox = wx.BoxSizer(wx.HORIZONTAL) - locationBox.Add(labelLocation, 0, wx.ALL, 5) - locationBox.Add(self.location, 0, wx.ALL, 5) - sizer.Add(locationBox, 0, wx.ALL, 5) - urlBox = wx.BoxSizer(wx.HORIZONTAL) - urlBox.Add(labelUrl, 0, wx.ALL, 5) - urlBox.Add(self.url, 0, wx.ALL, 5) - sizer.Add(urlBox, 0, wx.ALL, 5) - descriptionBox = wx.BoxSizer(wx.HORIZONTAL) - descriptionBox.Add(labelDescription, 0, wx.ALL, 5) - descriptionBox.Add(self.description, 0, wx.ALL, 5) - sizer.Add(descriptionBox, 0, wx.ALL, 5) - sizer.Add(self.upload_image, 5, wx.CENTER, 5) - btnBox = wx.BoxSizer(wx.HORIZONTAL) - btnBox.Add(self.ok, 0, wx.ALL, 5) - btnBox.Add(close, 0, wx.ALL, 5) - sizer.Add(btnBox, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def set_name(self, name): - self.set("name", name) - - def set_description(self, description): - self.set("description", description) - - def set_location(self, location): - self.set("location", location) - - def set_url(self, url): - self.set("url", url) - - def change_upload_button(self, uploaded=False): - if uploaded == False: - self.upload_image.SetLabel(_(u"Upload a picture")) - else: - self.upload_image.SetLabel(_(u"Discard image")) - - def upload_picture(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) - if openFileDialog.ShowModal() == wx.ID_CANCEL: - return None - return openFileDialog.GetPath() - - def hide_upload_button(self, hide): - self.upload_image.Enable(hide) - - def set_readonly(self): - self.name.style = wx.TE_READONLY - self.name.Refresh() - self.description.style = wx.TE_READONLY - self.description.Refresh() - self.location.style = wx.TE_READONLY - self.location.Refresh() - self.url.style = wx.TE_READONLY - self.url.Refresh() - self.hide_upload_button(False) - self.ok.Enable(False) \ No newline at end of file diff --git a/src/gtkUI/dialogs/urlList.py b/src/gtkUI/dialogs/urlList.py deleted file mode 100644 index 7a02008e..00000000 --- a/src/gtkUI/dialogs/urlList.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -import wx - -class urlList(wx.Dialog): - def __init__(self): - super(urlList, self).__init__(parent=None, title=_(u"Select an URL")) - panel = wx.Panel(self) - self.lista = wx.ListBox(panel, -1) - self.lista.SetFocus() - self.lista.SetSize(self.lista.GetBestSize()) - sizer = wx.BoxSizer(wx.VERTICAL) - sizer.Add(self.lista, 0, wx.ALL, 5) - goBtn = wx.Button(panel, wx.ID_OK) - goBtn.SetDefault() - cancelBtn = wx.Button(panel, wx.ID_CANCEL) - btnSizer = wx.BoxSizer() - btnSizer.Add(goBtn, 0, wx.ALL, 5) - btnSizer.Add(cancelBtn, 0, wx.ALL, 5) - sizer.Add(btnSizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def populate_list(self, urls): - for i in urls: - self.lista.Append(i) - self.lista.SetSelection(0) - - def get_string(self): - return self.lista.GetStringSelection() - - def get_item(self): - return self.lista.GetSelection() - - def get_response(self): - return self.ShowModal() \ No newline at end of file diff --git a/src/gtkUI/dialogs/userActions.py b/src/gtkUI/dialogs/userActions.py deleted file mode 100644 index 2f9f6dc1..00000000 --- a/src/gtkUI/dialogs/userActions.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -import wx - -class UserActionsDialog(wx.Dialog): - def __init__(self, users=[], default="follow", *args, **kwargs): - super(UserActionsDialog, self).__init__(parent=None, *args, **kwargs) - panel = wx.Panel(self) - userSizer = wx.BoxSizer() - self.SetTitle(_(u"Action")) - userLabel = wx.StaticText(panel, -1, _(u"User")) - self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0]) - self.cb.SetFocus() - userSizer.Add(userLabel, 0, wx.ALL, 5) - userSizer.Add(self.cb, 0, wx.ALL, 5) - actionSizer = wx.BoxSizer(wx.VERTICAL) - label2 = wx.StaticText(panel, -1, _(u"Action")) - self.follow = wx.RadioButton(panel, -1, _(u"Follow"), style=wx.RB_GROUP) - self.unfollow = wx.RadioButton(panel, -1, _(u"Unfollow")) - self.mute = wx.RadioButton(panel, -1, _(u"Mute")) - self.unmute = wx.RadioButton(panel, -1, _(u"Unmute")) - self.block = wx.RadioButton(panel, -1, _(u"Block")) - self.unblock = wx.RadioButton(panel, -1, _(u"Unblock")) - self.reportSpam = wx.RadioButton(panel, -1, _(u"Report as spam")) - self.ignore_client = wx.RadioButton(panel, -1, _(u"Ignore tweets from this client")) - self.setup_default(default) - hSizer = wx.BoxSizer(wx.HORIZONTAL) - hSizer.Add(label2, 0, wx.ALL, 5) - actionSizer.Add(self.follow, 0, wx.ALL, 5) - actionSizer.Add(self.unfollow, 0, wx.ALL, 5) - actionSizer.Add(self.mute, 0, wx.ALL, 5) - actionSizer.Add(self.unmute, 0, wx.ALL, 5) - actionSizer.Add(self.block, 0, wx.ALL, 5) - actionSizer.Add(self.unblock, 0, wx.ALL, 5) - actionSizer.Add(self.reportSpam, 0, wx.ALL, 5) - actionSizer.Add(self.ignore_client, 0, wx.ALL, 5) - hSizer.Add(actionSizer, 0, wx.ALL, 5) - sizer = wx.BoxSizer(wx.VERTICAL) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok) - btnsizer.Add(cancel) - sizer.Add(userSizer) - sizer.Add(hSizer, 0, wx.ALL, 5) - sizer.Add(btnsizer) - panel.SetSizer(sizer) - - def get_action(self): - if self.follow.GetValue() == True: return "follow" - elif self.unfollow.GetValue() == True: return "unfollow" - elif self.mute.GetValue() == True: return "mute" - elif self.unmute.GetValue() == True: return "unmute" - elif self.reportSpam.GetValue() == True: return "report" - elif self.block.GetValue() == True: return "block" - elif self.unblock.GetValue() == True: return "unblock" - elif self.ignore_client.GetValue() == True: return "ignore_client" - - def setup_default(self, default): - if default == "follow": - self.follow.SetValue(True) - elif default == "unfollow": - self.unfollow.SetValue(True) - elif default == "mute": - self.mute.SetValue(True) - elif default == "unmute": - self.unmute.SetValue(True) - elif default == "report": - self.reportSpam.SetValue(True) - elif default == "block": - self.block.SetValue(True) - elif default == "unblock": - self.unblock.SetValue(True) - elif default == "ignore_client": - self.ignore_client.SetValue(True) - - def get_response(self): - return self.ShowModal() - - def get_user(self): - return self.cb.GetValue() \ No newline at end of file diff --git a/src/gtkUI/dialogs/userSelection.py b/src/gtkUI/dialogs/userSelection.py deleted file mode 100644 index 22a3711f..00000000 --- a/src/gtkUI/dialogs/userSelection.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -import wx - -class selectUserDialog(wx.Dialog): - def __init__(self, users=[], default="tweets", *args, **kwargs): - super(selectUserDialog, self).__init__(parent=None, *args, **kwargs) - panel = wx.Panel(self) - userSizer = wx.BoxSizer() - self.SetTitle(_(u"Timeline for %s") % (users[0])) - userLabel = wx.StaticText(panel, -1, _(u"User")) - self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0]) - self.cb.SetFocus() - userSizer.Add(userLabel, 0, wx.ALL, 5) - userSizer.Add(self.cb, 0, wx.ALL, 5) - actionSizer = wx.BoxSizer(wx.VERTICAL) - label2 = wx.StaticText(panel, -1, _(u"Buffer type")) - self.tweets = wx.RadioButton(panel, -1, _(u"Tweets"), style=wx.RB_GROUP) - self.favourites = wx.RadioButton(panel, -1, _(u"Favourites")) - self.setup_default(default) - hSizer = wx.BoxSizer(wx.HORIZONTAL) - hSizer.Add(label2, 0, wx.ALL, 5) - actionSizer.Add(self.tweets, 0, wx.ALL, 5) - actionSizer.Add(self.favourites, 0, wx.ALL, 5) - hSizer.Add(actionSizer, 0, wx.ALL, 5) - sizer = wx.BoxSizer(wx.VERTICAL) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok) - btnsizer.Add(cancel) - sizer.Add(userSizer) - sizer.Add(hSizer, 0, wx.ALL, 5) - sizer.Add(btnsizer) - panel.SetSizer(sizer) - - def get_action(self): - if self.tweets.GetValue() == True: return "tweets" - elif self.favourites.GetValue() == True: return "favourites" - - def setup_default(self, default): - if default == "tweets": - self.tweets.SetValue(True) - elif default == "favourites": - self.favourites.SetValue(True) - - def get_response(self): - return self.ShowModal() - - def get_user(self): - return self.cb.GetValue() \ No newline at end of file diff --git a/src/gtkUI/dialogs/utils.py b/src/gtkUI/dialogs/utils.py deleted file mode 100644 index eaf75e5e..00000000 --- a/src/gtkUI/dialogs/utils.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################ -# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo -# -# 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 . -# -############################################################ -import wx -import baseDialog - -class selectUserDialog(baseDialog.BaseWXDialog): - def __init__(self, title, users): - super(selectUserDialog, self).__init__(parent=None, id=wx.NewId(), title=title) - panel = wx.Panel(self) - userSizer = wx.BoxSizer() - self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0], size=wx.DefaultSize) - self.cb.SetFocus() - userSizer.Add(wx.StaticText(panel, -1, _(u"User")), 0, wx.ALL, 5) - userSizer.Add(self.cb) - sizer = wx.BoxSizer(wx.VERTICAL) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() -# ok.Bind(wx.EVT_BUTTON, self.onok) - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok, 0, wx.ALL, 5) - btnsizer.Add(cancel, 0, wx.ALL, 5) - sizer.Add(userSizer, 0, wx.ALL, 5) - sizer.Add(btnsizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def get_user(self): - return self.cb.GetValue() - diff --git a/src/gtkUI/sysTrayIcon.py b/src/gtkUI/sysTrayIcon.py deleted file mode 100644 index 56578cbb..00000000 --- a/src/gtkUI/sysTrayIcon.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -""" A systray for TW Blue """ -############################################################ -# Copyright (c) 2014 José Manuel Delicado Alcolea -# -# 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 . -# -############################################################ - -import wx -import application -import paths -import os - -class SysTrayIcon(wx.TaskBarIcon): - - def __init__(self): - super(SysTrayIcon, self).__init__() - icon=wx.Icon(os.path.join(paths.app_path(), "icon.ico"), wx.BITMAP_TYPE_ICO) - self.SetIcon(icon, application.name) - self.menu=wx.Menu() - self.tweet = self.menu.Append(wx.ID_ANY, _(u"Tweet")) - self.global_settings = self.menu.Append(wx.ID_ANY, _(u"&Global settings")) - self.account_settings = self.menu.Append(wx.ID_ANY, _(u"Account se&ttings")) - self.update_profile = self.menu.Append(wx.ID_ANY, _(u"Update &profile")) - self.show_hide = self.menu.Append(wx.ID_ANY, _(u"&Show / hide")) - self.doc = self.menu.Append(wx.ID_ANY, _(u"&Documentation")) - self.doc.Enable(False) - self.check_for_updates = self.menu.Append(wx.ID_ANY, _(u"Check for &updates")) - self.exit = self.menu.Append(wx.ID_ANY, _(u"&Exit")) - - def show_menu(self): - self.PopupMenu(self.menu) - - def Destroy(self): - self.menu.Destroy() - super(SysTrayIcon, self).Destroy() \ No newline at end of file diff --git a/src/gtkUI/view.py b/src/gtkUI/view.py deleted file mode 100644 index 0030e01a..00000000 --- a/src/gtkUI/view.py +++ /dev/null @@ -1,206 +0,0 @@ -# -*- coding: utf-8 -*- -import application -import widgetUtils -from gi.repository import Gtk, Gdk - -class mainFrame(Gtk.Window): - """ Main class of the Frame. This is the Main Window.""" - - def append_to_menu(self, menu, *elements): - for i in elements: - menu.append(i) - - ### MENU - def makeMenus(self): - """ Creates, bind and returns the menu bar for the application. Also in this function, the accel table is created.""" - menuBar = Gtk.MenuBar() - - # Application menu - app = Gtk.Menu() - - self.manage_accounts = Gtk.MenuItem(label=_(u"Manage accounts")) - self.updateProfile = Gtk.MenuItem(label="Update profile") - self.updateProfile.add_accelerator("activate", self.accel_group, ord("U"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - # As in Gtk is not possible to bind keyboard shorcuts to the system, we don't have support for an invisible interface. - self.show_hide = None - self.menuitem_search = Gtk.MenuItem(label="Search") - self.lists = Gtk.MenuItem(label="Lists manager") - self.keystrokes_editor = None - self.account_settings = Gtk.MenuItem(label="Account settings") - self.prefs = Gtk.MenuItem(label="Global settings") - self.close = Gtk.MenuItem(label="Close") - self.close.add_accelerator("activate", self.accel_group, ord("Q"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.append_to_menu(app, self.manage_accounts, self.updateProfile, self.menuitem_search, self.lists, self.account_settings, self.prefs, self.close) - - app_menu = Gtk.MenuItem(label="Application") - app_menu.add_accelerator("activate", self.accel_group, ord("a"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - app_menu.set_submenu(app) - menuBar.append(app_menu) - - # Tweet menu - tweet = Gtk.Menu() - self.compose = Gtk.MenuItem(label="Tweet") - self.compose.add_accelerator("activate", self.accel_group, ord("N"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.reply = Gtk.MenuItem(label="Reply") - self.reply.add_accelerator("activate", self.accel_group, ord("R"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.retweet = Gtk.MenuItem(label="Retweet") - self.retweet.add_accelerator("activate", self.accel_group, ord("T"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.fav = Gtk.MenuItem(label="Add to favourites") - self.fav.add_accelerator("activate", self.accel_group, ord("F"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.unfav = Gtk.MenuItem(label="Remove from favourites") - self.view = Gtk.MenuItem(label="Show tweet") - self.view_coordinates = Gtk.MenuItem(label="View address") - self.view_conversation = Gtk.MenuItem(label="View conversation") - self.delete = Gtk.MenuItem(label="Delete") - self.append_to_menu(tweet, self.compose, self.reply, self.retweet, self.fav, self.unfav, self.view, self.view_coordinates, self.view_conversation, self.delete) - tweet_menu = Gtk.MenuItem(label="Tweet") - tweet_menu.set_submenu(tweet) - menuBar.append(tweet_menu) - - # User menu - user = Gtk.Menu() - self.follow = Gtk.MenuItem(label="Follow") - self.unfollow = Gtk.MenuItem(label="Unfollow") - self.mute = Gtk.MenuItem(label="Mute") - self.unmute = Gtk.MenuItem(label="Unmute") - self.report = Gtk.MenuItem(label="Report as spam") - self.block = Gtk.MenuItem(label="Block") - self.unblock = Gtk.MenuItem(label="Unblock") - self.timeline = Gtk.MenuItem(label="View timeline...") - self.dm = Gtk.MenuItem(label="Direct message") - self.addToList = Gtk.MenuItem(label="Add to list") - self.removeFromList = Gtk.MenuItem(label="Remove from list") - self.viewLists = Gtk.MenuItem(label="View lists") - self.details = Gtk.MenuItem(label="Show user profile") - self.favs = Gtk.MenuItem(label="View favourites") - self.append_to_menu(user, self.follow, self.unfollow, self.mute, self.unmute, self.report, self.block, self.unblock, self.timeline, self.dm, self.addToList, self.removeFromList, self.viewLists, self.details, self.favs) - user_menu = Gtk.MenuItem(label="User") - user_menu.set_submenu(user) - menuBar.append(user_menu) - - # buffer menu - buffer = Gtk.Menu() - self.trends = Gtk.MenuItem(label="New trending topics buffer...") - self.trends.add_accelerator("activate", self.accel_group, ord("T"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.load_previous_items = Gtk.MenuItem(label="Load previous items") - self.mute_buffer = Gtk.MenuItem(label="Mute") - self.autoread = Gtk.MenuItem(label="Autoread") - self.clear = Gtk.MenuItem(label="Clear buffer") - self.deleteTl = Gtk.MenuItem(label="Destroy") - self.append_to_menu(buffer, self.trends, self.load_previous_items, self.mute_buffer, self.autoread, self.clear, self.deleteTl) - buffer_menu = Gtk.MenuItem(label="Buffer") - buffer_menu.set_submenu(buffer) - menuBar.append(buffer_menu) - - # Help Menu - help = Gtk.Menu() - self.doc = Gtk.MenuItem(label="Documentation") - self.sounds_tutorial = Gtk.MenuItem(label="Sounds tutorial") - self.changelog = Gtk.MenuItem(label="What's new in this version?") - self.check_for_updates = Gtk.MenuItem(label="Check for updates") - self.reportError = Gtk.MenuItem(label="Report an error") - self.visit_website = Gtk.MenuItem(label=application.name+"'s website") - self.about = Gtk.MenuItem(label="ABout "+application.name) - self.append_to_menu(help, self.doc, self.sounds_tutorial, self.changelog, self.check_for_updates, self.reportError, self.visit_website, self.about) - help_menu = Gtk.MenuItem(label="Help") - help_menu.set_submenu(help) - menuBar.append(help_menu) - self.box.pack_start(menuBar, False, False, 0) - - ### MAIN - def __init__(self): - """ Main function of this class.""" - super(mainFrame, self).__init__(title=application.name) - self.accel_group = Gtk.AccelGroup() - self.add_accel_group(self.accel_group) - self.box = Gtk.VBox() - self.makeMenus() - self.nb = widgetUtils.notebook() - self.w = None - self.notebookBox = Gtk.Box(spacing=5) - self.notebookBox.add(self.nb.view) - self.box.add(self.notebookBox) - self.add(self.box) - select = self.nb.view.get_selection() - select.connect("changed", self.load) - - def show(self): - self.show_all() - - def get_buffer_count(self): - return self.nb.get_count() - - def add_buffer(self, buffer, name): - buff = widgetUtils.buffer(buffer) - buff.name = name - self.nb.store.append(None, (buff,)) - - def insert_buffer(self, buffer, name, pos): - iter = self.nb.store.get_iter(pos) - buff = widgetUtils.buffer(buffer) - buff.name = name - self.nb.store.insert(iter, -1, (buff,)) - - def prepare(self): - pass - - def search(self, name_, account): - (path, iter) = self.nb.search(self.nb.store, name_, account) - if path != None: - return path - - def get_current_buffer(self): - return self.nb.get_current_page() - - def get_current_buffer_pos(self): - return self.nb.get_current_page_path() - - def get_buffer(self, pos): - return self.get_page(pos) - - def load(self, selection): - model, treeiter = selection.get_selected() - if treeiter != None: - if self.w != None: - self.notebookBox.remove(self.w) - self.w = self.nb.store[treeiter][0].buffer - self.notebookBox.add(self.w) - self.show_all() - - def change_buffer(self, position): - self.nb.ChangeSelection(position) - - def get_buffer_text(self): - return self.nb.GetPageText(self.nb.GetSelection()) - - def get_buffer_by_id(self, id): - return self.nb.FindWindowById(id) - def advance_selection(self, forward): - self.nb.AdvanceSelection(forward) - - - def show_address(self, address): - wx.MessageDialog(self, address, _(u"Address"), wx.OK).ShowModal() - - def delete_buffer(self, pos): - self.nb.DeletePage(pos) - - def about_dialog(self): - info = wx.AboutDialogInfo() - info.SetName(application.name) - info.SetVersion(application.version) - info.SetDescription(application.description) - info.SetCopyright(application.copyright) - info.SetTranslators(application.translators) -# info.SetLicence(application.licence) - info.AddDeveloper(application.author) - wx.AboutBox(info) - def set_focus(self): - self.SetFocus() - - def check_menuitem(self, menuitem, check=True): - if hasattr(self, menuitem): - getattr(self, menuitem).Check(check) - -def no_update_available(): - wx.MessageDialog(None, _(u"Your " + application.name + " version is up to date"), _(u"Update"), style=wx.OK).ShowModal() diff --git a/src/locales/es/LC_MESSAGES/twblue.mo b/src/locales/es/LC_MESSAGES/twblue.mo index f2f0b04f..6df11079 100644 Binary files a/src/locales/es/LC_MESSAGES/twblue.mo and b/src/locales/es/LC_MESSAGES/twblue.mo differ diff --git a/src/locales/es/LC_MESSAGES/twblue.po b/src/locales/es/LC_MESSAGES/twblue.po index aafa4ece..503c3b44 100644 --- a/src/locales/es/LC_MESSAGES/twblue.po +++ b/src/locales/es/LC_MESSAGES/twblue.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: TW Blue 0.44\n" -"POT-Creation-Date: 2015-06-12 17:44+Hora de verano central (México)\n" -"PO-Revision-Date: 2015-06-12 17:47-0600\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (México)\n" +"PO-Revision-Date: 2015-06-25 15:39-0600\n" "Last-Translator: Manuel Cortéz \n" "Language-Team: Manuel Cortez \n" "Language: es\n" @@ -15,15 +15,15 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" -#: ../src\controller\buffersController.py:100 +#: ../src\controller\buffersController.py:98 msgid "Opening media..." msgstr "Abriendo medio..." -#: ../src\controller\buffersController.py:111 +#: ../src\controller\buffersController.py:109 msgid "This action is not supported for this buffer" msgstr "Esta acción no se encuentra soportada para este buffer" -#: ../src\controller\buffersController.py:150 ../src\gtkUI\buffers\base.py:15 +#: ../src\controller\buffersController.py:148 ../src\gtkUI\buffers\base.py:15 #: ../src\gtkUI\buffers\events.py:14 ../src\gtkUI\buffers\trends.py:14 #: ../src\gtkUI\dialogs\message.py:186 ../src\gtkUI\sysTrayIcon.py:33 #: ../src\wxUI\buffers\base.py:24 ../src\wxUI\buffers\events.py:14 @@ -32,240 +32,268 @@ msgstr "Esta acción no se encuentra soportada para este buffer" msgid "Tweet" msgstr "Tuit" -#: ../src\controller\buffersController.py:151 +#: ../src\controller\buffersController.py:149 msgid "Write the tweet here" msgstr "Escribe el tuit aquí" -#: ../src\controller\buffersController.py:313 -#: ../src\controller\buffersController.py:676 +#: ../src\controller\buffersController.py:311 +#: ../src\controller\buffersController.py:674 msgid "%s items retrieved" msgstr "%s elementos recuperados" -#: ../src\controller\buffersController.py:333 +#: ../src\controller\buffersController.py:331 msgid "This buffer is not a timeline; it can't be deleted." msgstr "Este buffer no es una línea temporal. No se puede eliminar." -#: ../src\controller\buffersController.py:394 +#: ../src\controller\buffersController.py:392 msgid "Reply to %s" msgstr "Responder a %s" -#: ../src\controller\buffersController.py:394 ../src\gtkUI\buffers\base.py:17 +#: ../src\controller\buffersController.py:392 ../src\gtkUI\buffers\base.py:17 #: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26 msgid "Reply" msgstr "Responder" -#: ../src\controller\buffersController.py:414 +#: ../src\controller\buffersController.py:412 msgid "Direct message to %s" msgstr "Mensaje directo a %s" -#: ../src\controller\buffersController.py:414 -#: ../src\controller\mainController.py:1056 +#: ../src\controller\buffersController.py:412 +#: ../src\controller\mainController.py:1084 msgid "New direct message" msgstr "Nuevo mensaje directo" -#: ../src\controller\buffersController.py:435 +#: ../src\controller\buffersController.py:433 msgid "Add your comment to the tweet" msgstr "Añade tu comentario al tuit" -#: ../src\controller\buffersController.py:435 ../src\gtkUI\buffers\base.py:16 +#: ../src\controller\buffersController.py:433 ../src\gtkUI\buffers\base.py:16 #: ../src\gtkUI\commonMessageDialogs.py:12 #: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25 #: ../src\wxUI\commonMessageDialogs.py:8 ../src\wxUI\dialogs\message.py:129 msgid "Retweet" msgstr "Retuit" -#: ../src\controller\buffersController.py:507 +#: ../src\controller\buffersController.py:505 msgid "Opening URL..." msgstr "Abriendo URL..." -#: ../src\controller\buffersController.py:542 +#: ../src\controller\buffersController.py:540 msgid "User details" msgstr "Detalles del usuario" -#: ../src\controller\buffersController.py:591 +#: ../src\controller\buffersController.py:589 msgid "Empty" msgstr "Vacío" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 msgid "Mention to %s" msgstr "Mencionar a %s" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 #: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15 msgid "Mention" msgstr "Mención" -#: ../src\controller\mainController.py:242 +#: ../src\controller\mainController.py:243 msgid "Ready" msgstr "Listo" -#: ../src\controller\mainController.py:273 +#: ../src\controller\mainController.py:274 msgid "Home" msgstr "Principal" -#: ../src\controller\mainController.py:277 +#: ../src\controller\mainController.py:278 msgid "Mentions" msgstr "Menciones" -#: ../src\controller\mainController.py:281 +#: ../src\controller\mainController.py:282 msgid "Direct messages" msgstr "Mensajes directos" -#: ../src\controller\mainController.py:285 +#: ../src\controller\mainController.py:286 msgid "Sent direct messages" msgstr "Mensajes directos enviados" -#: ../src\controller\mainController.py:289 +#: ../src\controller\mainController.py:290 msgid "Sent tweets" msgstr "Tuits enviados" -#: ../src\controller\mainController.py:294 -#: ../src\controller\mainController.py:1172 +#: ../src\controller\mainController.py:295 +#: ../src\controller\mainController.py:1200 #: ../src\gtkUI\dialogs\userSelection.py:18 #: ../src\wxUI\dialogs\userSelection.py:18 msgid "Favourites" msgstr "Favoritos" -#: ../src\controller\mainController.py:298 -#: ../src\controller\mainController.py:1177 +#: ../src\controller\mainController.py:299 +#: ../src\controller\mainController.py:1205 msgid "Followers" msgstr "Seguidores" -#: ../src\controller\mainController.py:302 -#: ../src\controller\mainController.py:1182 +#: ../src\controller\mainController.py:303 +#: ../src\controller\mainController.py:1210 msgid "Friends" msgstr "Amigos" -#: ../src\controller\mainController.py:306 -#: ../src\controller\mainController.py:1187 +#: ../src\controller\mainController.py:307 +#: ../src\controller\mainController.py:1215 msgid "Blocked users" msgstr "Usuarios bloqueados" -#: ../src\controller\mainController.py:310 -#: ../src\controller\mainController.py:1192 +#: ../src\controller\mainController.py:311 +#: ../src\controller\mainController.py:1220 msgid "Muted users" msgstr "Usuarios silenciados" -#: ../src\controller\mainController.py:314 -#: ../src\controller\mainController.py:1197 +#: ../src\controller\mainController.py:315 +#: ../src\controller\mainController.py:1225 msgid "Events" msgstr "Eventos" -#: ../src\controller\mainController.py:317 +#: ../src\controller\mainController.py:318 msgid "Timelines" msgstr "Líneas temporales" -#: ../src\controller\mainController.py:324 +#: ../src\controller\mainController.py:322 +#: ../src\controller\mainController.py:722 +msgid "Timeline for {}" +msgstr "Línea temporal de {0}" + +#: ../src\controller\mainController.py:325 msgid "Favourites timelines" msgstr "Líneas temporales de favoritos" -#: ../src\controller\mainController.py:333 ../src\gtkUI\dialogs\lists.py:11 +#: ../src\controller\mainController.py:329 +#: ../src\controller\mainController.py:732 +msgid "Favourites timeline for {}" +msgstr "Líneas temporales de favoritos de {0}" + +#: ../src\controller\mainController.py:334 ../src\gtkUI\dialogs\lists.py:11 #: ../src\wxUI\dialogs\lists.py:12 msgid "Lists" msgstr "Listas" -#: ../src\controller\mainController.py:338 -#: ../src\controller\mainController.py:1207 +#: ../src\controller\mainController.py:339 +#: ../src\controller\mainController.py:1235 msgid "List for {}" msgstr "Lista {0}" -#: ../src\controller\mainController.py:341 +#: ../src\controller\mainController.py:342 msgid "Searches" msgstr "Búsquedas" -#: ../src\controller\mainController.py:353 -#: ../src\controller\mainController.py:748 +#: ../src\controller\mainController.py:346 +#: ../src\controller\mainController.py:416 +msgid "Search for {}" +msgstr "Buscar {0}" + +#: ../src\controller\mainController.py:354 +#: ../src\controller\mainController.py:776 msgid "Trending topics for %s" msgstr "Tendencias para %s" -#: ../src\controller\mainController.py:453 -msgid "Select the user" -msgstr "Selecciona un usuario" - -#: ../src\controller\mainController.py:764 -#: ../src\controller\mainController.py:783 -msgid "There are no coordinates in this tweet" -msgstr "No hay coordenadas en este tuit" - -#: ../src\controller\mainController.py:766 -#: ../src\controller\mainController.py:785 -msgid "There are no results for the coordinates in this tweet" -msgstr "No hay resultados para las coordenadas en este tuit" - -#: ../src\controller\mainController.py:768 -#: ../src\controller\mainController.py:787 -msgid "Error decoding coordinates. Try again later." -msgstr "Error decodificando las coordenadas. Inténtalo nuevamente más tarde." - -#: ../src\controller\mainController.py:842 -#: ../src\controller\mainController.py:861 -#: ../src\controller\mainController.py:880 -#: ../src\controller\mainController.py:898 +#: ../src\controller\mainController.py:435 +#: ../src\controller\mainController.py:870 +#: ../src\controller\mainController.py:889 +#: ../src\controller\mainController.py:908 +#: ../src\controller\mainController.py:926 msgid "" "No session is currently in focus. Focus a session with the next or previous " "session shortcut." msgstr "No estás en ninguna sesión. Cambia a una sesión activa." -#: ../src\controller\mainController.py:889 -#: ../src\controller\mainController.py:907 +#: ../src\controller\mainController.py:439 +msgid "Empty buffer." +msgstr "Buffer vacío" + +#: ../src\controller\mainController.py:446 +msgid "{0} not found." +msgstr "{0} no encontrado" + +#: ../src\controller\mainController.py:481 +msgid "Select the user" +msgstr "Selecciona un usuario" + +#: ../src\controller\mainController.py:749 +msgid "Conversation with {0}" +msgstr "Conversación con {0}" + +#: ../src\controller\mainController.py:792 +#: ../src\controller\mainController.py:811 +msgid "There are no coordinates in this tweet" +msgstr "No hay coordenadas en este tuit" + +#: ../src\controller\mainController.py:794 +#: ../src\controller\mainController.py:813 +msgid "There are no results for the coordinates in this tweet" +msgstr "No hay resultados para las coordenadas en este tuit" + +#: ../src\controller\mainController.py:796 +#: ../src\controller\mainController.py:815 +msgid "Error decoding coordinates. Try again later." +msgstr "Error decodificando las coordenadas. Inténtalo nuevamente más tarde." + +#: ../src\controller\mainController.py:917 +#: ../src\controller\mainController.py:935 msgid "%s, %s of %s" msgstr "%s, %s de %s" -#: ../src\controller\mainController.py:891 -#: ../src\controller\mainController.py:909 -#: ../src\controller\mainController.py:929 -#: ../src\controller\mainController.py:949 +#: ../src\controller\mainController.py:919 +#: ../src\controller\mainController.py:937 +#: ../src\controller\mainController.py:957 +#: ../src\controller\mainController.py:977 msgid "%s. Empty" msgstr "%s. Vacío" -#: ../src\controller\mainController.py:922 +#: ../src\controller\mainController.py:950 msgid "{0}: This account is not logged into Twitter." msgstr "{0}: No has iniciado sesión con esta cuenta en Twitter." -#: ../src\controller\mainController.py:927 -#: ../src\controller\mainController.py:947 +#: ../src\controller\mainController.py:955 +#: ../src\controller\mainController.py:975 msgid "%s. %s, %s of %s" msgstr "%s. %s, %s de %s" -#: ../src\controller\mainController.py:942 +#: ../src\controller\mainController.py:970 msgid "{0}: This account is not logged into twitter." msgstr "{0}: No has iniciado sesión con esta cuenta en Twitter." -#: ../src\controller\mainController.py:1047 +#: ../src\controller\mainController.py:1075 msgid "One mention from %s " msgstr "Una mención de %s" -#: ../src\controller\mainController.py:1136 -#: ../src\controller\mainController.py:1145 +#: ../src\controller\mainController.py:1164 +#: ../src\controller\mainController.py:1173 msgid "One tweet from %s" msgstr "Un tuit de %s" -#: ../src\controller\mainController.py:1202 +#: ../src\controller\mainController.py:1230 msgid "This list is already opened" msgstr "Esta lista ya ha sido abierta." -#: ../src\controller\mainController.py:1260 +#: ../src\controller\mainController.py:1288 msgid "The auto-reading of new tweets is enabled for this buffer" msgstr "La lectura automática de nuevos tuits para este buffer está activada" -#: ../src\controller\mainController.py:1263 +#: ../src\controller\mainController.py:1291 msgid "The auto-reading of new tweets is disabled for this buffer" msgstr "" "La lectura automática de nuevos tuits para este buffer está desactivada" -#: ../src\controller\mainController.py:1269 +#: ../src\controller\mainController.py:1297 msgid "Session mute on" msgstr "Silencio de sesión activo" -#: ../src\controller\mainController.py:1272 +#: ../src\controller\mainController.py:1300 msgid "Session mute off" msgstr "Silencio de sesión desactivado" -#: ../src\controller\mainController.py:1279 +#: ../src\controller\mainController.py:1307 msgid "Buffer mute on" msgstr "Silenciar buffer, activado" -#: ../src\controller\mainController.py:1282 +#: ../src\controller\mainController.py:1310 msgid "Buffer mute off" msgstr "Silenciar buffer, desactivado" @@ -304,7 +332,7 @@ msgid "Discard image" msgstr "Descartar foto" #: ../src\controller\messages.py:121 ../src\controller\user.py:53 -#: ../src\extra\AudioUploader\audioUploader.py:130 +#: ../src\extra\AudioUploader\audioUploader.py:127 msgid "Discarded" msgstr "Descartado" @@ -315,28 +343,27 @@ msgstr "Descartado" msgid "Upload a picture" msgstr "Subir una foto" -#: ../src\controller\settings.py:114 ../src\controller\settings.py:173 +#: ../src\controller\settings.py:117 ../src\controller\settings.py:176 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Ask" msgstr "Preguntar" -#: ../src\controller\settings.py:116 ../src\controller\settings.py:175 +#: ../src\controller\settings.py:119 ../src\controller\settings.py:178 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet without comments" msgstr "Retuitear sin comentario" -#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:98 +#: ../src\controller\settings.py:121 ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet with comments" msgstr "Retuitear añadiendo un comentario" -#: ../src\controller\settings.py:150 +#: ../src\controller\settings.py:153 msgid "Account settings for %s" msgstr "Opciones de la cuenta de %s" -#: ../src\controller\settings.py:241 ../src\gtkUI\dialogs\configuration.py:153 -#: ../src\wxUI\dialogs\configuration.py:291 -msgid "Link your Dropbox account" -msgstr "Conectar tu cuenta de Dropbox" +#: ../src\controller\settings.py:261 ../src\wxUI\dialogs\configuration.py:289 +msgid "Connect your Pocket account" +msgstr "Conectar tu cuenta de Pocket" #: ../src\controller\user.py:25 msgid "Information for %s" @@ -398,52 +425,52 @@ msgstr "Favoritos: %s" msgid "You can't ignore direct messages" msgstr "No puedes ignorar los mensajes directos" -#: ../src\extra\AudioUploader\audioUploader.py:52 +#: ../src\extra\AudioUploader\audioUploader.py:53 msgid "Attaching..." msgstr "Adjuntando..." -#: ../src\extra\AudioUploader\audioUploader.py:78 -#: ../src\extra\AudioUploader\audioUploader.py:83 -#: ../src\extra\AudioUploader\audioUploader.py:110 +#: ../src\extra\AudioUploader\audioUploader.py:75 +#: ../src\extra\AudioUploader\audioUploader.py:80 +#: ../src\extra\AudioUploader\audioUploader.py:107 #: ../src\extra\AudioUploader\wx_ui.py:36 msgid "Pause" msgstr "Pausa" -#: ../src\extra\AudioUploader\audioUploader.py:80 -#: ../src\extra\AudioUploader\audioUploader.py:81 +#: ../src\extra\AudioUploader\audioUploader.py:77 +#: ../src\extra\AudioUploader\audioUploader.py:78 msgid "Resume" msgstr "Reanudar" -#: ../src\extra\AudioUploader\audioUploader.py:98 -#: ../src\extra\AudioUploader\audioUploader.py:143 +#: ../src\extra\AudioUploader\audioUploader.py:95 +#: ../src\extra\AudioUploader\audioUploader.py:140 msgid "Stop" msgstr "Detener" -#: ../src\extra\AudioUploader\audioUploader.py:99 +#: ../src\extra\AudioUploader\audioUploader.py:96 msgid "Recording" msgstr "Grabando" -#: ../src\extra\AudioUploader\audioUploader.py:104 -#: ../src\extra\AudioUploader\audioUploader.py:154 +#: ../src\extra\AudioUploader\audioUploader.py:101 +#: ../src\extra\AudioUploader\audioUploader.py:151 msgid "Stopped" msgstr "Stopped" -#: ../src\extra\AudioUploader\audioUploader.py:106 +#: ../src\extra\AudioUploader\audioUploader.py:103 #: ../src\extra\AudioUploader\wx_ui.py:38 msgid "Record" msgstr "Grabar" -#: ../src\extra\AudioUploader\audioUploader.py:139 ../src\sound.py:123 +#: ../src\extra\AudioUploader\audioUploader.py:136 ../src\sound.py:123 msgid "Playing..." msgstr "Reproduciendo..." -#: ../src\extra\AudioUploader\audioUploader.py:147 -#: ../src\extra\AudioUploader\audioUploader.py:157 +#: ../src\extra\AudioUploader\audioUploader.py:144 +#: ../src\extra\AudioUploader\audioUploader.py:154 #: ../src\extra\AudioUploader\wx_ui.py:34 msgid "Play" msgstr "Reproducir" -#: ../src\extra\AudioUploader\audioUploader.py:162 +#: ../src\extra\AudioUploader\audioUploader.py:159 msgid "Recoding audio..." msgstr "Recodificando audio..." @@ -521,6 +548,7 @@ msgid "Attach" msgstr "Adjuntar" #: ../src\extra\AudioUploader\wx_ui.py:50 ../src\issueReporter\wx_ui.py:74 +#: ../src\wxUI\dialogs\find.py:20 msgid "Cancel" msgstr "Cancelar" @@ -557,7 +585,7 @@ msgid "Error." msgstr "Error" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:10 -msgid "Tweet favorited." +msgid "Tweet favourited." msgstr "Tuit marcado como favorito" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:11 @@ -588,6 +616,10 @@ msgstr "Mención recibida" msgid "New event." msgstr "Nuevo evento" +#: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:18 +msgid "{0} is ready." +msgstr "{0} está listo" + #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:19 msgid "Mention sent." msgstr "Mención enviada" @@ -665,8 +697,14 @@ msgid "Replace all" msgstr "Reemplazar todo" #: ../src\extra\SpellChecker\wx_ui.py:76 -#: ../src\gtkUI\commonMessageDialogs.py:52 -#: ../src\gtkUI\commonMessageDialogs.py:64 ../src\issueReporter\wx_ui.py:83 +msgid "" +"An error has occurred. There are no dictionaries available for the selected " +"language in {0}" +msgstr "" +"Ha ocurrido un error. No se encuentran diccionarios disponibles para el " +"idioma seleccionado en {0}." + +#: ../src\extra\SpellChecker\wx_ui.py:76 ../src\issueReporter\wx_ui.py:83 #: ../src\issueReporter\wx_ui.py:86 ../src\wxUI\commonMessageDialogs.py:37 #: ../src\wxUI\commonMessageDialogs.py:49 msgid "Error" @@ -702,6 +740,10 @@ msgstr "" msgid "Manage Autocompletion database" msgstr "Gestionar la base de datos del autocompletado de usuarios" +#: ../src\extra\autocompletionUsers\wx_manage.py:11 +msgid "Editing {0} users database" +msgstr "Editando la base de datos de usuarios de {0}" + #: ../src\extra\autocompletionUsers\wx_manage.py:12 msgid "Name" msgstr "Nombre" @@ -727,21 +769,18 @@ msgid "Twitter username" msgstr "Nombre de usuario de Twitter" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:52 #: ../src\wxUI\commonMessageDialogs.py:37 msgid "The user does not exist" msgstr "El usuario no existe" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\gtkUI\dialogs\configuration.py:165 #: ../src\wxUI\commonMessageDialogs.py:43 -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error!" msgstr "¡Error!" #: ../src\extra\autocompletionUsers\wx_settings.py:8 -msgid "Autocomplete users’ settings" +msgid "Autocomplete users' settings" msgstr "Opciones de autocompletado de usuarios" #: ../src\extra\autocompletionUsers\wx_settings.py:11 @@ -760,6 +799,10 @@ msgstr "Administrar base de datos" msgid "Done" msgstr "¡Hecho" +#: ../src\extra\autocompletionUsers\wx_settings.py:27 +msgid "{0}'s database of users has been updated." +msgstr "La base de datos de usuarios de {0} ha sido actualizada." + #: ../src\extra\translator\translator.py:9 msgid "Afrikaans" msgstr "Africano" @@ -1233,279 +1276,10 @@ msgstr "" msgid "Exit" msgstr "Salir" -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "" -"Are you sure you want to delete this user from the database? This user will " -"not appear on the autocomplete results anymore." -msgstr "" -"¿Estás seguro de querer eliminar este usuario de la base de datos? Este ya " -"no aparecerá en los resultados del autocompletado." - -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "Confirm" -msgstr "Confirmar" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Add a new ignored client" -msgstr "Añadir un nuevo clienteClientes ignorados" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Enter the name of the client here" -msgstr "Introduce el nombre del cliente" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "" -"Do you really want to empty this buffer? It's items will be removed from " -"the list but not from Twitter" -msgstr "" -"¿Realmente quieres vaciar el contenido de este buffer? Los tweets serán " -"eliminados de la lista, pero no de Twitter" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "Empty buffer" -msgstr "Vaciar buffer" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Attention" -msgstr "Atención" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Do you really want to delete this timeline?" -msgstr "¿Realmente deseas eliminar esta línea temporal?" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "Existing timeline" -msgstr "Línea temporal existente" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "" -"There's currently a timeline for this user. You are not able to open another" -msgstr "Ya hay una línea temporal para este usuario. No se puede abrir otra" - -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\wxUI\commonMessageDialogs.py:43 -msgid "This user has no tweets. You can't open a timeline for this user" -msgstr "Este usuario no tiene tuits. NO puedes abrirle una línea temporal." - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "" -"This is a protected Twitter user. It means you can not open a timeline using " -"the Streaming API. The user's tweets will not update due to a twitter " -"policy. Do you want to continue?" -msgstr "" -"Esta cuenta de usuario se encuentra protegida. Esto significa que no podrás " -"abrir una línea temporal con actualizaciones en tiempo real. Los tuits de " -"este usuario no se actualizarán debido a una política de Twitter. ¿Deseas " -"continuar?" - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "Warning" -msgstr "Atención" - -#: ../src\gtkUI\commonMessageDialogs.py:64 -#: ../src\wxUI\commonMessageDialogs.py:49 -msgid "" -"This is a protected user account, you need follow to this user for viewing " -"your tweets or favourites." -msgstr "" -"Esta es una cuenta protegida, debes seguir al usuario para poder ver sus " -"tuits y favoritos." - -#: ../src\gtkUI\dialogs\configuration.py:10 -#: ../src\wxUI\dialogs\configuration.py:14 -msgid "Language" -msgstr "Idioma" - -#: ../src\gtkUI\dialogs\configuration.py:19 -#: ../src\wxUI\dialogs\configuration.py:27 -msgid "Use invisible interface's keyboard shortcuts while GUI is visible" -msgstr "" -"Usar los atajos de teclado de la interfaz invisible en la ventana gráfica" - -#: ../src\gtkUI\dialogs\configuration.py:21 -#: ../src\wxUI\dialogs\configuration.py:29 -msgid "Activate Sapi5 when any other screen reader is not being run" -msgstr "Activar Sapi5 cuando no hay ningún lector de pantalla ejecutándose" - -#: ../src\gtkUI\dialogs\configuration.py:23 -#: ../src\wxUI\dialogs\configuration.py:31 -msgid "Hide GUI on launch" -msgstr "Esconder interfaz gráfica al iniciar" - -#: ../src\gtkUI\dialogs\configuration.py:31 -msgid "Set the autocomplete function" -msgstr "Configurar la función de autocompletado" - -#: ../src\gtkUI\dialogs\configuration.py:33 -msgid "Relative times" -msgstr "Tiempos relativos" - -#: ../src\gtkUI\dialogs\configuration.py:36 -msgid "" -"API calls when the stream is started (One API call equals to 200 tweetts, " -"two API calls equals 400 tweets, etc):" -msgstr "" -"Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " -"tuits, 2 a 400 tuits, etc):" - -#: ../src\gtkUI\dialogs\configuration.py:43 -#: ../src\wxUI\dialogs\configuration.py:89 -msgid "Items on each API call" -msgstr "Elementos por cada llamada a la API" - -#: ../src\gtkUI\dialogs\configuration.py:49 -msgid "" -"Inverted buffers: The newest tweets will be shown at the beginning of the " -"lists while the oldest at the end" -msgstr "" -"Buffers invertidos: los nuevos tweets se mostrarán al principio de las " -"listas y los viejos al final" - -#: ../src\gtkUI\dialogs\configuration.py:63 -#: ../src\gtkUI\dialogs\configuration.py:198 -#: ../src\wxUI\dialogs\configuration.py:201 -#: ../src\wxUI\dialogs\configuration.py:340 -msgid "Ignored clients" -msgstr "Clientes ignorados" - -#: ../src\gtkUI\dialogs\configuration.py:69 -#: ../src\wxUI\dialogs\configuration.py:207 -msgid "Add client" -msgstr "Añadir cliente" - -#: ../src\gtkUI\dialogs\configuration.py:70 -#: ../src\wxUI\dialogs\configuration.py:208 -msgid "Remove client" -msgstr "Quitar cliente" - -#: ../src\gtkUI\dialogs\configuration.py:94 -#: ../src\wxUI\dialogs\configuration.py:232 -msgid "Volume" -msgstr "Volumen" - -#: ../src\gtkUI\dialogs\configuration.py:102 -#: ../src\wxUI\dialogs\configuration.py:240 -msgid "Session mute" -msgstr "Silencio de sesión" - -#: ../src\gtkUI\dialogs\configuration.py:104 -#: ../src\wxUI\dialogs\configuration.py:242 -msgid "Output device" -msgstr "Dispositivo de salida" - -#: ../src\gtkUI\dialogs\configuration.py:111 -#: ../src\wxUI\dialogs\configuration.py:249 -msgid "Input device" -msgstr "Dispositivo de entrada" - -#: ../src\gtkUI\dialogs\configuration.py:119 -#: ../src\wxUI\dialogs\configuration.py:257 -msgid "Sound pack" -msgstr "Paquete de sonidos" - -#: ../src\gtkUI\dialogs\configuration.py:134 -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 "" -"Si tienes cuenta en SndUp, introduce tu API Key aquí. Si el API Key es " -"incorrecto, el programa no podrá subir nada al servicio. Si no hay API Key " -"aquí, los audios se subirán de manera anónima" - -#: ../src\gtkUI\dialogs\configuration.py:151 -#: ../src\wxUI\dialogs\configuration.py:289 -msgid "Unlink your Dropbox account" -msgstr "Desconectar tu cuenta de Dropbox" - -#: ../src\gtkUI\dialogs\configuration.py:156 ../src\sessionmanager\wxUI.py:47 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "Authorization" -msgstr "Autorización" - -#: ../src\gtkUI\dialogs\configuration.py:156 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "" -"The authorization request will be opened in your browser. Copy the code from " -"Dropbox and paste it into the text box which will appear. You only need to " -"do this once." -msgstr "" -"La solicitud de autorización se abrirá en tu navegador. Pega el código que " -"te entregará dropbox en el campo de texto que aparecerá a continuación. Esto " -"es necesario hacerlo solo una vez." - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Enter the code here." -msgstr "Introduce el código aquí" - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Verification code" -msgstr "Código de verificación" - -#: ../src\gtkUI\dialogs\configuration.py:165 -msgid "Error during authorisation. Try again later." -msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" - -#: ../src\gtkUI\dialogs\configuration.py:178 -msgid "TW Blue preferences" -msgstr "Preferencias de TW Blue" - -#: ../src\gtkUI\dialogs\configuration.py:184 -#: ../src\gtkUI\dialogs\configuration.py:189 -#: ../src\issueReporter\issueReporter.py:30 -#: ../src\wxUI\dialogs\configuration.py:322 -#: ../src\wxUI\dialogs\configuration.py:331 -msgid "General" -msgstr "General" - -#: ../src\gtkUI\dialogs\configuration.py:194 -msgid "Show other buffers" -msgstr "Mostrar otros buffers" - -#: ../src\gtkUI\dialogs\configuration.py:202 -#: ../src\wxUI\dialogs\configuration.py:344 -msgid "Sound" -msgstr "Sonido" - -#: ../src\gtkUI\dialogs\configuration.py:205 -#: ../src\wxUI\dialogs\configuration.py:347 -msgid "Audio Services" -msgstr "Servicios de audio" - -#: ../src\gtkUI\dialogs\configuration.py:210 -#: ../src\wxUI\dialogs\configuration.py:352 -msgid "Save" -msgstr "Guardar" - -#: ../src\gtkUI\dialogs\configuration.py:212 ../src\gtkUI\dialogs\search.py:26 -#: ../src\gtkUI\dialogs\show_user.py:17 ../src\gtkUI\dialogs\trends.py:28 -#: ../src\gtkUI\dialogs\update_profile.py:35 -#: ../src\gtkUI\dialogs\userActions.py:40 -#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 -#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:354 -#: ../src\wxUI\dialogs\message.py:87 ../src\wxUI\dialogs\message.py:147 -#: ../src\wxUI\dialogs\message.py:207 ../src\wxUI\dialogs\message.py:283 -#: ../src\wxUI\dialogs\message.py:338 ../src\wxUI\dialogs\search.py:26 -#: ../src\wxUI\dialogs\show_user.py:17 ../src\wxUI\dialogs\trends.py:28 -#: ../src\wxUI\dialogs\update_profile.py:35 -#: ../src\wxUI\dialogs\userActions.py:40 -#: ../src\wxUI\dialogs\userSelection.py:28 ../src\wxUI\dialogs\utils.py:35 -msgid "Close" -msgstr "Cerrar" +#: ../src\gtkUI\commonMessageDialogs.py:27 +#: ../src\wxUI\commonMessageDialogs.py:14 +msgid "Do you really want to close {0}?" +msgstr "¿Realmente deseas salir de {0}?" #: ../src\gtkUI\dialogs\lists.py:9 ../src\wxUI\dialogs\lists.py:10 msgid "Lists manager" @@ -1706,12 +1480,28 @@ msgstr "Usuarios" #: ../src\gtkUI\dialogs\search.py:24 ../src\gtkUI\dialogs\trends.py:26 #: ../src\gtkUI\dialogs\userActions.py:38 #: ../src\gtkUI\dialogs\userSelection.py:26 ../src\gtkUI\dialogs\utils.py:32 -#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\search.py:24 -#: ../src\wxUI\dialogs\trends.py:26 ../src\wxUI\dialogs\userActions.py:38 +#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\find.py:18 +#: ../src\wxUI\dialogs\search.py:24 ../src\wxUI\dialogs\trends.py:26 +#: ../src\wxUI\dialogs\userActions.py:38 #: ../src\wxUI\dialogs\userSelection.py:26 ../src\wxUI\dialogs\utils.py:32 msgid "OK" msgstr "Aceptar" +#: ../src\gtkUI\dialogs\search.py:26 ../src\gtkUI\dialogs\show_user.py:17 +#: ../src\gtkUI\dialogs\trends.py:28 ../src\gtkUI\dialogs\update_profile.py:35 +#: ../src\gtkUI\dialogs\userActions.py:40 +#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 +#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:347 +#: ../src\wxUI\dialogs\message.py:87 ../src\wxUI\dialogs\message.py:147 +#: ../src\wxUI\dialogs\message.py:207 ../src\wxUI\dialogs\message.py:283 +#: ../src\wxUI\dialogs\message.py:338 ../src\wxUI\dialogs\search.py:26 +#: ../src\wxUI\dialogs\show_user.py:17 ../src\wxUI\dialogs\trends.py:28 +#: ../src\wxUI\dialogs\update_profile.py:35 +#: ../src\wxUI\dialogs\userActions.py:40 +#: ../src\wxUI\dialogs\userSelection.py:28 ../src\wxUI\dialogs\utils.py:35 +msgid "Close" +msgstr "Cerrar" + #: ../src\gtkUI\dialogs\show_user.py:10 ../src\wxUI\dialogs\show_user.py:10 msgid "Details" msgstr "Detalles" @@ -1851,7 +1641,7 @@ msgid "&Show / hide" msgstr "&Mostrar / esconder" #: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38 -#: ../src\wxUI\view.py:62 +#: ../src\wxUI\view.py:63 msgid "&Documentation" msgstr "&Documentación" @@ -1867,14 +1657,24 @@ msgstr "&Salir" msgid "Manage accounts" msgstr "Gestionar cuentas" -#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:158 +#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:159 msgid "Address" msgstr "Dirección" -#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:181 +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 msgid "Update" msgstr "Actualización" +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 +msgid "Your {0} version is up to date" +msgstr "Tu versión de {0} está actualizada" + +#: ../src\issueReporter\issueReporter.py:30 +#: ../src\wxUI\dialogs\configuration.py:314 +#: ../src\wxUI\dialogs\configuration.py:323 +msgid "General" +msgstr "General" + #: ../src\issueReporter\issueReporter.py:31 msgid "always" msgstr "Siempre" @@ -1954,6 +1754,14 @@ msgstr "¿Qué tan a menudo ocurre este error?" msgid "Select the importance that you think this bug has" msgstr "Selecciona la importancia que consideras que tiene este error" +#: ../src\issueReporter\wx_ui.py:69 +msgid "" +"I know that the {0} bug system will get my Twitter username to contact me " +"and fix the bug quickly" +msgstr "" +"Sé que el sistema de errores de {0} obtendrá mi nombre de usuario de Twitter " +"para contactarme y resolver el error rápidamente" + #: ../src\issueReporter\wx_ui.py:72 msgid "Send report" msgstr "Enviar reporte" @@ -2067,10 +1875,8 @@ msgid "Interact with the currently focused tweet." msgstr "Interactuar con el tuit que tiene el foco" #: ../src\keystrokeEditor\constants.py:23 -msgid "" -"Perform secondary interact action (open URL in browser if Codeofdusk's " -"intelegent audio tweet handlers enabled, play audio if disabled." -msgstr "" +msgid "Open URL" +msgstr "Abrir URL" #: ../src\keystrokeEditor\constants.py:24 msgid "Increase volume by 5%" @@ -2142,30 +1948,34 @@ msgid "Search on twitter" msgstr "Buscar en Twitter" #: ../src\keystrokeEditor\constants.py:41 +msgid "Find a string in the currently focused buffer" +msgstr "Buscar un término en el buffer actual" + +#: ../src\keystrokeEditor\constants.py:42 msgid "Show the keystroke editor" msgstr "Mostrar el editor de combinaciones de teclado" -#: ../src\keystrokeEditor\constants.py:42 +#: ../src\keystrokeEditor\constants.py:43 msgid "Show lists for a specified user" msgstr "Mostrar listas para un usuario específico" -#: ../src\keystrokeEditor\constants.py:43 +#: ../src\keystrokeEditor\constants.py:44 msgid "load previous items" msgstr "Cargar elementos anteriores" -#: ../src\keystrokeEditor\constants.py:44 +#: ../src\keystrokeEditor\constants.py:45 msgid "Get geolocation" msgstr "Obtener ubicación" -#: ../src\keystrokeEditor\constants.py:45 +#: ../src\keystrokeEditor\constants.py:46 msgid "Display the tweet's geolocation in a dialog" msgstr "Mostrar la ubicación del tuit en un diálogo" -#: ../src\keystrokeEditor\constants.py:46 +#: ../src\keystrokeEditor\constants.py:47 msgid "Create a trending topics buffer" msgstr "Crear un buffer de tendencias" -#: ../src\keystrokeEditor\constants.py:47 +#: ../src\keystrokeEditor\constants.py:48 msgid "View conversation" msgstr "Ver conversación" @@ -2229,6 +2039,18 @@ msgstr "%s falló. Razón: %s" msgid "%s succeeded." msgstr "%s con éxito" +#: ../src\sessionmanager\wxUI.py:10 +msgid "Accounts list" +msgstr "Lista de cuentas" + +#: ../src\sessionmanager\wxUI.py:12 +msgid "Account" +msgstr "Cuenta" + +#: ../src\sessionmanager\wxUI.py:16 +msgid "New account" +msgstr "Nueva cuenta" + #: ../src\sessionmanager\wxUI.py:17 ../src\sessionmanager\wxUI.py:63 msgid "Remove account" msgstr "Eliminar cuenta" @@ -2245,6 +2067,10 @@ msgstr "Error en la cuenta" msgid "You need to configure an account." msgstr "Necesitas configurar una cuenta" +#: ../src\sessionmanager\wxUI.py:47 +msgid "Authorization" +msgstr "Autorización" + #: ../src\sessionmanager\wxUI.py:47 msgid "" "The request to authorize your Twitter account will be opened in your " @@ -2323,7 +2149,7 @@ msgid "You've added to favourites: %s, %s" msgstr "Has marcado como favorito: %s, %s" #: ../src\twitter\compose.py:99 -msgid "%s(@%s) has marked as favorite: %s" +msgid "%s(@%s) has marked as favourite: %s" msgstr "%s(@%s) ha marcado como favorito: %s" #: ../src\twitter\compose.py:101 @@ -2378,6 +2204,14 @@ msgstr "Te has dado de baja de la lista %s, propiedad de %s(@%s)" msgid "You've been unsubscribed from the list %s, which is owned by %s(@%s)" msgstr "Has sido dado de baja de la lista %s, propiedad de %s(@%s)" +#: ../src\twitter\compose.py:122 +msgid "You have retweeted a retweet from %s(@%s): %s" +msgstr "Has retuiteado un retuit de %s(@%s): %s" + +#: ../src\twitter\compose.py:123 +msgid "%s(@%s) has retweeted your retweet: %s" +msgstr "%s(@%s) ha retuiteado tu retuit: %s" + #: ../src\twitter\compose.py:125 msgid "Unknown" msgstr "Desconocido" @@ -2402,6 +2236,10 @@ msgstr "Lo sentimos, no estás autorizado para ver este tuit." msgid "No status found with that ID" msgstr "No existe un tuit con este ID." +#: ../src\twitter\utils.py:128 +msgid "Error code {0}" +msgstr "Código de error {0}" + #: ../src\update\wxUpdater.py:9 msgid "New version for %s" msgstr "Nueva versión de %s" @@ -2445,9 +2283,93 @@ msgstr "" "La actualización ha sido descargada e instalada. Presiona aceptar para " "iniciar la aplicación." -#: ../src\wxUI\commonMessageDialogs.py:14 -msgid "Do you really want to close {0}?" -msgstr "¿Realmente deseas salir de {0}?" +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid " {0} must be restarted for these changes to take effect." +msgstr "Debes reiniciar {0} para que estos cambios tengan efecto." + +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid "Restart {0} " +msgstr "Reiniciar {0}" + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "" +"Are you sure you want to delete this user from the database? This user will " +"not appear on the autocomplete results anymore." +msgstr "" +"¿Estás seguro de querer eliminar este usuario de la base de datos? Este ya " +"no aparecerá en los resultados del autocompletado." + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "Confirm" +msgstr "Confirmar" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Add a new ignored client" +msgstr "Añadir un nuevo clienteClientes ignorados" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Enter the name of the client here" +msgstr "Introduce el nombre del cliente" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from " +"the list but not from Twitter" +msgstr "" +"¿Realmente quieres vaciar el contenido de este buffer? Los tweets serán " +"eliminados de la lista, pero no de Twitter" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "Empty buffer" +msgstr "Vaciar buffer" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Attention" +msgstr "Atención" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Do you really want to delete this timeline?" +msgstr "¿Realmente deseas eliminar esta línea temporal?" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "Existing timeline" +msgstr "Línea temporal existente" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "" +"There's currently a timeline for this user. You are not able to open another" +msgstr "Ya hay una línea temporal para este usuario. No se puede abrir otra" + +#: ../src\wxUI\commonMessageDialogs.py:43 +msgid "This user has no tweets. You can't open a timeline for this user" +msgstr "Este usuario no tiene tuits. NO puedes abrirle una línea temporal." + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "" +"This is a protected Twitter user. It means you can not open a timeline using " +"the Streaming API. The user's tweets will not update due to a twitter " +"policy. Do you want to continue?" +msgstr "" +"Esta cuenta de usuario se encuentra protegida. Esto significa que no podrás " +"abrir una línea temporal con actualizaciones en tiempo real. Los tuits de " +"este usuario no se actualizarán debido a una política de Twitter. ¿Deseas " +"continuar?" + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "Warning" +msgstr "Atención" + +#: ../src\wxUI\commonMessageDialogs.py:49 +msgid "" +"This is a protected user account, you need follow to this user for viewing " +"your tweets or favourites." +msgstr "" +"Esta es una cuenta protegida, debes seguir al usuario para poder ver sus " +"tuits y favoritos." + +#: ../src\wxUI\dialogs\configuration.py:14 +msgid "Language" +msgstr "Idioma" #: ../src\wxUI\dialogs\configuration.py:21 msgid "ask before exiting {0}" @@ -2461,6 +2383,19 @@ msgstr "Reproducir un sonido cuando inicia {0}" msgid "Speak a message when {0} launches" msgstr "Hablar un mensaje cuando {0} inicie." +#: ../src\wxUI\dialogs\configuration.py:27 +msgid "Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Usar los atajos de teclado de la interfaz invisible en la ventana gráfica" + +#: ../src\wxUI\dialogs\configuration.py:29 +msgid "Activate Sapi5 when any other screen reader is not being run" +msgstr "Activar Sapi5 cuando no hay ningún lector de pantalla ejecutándose" + +#: ../src\wxUI\dialogs\configuration.py:31 +msgid "Hide GUI on launch" +msgstr "Esconder interfaz gráfica al iniciar" + #: ../src\wxUI\dialogs\configuration.py:34 msgid "Keymap" msgstr "Mapa de teclado" @@ -2495,6 +2430,10 @@ msgstr "" "Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " "tuits, 2 a 400 tuits, etc):" +#: ../src\wxUI\dialogs\configuration.py:89 +msgid "Items on each API call" +msgstr "Elementos por cada llamada a la API" + #: ../src\wxUI\dialogs\configuration.py:95 msgid "" "Inverted buffers: The newest tweets will be shown at the beginning while the " @@ -2568,18 +2507,101 @@ msgstr "El buffer ya se encuentra al principio de la lista" msgid "The buffer is already at the bottom of the list." msgstr "El buffer ya se encuentra al final de la lista" -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:201 +#: ../src\wxUI\dialogs\configuration.py:332 +msgid "Ignored clients" +msgstr "Clientes ignorados" + +#: ../src\wxUI\dialogs\configuration.py:207 +msgid "Add client" +msgstr "Añadir cliente" + +#: ../src\wxUI\dialogs\configuration.py:208 +msgid "Remove client" +msgstr "Quitar cliente" + +#: ../src\wxUI\dialogs\configuration.py:232 +msgid "Volume" +msgstr "Volumen" + +#: ../src\wxUI\dialogs\configuration.py:240 +msgid "Session mute" +msgstr "Silencio de sesión" + +#: ../src\wxUI\dialogs\configuration.py:242 +msgid "Output device" +msgstr "Dispositivo de salida" + +#: ../src\wxUI\dialogs\configuration.py:249 +msgid "Input device" +msgstr "Dispositivo de entrada" + +#: ../src\wxUI\dialogs\configuration.py:257 +msgid "Sound pack" +msgstr "Paquete de sonidos" + +#: ../src\wxUI\dialogs\configuration.py:272 +msgid "" +"If you have a SndUp account, enter your API Key here. If your API Key is " +"invalid, {0} will fail to upload. If there is no API Key here, {0} will " +"upload annonymously." +msgstr "" +"Si tienes cuenta en SndUp, introduce tu API Key aquí. Si el API Key es " +"incorrecto, {0} no podrá subir nada al servicio. Si no hay API Key aquí, {0} " +"subirá audios de manera anónima" + +#: ../src\wxUI\dialogs\configuration.py:287 +msgid "Disconnect your Pocket account" +msgstr "Desconectar tu cuenta de Pocket" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "Pocket Authorization" +msgstr "Autorización de Pocket" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "" +"The authorization request will be opened in your browser. You only need to " +"do this once. Do you want to continue?" +msgstr "" +"La solicitud de autorización de Pocket será abierta en tu navegador. Esto es " +"necesario hacerlo solo una vez. ¿Quieres continuar?" + +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error during authorization. Try again later." msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" -#: ../src\wxUI\dialogs\configuration.py:327 +#: ../src\wxUI\dialogs\configuration.py:308 +msgid "{0} preferences" +msgstr "Preferencias de {0}" + +#: ../src\wxUI\dialogs\configuration.py:319 msgid "Proxy" msgstr "Proxy" -#: ../src\wxUI\dialogs\configuration.py:336 +#: ../src\wxUI\dialogs\configuration.py:328 msgid "Buffers" msgstr "Buffers" +#: ../src\wxUI\dialogs\configuration.py:336 +msgid "Sound" +msgstr "Sonido" + +#: ../src\wxUI\dialogs\configuration.py:340 +msgid "Services" +msgstr "Servicios" + +#: ../src\wxUI\dialogs\configuration.py:345 +msgid "Save" +msgstr "Guardar" + +#: ../src\wxUI\dialogs\find.py:10 +msgid "Find in current buffer" +msgstr "Buscar en el buffer actual" + +#: ../src\wxUI\dialogs\find.py:11 +msgid "String" +msgstr "Término" + #: ../src\wxUI\dialogs\lists.py:133 msgid "Do you really want to delete this list?" msgstr "¿Realmente deseas eliminar esta lista?" @@ -2621,7 +2643,7 @@ msgstr "Editar combinaciones de &teclas" msgid "E&xit" msgstr "S&alir" -#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74 +#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:75 msgid "&Tweet" msgstr "&Tuit" @@ -2694,60 +2716,112 @@ msgid "New &trending topics buffer..." msgstr "Nuevo buffer de &tendencias" #: ../src\wxUI\view.py:53 +msgid "Find a string in the currently focused buffer..." +msgstr "Buscar término en el buffer actual" + +#: ../src\wxUI\view.py:54 msgid "&Load previous items" msgstr "&Cargar elementos anteriores" -#: ../src\wxUI\view.py:55 +#: ../src\wxUI\view.py:56 msgid "&Mute" msgstr "S&ilenciar" -#: ../src\wxUI\view.py:56 +#: ../src\wxUI\view.py:57 msgid "&Autoread" msgstr "&lectura automática" -#: ../src\wxUI\view.py:57 +#: ../src\wxUI\view.py:58 msgid "&Clear buffer" msgstr "&Vaciar buffer" -#: ../src\wxUI\view.py:58 +#: ../src\wxUI\view.py:59 msgid "&Destroy" msgstr "&Eliminar" -#: ../src\wxUI\view.py:64 +#: ../src\wxUI\view.py:65 msgid "Sounds &tutorial" msgstr "Tutorial de &sonidos" -#: ../src\wxUI\view.py:65 +#: ../src\wxUI\view.py:66 msgid "&What's new in this version?" msgstr "¿&Qué hay de nuevo en esta versión?" -#: ../src\wxUI\view.py:67 +#: ../src\wxUI\view.py:68 msgid "&Check for updates" msgstr "&Comprobar actualizaciones" -#: ../src\wxUI\view.py:68 +#: ../src\wxUI\view.py:69 msgid "&Report an error" msgstr "&Reportar un error" -#: ../src\wxUI\view.py:73 +#: ../src\wxUI\view.py:70 +msgid "{0}'s &website" +msgstr "Sitio &web de {0}" + +#: ../src\wxUI\view.py:71 +msgid "About &{0}" +msgstr "Sobre &{0}" + +#: ../src\wxUI\view.py:74 msgid "&Application" msgstr "&Aplicación" -#: ../src\wxUI\view.py:75 +#: ../src\wxUI\view.py:76 msgid "&User" msgstr "&Usuario" -#: ../src\wxUI\view.py:76 +#: ../src\wxUI\view.py:77 msgid "&Buffer" msgstr "&Buffer" -#: ../src\wxUI\view.py:77 +#: ../src\wxUI\view.py:78 msgid "&Help" msgstr "Ay&uda" -#: ../src\wxUI\view.py:181 -msgid "Your {0} version is up to date" -msgstr "Tu versión de {0} está actualizada" +#~ msgid "Set the autocomplete function" +#~ msgstr "Configurar la función de autocompletado" + +#~ msgid "Relative times" +#~ msgstr "Tiempos relativos" + +#~ msgid "" +#~ "API calls when the stream is started (One API call equals to 200 tweetts, " +#~ "two API calls equals 400 tweets, etc):" +#~ msgstr "" +#~ "Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " +#~ "tuits, 2 a 400 tuits, etc):" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will be shown at the beginning of the " +#~ "lists while the oldest at the end" +#~ msgstr "" +#~ "Buffers invertidos: los nuevos tweets se mostrarán al principio de las " +#~ "listas y los viejos al final" + +#~ msgid "" +#~ "The authorization request will be opened in your browser. Copy the code " +#~ "from Dropbox and paste it into the text box which will appear. You only " +#~ "need to do this once." +#~ msgstr "" +#~ "La solicitud de autorización se abrirá en tu navegador. Pega el código " +#~ "que te entregará dropbox en el campo de texto que aparecerá a " +#~ "continuación. Esto es necesario hacerlo solo una vez." + +#~ msgid "Enter the code here." +#~ msgstr "Introduce el código aquí" + +#~ msgid "Verification code" +#~ msgstr "Código de verificación" + +#~ msgid "Error during authorisation. Try again later." +#~ msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" + +#~ msgid "TW Blue preferences" +#~ msgstr "Preferencias de TW Blue" + +#~ msgid "Show other buffers" +#~ msgstr "Mostrar otros buffers" #~ msgid "Not actionable." #~ msgstr "No hay acción asociada a este tuit." @@ -2869,13 +2943,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "This account is not logged in twitter." #~ msgstr "No has iniciado sesión con esta cuenta en Twitter." -#~ msgid "" -#~ "A bug has happened. There are no dictionaries available for the selected " -#~ "language in TW Blue" -#~ msgstr "" -#~ "Ha ocurrido un error. No se encuentran diccionarios disponibles para el " -#~ "idioma seleccionado en TW Blue." - #~ msgid "Finished" #~ msgstr "Finalizado" @@ -2894,9 +2961,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "load previous items to any buffer" #~ msgstr "Cargar elementos anteriores para un buffer" -#~ msgid "Restart TW Blue" -#~ msgstr "Reiniciar TW Blue" - #~ msgid "" #~ "The application requires to be restarted to save these changes. Press OK " #~ "to do it now." @@ -2973,9 +3037,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "A new event has happened" #~ msgstr "Ha ocurrido un nuevo evento" -#~ msgid "TW Blue is ready " -#~ msgstr "TW Blue está listo" - #~ msgid "You've replied" #~ msgstr "Has enviado una respuesta" @@ -3001,15 +3062,9 @@ msgstr "Tu versión de {0} está actualizada" #~ "Asegúrate de completar los sonidos restantes o de ponerte en contacto con " #~ "el creador del paquete." -#~ msgid "Editing TWBlue users database" -#~ msgstr "Editando la base de datos de usuarios de TWBlue" - #~ msgid "See the users list" #~ msgstr "Ver lista de usuarios" -#~ msgid "TWBlue's database of users has been updated." -#~ msgstr "La base de datos de usuarios de TWBlue ha sido actualizada." - #~ msgid "Do you really want to delete this message?" #~ msgstr "¿Realmente quieres eliminar este mensaje?" @@ -3019,9 +3074,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "Do you really want to delete this favourites timeline?" #~ msgstr "¿Realmente deseas eliminar esta línea temporal de favoritos?" -#~ msgid "&Open URL" -#~ msgstr "&Abrir URL..." - #~ msgid "&Play audio" #~ msgstr "&Reproducir audio" @@ -3092,9 +3144,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "&Preferences" #~ msgstr "&Preferencias" -#~ msgid "TW Blue &website" -#~ msgstr "Sitio &web de TW Blue" - #~ msgid "About &TW Blue" #~ msgstr "&Sobre TW Blue" @@ -3119,9 +3168,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "Reconnecting streams..." #~ msgstr "Conectando los streams..." -#~ msgid "search for %s" -#~ msgstr "Buscar %s" - #~ msgid "search users for %s" #~ msgstr "Buscar usuarios para %s" @@ -3163,22 +3209,12 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "%s" #~ msgstr "%s" -#~ msgid "Preferences" -#~ msgstr "Preferencias" - #~ msgid "Documentation" #~ msgstr "Documentación" #~ msgid "Translation" #~ msgstr "Traducción" -#~ msgid "" -#~ "I know that the TW Blue bug system will get my Twitter username to " -#~ "contact me and fix the bug quickly" -#~ msgstr "" -#~ "Sé que el sistema de errores de TW Blue obtendrá mi nombre de usuario de " -#~ "Twitter para contactarme y resolver el error rápidamente" - #~ msgid "Move up one tweet in the conversation" #~ msgstr "Ir un tuit hacia arriba en la conversación" @@ -3206,9 +3242,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "Select a twitter account to start TW Blue" #~ msgstr "Selecciona una cuenta de Twitter para iniciar TW Blue" -#~ msgid "Account" -#~ msgstr "Cuenta" - #~ msgid "Remove session" #~ msgstr "Eliminar sesión" diff --git a/tools/genpot.bat b/tools/genpot.bat index e8d1b86e..dd621a6e 100644 --- a/tools/genpot.bat +++ b/tools/genpot.bat @@ -1,4 +1,4 @@ @echo off echo Generating application translation strings... -C:\python27\python.exe pygettext.py -v -d twblue ../src/*.pyw ../src/*.py ../src/*/*.py ../src/*/*.pyw ../src/*/*/*.py ../src/*/*/*.pyw ../src/*/*/*/*.py ../src/*/*/*/*.pyw ../src/*/*/*/*/*.py ../src/*/*/*/*/*.pyw +C:\python27\python.exe pygettext.py -d twblue ../src/*.pyw ../src/*.py ../src/*/*.py ../src/*/*.pyw ../src/*/*/*.py ../src/*/*/*.pyw ../src/*/*/*/*.py ../src/*/*/*/*.pyw ../src/*/*/*/*/*.py ../src/*/*/*/*/*.pyw C:\python27\python.exe pygettext.py -v -d twblue-documentation ../doc/*.py \ No newline at end of file diff --git a/tools/twblue-documentation.pot b/tools/twblue-documentation.pot index e3ffb243..31b4cec2 100644 --- a/tools/twblue-documentation.pot +++ b/tools/twblue-documentation.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2015-06-12 17:49+Hora de verano central (México)\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (México)\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -20,7 +20,7 @@ msgid "User default" msgstr "" #: ../doc\strings.py:4 -msgid "Documentation for {0} - {1}" +msgid "Documentation for TWBlue - {0}" msgstr "" #: ../doc\strings.py:6 ../doc\strings.py:11 ../doc\strings.py:14 @@ -30,15 +30,27 @@ msgstr "" #: ../doc\strings.py:52 ../doc\strings.py:55 ../doc\strings.py:58 #: ../doc\strings.py:61 ../doc\strings.py:64 ../doc\strings.py:67 #: ../doc\strings.py:70 ../doc\strings.py:73 ../doc\strings.py:76 -#: ../doc\strings.py:79 ../doc\strings.py:94 ../doc\strings.py:97 -#: ../doc\strings.py:100 ../doc\strings.py:103 ../doc\strings.py:106 -#: ../doc\strings.py:109 ../doc\strings.py:112 ../doc\strings.py:115 -#: ../doc\strings.py:118 ../doc\strings.py:124 ../doc\strings.py:127 -#: ../doc\strings.py:130 ../doc\strings.py:133 ../doc\strings.py:136 -#: ../doc\strings.py:148 ../doc\strings.py:151 ../doc\strings.py:160 -#: ../doc\strings.py:163 ../doc\strings.py:166 ../doc\strings.py:181 -#: ../doc\strings.py:184 ../doc\strings.py:191 ../doc\strings.py:194 -#: ../doc\strings.py:205 ../doc\strings.py:208 +#: ../doc\strings.py:79 ../doc\strings.py:82 ../doc\strings.py:85 +#: ../doc\strings.py:88 ../doc\strings.py:91 ../doc\strings.py:107 +#: ../doc\strings.py:110 ../doc\strings.py:113 ../doc\strings.py:117 +#: ../doc\strings.py:120 ../doc\strings.py:123 ../doc\strings.py:129 +#: ../doc\strings.py:132 ../doc\strings.py:135 ../doc\strings.py:138 +#: ../doc\strings.py:144 ../doc\strings.py:147 ../doc\strings.py:150 +#: ../doc\strings.py:153 ../doc\strings.py:156 ../doc\strings.py:167 +#: ../doc\strings.py:170 ../doc\strings.py:179 ../doc\strings.py:182 +#: ../doc\strings.py:200 ../doc\strings.py:203 ../doc\strings.py:211 +#: ../doc\strings.py:214 ../doc\strings.py:223 ../doc\strings.py:226 +#: ../doc\strings.py:229 ../doc\strings.py:232 ../doc\strings.py:235 +#: ../doc\strings.py:238 ../doc\strings.py:259 ../doc\strings.py:262 +#: ../doc\strings.py:309 ../doc\strings.py:313 ../doc\strings.py:316 +#: ../doc\strings.py:319 ../doc\strings.py:328 ../doc\strings.py:331 +#: ../doc\strings.py:334 ../doc\strings.py:337 ../doc\strings.py:340 +#: ../doc\strings.py:343 ../doc\strings.py:346 ../doc\strings.py:349 +#: ../doc\strings.py:352 ../doc\strings.py:355 ../doc\strings.py:358 +#: ../doc\strings.py:361 ../doc\strings.py:371 ../doc\strings.py:374 +#: ../doc\strings.py:377 ../doc\strings.py:380 ../doc\strings.py:383 +#: ../doc\strings.py:386 ../doc\strings.py:389 ../doc\strings.py:392 +#: ../doc\strings.py:395 msgid "" "\n" msgstr "" @@ -52,7 +64,7 @@ msgid "## Warning!" msgstr "" #: ../doc\strings.py:16 -msgid "You're reading documentation produced for a program still in development. The object of this manual is to explain some details of the operation of the program. Bear in mind that as the software is in the process of active development, parts of this document may change in the near future, so it is advisable to keep an eye on it from time to time to avoid missing too much out." +msgid "You are reading documentation produced for a program still in development. The object of this manual is to explain some details of the operation of the program. Bear in mind that as the software is in the process of active development, parts of this user guide may change in the near future, so it is advisable to keep checking from time to time to avoid missing important information." msgstr "" #: ../doc\strings.py:19 @@ -64,11 +76,11 @@ msgid "## Introduction" msgstr "" #: ../doc\strings.py:25 -msgid "TW Blue is an application to make Twitter simple and fast, while using as few resources as possible. With it, you can do things like the following:" +msgid "TWBlue is an application to make Twitter simple and fast, while using as few resources as possible. With TWBlue, you can do things like the following:" msgstr "" #: ../doc\strings.py:28 -msgid "* Tweet, reply, retweet and delete tweets," +msgid "* Tweet, reply to, retweet and delete tweets," msgstr "" #: ../doc\strings.py:29 @@ -108,359 +120,842 @@ msgid "## Usage" msgstr "" #: ../doc\strings.py:42 -msgid "In order to use an application like TW Blue which allows you to manage your Twitter account, you must first be registered on it. It's beyond the scope of this document to explain how to do so. We'll start from the premise that you have an account with its corresponding user name and password." +msgid "Twitter is a social networking or micro-blogging tool which allows you to compose short status updates of your activities in 140 characters or less. Twitter is a way for friends, family and co-workers to communicate and stay connected through the exchange of quick, frequent messages. You can restrict delivery of updates to those in your circle of friends or, by default, allow anyone to access them." msgstr "" #: ../doc\strings.py:45 -msgid "### Authorising the application" +msgid "You can monitor the status of updates from your friends, family or co-workers (known as following), and they in turn can read any updates you create, (known as followers). The updates are referred to as Tweets. The Tweets are posted to your Twitter profile or Blog and are searchable using Twitter Search." msgstr "" #: ../doc\strings.py:48 -msgid "First off, it's necessary to authorise the program so it can access your Twitter account and act on your behalf. The authorisation process is quite simple, and the program never gets data such as your username and password. In order to authorise the application, you just need to run the main executable file, called TWBlue.exe (on some computers it may appear simply as TWBlue)." +msgid "In order to use TWBlue, you must first have created an account on the Twitter website. The process for signing up for a Twitter account is very accessible. During the account registration, you will need to choose a Twitter username. This serves two purposes. This is the method through which people will comunicate with you, but most importantly, your username and password will be required to connect TWBlue to your Twitter account. We suggest you choose a username which is memorable both to you and the people you hope will follow you." msgstr "" #: ../doc\strings.py:51 -msgid "Whether this is the first time you open TWBlue or you don't have any session, you will see the session manager. This dialog allows you to authorise as many accounts as you wish. If you press the \"new account\" button a dialog will tell you that your default browser will be opened in order to authorise the application. Press \"yes\" so the process may start." +msgid "We'll start from the premise that you have a Twitter account with its corresponding username and password." msgstr "" #: ../doc\strings.py:54 -msgid "Your default browser will open on the Twitter page to request authorisation. Enter your user name and password if you're not already logged in, look for the authorise button, and press it." +msgid "### Authorising the application" msgstr "" #: ../doc\strings.py:57 -msgid "Once you've authorised your twitter account, Twitter will redirect you to a web page which will notify you that TWBlue has been authorised successfully. Now you are able to close that window and come back to the session manager. You will see on the session list a new item temporally called \"Authorised account x\" -where x is a number. The session name will change once you open that session." +msgid "First of all, it's necessary to authorise the program so it can access your Twitter account and act on your behalf. The authorisation process is quite simple, and the program never retains data such as your password. In order to authorise the application, you just need to run the main executable file, called TWBlue.exe (on some computers it may appear simply as TWBlue if Windows Explorer is not set to display file extensions). We suggest you may like to place a Windows shortcut on your Desktop pointing to this executable file for quick and easy location." msgstr "" #: ../doc\strings.py:60 -msgid "To start running TWBlue, press the Ok button in the session manager dialog. By default, TWBlue starts all the configured sessions, however, you can change this behavior." +msgid "TWBlue allows you to monitor several Twitter accounts simultaneously. The program refers to each Twitter account you have configured as a \"Session\". If this is the first time you have launched TWBlue, and if no Twitter session exists, you will see the Session Manager. This dialogue box allows you to authorise as many accounts as you wish. If you press the Tab key to reach the \"new account\" button and activate it by pressing the Space Bar, a dialogue box will advise you that your default internet browser will be opened in order to authorise the application and you will be asked if you would like to continue. Activate the \"yes\" Button by pressing the letter \"Y\" so the process may start." msgstr "" #: ../doc\strings.py:63 -msgid "If all went well, the application will start playing sounds, indicating your data are being updated." +msgid "Your default browser will open on the Twitter page to request authorisation. Enter your username and password into the appropriate edit fields if you're not already logged in, select the authorise button, and press it." msgstr "" #: ../doc\strings.py:66 -msgid "When the process is finished, the program will play another sound, and the screen reader will say \"ready\"." +msgid "Once you've authorised your twitter account, the website will redirect you to a page which will notify you that TWBlue has been authorised successfully. Now you are able to close the page by pressing ALT+F4 which will return you to the Session Manager. On the session list, you will see a new item temporarily called \"Authorised account x\" -where x is a number. The session name will change once you open that session." msgstr "" #: ../doc\strings.py:69 -msgid "## The program's interface" +msgid "To start running TWBlue, press the Ok button in the Session Manager dialogue. By default, TWBlue starts all the configured sessions automatically, however, you can change this behavior." msgstr "" #: ../doc\strings.py:72 -msgid "The easiest way to describe the graphical user interface of TWBlue is saying that the application has a window which contains a menu bar with five menus (application, tweet, user, buffer and help); one tree view, one list of items and, mostly in every case, three buttons: Tweet, retweet and reply. The actions that are available for every item will be described later." +msgid "If all went well, the application will start playing sounds, indicating your data is being updated." msgstr "" #: ../doc\strings.py:75 -msgid "In the tree view are inserted buffers which are lists to manage the processed data. When you configure a new session on TWBlue and start it, your account is the root of the tree view. Inside of it many buffers are created. Each one of them may contain some of the items which TWBlue works with: Tweets, direct messages, users, trends or events. According to the buffer you were, you will be able to make different actions with these items." +msgid "When the process is finished, by default the program will play another sound, and the screen reader will say \"ready\" (this behaviour can be configured)." msgstr "" #: ../doc\strings.py:78 -msgid "The following is a description for every kind of TWBlue's buffer and the kind of items they work with." +msgid "## General concepts" msgstr "" #: ../doc\strings.py:81 -msgid "* Home: it shows all the tweets on the main timeline. These are the tweets by users you follow." -msgstr "" - -#: ../doc\strings.py:82 -msgid "* Mentions: if a user, whether you follow them or not, mentions you on Twitter, you will find it on this list." -msgstr "" - -#: ../doc\strings.py:83 -msgid "* Direct messages: here go the private direct messages you exchange with users you follow and who follow you back. This list only shows received messages." +msgid "Before starting to describe TWBlue's usage, we'll explain some concepts that will be used extensively throughout this manual." msgstr "" #: ../doc\strings.py:84 -msgid "* Sent: it shows all the tweets and direct messages sent from your account." -msgstr "" - -#: ../doc\strings.py:85 -msgid "* Favourites: here you will see all tweets you have favourited." -msgstr "" - -#: ../doc\strings.py:86 -msgid "* Followers: when users follow you, you'll be able to see them on this list, with some of their account information." +msgid "### Buffer" msgstr "" #: ../doc\strings.py:87 -msgid "* Friends: the same as the previous list, but these are the users you follow." -msgstr "" - -#: ../doc\strings.py:88 -msgid "* User timelines: these are lists you may create. They contain only the tweets by a specific user. They're used so you can see the tweets by a single person and you don't want to look all over your timeline. You may create as many as you like." -msgstr "" - -#: ../doc\strings.py:89 -msgid "* Events: An event is anything that happens on Twitter, such as when someone follows you, when someone adds or removes one of your tweets from their favorites list, or when you subscribe to a list. There are many more but TW Blue shows the most common ones in the events buffer so that you can easily keep track of what is happening on your account." +msgid "A buffer is a list of items to manage the data which arrives from Twitter, after being processed by the application. When you configure a new session on TWBlue and start it, many buffers are created. Each of them may contain some of the items which TWBlue works with: Tweets, direct messages, users, trends or events. According to the buffer you are focusing, you will be able to do different actions with these items." msgstr "" #: ../doc\strings.py:90 -msgid "* Lists: A list is similar to a temporary timeline, except that you can configure it to contain tweets from multiple users." -msgstr "" - -#: ../doc\strings.py:91 -msgid "* Search: A search buffer contains the results of a search operation." -msgstr "" - -#: ../doc\strings.py:92 -msgid "* User favorites: You can have TW Blue create a buffer containing tweets favorited by a particular user." +msgid "The following is a description for every one of TWBlue's buffers and the kind of items they work with." msgstr "" #: ../doc\strings.py:93 -msgid "* Trending Topics: a trend buffer shows the top ten most used terms in a geographical region. This region may be a country or a city. Trends are updated every five minutes." +msgid "* Home: this shows all the tweets on the main timeline. These are the tweets by users you follow." +msgstr "" + +#: ../doc\strings.py:94 +msgid "* Mentions: if a user, whether you follow them or not, mentions you on Twitter, you will find it in this list." +msgstr "" + +#: ../doc\strings.py:95 +msgid "* Direct messages: here you will find the private direct messages you exchange with users who follow you , or with any user, if you allow direct messages from everyone (this setting is configurable from Twitter). This list only shows received messages." msgstr "" #: ../doc\strings.py:96 -msgid "If there's a URL on a tweet, TW Blue will try to open it when you press enter on it. If there are several, it will show you a list with all of them so you choose the one you want. If you're on the followers or friends buffer, the enter key will show you additional information about them." +msgid "* Sent direct messages: this buffer shows all the direct messages sent from your account." +msgstr "" + +#: ../doc\strings.py:97 +msgid "* Sent tweets: this shows all the tweets sent from your account." +msgstr "" + +#: ../doc\strings.py:98 +msgid "* Favourites: here you will see all the tweets you have favourited." msgstr "" #: ../doc\strings.py:99 -msgid "If you press control-enter, TW Blue will try to play the audio from the focused tweet, as long as it has a URL. If it has the #audio hashtag, you will hear a sound when it is selected, letting you know you can try to play it. However, a tweet can be missing the hashtag and TW Blue will still be able to play it so long as it contains a URL with audio." +msgid "* Followers: when users follow you, you'll be able to see them on this list, with some of their account details." +msgstr "" + +#: ../doc\strings.py:100 +msgid "* Friends: the same as the previous list, but these are the users you follow." +msgstr "" + +#: ../doc\strings.py:101 +msgid "* User timelines: these are buffers you may create. They contain only the tweets by a specific user. They're used so you can see the tweets by a single person and you don't want to look all over your timeline. You may create as many as you like." msgstr "" #: ../doc\strings.py:102 -msgid "You will also hear a sound when you see any tweet containing geographical information. You can see someone's location by selecting the option \"view address\" from the tweet menu on the menu bar." +msgid "* Events: An event is anything that happens on Twitter, such as when someone follows you, when someone adds or removes one of your tweets from their favourites list, or when you subscribe to a list. There are many more, but TWBlue shows the most common ones in the events buffer so that you can easily keep track of what is happening on your account." +msgstr "" + +#: ../doc\strings.py:103 +msgid "* Lists: A list is similar to a user timeline, except that you can configure it to contain tweets from multiple users." +msgstr "" + +#: ../doc\strings.py:104 +msgid "* Search: A search buffer contains the results of a search operation." msgstr "" #: ../doc\strings.py:105 -msgid "## Controls" +msgid "* User favourites: You can have TWBlue create a buffer containing tweets favourited by a particular user." msgstr "" -#: ../doc\strings.py:108 -msgid "Beginning with the 0.36 version, there's support for an interface which does not require a visible window. It can be activated by pressing control-m, or choosing hide window from the application menu. This interface is entirely driven through shortcut keys. These shortcuts are different from those used to drive the graphical interface. By default, you can't use the invisible interface shortcuts on the GUI. It has been made this way to keep compatibility with applications like TheQube and Chicken nugget which may use the same shortcuts. If you wish to have available the invisible interface shortcuts even if you are using the GUI, activate this option on the General tab of the preferences dialogue. This section describes both the graphical and the invisible interface." +#: ../doc\strings.py:106 +msgid "* Trending Topics: a trend buffer shows the top ten most used terms in a geographical region. This region may be a country or a city. Trends are updated every five minutes." msgstr "" -#: ../doc\strings.py:111 +#: ../doc\strings.py:109 +msgid "If a tweet contains a URL, you can press enter in the GUI or Control + Windows + Enter in the invisible interface to open it. If it contains audio, you can press Control + Enter or Control + Windows + Alt + Enter to play it, respectively. TWBlue will play a sound if the tweet contains the #audio hashtag, but there may be tweets which contain audio without this. Finally, if a tweet contains geographical information, you can press Control + Windows + G in the invisible interface to retrieve it." +msgstr "" + +#: ../doc\strings.py:112 +msgid "### Username fields" +msgstr "" + +#: ../doc\strings.py:115 +msgid "These fields accept a Twitter username (without the at sign) as the input. They are present in the send direct message and the user actions dialogue boxes. Those dialogues will be discussed later. The initial value of these fields depends on where they were opened from. They are prepopulated with the username of the sender of the focused tweet (if they were opened from the home and sent timelines, from users'' timelines or from lists), the sender of the focused direct message (if from the received or sent direct message buffers) or in the focused user (if from the followers' or friends' buffer). If one of those dialogue boxes is opened from a tweet, and if there are more users mentioned in it, you can use the arrow keys to switch between them. Alternatively, you can also type a username." +msgstr "" + +#: ../doc\strings.py:116 +msgid "## TWBlue's interfaces'" +msgstr "" + +#: ../doc\strings.py:119 msgid "### The graphical user interface (GUI)" msgstr "" -#: ../doc\strings.py:114 -msgid "Here you have a list divided into two parts. On the one hand, the buttons you will find while tabbing around on the program's interface, and on the other, the different elements present on the menu bar." -msgstr "" - -#: ../doc\strings.py:117 -msgid "#### Buttons on the application" -msgstr "" - -#: ../doc\strings.py:120 -msgid "* Tweet: this button opens up a dialogue box to write your tweet. The message must not exceed 140 characters. If you write past this limit, a sound will play to warn you. You may use the shorten and expand URL buttons to comply with the character limit. You can translate your message, upload a picture, check spelling or attach audio by selecting one of the available buttons in the dialogue. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will say an error message in English describing the problem." -msgstr "" - -#: ../doc\strings.py:121 -msgid "* Retweet: this button retweets the message you're reading. After you press it, you'll be asked if you want to add a comment or simply send it as written." -msgstr "" - #: ../doc\strings.py:122 -msgid "* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up like the one for tweeting, but with the name of the user already filled in (for example @user) so you only need to write your message. If there are more users mentioned on the tweet, you can press shift-tab and press the mention all users button. When you're on the friends or followers lists, the button will be called mention instead." +msgid "The graphical user interface of TWBlue consists of a window containing:" msgstr "" -#: ../doc\strings.py:123 -msgid "* Direct message: exactly like sending a tweet, but it's a private message which can only be read by the user you send it to. Press shift-tab to see the recipient. If there were other users mentioned on the tweet you were reading, you can arrow up or down to choose which one to send it to, or write the username yourself without the at sign." +#: ../doc\strings.py:125 +msgid "* a menu bar accomodating five menus (application, tweet, user, buffer and help);" msgstr "" #: ../doc\strings.py:126 -msgid "Bear in mind that buttons will appear according to which actions are possible on the list you are browsing. For example, on the home timeline, mentions, sent, favourites and user timelines you will see the four buttons, while on the direct messages list you'll only get the direct message and tweet buttons, and on friends and followers lists you will get the direct message, tweet, and mention buttons." +msgid "* One tree view," msgstr "" -#: ../doc\strings.py:129 -msgid "#### Menus" +#: ../doc\strings.py:127 +msgid "* One list of items" msgstr "" -#: ../doc\strings.py:132 -msgid "On top of the program window there's a menu bar which has the same functions, and some more. To access the menu bar, press alt. You will find five: application, tweet, user, buffer and help. This section describes the items on each one of them." +#: ../doc\strings.py:128 +msgid "* Three buttons in most dialogs: Tweet, retweet and reply." msgstr "" -#: ../doc\strings.py:135 -msgid "##### Application menu" +#: ../doc\strings.py:131 +msgid "The actions that are available for every item will be described later." msgstr "" -#: ../doc\strings.py:138 -msgid "* Session manager: Opens a window with all the sessions configured in TWBlue, where you can add new sessions or delete the ones you've already created." +#: ../doc\strings.py:134 +msgid "In summary, the GUI contains two core components. These are the controls you will find while pressing the Tab key within the program's interface, and the different elements present on the menu bar." msgstr "" -#: ../doc\strings.py:139 -msgid "* Update profile: opens a dialogue box where you can update your information on Twitter: name, location, URL and bio. If you have already set this up the fields will be prefilled with the existing information. Also, you can upload a photo to your profile." +#: ../doc\strings.py:137 +msgid "#### Buttons in the application" msgstr "" #: ../doc\strings.py:140 -msgid "* Hide window: turns off the Graphical User Interface. Read the section on the invisible interface for further details." +msgid "* Tweet: this button opens up a dialogue box to write your tweet. The message must not exceed 140 characters. If you write past this limit, a sound will play to warn you. Note that the character count is displayed in the title bar. You may use the shorten and expand URL buttons to comply with the character limit. You can upload a picture, check spelling, attach audio or translate your message by selecting one of the available buttons in the dialogue box. In addition, you can autocomplete the entering of users by pressing Alt + A or the button for that purpose if you have the database of users configured. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will speak an error message in English describing the problem." msgstr "" #: ../doc\strings.py:141 -msgid "* Search: shows a dialog where you can search for tweets or users on Twitter." +msgid "* Retweet: this button retweets the message you're reading. After you press it, if you haven't configured the application not to do so, you'll be asked if you want to add a comment or simply send it as written. If you choose to add a comment, and if the original tweet plus the comment exceeds 140 characters, you will be asked if you want to post it as a comment with a mention to the original user and a link to the originating tweet." msgstr "" #: ../doc\strings.py:142 -msgid "* View trending topics: It opens a buffer to get the trending topics of a country or a city. You'll be able to select from a dialog if you wish to get countries' trends or cities' trends and choose one from the selected list. The trending topics buffer will be created once pressing \"ok\" on this dialog. Remember this kind of buffer will be updated every five minutes." +msgid "* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up similar to the one for tweeting, but with the name of the user already filled in (for example @user) so you only need to write your message. If there are more users referred to in the tweet, you can press shift-tab and activate the mention all users button. When you're on the friends or followers lists, the button will be called mention instead." msgstr "" #: ../doc\strings.py:143 -msgid "* Lists Manager: This dialog allows you to manage your Twitter lists. In order to use them, you must first create them. Here, you can view, edit, create, delete or, optionally, open them in buffers similar to temporary timelines." +msgid "* Direct message: exactly like sending a tweet, but it's a private message which can only be read by the user you send it to. Press shift-tab to see the recipient. If there were other users mentioned in the tweet you were reading, you can arrow up or down to choose which one to send it to, or write the username yourself without the at sign." msgstr "" -#: ../doc\strings.py:144 -msgid "* Sounds tutorial: Opens a dialog where you can familiarize yourself with the different sounds of the program." +#: ../doc\strings.py:146 +msgid "Bear in mind that buttons will appear according to which actions are possible on the list you are browsing. For example, on the home timeline, mentions, sent, favourites and user timelines you will see the four buttons, while on the direct messages list you'll only get the direct message and tweet buttons, and on friends and followers lists the direct message, tweet, and mention buttons will be available." msgstr "" -#: ../doc\strings.py:145 -msgid "* Edit keystrokes: It opens a dialog where you can see and re edit the invisible interface shortcuts." +#: ../doc\strings.py:149 +msgid "#### Menus" msgstr "" -#: ../doc\strings.py:147 -msgid "* Quit: asks whether you want to exit the program. If the answer is yes, it shuts the application down. If you wish TWBlue not to ask you for confirmation before exiting, uncheck the checkbox from the preferences dialogue." -msgstr "" - -#: ../doc\strings.py:150 -msgid "##### Tweet menu" -msgstr "" - -#: ../doc\strings.py:153 -msgid "* You will first find the items to tweet, reply and retweet, which are equivalent to the buttons with the same name." -msgstr "" - -#: ../doc\strings.py:154 -msgid "* Mark as favourite: marks the tweet you're viewing as a favourite." +#: ../doc\strings.py:152 +msgid "Visually, Towards the top of the main application window, can be found a menu bar which contains many of the same functions as listed in the previous section, together with some additional items. To access the menu bar, press the alt key. You will find five menus listed: application, tweet, user, buffer and help. This section describes the items on each one of them." msgstr "" #: ../doc\strings.py:155 -msgid "* Remove tweet from favourites: removes the tweet from your favourites, but not from Twitter." +msgid "##### Application menu" msgstr "" -#: ../doc\strings.py:156 -msgid "* Show tweet: opens up a dialogue box where you can read the tweet, direct message, friend or follower under focus. You can read the text with the arrow keys. It's the same dialogue box used to write tweets on." -msgstr "" - -#: ../doc\strings.py:157 -msgid "* View address: If the selected tweet has geographical information, TWBlue may display a dialog where you can read the tweet address. This address is got by sending the geographical coordinates of the tweet to Google maps." +#: ../doc\strings.py:158 +msgid "* Manage accounts: Opens a window with all the sessions configured in TWBlue, where you can add new sessions or delete the ones you've already created." msgstr "" #: ../doc\strings.py:159 -msgid "* Delete: permanently removes the tweet or direct message you're on from Twitter and from your lists. Bear in mind that Twitter only allows you to delete tweets you have posted yourself." +msgid "* Update profile: opens a dialogue where you can update your information on Twitter: name, location, website and bio. If you have already set this up the fields will be prefilled with the existing information. Also, you can upload a photo to your profile." +msgstr "" + +#: ../doc\strings.py:160 +msgid "* Hide window: turns off the Graphical User Interface. Read the section on the invisible interface for further details." +msgstr "" + +#: ../doc\strings.py:161 +msgid "* Search: shows a dialogue box where you can search for tweets or users on Twitter." msgstr "" #: ../doc\strings.py:162 -msgid "##### User menu" +msgid "* Lists Manager: This dialogue box allows you to manage your Twitter lists. In order to use them, you must first create them. Here, you can view, edit, create, delete or, optionally, open them in buffers similar to user timelines." +msgstr "" + +#: ../doc\strings.py:163 +msgid "* Edit keystrokes: this opens a dialogue where you can see and edit the shortcuts relative to the invisible interface." +msgstr "" + +#: ../doc\strings.py:164 +msgid "* Account settings: Opens a dialogue box which lets you customize settings for the current account." msgstr "" #: ../doc\strings.py:165 -msgid "The available actions you can choose are described below:" +msgid "* Global settings: Opens a dialogue which lets you configure settings for the entire application." msgstr "" -#: ../doc\strings.py:168 -msgid "* Follow: Follows a user. This means you'll see his/her tweets on your main timeline, and if he/she also follows you, you'll be able to interchange direct messages." +#: ../doc\strings.py:166 +msgid "* Quit: asks whether you want to exit the program. If the answer is yes, it closes the application. If you wish TWBlue not to ask you for confirmation before exiting, uncheck the checkbox from the global settings dialogue box." msgstr "" #: ../doc\strings.py:169 -msgid "* Unfollow: Stops following a user, which causes you not being able to see his/her tweets on your main timeline neither interchanging direct messages." -msgstr "" - -#: ../doc\strings.py:170 -msgid "* Mute: While muting someone, TWBlue won't show you nor his/her tweets on your main timeline; neither you'll see that person's mentions. But you both will be able to interchange direct messages. The muted user is not informed of this action." -msgstr "" - -#: ../doc\strings.py:171 -msgid "* Unmute: It turns the way TWBlue treats this user to its normal way. You will see his/her tweets and mentions again." +msgid "##### Tweet menu" msgstr "" #: ../doc\strings.py:172 -msgid "* Report as spam: It suggests twitter this user is performing prohibited practices on the social network." +msgid "* You will first find the items to tweet, reply and retweet, which are equivalent to the buttons with the same name." msgstr "" #: ../doc\strings.py:173 -msgid "* Block: Blocks a user. This forces the user to unfollow you ." +msgid "* Add to favourites: marks the tweet you're viewing as a favourite." msgstr "" #: ../doc\strings.py:174 -msgid "* Unblock: Stops blocking a user." +msgid "* Remove from favourites: removes the tweet from your favourites, but not from Twitter." msgstr "" #: ../doc\strings.py:175 -msgid "* Direct message: same action as the button." +msgid "* Show tweet: opens up a dialogue box where you can read the tweet, direct message, friend or follower which has focus. You can read the text with the arrow keys. It's a similar dialog box as used for composing tweets, without the ability to send the tweet, file attachment and autocompleting capabilities. It does however include a retweets and favourites count. If you are in the followers or the friends list, it will only contain a read-only edit box with the information in the focused item and a close button." msgstr "" #: ../doc\strings.py:176 -msgid "* Add to List: In order to see someone's tweets in one or more of your lists, you must add them first. This option will open a dialog where you can select the user you wish to add. Next, you will be asked to select the list you wish to add them to. Afterwards, the list will contain a new member and their tweets will show up there." +msgid "* View address: If the selected tweet has geographical information, TWBlue may display a dialogue box where you can read the tweet address. This address is retrieved by sending the geographical coordinates of the tweet to Google maps." +msgstr "" + +#: ../doc\strings.py:177 +msgid "* View conversation: If you are focusing a tweet with a mention, it opens a buffer where you can view the whole conversation." msgstr "" #: ../doc\strings.py:178 -msgid "* View user profile: opens up a dialogue box to choose the user whose profile you want to browse." +msgid "* Delete: permanently removes the tweet or direct message which has focus from Twitter and from your lists. Bear in mind that Twitter only allows you to delete tweets you have posted yourself." msgstr "" -#: ../doc\strings.py:179 -msgid "* Timeline: Lets you open a user's timeline by choosing the user in a dialog box. It is created when you press enter. If you try it with a user that has no tweets, the program will fail. If you try creating an already existing timeline the program will warn you and will not create it again." +#: ../doc\strings.py:181 +msgid "##### User menu" msgstr "" -#: ../doc\strings.py:180 -msgid "* View favourites: Opens a buffer where you can see what tweets have been favorited by a particular user." +#: ../doc\strings.py:184 +msgid "* Actions: Opens a dialogue where you can interact with a user. This dialogue box will be populated with the user who sent the tweet or direct message in focus or the selected user in the friends or followers buffer. You can edit it or leave it as is and choose one of the following actions:" msgstr "" -#: ../doc\strings.py:183 -msgid "##### Buffer menu" +#: ../doc\strings.py:185 +msgid " * Follow: Follows a user. This means you'll see his/her tweets on your home timeline, and if he/she also follows you, you'll be able to exchange direct messages. You may also send / receive direct messages from each other if you have configured the option to allow direct messages from anyone." +msgstr "" + +#: ../doc\strings.py:186 +msgid " * Unfollow: Stops following a user, which causes you not being able to see his/her tweets on your main timeline neither exchanging direct messages, unless they have enabled receiving direct messages from anyone." msgstr "" #: ../doc\strings.py:187 -msgid "* Mute buffer: Mutes notifications of a particular buffer so you will not hear when new tweets arrive." +msgid " * Mute: While muting someone, TWBlue won't show you nor his/her tweets on your main timeline; neither will you see that person's mentions. But you both will be able to exchange direct messages. The muted user is not informed of this action." msgstr "" #: ../doc\strings.py:188 -msgid "* autoread tweets for this buffer: When enabled, the screen reader or SAPI 5 (if enabled) will read the text of incoming tweets. Please note that this could get rather chatty if there are a lot of incoming tweets." +msgid " * Unmute: this option allows TWBlue to display the user's tweets and mentions again." msgstr "" #: ../doc\strings.py:189 -msgid "* Clear buffer: Deletes all items from the buffer." +msgid " * Block: Blocks a user. This forces the user to unfollow you ." msgstr "" #: ../doc\strings.py:190 -msgid "* Remove buffer: dismiss the list you're on." +msgid " * Unblock: Stops blocking a user." +msgstr "" + +#: ../doc\strings.py:191 +msgid " * Report as spam: this option sends a message to Twitter suggesting the user is performing prohibited practices on the social network." +msgstr "" + +#: ../doc\strings.py:192 +msgid " * Ignore tweets from this client: Adds the client from which the focused tweet was sent to the ignored clients list." msgstr "" #: ../doc\strings.py:193 -msgid "##### Help menu" +msgid "* View timeline: Lets you open a user's timeline by choosing the user in a dialog box. It is created when you press enter. If you invoke this option relative to a user that has no tweets, the program will fail. If you try creating an existing timeline the program will warn you and will not create it again." +msgstr "" + +#: ../doc\strings.py:194 +msgid "* Direct message: same action as the button." +msgstr "" + +#: ../doc\strings.py:195 +msgid "* Add to List: In order to see someone's tweets in one or more of your lists, you must add them first. In the dialogue box that opens after selecting the user, you will be asked to select the list you wish to add the user to. Thereafter, the list will contain a new member and their tweets will be displayed there." msgstr "" #: ../doc\strings.py:196 -msgid "* Documentation: opens up this file, where you can read some useful program concepts." +msgid "* Remove from list: lets you remove a user from a list." msgstr "" #: ../doc\strings.py:197 -msgid "* What's new in this version?: opens up a document with the list of changes from the current version down to the first." +msgid "* View lists: Shows the lists created by a specified user." msgstr "" #: ../doc\strings.py:198 -msgid "* Check for updates: every time you open the program it automatically checks for new versions. If there is any, it will ask you if you want to download it. If you accept, it will do so, after which it will install it and ask you to let it restart itself, which it does automatically. This item checks for new updates without having to restart the application." +msgid "* Show user profile: opens a dialogue with the profile of the specified user." msgstr "" #: ../doc\strings.py:199 -msgid "* Report a bug: opens up a dialogue box to report a bug by filling a couple of fields. Pressing enter will send the report. If the operation doesn't succeed the program will show a warning." -msgstr "" - -#: ../doc\strings.py:200 -msgid "* TW Blue's website: visit our [home page](http://twblue.es) where you can find all relevant information and downloads for TW Blue and become a part of the community." -msgstr "" - -#: ../doc\strings.py:201 -msgid "* About TW Blue: shows the credits of the program." +msgid "* View favourites: Opens a buffer where you can see the tweets which have been favourited by a particular user." msgstr "" #: ../doc\strings.py:202 -msgid "" -"...\n" +msgid "##### Buffer menu" msgstr "" -#: ../doc\strings.py:204 -msgid "## Contact" +#: ../doc\strings.py:205 +msgid "* New trending topics buffer: This opens a buffer to get the worlwide trending topics or those of a country or a city. You'll be able to select from a dialogue box if you wish to retrieve countries' trends, cities' trends or worldwide trends (this options is in the cities' list) and choose one from the selected list. The trending topics buffer will be created once the \"OK\" button has been activated within the dialogue box. Remember this kind of buffer will be updated every five minutes." +msgstr "" + +#: ../doc\strings.py:206 +msgid "* Load previous items: This allows more items to be loaded for the specified buffer." msgstr "" #: ../doc\strings.py:207 -msgid "If what's explained in this document is not enough, if you want to collaborate in some other way, or if you simply want to get in touch with the application developer, follow the Twitter account [@tw_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/manuelcortez00) You can also visit [our website](http://twblue.com.mx)" +msgid "* Mute: Mutes notifications of a particular buffer so you will not hear when new tweets arrive." +msgstr "" + +#: ../doc\strings.py:208 +msgid "* autoread: When enabled, the screen reader or SAPI 5 Text to Speech voice (if enabled) will read the text of incoming tweets. Please note that this could get rather chatty if there are a lot of incoming tweets." +msgstr "" + +#: ../doc\strings.py:209 +msgid "* Clear buffer: Deletes all items from the buffer." msgstr "" #: ../doc\strings.py:210 +msgid "* Destroy: dismisses the list you're on." +msgstr "" + +#: ../doc\strings.py:213 +msgid "##### Help menu" +msgstr "" + +#: ../doc\strings.py:216 +msgid "* Documentation: opens up this file, where you can read some useful program concepts." +msgstr "" + +#: ../doc\strings.py:217 +msgid "* Sounds tutorial: Opens a dialog box where you can familiarize yourself with the different sounds of the program." +msgstr "" + +#: ../doc\strings.py:218 +msgid "* What's new in this version?: opens up a document with the list of changes from the current version to the earliest." +msgstr "" + +#: ../doc\strings.py:219 +msgid "* Check for updates: every time you open the program it automatically checks for new versions. If an update is available, it will ask you if you want to download the update. If you accept, the updating process will commence. When complete, TWBlue will be restarted. This item checks for new updates without having to restart the application." +msgstr "" + +#: ../doc\strings.py:220 +msgid "* Report an error: opens up a dialogue box to report a bug by completing a small number of fields. Pressing enter will send the report. If the operation doesn't succeed the program will display a warning." +msgstr "" + +#: ../doc\strings.py:221 +msgid "* TWBlue's website: visit our [home page](http://twblue.es) where you can find all relevant information and downloads for TWBlue and become a part of the community." +msgstr "" + +#: ../doc\strings.py:222 +msgid "* About TWBlue: shows the credits of the program." +msgstr "" + +#: ../doc\strings.py:225 +msgid "### The invisible user interface" +msgstr "" + +#: ../doc\strings.py:228 +msgid "The invisible interface, as its name suggests, has no graphical window and works directly with screen readers such as JAWS for Windows, NVDA and System Access. This interface is disabled by default, but you can enable it by pressing Control + M. It works similarly to TheQube and Chicken Nugget. Its shortcuts are similar to those found in these two clients. In addition, TWBlue has builtin support for the keymaps for these applications, configurable through the global settings dialogue. By default, you cannot use this interface's shortcuts in the GUI, but you can configure this in the global settings dialogue." +msgstr "" + +#: ../doc\strings.py:231 +msgid "The next section contains a list of keyboard shortcuts for both interfaces. Bear in mind that we will only describe the default keymap." +msgstr "" + +#: ../doc\strings.py:234 +msgid "## Keyboard shortcuts" +msgstr "" + +#: ../doc\strings.py:237 +msgid "### Shortcuts of the graphical user interface (GUI)" +msgstr "" + +#: ../doc\strings.py:240 +msgid "* Enter: Open URL." +msgstr "" + +#: ../doc\strings.py:241 +msgid "* Control + Enter: Play audio." +msgstr "" + +#: ../doc\strings.py:242 +msgid "* Control + M: Hide the GUI." +msgstr "" + +#: ../doc\strings.py:243 +msgid "* Control + N: Compose a new tweet." +msgstr "" + +#: ../doc\strings.py:244 +msgid "* Control + R: Reply / mention." +msgstr "" + +#: ../doc\strings.py:245 +msgid "* Control + Shift + R: Retweet." +msgstr "" + +#: ../doc\strings.py:246 +msgid "* Control + D: Send a direct message." +msgstr "" + +#: ../doc\strings.py:247 +msgid "* control + F: Add tweet to favourites." +msgstr "" + +#: ../doc\strings.py:248 +msgid "* Control + Shift + F: Remove a tweet from favourites." +msgstr "" + +#: ../doc\strings.py:249 +msgid "* Control + S: Open the user actions dialogue." +msgstr "" + +#: ../doc\strings.py:250 +msgid "* Control + Shift + V: Show tweet." +msgstr "" + +#: ../doc\strings.py:251 +msgid "* Control + Q: Quit TWBlue." +msgstr "" + +#: ../doc\strings.py:252 +msgid "* Control + I: Open user timeline." +msgstr "" + +#: ../doc\strings.py:253 +msgid "* Control + Shift + i: Destroy buffer." +msgstr "" + +#: ../doc\strings.py:254 +msgid "* F5: Increase volume by 5%." +msgstr "" + +#: ../doc\strings.py:255 +msgid "* F6: Decrease volume by 5%." +msgstr "" + +#: ../doc\strings.py:256 +msgid "* Control + P: Edit your profile." +msgstr "" + +#: ../doc\strings.py:257 +msgid "* Control + Delete: Delete a tweet or direct message." +msgstr "" + +#: ../doc\strings.py:258 +msgid "* Control + Shift + Delete: Empty the current buffer." +msgstr "" + +#: ../doc\strings.py:261 +msgid "### Shortcuts of the invisible interface (default keymap)" +msgstr "" + +#: ../doc\strings.py:264 +msgid "* Control + Windows + Up Arrow: moves to the previous item in the buffer." +msgstr "" + +#: ../doc\strings.py:265 +msgid "* Control + Windows + Down Arrow: moves to the next item in the buffer." +msgstr "" + +#: ../doc\strings.py:266 +msgid "* Control + Windows + Left Arrow: Move to the previous buffer." +msgstr "" + +#: ../doc\strings.py:267 +msgid "* Control + Windows + Right Arrow: Move to the next buffer." +msgstr "" + +#: ../doc\strings.py:268 +msgid "* Control + Windows + Shift + Left: Focus the previous session." +msgstr "" + +#: ../doc\strings.py:269 +msgid "* Control + Windows + Shift + Right: Focus the next session." +msgstr "" + +#: ../doc\strings.py:270 +msgid "* Control + Windows + C: View conversation." +msgstr "" + +#: ../doc\strings.py:271 +msgid "* Control + Enter: Open URL." +msgstr "" + +#: ../doc\strings.py:272 +msgid "* Control + Windows + Enter: Play audio." +msgstr "" + +#: ../doc\strings.py:273 +msgid "* Control + Windows + M: Show or hide the GUI." +msgstr "" + +#: ../doc\strings.py:274 +msgid "* Control + Windows + N: New tweet." +msgstr "" + +#: ../doc\strings.py:275 +msgid "* Control + Windows + R: Reply / Mention." +msgstr "" + +#: ../doc\strings.py:276 +msgid "* Control + Windows + Shift + R: Retweet." +msgstr "" + +#: ../doc\strings.py:277 +msgid "* Control + Windows + D: Send direct message." +msgstr "" + +#: ../doc\strings.py:278 +msgid "* Windows+ Alt + F: Mark as favourite." +msgstr "" + +#: ../doc\strings.py:279 +msgid "* Alt + Windows + Shift + F: Remove from favourites." +msgstr "" + +#: ../doc\strings.py:280 +msgid "* Control + Windows + S: Open the user actions dialogue." +msgstr "" + +#: ../doc\strings.py:281 +msgid "* Control + Windows + Alt + N: See user details." +msgstr "" + +#: ../doc\strings.py:282 +msgid "* Control + Windows + V: Show tweet." +msgstr "" + +#: ../doc\strings.py:283 +msgid "* Control + Windows + F4: Quit TWBlue." +msgstr "" + +#: ../doc\strings.py:284 +msgid "* Control + Windows + I: Open user timeline." +msgstr "" + +#: ../doc\strings.py:285 +msgid "* Control + Windows + Shift + I: Destroy buffer." +msgstr "" + +#: ../doc\strings.py:286 +msgid "* Control + Windows + Alt + Up: Increase volume by 5%." +msgstr "" + +#: ../doc\strings.py:287 +msgid "* Control + Windows + Alt + Down: Decrease volume by 5%." +msgstr "" + +#: ../doc\strings.py:288 +msgid "* Control + Windows + Home: Jump to the first element of the current buffer." +msgstr "" + +#: ../doc\strings.py:289 +msgid "* Control + Windows + End: Jump to the last element of the current buffer." +msgstr "" + +#: ../doc\strings.py:290 +msgid "* Control + Windows + PageUp: Jump 20 elements up in the current buffer." +msgstr "" + +#: ../doc\strings.py:291 +msgid "* Control + Windows + PageDown: Jump 20 elements down in the current buffer." +msgstr "" + +#: ../doc\strings.py:292 +msgid "* Windows + Alt + P: Edit profile." +msgstr "" + +#: ../doc\strings.py:293 +msgid "* Control + Windows + Delete: Delete a tweet or direct message." +msgstr "" + +#: ../doc\strings.py:294 +msgid "* Control + Windows + Shift + Delete: Empty the current buffer." +msgstr "" + +#: ../doc\strings.py:295 +msgid "* Control + Windows + Space: Repeat last item." +msgstr "" + +#: ../doc\strings.py:296 +msgid "* Control + Windows + Shift + C: Copy to clipboard." +msgstr "" + +#: ../doc\strings.py:297 +msgid "* Control + Windows+ A: Add user to list." +msgstr "" + +#: ../doc\strings.py:298 +msgid "* Control + Windows + Shift + A: Remove user from list." +msgstr "" + +#: ../doc\strings.py:299 +msgid "* Control + Windows + M: Mute / unmute the current buffer." +msgstr "" + +#: ../doc\strings.py:300 +msgid "* Windows + Alt + M: Mute / unmute the current session." +msgstr "" + +#: ../doc\strings.py:301 +msgid "* Control + Windows + E: Toggle the automatic reading of incoming tweets in the current buffer." +msgstr "" + +#: ../doc\strings.py:302 +msgid "* Control + Windows + -: Search on Twitter." +msgstr "" + +#: ../doc\strings.py:303 +msgid "* Control + Windows + K: Show the keystroke editor." +msgstr "" + +#: ../doc\strings.py:304 +msgid "* Control + Windows + L: Show lists for a specified user." +msgstr "" + +#: ../doc\strings.py:305 +msgid "* Windows + Alt + PageUp: Load previous items for the current buffer." +msgstr "" + +#: ../doc\strings.py:306 +msgid "* Control + Windows + G: Get geolocation." +msgstr "" + +#: ../doc\strings.py:307 +msgid "* Control + Windows + Shift + G: Display the tweet's geolocation in a dialogue." +msgstr "" + +#: ../doc\strings.py:308 +msgid "* Control + Windows + T: Create a trending topics' buffer." +msgstr "" + +#: ../doc\strings.py:311 +msgid "## Configuring TWBlue" +msgstr "" + +#: ../doc\strings.py:312 +msgid "As described above, TWBlue has two configuration dialogues, the global settings dialogue and the account settings dialogue." +msgstr "" + +#: ../doc\strings.py:315 +msgid "### The account settings dialogue" +msgstr "" + +#: ../doc\strings.py:318 ../doc\strings.py:360 +msgid "#### General tab" +msgstr "" + +#: ../doc\strings.py:321 +msgid "* Autocompletion settings: Allows you to configure the autocompletion database. You can add users manually or let TWBlue add your followers, friends or both." +msgstr "" + +#: ../doc\strings.py:322 +msgid "* Relative timestamps: Allows you to configure whether TWBlue will calculate the time the tweet or direct message was sent or received based on the current time, or simply say the time it was received or sent." +msgstr "" + +#: ../doc\strings.py:323 +msgid "* API calls: Allows you to adjust the number of API calls to send to Twitter by TWBlue." +msgstr "" + +#: ../doc\strings.py:324 +msgid "* Items on each API calls: Allows you to specify how many items should be retrieved from Twitter for each API call (default and maximum is 200)." +msgstr "" + +#: ../doc\strings.py:325 +msgid "* Inverted buffers: Allows you to specify whether the buffers should be inverted, which means that the oldest items will show at the end of them and the newest at the beginning." +msgstr "" + +#: ../doc\strings.py:326 +msgid "* Retweet mode: Allows you to specify the behaviour when posting a retweet: you can choose between retweeting with a comment, retweeting without comment or being asked." +msgstr "" + +#: ../doc\strings.py:327 +msgid "* Number of items per buffer to cache in database: This allows you to specify how many items TWBlue should cache in a database. You can type any number, 0 to cache all items, or leave blank to disable caching entirely." +msgstr "" + +#: ../doc\strings.py:330 +msgid "#### buffers tab" +msgstr "" + +#: ../doc\strings.py:333 +msgid "This tab displays a list for each buffer you have available in TWBlue, except for searches, timelines, favourites'' timelines and lists. You can show, hide and move them." +msgstr "" + +#: ../doc\strings.py:336 +msgid "#### The ignored clients tab" +msgstr "" + +#: ../doc\strings.py:339 +msgid "In this tab, you can add and remove clients to be ignored by TWBlue." +msgstr "" + +#: ../doc\strings.py:342 +msgid "#### Sound tab" +msgstr "" + +#: ../doc\strings.py:345 +msgid "In this tab, you can adjust the sound volume, select the input and output device and set the soundpack used by TWBlue." +msgstr "" + +#: ../doc\strings.py:348 +msgid "#### Audio service tab" +msgstr "" + +#: ../doc\strings.py:351 +msgid "In this tab, you can enter your SndUp API key (if you have one) to upload audio to SndUp with your account. Note that if account credentials are not specified you will upload announimously." +msgstr "" + +#: ../doc\strings.py:354 +msgid "### Global settings" +msgstr "" + +#: ../doc\strings.py:357 +msgid "This dialogue allows you to configure some settings which will affect the entire application." +msgstr "" + +#: ../doc\strings.py:363 +msgid "* Language: This allows you to change the language of TWBlue. Currently supported languages are arabic, Catalan, German, English, Spanish, Basque, Finnish, French, Galician, Croatian, Hungarian, Italian, Polish, Portuguese, Russian and Turkish." +msgstr "" + +#: ../doc\strings.py:364 +msgid "* Ask before exiting TWBlue: This checkbox allows you to control whether TWBlue will ask for confirmation before exiting." +msgstr "" + +#: ../doc\strings.py:365 +msgid "* Play a sound when TWBlue launches: This checkbox allows you to configure whether TWBlue will play a sound when it has finished loading the buffers." +msgstr "" + +#: ../doc\strings.py:366 +msgid "* Speak a message when TWBlue launches: This is the same as the previous option, but this checkbox configures whether the screen reader will say \"ready\"." +msgstr "" + +#: ../doc\strings.py:367 +msgid "* Use the invisible interface's shortcuts in the GUI: As the invisible interface and the Graphical User Interface have their own shortcuts, you may want to use the invisible interface's keystrokes all the time. If this option is checked, the invisible interface's shortcuts ''will be usable in the GUI." +msgstr "" + +#: ../doc\strings.py:368 +msgid "* Activate SAPI5 when any other screen reader is not being run: This checkbox allows to activate SAPI 5 TTS when no other screen reader is being run." +msgstr "" + +#: ../doc\strings.py:369 +msgid "* Hide GUI on launch: This allows you to configure whether TWBlue will start with the GUI or the invisible interface." +msgstr "" + +#: ../doc\strings.py:370 +msgid "* Keymap: This option allows you to change the keymap used by TWBlue in the invisible interface. The shipped keymaps are Default, Qwitter, TheQube and Chicken Nugget. The keymaps are in the \"keymaps\" folder, and you can create new ones. Just create a new \".keymap\" file and change the keystrokes associated with the actions, as it is done in the shipped keymaps." +msgstr "" + +#: ../doc\strings.py:373 +msgid "#### Proxi tab" +msgstr "" + +#: ../doc\strings.py:376 +msgid "In this tab you can configure TWBlue to use a Proxy server by completing the fields displayed (server, port, user and password)." +msgstr "" + +#: ../doc\strings.py:379 +msgid "## License, source code and donations" +msgstr "" + +#: ../doc\strings.py:382 +msgid "Tw Blue is under the GNU GPL license, version 2. You can view the license in the file named license.txt, or online at ." +msgstr "" + +#: ../doc\strings.py:385 +msgid "The source code of the program is available on GitHub at ." +msgstr "" + +#: ../doc\strings.py:388 +msgid "If you want to donate to the project, you can do so at . Thank you for your support!" +msgstr "" + +#: ../doc\strings.py:391 +msgid "## Contact" +msgstr "" + +#: ../doc\strings.py:394 +msgid "If you still have questions after reading this document, if you wish to collaborate to the project in some other way, or if you simply want to get in touch with the application developer, follow the Twitter account [@tw_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/manuelcortez00) You can also visit [our website](http://twblue.es)" +msgstr "" + +#: ../doc\strings.py:397 msgid "---" msgstr "" -#: ../doc\strings.py:211 +#: ../doc\strings.py:398 msgid "Copyright \302\251 2013-2015. Manuel Cort\303\251z" msgstr "" diff --git a/tools/twblue.pot b/tools/twblue.pot index 05d0cd62..b4a83215 100644 --- a/tools/twblue.pot +++ b/tools/twblue.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2015-06-12 17:49+Hora de verano central (México)\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (México)\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,15 +15,15 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: ../src\controller\buffersController.py:100 +#: ../src\controller\buffersController.py:98 msgid "Opening media..." msgstr "" -#: ../src\controller\buffersController.py:111 +#: ../src\controller\buffersController.py:109 msgid "This action is not supported for this buffer" msgstr "" -#: ../src\controller\buffersController.py:150 ../src\gtkUI\buffers\base.py:15 +#: ../src\controller\buffersController.py:148 ../src\gtkUI\buffers\base.py:15 #: ../src\gtkUI\buffers\events.py:14 ../src\gtkUI\buffers\trends.py:14 #: ../src\gtkUI\dialogs\message.py:186 ../src\gtkUI\sysTrayIcon.py:33 #: ../src\wxUI\buffers\base.py:24 ../src\wxUI\buffers\events.py:14 @@ -32,237 +32,265 @@ msgstr "" msgid "Tweet" msgstr "" -#: ../src\controller\buffersController.py:151 +#: ../src\controller\buffersController.py:149 msgid "Write the tweet here" msgstr "" -#: ../src\controller\buffersController.py:313 -#: ../src\controller\buffersController.py:676 +#: ../src\controller\buffersController.py:311 +#: ../src\controller\buffersController.py:674 msgid "%s items retrieved" msgstr "" -#: ../src\controller\buffersController.py:333 +#: ../src\controller\buffersController.py:331 msgid "This buffer is not a timeline; it can't be deleted." msgstr "" -#: ../src\controller\buffersController.py:394 +#: ../src\controller\buffersController.py:392 msgid "Reply to %s" msgstr "" -#: ../src\controller\buffersController.py:394 ../src\gtkUI\buffers\base.py:17 +#: ../src\controller\buffersController.py:392 ../src\gtkUI\buffers\base.py:17 #: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26 msgid "Reply" msgstr "" -#: ../src\controller\buffersController.py:414 +#: ../src\controller\buffersController.py:412 msgid "Direct message to %s" msgstr "" -#: ../src\controller\buffersController.py:414 -#: ../src\controller\mainController.py:1056 +#: ../src\controller\buffersController.py:412 +#: ../src\controller\mainController.py:1084 msgid "New direct message" msgstr "" -#: ../src\controller\buffersController.py:435 +#: ../src\controller\buffersController.py:433 msgid "Add your comment to the tweet" msgstr "" -#: ../src\controller\buffersController.py:435 ../src\gtkUI\buffers\base.py:16 +#: ../src\controller\buffersController.py:433 ../src\gtkUI\buffers\base.py:16 #: ../src\gtkUI\commonMessageDialogs.py:12 #: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25 #: ../src\wxUI\commonMessageDialogs.py:8 ../src\wxUI\dialogs\message.py:129 msgid "Retweet" msgstr "" -#: ../src\controller\buffersController.py:507 +#: ../src\controller\buffersController.py:505 msgid "Opening URL..." msgstr "" -#: ../src\controller\buffersController.py:542 +#: ../src\controller\buffersController.py:540 msgid "User details" msgstr "" -#: ../src\controller\buffersController.py:591 +#: ../src\controller\buffersController.py:589 msgid "Empty" msgstr "" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 msgid "Mention to %s" msgstr "" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 #: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15 msgid "Mention" msgstr "" -#: ../src\controller\mainController.py:242 +#: ../src\controller\mainController.py:243 msgid "Ready" msgstr "" -#: ../src\controller\mainController.py:273 +#: ../src\controller\mainController.py:274 msgid "Home" msgstr "" -#: ../src\controller\mainController.py:277 +#: ../src\controller\mainController.py:278 msgid "Mentions" msgstr "" -#: ../src\controller\mainController.py:281 +#: ../src\controller\mainController.py:282 msgid "Direct messages" msgstr "" -#: ../src\controller\mainController.py:285 +#: ../src\controller\mainController.py:286 msgid "Sent direct messages" msgstr "" -#: ../src\controller\mainController.py:289 +#: ../src\controller\mainController.py:290 msgid "Sent tweets" msgstr "" -#: ../src\controller\mainController.py:294 -#: ../src\controller\mainController.py:1172 +#: ../src\controller\mainController.py:295 +#: ../src\controller\mainController.py:1200 #: ../src\gtkUI\dialogs\userSelection.py:18 #: ../src\wxUI\dialogs\userSelection.py:18 msgid "Favourites" msgstr "" -#: ../src\controller\mainController.py:298 -#: ../src\controller\mainController.py:1177 +#: ../src\controller\mainController.py:299 +#: ../src\controller\mainController.py:1205 msgid "Followers" msgstr "" -#: ../src\controller\mainController.py:302 -#: ../src\controller\mainController.py:1182 +#: ../src\controller\mainController.py:303 +#: ../src\controller\mainController.py:1210 msgid "Friends" msgstr "" -#: ../src\controller\mainController.py:306 -#: ../src\controller\mainController.py:1187 +#: ../src\controller\mainController.py:307 +#: ../src\controller\mainController.py:1215 msgid "Blocked users" msgstr "" -#: ../src\controller\mainController.py:310 -#: ../src\controller\mainController.py:1192 +#: ../src\controller\mainController.py:311 +#: ../src\controller\mainController.py:1220 msgid "Muted users" msgstr "" -#: ../src\controller\mainController.py:314 -#: ../src\controller\mainController.py:1197 +#: ../src\controller\mainController.py:315 +#: ../src\controller\mainController.py:1225 msgid "Events" msgstr "" -#: ../src\controller\mainController.py:317 +#: ../src\controller\mainController.py:318 msgid "Timelines" msgstr "" -#: ../src\controller\mainController.py:324 +#: ../src\controller\mainController.py:322 +#: ../src\controller\mainController.py:722 +msgid "Timeline for {}" +msgstr "" + +#: ../src\controller\mainController.py:325 msgid "Favourites timelines" msgstr "" -#: ../src\controller\mainController.py:333 ../src\gtkUI\dialogs\lists.py:11 +#: ../src\controller\mainController.py:329 +#: ../src\controller\mainController.py:732 +msgid "Favourites timeline for {}" +msgstr "" + +#: ../src\controller\mainController.py:334 ../src\gtkUI\dialogs\lists.py:11 #: ../src\wxUI\dialogs\lists.py:12 msgid "Lists" msgstr "" -#: ../src\controller\mainController.py:338 -#: ../src\controller\mainController.py:1207 +#: ../src\controller\mainController.py:339 +#: ../src\controller\mainController.py:1235 msgid "List for {}" msgstr "" -#: ../src\controller\mainController.py:341 +#: ../src\controller\mainController.py:342 msgid "Searches" msgstr "" -#: ../src\controller\mainController.py:353 -#: ../src\controller\mainController.py:748 +#: ../src\controller\mainController.py:346 +#: ../src\controller\mainController.py:416 +msgid "Search for {}" +msgstr "" + +#: ../src\controller\mainController.py:354 +#: ../src\controller\mainController.py:776 msgid "Trending topics for %s" msgstr "" -#: ../src\controller\mainController.py:453 -msgid "Select the user" -msgstr "" - -#: ../src\controller\mainController.py:764 -#: ../src\controller\mainController.py:783 -msgid "There are no coordinates in this tweet" -msgstr "" - -#: ../src\controller\mainController.py:766 -#: ../src\controller\mainController.py:785 -msgid "There are no results for the coordinates in this tweet" -msgstr "" - -#: ../src\controller\mainController.py:768 -#: ../src\controller\mainController.py:787 -msgid "Error decoding coordinates. Try again later." -msgstr "" - -#: ../src\controller\mainController.py:842 -#: ../src\controller\mainController.py:861 -#: ../src\controller\mainController.py:880 -#: ../src\controller\mainController.py:898 +#: ../src\controller\mainController.py:435 +#: ../src\controller\mainController.py:870 +#: ../src\controller\mainController.py:889 +#: ../src\controller\mainController.py:908 +#: ../src\controller\mainController.py:926 msgid "No session is currently in focus. Focus a session with the next or previous session shortcut." msgstr "" -#: ../src\controller\mainController.py:889 -#: ../src\controller\mainController.py:907 +#: ../src\controller\mainController.py:439 +msgid "Empty buffer." +msgstr "" + +#: ../src\controller\mainController.py:446 +msgid "{0} not found." +msgstr "" + +#: ../src\controller\mainController.py:481 +msgid "Select the user" +msgstr "" + +#: ../src\controller\mainController.py:749 +msgid "Conversation with {0}" +msgstr "" + +#: ../src\controller\mainController.py:792 +#: ../src\controller\mainController.py:811 +msgid "There are no coordinates in this tweet" +msgstr "" + +#: ../src\controller\mainController.py:794 +#: ../src\controller\mainController.py:813 +msgid "There are no results for the coordinates in this tweet" +msgstr "" + +#: ../src\controller\mainController.py:796 +#: ../src\controller\mainController.py:815 +msgid "Error decoding coordinates. Try again later." +msgstr "" + +#: ../src\controller\mainController.py:917 +#: ../src\controller\mainController.py:935 msgid "%s, %s of %s" msgstr "" -#: ../src\controller\mainController.py:891 -#: ../src\controller\mainController.py:909 -#: ../src\controller\mainController.py:929 -#: ../src\controller\mainController.py:949 +#: ../src\controller\mainController.py:919 +#: ../src\controller\mainController.py:937 +#: ../src\controller\mainController.py:957 +#: ../src\controller\mainController.py:977 msgid "%s. Empty" msgstr "" -#: ../src\controller\mainController.py:922 +#: ../src\controller\mainController.py:950 msgid "{0}: This account is not logged into Twitter." msgstr "" -#: ../src\controller\mainController.py:927 -#: ../src\controller\mainController.py:947 +#: ../src\controller\mainController.py:955 +#: ../src\controller\mainController.py:975 msgid "%s. %s, %s of %s" msgstr "" -#: ../src\controller\mainController.py:942 +#: ../src\controller\mainController.py:970 msgid "{0}: This account is not logged into twitter." msgstr "" -#: ../src\controller\mainController.py:1047 +#: ../src\controller\mainController.py:1075 msgid "One mention from %s " msgstr "" -#: ../src\controller\mainController.py:1136 -#: ../src\controller\mainController.py:1145 +#: ../src\controller\mainController.py:1164 +#: ../src\controller\mainController.py:1173 msgid "One tweet from %s" msgstr "" -#: ../src\controller\mainController.py:1202 +#: ../src\controller\mainController.py:1230 msgid "This list is already opened" msgstr "" -#: ../src\controller\mainController.py:1260 +#: ../src\controller\mainController.py:1288 msgid "The auto-reading of new tweets is enabled for this buffer" msgstr "" -#: ../src\controller\mainController.py:1263 +#: ../src\controller\mainController.py:1291 msgid "The auto-reading of new tweets is disabled for this buffer" msgstr "" -#: ../src\controller\mainController.py:1269 +#: ../src\controller\mainController.py:1297 msgid "Session mute on" msgstr "" -#: ../src\controller\mainController.py:1272 +#: ../src\controller\mainController.py:1300 msgid "Session mute off" msgstr "" -#: ../src\controller\mainController.py:1279 +#: ../src\controller\mainController.py:1307 msgid "Buffer mute on" msgstr "" -#: ../src\controller\mainController.py:1282 +#: ../src\controller\mainController.py:1310 msgid "Buffer mute off" msgstr "" @@ -301,7 +329,7 @@ msgid "Discard image" msgstr "" #: ../src\controller\messages.py:121 ../src\controller\user.py:53 -#: ../src\extra\AudioUploader\audioUploader.py:130 +#: ../src\extra\AudioUploader\audioUploader.py:127 msgid "Discarded" msgstr "" @@ -312,27 +340,26 @@ msgstr "" msgid "Upload a picture" msgstr "" -#: ../src\controller\settings.py:114 ../src\controller\settings.py:173 +#: ../src\controller\settings.py:117 ../src\controller\settings.py:176 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Ask" msgstr "" -#: ../src\controller\settings.py:116 ../src\controller\settings.py:175 +#: ../src\controller\settings.py:119 ../src\controller\settings.py:178 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet without comments" msgstr "" -#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:98 +#: ../src\controller\settings.py:121 ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet with comments" msgstr "" -#: ../src\controller\settings.py:150 +#: ../src\controller\settings.py:153 msgid "Account settings for %s" msgstr "" -#: ../src\controller\settings.py:241 ../src\gtkUI\dialogs\configuration.py:153 -#: ../src\wxUI\dialogs\configuration.py:291 -msgid "Link your Dropbox account" +#: ../src\controller\settings.py:261 ../src\wxUI\dialogs\configuration.py:289 +msgid "Connect your Pocket account" msgstr "" #: ../src\controller\user.py:25 @@ -401,52 +428,52 @@ msgstr "" msgid "You can't ignore direct messages" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:52 +#: ../src\extra\AudioUploader\audioUploader.py:53 msgid "Attaching..." msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:78 -#: ../src\extra\AudioUploader\audioUploader.py:83 -#: ../src\extra\AudioUploader\audioUploader.py:110 +#: ../src\extra\AudioUploader\audioUploader.py:75 +#: ../src\extra\AudioUploader\audioUploader.py:80 +#: ../src\extra\AudioUploader\audioUploader.py:107 #: ../src\extra\AudioUploader\wx_ui.py:36 msgid "Pause" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:80 -#: ../src\extra\AudioUploader\audioUploader.py:81 +#: ../src\extra\AudioUploader\audioUploader.py:77 +#: ../src\extra\AudioUploader\audioUploader.py:78 msgid "Resume" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:98 -#: ../src\extra\AudioUploader\audioUploader.py:143 +#: ../src\extra\AudioUploader\audioUploader.py:95 +#: ../src\extra\AudioUploader\audioUploader.py:140 msgid "Stop" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:99 +#: ../src\extra\AudioUploader\audioUploader.py:96 msgid "Recording" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:104 -#: ../src\extra\AudioUploader\audioUploader.py:154 +#: ../src\extra\AudioUploader\audioUploader.py:101 +#: ../src\extra\AudioUploader\audioUploader.py:151 msgid "Stopped" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:106 +#: ../src\extra\AudioUploader\audioUploader.py:103 #: ../src\extra\AudioUploader\wx_ui.py:38 msgid "Record" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:139 ../src\sound.py:123 +#: ../src\extra\AudioUploader\audioUploader.py:136 ../src\sound.py:123 msgid "Playing..." msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:147 -#: ../src\extra\AudioUploader\audioUploader.py:157 +#: ../src\extra\AudioUploader\audioUploader.py:144 +#: ../src\extra\AudioUploader\audioUploader.py:154 #: ../src\extra\AudioUploader\wx_ui.py:34 msgid "Play" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:162 +#: ../src\extra\AudioUploader\audioUploader.py:159 msgid "Recoding audio..." msgstr "" @@ -524,6 +551,7 @@ msgid "Attach" msgstr "" #: ../src\extra\AudioUploader\wx_ui.py:50 ../src\issueReporter\wx_ui.py:74 +#: ../src\wxUI\dialogs\find.py:20 msgid "Cancel" msgstr "" @@ -560,7 +588,7 @@ msgid "Error." msgstr "" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:10 -msgid "Tweet favorited." +msgid "Tweet favourited." msgstr "" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:11 @@ -591,6 +619,10 @@ msgstr "" msgid "New event." msgstr "" +#: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:18 +msgid "{0} is ready." +msgstr "" + #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:19 msgid "Mention sent." msgstr "" @@ -668,8 +700,10 @@ msgid "Replace all" msgstr "" #: ../src\extra\SpellChecker\wx_ui.py:76 -#: ../src\gtkUI\commonMessageDialogs.py:52 -#: ../src\gtkUI\commonMessageDialogs.py:64 ../src\issueReporter\wx_ui.py:83 +msgid "An error has occurred. There are no dictionaries available for the selected language in {0}" +msgstr "" + +#: ../src\extra\SpellChecker\wx_ui.py:76 ../src\issueReporter\wx_ui.py:83 #: ../src\issueReporter\wx_ui.py:86 ../src\wxUI\commonMessageDialogs.py:37 #: ../src\wxUI\commonMessageDialogs.py:49 msgid "Error" @@ -701,6 +735,10 @@ msgstr "" msgid "Manage Autocompletion database" msgstr "" +#: ../src\extra\autocompletionUsers\wx_manage.py:11 +msgid "Editing {0} users database" +msgstr "" + #: ../src\extra\autocompletionUsers\wx_manage.py:12 msgid "Name" msgstr "" @@ -726,21 +764,18 @@ msgid "Twitter username" msgstr "" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:52 #: ../src\wxUI\commonMessageDialogs.py:37 msgid "The user does not exist" msgstr "" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\gtkUI\dialogs\configuration.py:165 #: ../src\wxUI\commonMessageDialogs.py:43 -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error!" msgstr "" #: ../src\extra\autocompletionUsers\wx_settings.py:8 -msgid "Autocomplete users\342\200\231 settings" +msgid "Autocomplete users' settings" msgstr "" #: ../src\extra\autocompletionUsers\wx_settings.py:11 @@ -759,6 +794,10 @@ msgstr "" msgid "Done" msgstr "" +#: ../src\extra\autocompletionUsers\wx_settings.py:27 +msgid "{0}'s database of users has been updated." +msgstr "" + #: ../src\extra\translator\translator.py:9 msgid "Afrikaans" msgstr "" @@ -1224,237 +1263,9 @@ msgstr "" msgid "Exit" msgstr "" -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore." -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "Confirm" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Add a new ignored client" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Enter the name of the client here" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "Empty buffer" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Attention" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Do you really want to delete this timeline?" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "Existing timeline" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "There's currently a timeline for this user. You are not able to open another" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\wxUI\commonMessageDialogs.py:43 -msgid "This user has no tweets. You can't open a timeline for this user" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "This is a protected Twitter user. It means you can not open a timeline using the Streaming API. The user's tweets will not update due to a twitter policy. Do you want to continue?" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "Warning" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:64 -#: ../src\wxUI\commonMessageDialogs.py:49 -msgid "This is a protected user account, you need follow to this user for viewing your tweets or favourites." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:10 -#: ../src\wxUI\dialogs\configuration.py:14 -msgid "Language" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:19 -#: ../src\wxUI\dialogs\configuration.py:27 -msgid "Use invisible interface's keyboard shortcuts while GUI is visible" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:21 -#: ../src\wxUI\dialogs\configuration.py:29 -msgid "Activate Sapi5 when any other screen reader is not being run" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:23 -#: ../src\wxUI\dialogs\configuration.py:31 -msgid "Hide GUI on launch" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:31 -msgid "Set the autocomplete function" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:33 -msgid "Relative times" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:36 -msgid "API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:43 -#: ../src\wxUI\dialogs\configuration.py:89 -msgid "Items on each API call" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:49 -msgid "Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:63 -#: ../src\gtkUI\dialogs\configuration.py:198 -#: ../src\wxUI\dialogs\configuration.py:201 -#: ../src\wxUI\dialogs\configuration.py:340 -msgid "Ignored clients" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:69 -#: ../src\wxUI\dialogs\configuration.py:207 -msgid "Add client" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:70 -#: ../src\wxUI\dialogs\configuration.py:208 -msgid "Remove client" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:94 -#: ../src\wxUI\dialogs\configuration.py:232 -msgid "Volume" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:102 -#: ../src\wxUI\dialogs\configuration.py:240 -msgid "Session mute" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:104 -#: ../src\wxUI\dialogs\configuration.py:242 -msgid "Output device" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:111 -#: ../src\wxUI\dialogs\configuration.py:249 -msgid "Input device" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:119 -#: ../src\wxUI\dialogs\configuration.py:257 -msgid "Sound pack" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:134 -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\gtkUI\dialogs\configuration.py:151 -#: ../src\wxUI\dialogs\configuration.py:289 -msgid "Unlink your Dropbox account" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:156 ../src\sessionmanager\wxUI.py:47 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "Authorization" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:156 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "The authorization request will be opened in your browser. Copy the code from Dropbox and paste it into the text box which will appear. You only need to do this once." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Enter the code here." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Verification code" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:165 -msgid "Error during authorisation. Try again later." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:178 -msgid "TW Blue preferences" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:184 -#: ../src\gtkUI\dialogs\configuration.py:189 -#: ../src\issueReporter\issueReporter.py:30 -#: ../src\wxUI\dialogs\configuration.py:322 -#: ../src\wxUI\dialogs\configuration.py:331 -msgid "General" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:194 -msgid "Show other buffers" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:202 -#: ../src\wxUI\dialogs\configuration.py:344 -msgid "Sound" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:205 -#: ../src\wxUI\dialogs\configuration.py:347 -msgid "Audio Services" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:210 -#: ../src\wxUI\dialogs\configuration.py:352 -msgid "Save" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:212 ../src\gtkUI\dialogs\search.py:26 -#: ../src\gtkUI\dialogs\show_user.py:17 ../src\gtkUI\dialogs\trends.py:28 -#: ../src\gtkUI\dialogs\update_profile.py:35 -#: ../src\gtkUI\dialogs\userActions.py:40 -#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 -#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:354 -#: ../src\wxUI\dialogs\message.py:87 ../src\wxUI\dialogs\message.py:147 -#: ../src\wxUI\dialogs\message.py:207 ../src\wxUI\dialogs\message.py:283 -#: ../src\wxUI\dialogs\message.py:338 ../src\wxUI\dialogs\search.py:26 -#: ../src\wxUI\dialogs\show_user.py:17 ../src\wxUI\dialogs\trends.py:28 -#: ../src\wxUI\dialogs\update_profile.py:35 -#: ../src\wxUI\dialogs\userActions.py:40 -#: ../src\wxUI\dialogs\userSelection.py:28 ../src\wxUI\dialogs\utils.py:35 -msgid "Close" +#: ../src\gtkUI\commonMessageDialogs.py:27 +#: ../src\wxUI\commonMessageDialogs.py:14 +msgid "Do you really want to close {0}?" msgstr "" #: ../src\gtkUI\dialogs\lists.py:9 ../src\wxUI\dialogs\lists.py:10 @@ -1656,12 +1467,28 @@ msgstr "" #: ../src\gtkUI\dialogs\search.py:24 ../src\gtkUI\dialogs\trends.py:26 #: ../src\gtkUI\dialogs\userActions.py:38 #: ../src\gtkUI\dialogs\userSelection.py:26 ../src\gtkUI\dialogs\utils.py:32 -#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\search.py:24 -#: ../src\wxUI\dialogs\trends.py:26 ../src\wxUI\dialogs\userActions.py:38 +#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\find.py:18 +#: ../src\wxUI\dialogs\search.py:24 ../src\wxUI\dialogs\trends.py:26 +#: ../src\wxUI\dialogs\userActions.py:38 #: ../src\wxUI\dialogs\userSelection.py:26 ../src\wxUI\dialogs\utils.py:32 msgid "OK" msgstr "" +#: ../src\gtkUI\dialogs\search.py:26 ../src\gtkUI\dialogs\show_user.py:17 +#: ../src\gtkUI\dialogs\trends.py:28 ../src\gtkUI\dialogs\update_profile.py:35 +#: ../src\gtkUI\dialogs\userActions.py:40 +#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 +#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:347 +#: ../src\wxUI\dialogs\message.py:87 ../src\wxUI\dialogs\message.py:147 +#: ../src\wxUI\dialogs\message.py:207 ../src\wxUI\dialogs\message.py:283 +#: ../src\wxUI\dialogs\message.py:338 ../src\wxUI\dialogs\search.py:26 +#: ../src\wxUI\dialogs\show_user.py:17 ../src\wxUI\dialogs\trends.py:28 +#: ../src\wxUI\dialogs\update_profile.py:35 +#: ../src\wxUI\dialogs\userActions.py:40 +#: ../src\wxUI\dialogs\userSelection.py:28 ../src\wxUI\dialogs\utils.py:35 +msgid "Close" +msgstr "" + #: ../src\gtkUI\dialogs\show_user.py:10 ../src\wxUI\dialogs\show_user.py:10 msgid "Details" msgstr "" @@ -1801,7 +1628,7 @@ msgid "&Show / hide" msgstr "" #: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38 -#: ../src\wxUI\view.py:62 +#: ../src\wxUI\view.py:63 msgid "&Documentation" msgstr "" @@ -1817,14 +1644,24 @@ msgstr "" msgid "Manage accounts" msgstr "" -#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:158 +#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:159 msgid "Address" msgstr "" -#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:181 +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 msgid "Update" msgstr "" +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 +msgid "Your {0} version is up to date" +msgstr "" + +#: ../src\issueReporter\issueReporter.py:30 +#: ../src\wxUI\dialogs\configuration.py:314 +#: ../src\wxUI\dialogs\configuration.py:323 +msgid "General" +msgstr "" + #: ../src\issueReporter\issueReporter.py:31 msgid "always" msgstr "" @@ -1901,6 +1738,10 @@ msgstr "" msgid "Select the importance that you think this bug has" msgstr "" +#: ../src\issueReporter\wx_ui.py:69 +msgid "I know that the {0} bug system will get my Twitter username to contact me and fix the bug quickly" +msgstr "" + #: ../src\issueReporter\wx_ui.py:72 msgid "Send report" msgstr "" @@ -2074,30 +1915,34 @@ msgid "Search on twitter" msgstr "" #: ../src\keystrokeEditor\constants.py:41 -msgid "Show the keystroke editor" +msgid "Find a string in the currently focused buffer" msgstr "" #: ../src\keystrokeEditor\constants.py:42 -msgid "Show lists for a specified user" +msgid "Show the keystroke editor" msgstr "" #: ../src\keystrokeEditor\constants.py:43 -msgid "load previous items" +msgid "Show lists for a specified user" msgstr "" #: ../src\keystrokeEditor\constants.py:44 -msgid "Get geolocation" +msgid "load previous items" msgstr "" #: ../src\keystrokeEditor\constants.py:45 -msgid "Display the tweet's geolocation in a dialog" +msgid "Get geolocation" msgstr "" #: ../src\keystrokeEditor\constants.py:46 -msgid "Create a trending topics buffer" +msgid "Display the tweet's geolocation in a dialog" msgstr "" #: ../src\keystrokeEditor\constants.py:47 +msgid "Create a trending topics buffer" +msgstr "" + +#: ../src\keystrokeEditor\constants.py:48 msgid "View conversation" msgstr "" @@ -2161,6 +2006,18 @@ msgstr "" msgid "%s succeeded." msgstr "" +#: ../src\sessionmanager\wxUI.py:10 +msgid "Accounts list" +msgstr "" + +#: ../src\sessionmanager\wxUI.py:12 +msgid "Account" +msgstr "" + +#: ../src\sessionmanager\wxUI.py:16 +msgid "New account" +msgstr "" + #: ../src\sessionmanager\wxUI.py:17 ../src\sessionmanager\wxUI.py:63 msgid "Remove account" msgstr "" @@ -2177,6 +2034,10 @@ msgstr "" msgid "You need to configure an account." msgstr "" +#: ../src\sessionmanager\wxUI.py:47 +msgid "Authorization" +msgstr "" + #: ../src\sessionmanager\wxUI.py:47 msgid "The request to authorize your Twitter account will be opened in your browser. You only need to do this once. Would you like to continue?" msgstr "" @@ -2243,7 +2104,7 @@ msgid "You've added to favourites: %s, %s" msgstr "" #: ../src\twitter\compose.py:99 -msgid "%s(@%s) has marked as favorite: %s" +msgid "%s(@%s) has marked as favourite: %s" msgstr "" #: ../src\twitter\compose.py:101 @@ -2298,6 +2159,14 @@ msgstr "" msgid "You've been unsubscribed from the list %s, which is owned by %s(@%s)" msgstr "" +#: ../src\twitter\compose.py:122 +msgid "You have retweeted a retweet from %s(@%s): %s" +msgstr "" + +#: ../src\twitter\compose.py:123 +msgid "%s(@%s) has retweeted your retweet: %s" +msgstr "" + #: ../src\twitter\compose.py:125 msgid "Unknown" msgstr "" @@ -2322,6 +2191,10 @@ msgstr "" msgid "No status found with that ID" msgstr "" +#: ../src\twitter\utils.py:128 +msgid "Error code {0}" +msgstr "" + #: ../src\update\wxUpdater.py:9 msgid "New version for %s" msgstr "" @@ -2356,8 +2229,72 @@ msgstr "" msgid "The update has been downloaded and installed successfully. Press OK to continue." msgstr "" -#: ../src\wxUI\commonMessageDialogs.py:14 -msgid "Do you really want to close {0}?" +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid " {0} must be restarted for these changes to take effect." +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid "Restart {0} " +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore." +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "Confirm" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Add a new ignored client" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Enter the name of the client here" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "Empty buffer" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Attention" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Do you really want to delete this timeline?" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "Existing timeline" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "There's currently a timeline for this user. You are not able to open another" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:43 +msgid "This user has no tweets. You can't open a timeline for this user" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "This is a protected Twitter user. It means you can not open a timeline using the Streaming API. The user's tweets will not update due to a twitter policy. Do you want to continue?" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "Warning" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:49 +msgid "This is a protected user account, you need follow to this user for viewing your tweets or favourites." +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:14 +msgid "Language" msgstr "" #: ../src\wxUI\dialogs\configuration.py:21 @@ -2372,6 +2309,18 @@ msgstr "" msgid "Speak a message when {0} launches" msgstr "" +#: ../src\wxUI\dialogs\configuration.py:27 +msgid "Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:29 +msgid "Activate Sapi5 when any other screen reader is not being run" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:31 +msgid "Hide GUI on launch" +msgstr "" + #: ../src\wxUI\dialogs\configuration.py:34 msgid "Keymap" msgstr "" @@ -2404,6 +2353,10 @@ msgstr "" msgid "API calls (One API call = 200 tweets, two API calls = 400 tweets, etc):" msgstr "" +#: ../src\wxUI\dialogs\configuration.py:89 +msgid "Items on each API call" +msgstr "" + #: ../src\wxUI\dialogs\configuration.py:95 msgid "Inverted buffers: The newest tweets will be shown at the beginning while the oldest at the end" msgstr "" @@ -2468,18 +2421,91 @@ msgstr "" msgid "The buffer is already at the bottom of the list." msgstr "" -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:201 +#: ../src\wxUI\dialogs\configuration.py:332 +msgid "Ignored clients" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:207 +msgid "Add client" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:208 +msgid "Remove client" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:232 +msgid "Volume" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:240 +msgid "Session mute" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:242 +msgid "Output device" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:249 +msgid "Input device" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:257 +msgid "Sound pack" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:272 +msgid "If you have a SndUp account, enter your API Key here. If your API Key is invalid, {0} will fail to upload. If there is no API Key here, {0} will upload annonymously." +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:287 +msgid "Disconnect your Pocket account" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "Pocket Authorization" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "The authorization request will be opened in your browser. You only need to do this once. Do you want to continue?" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error during authorization. Try again later." msgstr "" -#: ../src\wxUI\dialogs\configuration.py:327 +#: ../src\wxUI\dialogs\configuration.py:308 +msgid "{0} preferences" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:319 msgid "Proxy" msgstr "" -#: ../src\wxUI\dialogs\configuration.py:336 +#: ../src\wxUI\dialogs\configuration.py:328 msgid "Buffers" msgstr "" +#: ../src\wxUI\dialogs\configuration.py:336 +msgid "Sound" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:340 +msgid "Services" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:345 +msgid "Save" +msgstr "" + +#: ../src\wxUI\dialogs\find.py:10 +msgid "Find in current buffer" +msgstr "" + +#: ../src\wxUI\dialogs\find.py:11 +msgid "String" +msgstr "" + #: ../src\wxUI\dialogs\lists.py:133 msgid "Do you really want to delete this list?" msgstr "" @@ -2521,7 +2547,7 @@ msgstr "" msgid "E&xit" msgstr "" -#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74 +#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:75 msgid "&Tweet" msgstr "" @@ -2594,58 +2620,66 @@ msgid "New &trending topics buffer..." msgstr "" #: ../src\wxUI\view.py:53 +msgid "Find a string in the currently focused buffer..." +msgstr "" + +#: ../src\wxUI\view.py:54 msgid "&Load previous items" msgstr "" -#: ../src\wxUI\view.py:55 +#: ../src\wxUI\view.py:56 msgid "&Mute" msgstr "" -#: ../src\wxUI\view.py:56 +#: ../src\wxUI\view.py:57 msgid "&Autoread" msgstr "" -#: ../src\wxUI\view.py:57 +#: ../src\wxUI\view.py:58 msgid "&Clear buffer" msgstr "" -#: ../src\wxUI\view.py:58 +#: ../src\wxUI\view.py:59 msgid "&Destroy" msgstr "" -#: ../src\wxUI\view.py:64 +#: ../src\wxUI\view.py:65 msgid "Sounds &tutorial" msgstr "" -#: ../src\wxUI\view.py:65 +#: ../src\wxUI\view.py:66 msgid "&What's new in this version?" msgstr "" -#: ../src\wxUI\view.py:67 +#: ../src\wxUI\view.py:68 msgid "&Check for updates" msgstr "" -#: ../src\wxUI\view.py:68 +#: ../src\wxUI\view.py:69 msgid "&Report an error" msgstr "" -#: ../src\wxUI\view.py:73 +#: ../src\wxUI\view.py:70 +msgid "{0}'s &website" +msgstr "" + +#: ../src\wxUI\view.py:71 +msgid "About &{0}" +msgstr "" + +#: ../src\wxUI\view.py:74 msgid "&Application" msgstr "" -#: ../src\wxUI\view.py:75 +#: ../src\wxUI\view.py:76 msgid "&User" msgstr "" -#: ../src\wxUI\view.py:76 +#: ../src\wxUI\view.py:77 msgid "&Buffer" msgstr "" -#: ../src\wxUI\view.py:77 +#: ../src\wxUI\view.py:78 msgid "&Help" msgstr "" -#: ../src\wxUI\view.py:181 -msgid "Your {0} version is up to date" -msgstr "" -