Removed dropbox, updated translations

This commit is contained in:
Manuel Cortez 2015-06-15 16:31:00 -05:00
parent 63d6fa62c4
commit 40c92e854d
8 changed files with 139 additions and 307 deletions

View File

@ -37,6 +37,3 @@ spelling_language = string(default="")
save_followers_in_autocompletion_db = boolean(default=False)
save_friends_in_autocompletion_db = boolean(default=False)
[services]
dropbox_token=string(default="")

View File

@ -11,7 +11,6 @@ import application
from wxUI.dialogs import configuration
from wxUI import commonMessageDialogs
from extra.autocompletionUsers import settings
from extra.AudioUploader import dropbox_transfer
from pubsub import pub
import logging
import config_utils
@ -140,11 +139,6 @@ class accountSettingsController(globalSettingsController):
self.dialog.set_value("sound", "session_mute", self.config["sound"]["session_mute"])
self.dialog.set_value("sound", "soundpack", self.config["sound"]["current_soundpack"])
self.dialog.create_audio_services()
if self.config["services"]["dropbox_token"] == "":
self.dialog.services.set_dropbox(False)
else:
self.dialog.services.set_dropbox(True)
widgetUtils.connect_event(self.dialog.services.dropbox, widgetUtils.BUTTON_PRESSED, self.manage_dropbox)
self.dialog.set_value("services", "apiKey", self.config["sound"]["sndup_api_key"])
self.dialog.realize()
self.dialog.set_title(_(u"Account settings for %s") % (self.user,))
@ -237,32 +231,6 @@ class accountSettingsController(globalSettingsController):
self.config["twitter"]["ignored_clients"].pop(id)
self.dialog.ignored_clients.remove_(id)
def manage_dropbox(self, *args, **kwargs):
if self.dialog.services.get_dropbox() == _(u"Link your Dropbox account"):
self.connect_dropbox()
else:
self.disconnect_dropbox()
def connect_dropbox(self):
auth = dropbox_transfer.dropboxLogin(self.config)
url = auth.get_url()
self.dialog.services.show_dialog()
webbrowser.open(url)
resp = self.dialog.services.get_response()
if resp == "":
self.dialog.services.set_dropbox(False)
else:
try:
auth.authorise(resp)
self.dialog.services.set_dropbox()
except:
self.dialog.services.show_error()
self.dialog.services.set_dropbox(False)
def disconnect_dropbox(self):
self.config["services"]["dropbox_token"] = ""
self.dialog.services.set_dropbox(False)
def get_buffers_list(self):
all_buffers = ['home','mentions','dm','sent_dm','sent_tweets','favorites','followers','friends','blocks','muted','events']
list_buffers = []

View File

@ -19,7 +19,7 @@
import widgetUtils
import wx_ui
import wx_transfer_dialogs
import dropbox_transfer, transfer
import transfer
import output
import tempfile
import sound
@ -31,6 +31,7 @@ import sound_lib
import logging
log = logging.getLogger("extra.AudioUploader.audioUploader")
class audioUploader(object):
def __init__(self, configFile, completed_callback):
self.config = configFile
@ -50,9 +51,7 @@ class audioUploader(object):
log.debug("Uploading file %s to %s..." % (self.file, self.dialog.get("services")))
self.uploaderDialog = wx_transfer_dialogs.UploadDialog(self.file)
output.speak(_(u"Attaching..."))
if self.dialog.get("services") == "Dropbox":
self.uploaderFunction = dropbox_transfer.dropboxUploader(filename=self.file, completed_callback=completed_callback, config=self.config)
elif self.dialog.get("services") == "SNDUp":
if self.dialog.get("services") == "SNDUp":
base_url = "http://sndup.net/post.php"
if len(self.config["sound"]["sndup_api_key"]) > 0:
url = base_url + '?apikey=' + self.config['sound']['sndup_api_key']
@ -69,8 +68,6 @@ class audioUploader(object):
def get_available_services(self):
services = []
services.append("TwUp")
if self.config["services"]["dropbox_token"] != "":
services.append("Dropbox")
services.append("SNDUp")
return services

View File

@ -1,121 +0,0 @@
# -*- coding: utf-8 -*-
import threading
import time
import os
import exceptions
import dropbox
import logging
import application
from keys import keyring
from utils import *
from dropbox.rest import ErrorResponse
from StringIO import StringIO
from pubsub import pub
log = logging.getLogger("extra.AudioUploader.dropbox_transfer")
class UnauthorisedError(exceptions.Exception):
def __init__(self, *args, **kwargs):
super(UnauthorisedError, self).__init__(*args, **kwargs)
class newChunkedUploader(dropbox.client.ChunkedUploader):
def __init__(self, client, file_obj, length, callback):
super(newChunkedUploader, self).__init__(client, file_obj, length)
self.progress_callback = callback
def upload_chunked(self, chunk_size = 4 * 1024 * 1024):
while self.offset < self.target_length:
next_chunk_size = min(chunk_size, self.target_length - self.offset)
if self.last_block == None:
self.last_block = self.file_obj.read(next_chunk_size)
try:
(self.offset, self.upload_id) = self.client.upload_chunk(
StringIO(self.last_block), next_chunk_size, self.offset, self.upload_id)
self.last_block = None
if callable(self.progress_callback): self.progress_callback(self.offset)
except ErrorResponse as e:
reply = e.body
if "offset" in reply and reply['offset'] != 0:
if reply['offset'] > self.offset:
self.last_block = None
self.offset = reply['offset']
class dropboxLogin(object):
def __init__(self, config):
log.debug("Trying to login in Dropbox...")
self.logged = False
self.config = config
def get_url(self):
log.debug("Getting autorisation URL...")
self.flow = dropbox.client.DropboxOAuth2FlowNoRedirect(keyring.get("dropbox_api_key"), keyring.get("dropbox_api_secret"))
return self.flow.start()
def authorise(self, code):
log.debug("Authorising " + application.name + " to Dropbox...")
access_token, user_id = self.flow.finish(code)
log.debug("Saving tokens...")
self.config["services"]["dropbox_token"] = access_token
self.logged = True
class dropboxUploader(object):
def __init__(self, config, filename, completed_callback, short_url=False):
if config["services"]["dropbox_token"] != "":
log.debug("logging in Dropbox...")
self.client = dropbox.client.DropboxClient(config["services"]["dropbox_token"])
else:
log.error("Dropbox is not authorised for this session.")
raise UnauthorisedError("You need to authorise " + application.name)
self.filename = filename
self.short_url = short_url
self.file = open(self.filename, "rb")
self.file_size = os.path.getsize(self.filename)
self.uploader = newChunkedUploader(client=self.client, file_obj=self.file, length=self.file_size, callback=self.process)
self.start_time = None
self.completed_callback = completed_callback
self.background_thread = None
self.current = 0
self.transfer_rate = 0
log.debug("File Size: %d " % (self.file_size,))
def elapsed_time(self):
if not self.start_time:
return 0
return time.time() - self.start_time
def perform_transfer(self):
log.debug("Starting transfer...")
self.start_time = time.time()
while self.uploader.offset < self.file_size:
self.uploader.upload_chunked(self.file_size/100)
self.transfer_completed()
def process(self, offset):
progress = {}
self.current = offset
progress["total"] = self.file_size
progress["current"] = self.current
progress["percent"] = int((float(progress["current"]) / progress["total"]) * 100)
self.transfer_rate = progress["current"] / self.elapsed_time()
progress["speed"] = '%s/s' % convert_bytes(self.transfer_rate)
if self.transfer_rate:
progress["eta"] = (progress["total"] - progress["current"]) / self.transfer_rate
else:
progress["eta"] = 0
pub.sendMessage("uploading", data=progress)
def perform_threaded(self):
self.background_thread = threading.Thread(target=self.perform_transfer)
self.background_thread.daemon = True
self.background_thread.start()
def transfer_completed(self):
log.debug("Transfer completed")
self.uploader.finish(os.path.basename(self.filename))
if callable(self.completed_callback):
self.completed_callback()
def get_url(self):
original = "%s" % (self.client.media(os.path.basename(self.filename))["url"])
return original
# .replace("dl=0", "dl=1")

Binary file not shown.

View File

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: TW Blue 0.44\n"
"POT-Creation-Date: 2015-06-09 10:11+0100\n"
"PO-Revision-Date: 2015-06-09 03:51-0600\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"
"Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n"
"Language-Team: Manuel Cortez <info@twblue.com.mx>\n"
"Language: es\n"
@ -19,10 +19,6 @@ msgstr ""
msgid "Opening media..."
msgstr "Abriendo medio..."
#: ../src\controller\buffersController.py:104
msgid "Not actionable."
msgstr "No hay acción asociada a este tuit."
#: ../src\controller\buffersController.py:111
msgid "This action is not supported for this buffer"
msgstr "Esta acción no se encuentra soportada para este buffer"
@ -40,61 +36,61 @@ msgstr "Tuit"
msgid "Write the tweet here"
msgstr "Escribe el tuit aquí"
#: ../src\controller\buffersController.py:305
#: ../src\controller\buffersController.py:659
#: ../src\controller\buffersController.py:313
#: ../src\controller\buffersController.py:676
msgid "%s items retrieved"
msgstr "%s elementos recuperados"
#: ../src\controller\buffersController.py:325
#: ../src\controller\buffersController.py:333
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:386
#: ../src\controller\buffersController.py:394
msgid "Reply to %s"
msgstr "Responder a %s"
#: ../src\controller\buffersController.py:386 ../src\gtkUI\buffers\base.py:17
#: ../src\controller\buffersController.py:394 ../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:406
#: ../src\controller\buffersController.py:414
msgid "Direct message to %s"
msgstr "Mensaje directo a %s"
#: ../src\controller\buffersController.py:406
#: ../src\controller\buffersController.py:414
#: ../src\controller\mainController.py:1056
msgid "New direct message"
msgstr "Nuevo mensaje directo"
#: ../src\controller\buffersController.py:427
#: ../src\controller\buffersController.py:435
msgid "Add your comment to the tweet"
msgstr "Añade tu comentario al tuit"
#: ../src\controller\buffersController.py:427 ../src\gtkUI\buffers\base.py:16
#: ../src\controller\buffersController.py:435 ../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:499
#: ../src\controller\buffersController.py:507
msgid "Opening URL..."
msgstr "Abriendo URL..."
#: ../src\controller\buffersController.py:534
#: ../src\controller\buffersController.py:542
msgid "User details"
msgstr "Detalles del usuario"
#: ../src\controller\buffersController.py:574
#: ../src\controller\buffersController.py:591
msgid "Empty"
msgstr "Vacío"
#: ../src\controller\buffersController.py:618
#: ../src\controller\buffersController.py:635
msgid "Mention to %s"
msgstr "Mencionar a %s"
#: ../src\controller\buffersController.py:618
#: ../src\controller\buffersController.py:635
#: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15
msgid "Mention"
msgstr "Mención"
@ -320,16 +316,16 @@ msgid "Upload a picture"
msgstr "Subir una foto"
#: ../src\controller\settings.py:114 ../src\controller\settings.py:173
#: ../src\wxUI\dialogs\configuration.py:97
#: ../src\wxUI\dialogs\configuration.py:98
msgid "Ask"
msgstr "Preguntar"
#: ../src\controller\settings.py:116 ../src\controller\settings.py:175
#: ../src\wxUI\dialogs\configuration.py:97
#: ../src\wxUI\dialogs\configuration.py:98
msgid "Retweet without comments"
msgstr "Retuitear sin comentario"
#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:97
#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:98
msgid "Retweet with comments"
msgstr "Retuitear añadiendo un comentario"
@ -338,7 +334,7 @@ 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:290
#: ../src\wxUI\dialogs\configuration.py:291
msgid "Link your Dropbox account"
msgstr "Conectar tu cuenta de Dropbox"
@ -740,27 +736,27 @@ msgstr "El usuario no existe"
#: ../src\gtkUI\commonMessageDialogs.py:58
#: ../src\gtkUI\dialogs\configuration.py:165
#: ../src\wxUI\commonMessageDialogs.py:43
#: ../src\wxUI\dialogs\configuration.py:302
#: ../src\wxUI\dialogs\configuration.py:303
msgid "Error!"
msgstr "¡Error!"
#: ../src\extra\autocompletionUsers\wx_settings.py:7
msgid "Autocomplete users\\342\\200\\231 settings"
msgstr "Opciones de autocompletado"
#: ../src\extra\autocompletionUsers\wx_settings.py:8
msgid "Autocomplete users settings"
msgstr "Opciones de autocompletado de usuarios"
#: ../src\extra\autocompletionUsers\wx_settings.py:10
#: ../src\extra\autocompletionUsers\wx_settings.py:11
msgid "Add users from followers buffer"
msgstr "Añadir usuarios desde el buffer de seguidores"
#: ../src\extra\autocompletionUsers\wx_settings.py:11
#: ../src\extra\autocompletionUsers\wx_settings.py:12
msgid "Add users from friends buffer"
msgstr "Añadir usuarios desde el buffer de amigos"
#: ../src\extra\autocompletionUsers\wx_settings.py:14
#: ../src\extra\autocompletionUsers\wx_settings.py:15
msgid "Manage database..."
msgstr "Administrar base de datos"
#: ../src\extra\autocompletionUsers\wx_settings.py:26
#: ../src\extra\autocompletionUsers\wx_settings.py:27
msgid "Done"
msgstr "¡Hecho"
@ -1328,23 +1324,23 @@ msgstr ""
"tuits y favoritos."
#: ../src\gtkUI\dialogs\configuration.py:10
#: ../src\wxUI\dialogs\configuration.py:13
#: ../src\wxUI\dialogs\configuration.py:14
msgid "Language"
msgstr "Idioma"
#: ../src\gtkUI\dialogs\configuration.py:19
#: ../src\wxUI\dialogs\configuration.py:26
#: ../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:28
#: ../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:30
#: ../src\wxUI\dialogs\configuration.py:31
msgid "Hide GUI on launch"
msgstr "Esconder interfaz gráfica al iniciar"
@ -1365,7 +1361,7 @@ msgstr ""
"tuits, 2 a 400 tuits, etc):"
#: ../src\gtkUI\dialogs\configuration.py:43
#: ../src\wxUI\dialogs\configuration.py:88
#: ../src\wxUI\dialogs\configuration.py:89
msgid "Items on each API call"
msgstr "Elementos por cada llamada a la API"
@ -1379,43 +1375,43 @@ msgstr ""
#: ../src\gtkUI\dialogs\configuration.py:63
#: ../src\gtkUI\dialogs\configuration.py:198
#: ../src\wxUI\dialogs\configuration.py:200
#: ../src\wxUI\dialogs\configuration.py:339
#: ../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:206
#: ../src\wxUI\dialogs\configuration.py:207
msgid "Add client"
msgstr "Añadir cliente"
#: ../src\gtkUI\dialogs\configuration.py:70
#: ../src\wxUI\dialogs\configuration.py:207
#: ../src\wxUI\dialogs\configuration.py:208
msgid "Remove client"
msgstr "Quitar cliente"
#: ../src\gtkUI\dialogs\configuration.py:94
#: ../src\wxUI\dialogs\configuration.py:231
#: ../src\wxUI\dialogs\configuration.py:232
msgid "Volume"
msgstr "Volumen"
#: ../src\gtkUI\dialogs\configuration.py:102
#: ../src\wxUI\dialogs\configuration.py:239
#: ../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:241
#: ../src\wxUI\dialogs\configuration.py:242
msgid "Output device"
msgstr "Dispositivo de salida"
#: ../src\gtkUI\dialogs\configuration.py:111
#: ../src\wxUI\dialogs\configuration.py:248
#: ../src\wxUI\dialogs\configuration.py:249
msgid "Input device"
msgstr "Dispositivo de entrada"
#: ../src\gtkUI\dialogs\configuration.py:119
#: ../src\wxUI\dialogs\configuration.py:256
#: ../src\wxUI\dialogs\configuration.py:257
msgid "Sound pack"
msgstr "Paquete de sonidos"
@ -1430,17 +1426,17 @@ msgstr ""
"aquí, los audios se subirán de manera anónima"
#: ../src\gtkUI\dialogs\configuration.py:151
#: ../src\wxUI\dialogs\configuration.py:288
#: ../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:293
#: ../src\wxUI\dialogs\configuration.py:294
msgid "Authorization"
msgstr "Autorización"
#: ../src\gtkUI\dialogs\configuration.py:156
#: ../src\wxUI\dialogs\configuration.py:293
#: ../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 "
@ -1451,12 +1447,12 @@ msgstr ""
"es necesario hacerlo solo una vez."
#: ../src\gtkUI\dialogs\configuration.py:159
#: ../src\wxUI\dialogs\configuration.py:296
#: ../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:296
#: ../src\wxUI\dialogs\configuration.py:297
msgid "Verification code"
msgstr "Código de verificación"
@ -1471,8 +1467,8 @@ 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:321
#: ../src\wxUI\dialogs\configuration.py:330
#: ../src\wxUI\dialogs\configuration.py:322
#: ../src\wxUI\dialogs\configuration.py:331
msgid "General"
msgstr "General"
@ -1481,17 +1477,17 @@ msgid "Show other buffers"
msgstr "Mostrar otros buffers"
#: ../src\gtkUI\dialogs\configuration.py:202
#: ../src\wxUI\dialogs\configuration.py:343
#: ../src\wxUI\dialogs\configuration.py:344
msgid "Sound"
msgstr "Sonido"
#: ../src\gtkUI\dialogs\configuration.py:205
#: ../src\wxUI\dialogs\configuration.py:346
#: ../src\wxUI\dialogs\configuration.py:347
msgid "Audio Services"
msgstr "Servicios de audio"
#: ../src\gtkUI\dialogs\configuration.py:210
#: ../src\wxUI\dialogs\configuration.py:351
#: ../src\wxUI\dialogs\configuration.py:352
msgid "Save"
msgstr "Guardar"
@ -1500,7 +1496,7 @@ msgstr "Guardar"
#: ../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:353
#: ../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
@ -1855,7 +1851,7 @@ msgid "&Show / hide"
msgstr "&Mostrar / esconder"
#: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38
#: ../src\wxUI\view.py:63
#: ../src\wxUI\view.py:62
msgid "&Documentation"
msgstr "&Documentación"
@ -1871,11 +1867,11 @@ msgstr "&Salir"
msgid "Manage accounts"
msgstr "Gestionar cuentas"
#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:159
#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:158
msgid "Address"
msgstr "Dirección"
#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182
#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:181
msgid "Update"
msgstr "Actualización"
@ -2398,6 +2394,14 @@ msgstr "Privado"
msgid "public"
msgstr "público"
#: ../src\twitter\utils.py:124
msgid "Sorry, you are not authorised to see this status."
msgstr "Lo sentimos, no estás autorizado para ver este tuit."
#: ../src\twitter\utils.py:126
msgid "No status found with that ID"
msgstr "No existe un tuit con este ID."
#: ../src\update\wxUpdater.py:9
msgid "New version for %s"
msgstr "Nueva versión de %s"
@ -2445,41 +2449,53 @@ msgstr ""
msgid "Do you really want to close {0}?"
msgstr "¿Realmente deseas salir de {0}?"
#: ../src\wxUI\dialogs\configuration.py:33
#: ../src\wxUI\dialogs\configuration.py:21
msgid "ask before exiting {0}"
msgstr "Preguntar antes de salir de {0}Preguntar al salir de TWBlue"
#: ../src\wxUI\dialogs\configuration.py:23
msgid "Play a sound when {0} launches"
msgstr "Reproducir un sonido cuando inicia {0}"
#: ../src\wxUI\dialogs\configuration.py:25
msgid "Speak a message when {0} launches"
msgstr "Hablar un mensaje cuando {0} inicie."
#: ../src\wxUI\dialogs\configuration.py:34
msgid "Keymap"
msgstr "Mapa de teclado"
#: ../src\wxUI\dialogs\configuration.py:46
#: ../src\wxUI\dialogs\configuration.py:47
msgid "Proxy server: "
msgstr "Servidor proxy:"
#: ../src\wxUI\dialogs\configuration.py:52
#: ../src\wxUI\dialogs\configuration.py:53
msgid "Port: "
msgstr "Puerto:"
#: ../src\wxUI\dialogs\configuration.py:58
#: ../src\wxUI\dialogs\configuration.py:59
msgid "User: "
msgstr "Usuario: "
#: ../src\wxUI\dialogs\configuration.py:64
#: ../src\wxUI\dialogs\configuration.py:65
msgid "Password: "
msgstr "Contraseña:"
#: ../src\wxUI\dialogs\configuration.py:76
#: ../src\wxUI\dialogs\configuration.py:77
msgid "Autocompletion settings..."
msgstr "Opciones de autocompletado de usuarios"
#: ../src\wxUI\dialogs\configuration.py:78
#: ../src\wxUI\dialogs\configuration.py:79
msgid "Relative timestamps"
msgstr "Tiempos relativos"
#: ../src\wxUI\dialogs\configuration.py:81
#: ../src\wxUI\dialogs\configuration.py:82
msgid "API calls (One API call = 200 tweets, two API calls = 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\wxUI\dialogs\configuration.py:94
#: ../src\wxUI\dialogs\configuration.py:95
msgid ""
"Inverted buffers: The newest tweets will be shown at the beginning while the "
"oldest at the end"
@ -2487,11 +2503,11 @@ msgstr ""
"Buffers invertidos: los nuevos tweets se mostrarán al principio de las "
"listas y los viejos al final"
#: ../src\wxUI\dialogs\configuration.py:96
#: ../src\wxUI\dialogs\configuration.py:97
msgid "Retweet mode"
msgstr "Modo de retuit"
#: ../src\wxUI\dialogs\configuration.py:102
#: ../src\wxUI\dialogs\configuration.py:103
msgid ""
"Number of items per buffer to cache in database (0 to disable caching, blank "
"for unlimited)"
@ -2500,67 +2516,67 @@ msgstr ""
"blanco para guardarlos de forma ilimitada, 0 para desactivar la base de "
"datos)"
#: ../src\wxUI\dialogs\configuration.py:112
#: ../src\wxUI\dialogs\configuration.py:113
msgid "Buffer"
msgstr "Buffer"
#: ../src\wxUI\dialogs\configuration.py:112
#: ../src\wxUI\dialogs\configuration.py:113
msgid "Status"
msgstr "Estado"
#: ../src\wxUI\dialogs\configuration.py:115
#: ../src\wxUI\dialogs\configuration.py:116
msgid "Show/hide"
msgstr "Mostrar/ocultar"
#: ../src\wxUI\dialogs\configuration.py:116
#: ../src\wxUI\dialogs\configuration.py:117
msgid "Move up"
msgstr "Mover arriba"
#: ../src\wxUI\dialogs\configuration.py:117
#: ../src\wxUI\dialogs\configuration.py:118
msgid "Move down"
msgstr "Mover abajo"
#: ../src\wxUI\dialogs\configuration.py:127
#: ../src\wxUI\dialogs\configuration.py:184
#: ../src\wxUI\dialogs\configuration.py:187
#: ../src\wxUI\dialogs\configuration.py:192
#: ../src\wxUI\dialogs\configuration.py:128
#: ../src\wxUI\dialogs\configuration.py:185
#: ../src\wxUI\dialogs\configuration.py:188
#: ../src\wxUI\dialogs\configuration.py:193
msgid "Show"
msgstr "Mostrar"
#: ../src\wxUI\dialogs\configuration.py:129
#: ../src\wxUI\dialogs\configuration.py:139
#: ../src\wxUI\dialogs\configuration.py:159
#: ../src\wxUI\dialogs\configuration.py:185
#: ../src\wxUI\dialogs\configuration.py:130
#: ../src\wxUI\dialogs\configuration.py:140
#: ../src\wxUI\dialogs\configuration.py:160
#: ../src\wxUI\dialogs\configuration.py:186
msgid "Hide"
msgstr "Ocultar"
#: ../src\wxUI\dialogs\configuration.py:137
#: ../src\wxUI\dialogs\configuration.py:157
#: ../src\wxUI\dialogs\configuration.py:138
#: ../src\wxUI\dialogs\configuration.py:158
msgid "Select a buffer first."
msgstr "Primero selecciona un buffer"
#: ../src\wxUI\dialogs\configuration.py:140
#: ../src\wxUI\dialogs\configuration.py:160
#: ../src\wxUI\dialogs\configuration.py:141
#: ../src\wxUI\dialogs\configuration.py:161
msgid "The buffer is hidden, show it first."
msgstr "El buffer está oculto, muéstralo primero"
#: ../src\wxUI\dialogs\configuration.py:143
#: ../src\wxUI\dialogs\configuration.py:144
msgid "The buffer is already at the top of the list."
msgstr "El buffer ya se encuentra al principio de la lista"
#: ../src\wxUI\dialogs\configuration.py:163
#: ../src\wxUI\dialogs\configuration.py:164
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:302
#: ../src\wxUI\dialogs\configuration.py:303
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:326
#: ../src\wxUI\dialogs\configuration.py:327
msgid "Proxy"
msgstr "Proxy"
#: ../src\wxUI\dialogs\configuration.py:335
#: ../src\wxUI\dialogs\configuration.py:336
msgid "Buffers"
msgstr "Buffers"
@ -2605,7 +2621,7 @@ msgstr "Editar combinaciones de &teclas"
msgid "E&xit"
msgstr "S&alir"
#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:75
#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74
msgid "&Tweet"
msgstr "&Tuit"
@ -2657,82 +2673,88 @@ msgstr "&Mensaje directo"
msgid "&Add to list"
msgstr "&Añadir a lista"
#: ../src\wxUI\view.py:44
#: ../src\wxUI\view.py:43
msgid "R&emove from list"
msgstr "&Quitar de lista"
#: ../src\wxUI\view.py:46
#: ../src\wxUI\view.py:45
msgid "&View lists"
msgstr "&Ver listas"
#: ../src\wxUI\view.py:48
#: ../src\wxUI\view.py:47
msgid "Show user &profile"
msgstr "Ve&r perfil del usuario"
#: ../src\wxUI\view.py:49
#: ../src\wxUI\view.py:48
msgid "V&iew favourites"
msgstr "Ver &favoritos"
#: ../src\wxUI\view.py:53
#: ../src\wxUI\view.py:52
msgid "New &trending topics buffer..."
msgstr "Nuevo buffer de &tendencias"
#: ../src\wxUI\view.py:54
#: ../src\wxUI\view.py:53
msgid "&Load previous items"
msgstr "&Cargar elementos anteriores"
#: ../src\wxUI\view.py:56
#: ../src\wxUI\view.py:55
msgid "&Mute"
msgstr "S&ilenciar"
#: ../src\wxUI\view.py:57
#: ../src\wxUI\view.py:56
msgid "&Autoread"
msgstr "&lectura automática"
#: ../src\wxUI\view.py:58
#: ../src\wxUI\view.py:57
msgid "&Clear buffer"
msgstr "&Vaciar buffer"
#: ../src\wxUI\view.py:59
#: ../src\wxUI\view.py:58
msgid "&Destroy"
msgstr "&Eliminar"
#: ../src\wxUI\view.py:65
#: ../src\wxUI\view.py:64
msgid "Sounds &tutorial"
msgstr "Tutorial de &sonidos"
#: ../src\wxUI\view.py:66
#: ../src\wxUI\view.py:65
msgid "&What's new in this version?"
msgstr "¿&Qué hay de nuevo en esta versión?"
#: ../src\wxUI\view.py:68
#: ../src\wxUI\view.py:67
msgid "&Check for updates"
msgstr "&Comprobar actualizaciones"
#: ../src\wxUI\view.py:69
#: ../src\wxUI\view.py:68
msgid "&Report an error"
msgstr "&Reportar un error"
#: ../src\wxUI\view.py:74
#: ../src\wxUI\view.py:73
msgid "&Application"
msgstr "&Aplicación"
#: ../src\wxUI\view.py:76
#: ../src\wxUI\view.py:75
msgid "&User"
msgstr "&Usuario"
#: ../src\wxUI\view.py:77
#: ../src\wxUI\view.py:76
msgid "&Buffer"
msgstr "&Buffer"
#: ../src\wxUI\view.py:78
#: ../src\wxUI\view.py:77
msgid "&Help"
msgstr "Ay&uda"
#: ../src\wxUI\view.py:182
#: ../src\wxUI\view.py:181
msgid "Your {0} version is up to date"
msgstr "Tu versión de {0} está actualizada"
#~ msgid "Not actionable."
#~ msgstr "No hay acción asociada a este tuit."
#~ msgid "Autocomplete users\\342\\200\\231 settings"
#~ msgstr "Opciones de autocompletado"
#~ msgid "Global mute off"
#~ msgstr "Silencio global, desactivado"
@ -2754,9 +2776,6 @@ msgstr "Tu versión de {0} está actualizada"
#~ msgid "New tweet in user-defined buffer."
#~ msgstr "Nuevo tuit en líneas temporales"
#~ msgid "Autocomplete users settings"
#~ msgstr "Opciones de autocompletado de usuarios"
#~ msgid "Start account automatically"
#~ msgstr "Iniciar cuenta automáticamente"
@ -3043,9 +3062,6 @@ msgstr "Tu versión de {0} está actualizada"
#~ msgid "Do you really want to delete this search term?"
#~ msgstr "¿Realmente deseas eliminar esté término de búsqueda?"
#~ msgid "ask before exiting TwBlue?"
#~ msgstr "Preguntar al salir de TWBlue"
#~ msgid "Activate the auto-start of the invisible interface"
#~ msgstr "Activar el inicio automático de la interfaz invisible"

View File

@ -278,33 +278,8 @@ class audioServicesPanel(wx.Panel):
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 authorization. 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):

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2015-06-08 05:49+Hora de verano central (México)\n"
"POT-Creation-Date: 2015-06-12 17:49+Hora de verano central (México)\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"