diff --git a/res/zec_qt_wallet_de.ts b/res/zec_qt_wallet_de.ts
index fd505b8..e12c1fc 100644
--- a/res/zec_qt_wallet_de.ts
+++ b/res/zec_qt_wallet_de.ts
@@ -84,7 +84,7 @@
-
+ SendYOUR_TRANSLATION_HERE
@@ -111,23 +111,23 @@
-
-
-
+
+
+ AddressYOUR_TRANSLATION_HERE
-
+ Address BookYOUR_TRANSLATION_HERE
-
-
+
+ AmountYOUR_TRANSLATION_HERE
@@ -138,9 +138,9 @@
-
-
-
+
+
+ MemoYOUR_TRANSLATION_HERE
@@ -151,530 +151,563 @@
-
+ Recurring payment
+
+
+
+
+ Every month, starting 12-May-2012, for 6 payments
+
+
+
+
+ Edit Schedule
+
+
+
+
+ Miner FeeYOUR_TRANSLATION_HERE
-
+ 0YOUR_TRANSLATION_HERE
-
+ CancelYOUR_TRANSLATION_HERE
-
+ ReceiveYOUR_TRANSLATION_HERE
-
+ Address TypeYOUR_TRANSLATION_HERE
- z-Addr(Sapling)
- YOUR_TRANSLATION_HERE
+ YOUR_TRANSLATION_HERE
-
+ t-AddrYOUR_TRANSLATION_HERE
- z-Addr(Sprout)
- YOUR_TRANSLATION_HERE
+ YOUR_TRANSLATION_HERE
-
+ New AddressYOUR_TRANSLATION_HERE
-
+ LabelYOUR_TRANSLATION_HERE
-
+ Update LabelYOUR_TRANSLATION_HERE
-
+ Address balance
-
+ OptionalYOUR_TRANSLATION_HERE
-
+ Export Private KeyYOUR_TRANSLATION_HERE
-
- Address used
+
+ z-Addr
-
+
+ z-Addr(Legacy Sprout)
+
+
+
+ TransactionsYOUR_TRANSLATION_HERE
-
+ zcashdYOUR_TRANSLATION_HERE
-
+ You are currently not miningYOUR_TRANSLATION_HERE
-
-
-
-
+
+
+
+ Loading...YOUR_TRANSLATION_HERE
-
+ Block heightYOUR_TRANSLATION_HERE
-
+ Network solution rateYOUR_TRANSLATION_HERE
-
+ ConnectionsYOUR_TRANSLATION_HERE
-
-
-
+
+
+ |YOUR_TRANSLATION_HERE
-
+ &FileYOUR_TRANSLATION_HERE
-
+ &HelpYOUR_TRANSLATION_HERE
-
+ &AppsYOUR_TRANSLATION_HERE
-
+ &EditYOUR_TRANSLATION_HERE
-
+ E&xitYOUR_TRANSLATION_HERE
-
+ &AboutYOUR_TRANSLATION_HERE
-
+ &SettingsYOUR_TRANSLATION_HERE
-
+ Ctrl+PYOUR_TRANSLATION_HERE
-
+ &DonateYOUR_TRANSLATION_HERE
-
+ Check github.com for &updatesYOUR_TRANSLATION_HERE
-
+ Sapling &turnstileYOUR_TRANSLATION_HERE
-
+ Ctrl+A, Ctrl+TYOUR_TRANSLATION_HERE
-
+ &Import private keyYOUR_TRANSLATION_HERE
-
+ &Export all private keysYOUR_TRANSLATION_HERE
-
+ &z-board.netYOUR_TRANSLATION_HERE
-
+ Ctrl+A, Ctrl+ZYOUR_TRANSLATION_HERE
-
+ Address &bookYOUR_TRANSLATION_HERE
-
+ Ctrl+BYOUR_TRANSLATION_HERE
-
+ &Backup wallet.datYOUR_TRANSLATION_HERE
-
-
+
+ Export transactions
-
+ Pay zcash &URI...
-
+
+ Connect mobile &app
+
+
+
+
+ Ctrl+M
+
+
+
+ Tor configuration is available only when running an embedded zcashd.
-
+ Enable Tor
-
+ Connection over Tor has been enabled. To use this feature, you need to restart zec-qt-wallet.
-
+ Disable Tor
-
+ Connection over Tor has been disabled. To fully disconnect from Tor, you need to restart zec-qt-wallet.
-
+ Thanks for supporting zec-qt-wallet!YOUR_TRANSLATION_HERE
-
+ Donate 0.01 YOUR_TRANSLATION_HERE
-
+ to support zec-qt-walletYOUR_TRANSLATION_HERE
-
+ You are on testnet, your post won't actually appear on z-board.netYOUR_TRANSLATION_HERE
-
+ You need a sapling address with available balance to postYOUR_TRANSLATION_HERE
-
-
+
+ Computing Tx: YOUR_TRANSLATION_HERE
-
+ The keys were imported. It may take several minutes to rescan the blockchain. Until then, functionality may be limitedYOUR_TRANSLATION_HERE
-
+ Private key import rescan finishedYOUR_TRANSLATION_HERE
-
+ Error paying zcash URI
-
+ URI should be of the form 'zcash:<addr>?amt=x&memo=y
-
+ Paste Zcash URI
-
+ Could not understand address
-
+ Unknown field in URI:
-
+ Please paste your private keys (z-Addr or t-Addr) here, one per lineYOUR_TRANSLATION_HERE
-
+ The keys will be imported into your connected zcashd nodeYOUR_TRANSLATION_HERE
-
+ Error
-
+ Error exporting transactions, file was not saved
-
+ No wallet.datYOUR_TRANSLATION_HERE
-
+ Couldn't find the wallet.dat on this computerYOUR_TRANSLATION_HERE
-
+ You need to back it up from the machine zcashd is running onYOUR_TRANSLATION_HERE
-
+ Backup wallet.datYOUR_TRANSLATION_HERE
-
+ Couldn't backupYOUR_TRANSLATION_HERE
-
+ Couldn't backup the wallet.dat file.YOUR_TRANSLATION_HERE
-
+ You need to back it up manually.YOUR_TRANSLATION_HERE
-
+ These are all the private keys for all the addresses in your walletYOUR_TRANSLATION_HERE
-
+ Private key for YOUR_TRANSLATION_HERE
-
+ Save FileYOUR_TRANSLATION_HERE
-
+ Unable to open fileYOUR_TRANSLATION_HERE
-
-
+
+ Copy addressYOUR_TRANSLATION_HERE
-
-
-
+
+
+ Copied to clipboardYOUR_TRANSLATION_HERE
-
+ Get private keyYOUR_TRANSLATION_HERE
-
+ Shield balance to SaplingYOUR_TRANSLATION_HERE
-
-
+
+ View on block explorerYOUR_TRANSLATION_HERE
-
+ Migrate to SaplingYOUR_TRANSLATION_HERE
-
+ Copy txidYOUR_TRANSLATION_HERE
-
+ View MemoYOUR_TRANSLATION_HERE
-
+ Reply to
-
+ Created new t-AddrYOUR_TRANSLATION_HERE
-
+
+ Creation of new Sprout addresses is deprecated
+
+
+
+ Address has been previously used
-
+ Address is unused
-
+ Recipient YOUR_TRANSLATION_HERE
-
+ Only z-addresses can have memosYOUR_TRANSLATION_HERE
-
+ Memos can only be used with z-addressesYOUR_TRANSLATION_HERE
-
+ The memo field can only be used with a z-address.
YOUR_TRANSLATION_HERE
-
+
doesn't look like a z-addressYOUR_TRANSLATION_HERE
-
+ Reply to
-
+ Change from YOUR_TRANSLATION_HERE
-
+ Current balance :
-
+ Balance after this Tx:
-
+ Transaction ErrorYOUR_TRANSLATION_HERE
-
+ From Address is InvalidYOUR_TRANSLATION_HERE
-
+ Recipient Address YOUR_TRANSLATION_HERE
-
+ is InvalidYOUR_TRANSLATION_HERE
-
+ Amount '%1' is invalid!
@@ -693,6 +726,39 @@ doesn't look like a z-address
+
+ MobileAppConnector
+
+
+ Connect Mobile App
+
+
+
+
+ Scan this QRCode from your ZecQT companion app to connect your phone
+
+
+
+
+ QR Code
+
+
+
+
+ ZecQT Wallet Companion App
+
+
+
+
+ Disconnect
+
+
+
+
+ TextLabel
+
+
+PrivKey
@@ -704,27 +770,27 @@ doesn't look like a z-address
QObject
-
+ Attempting autoconnectYOUR_TRANSLATION_HERE
-
+ Starting embedded zcashdYOUR_TRANSLATION_HERE
-
+ zcashd is set to run as daemonYOUR_TRANSLATION_HERE
-
+ Waiting for zcashdYOUR_TRANSLATION_HERE
-
+ You have zcashd set to start as a daemon, which can cause problems with zec-qt-wallet
.Please remove the following line from your zcash.conf and restart zec-qt-wallet
@@ -732,7 +798,7 @@ daemon=1YOUR_TRANSLATION_HERE
-
+ Couldn't start the embedded zcashd.
Please try restarting.
@@ -743,199 +809,226 @@ If all else fails, please run zcashd manually.YOUR_TRANSLATION_HERE
-
+ Couldn't connect to zcashd configured in zcash.conf.
Not starting embedded zcashd because --no-embedded was passedYOUR_TRANSLATION_HERE
-
+
+ Hide Advanced Config
+
+
+
+
+ Show Advanced Config
+
+
+
+
+ Choose data directory
+
+
+
+ All Downloads Finished Successfully!YOUR_TRANSLATION_HERE
-
+ Couldn't download params. Please check the help site for more info.YOUR_TRANSLATION_HERE
-
+ The process returnedYOUR_TRANSLATION_HERE
-
-
+
+ Downloading YOUR_TRANSLATION_HERE
-
+ more remaining )YOUR_TRANSLATION_HERE
-
+ MB of YOUR_TRANSLATION_HERE
-
+ MB at YOUR_TRANSLATION_HERE
-
+ Downloading blocksYOUR_TRANSLATION_HERE
-
+ Block heightYOUR_TRANSLATION_HERE
-
+ SyncingYOUR_TRANSLATION_HERE
-
+ ConnectedYOUR_TRANSLATION_HERE
-
+ testnet:YOUR_TRANSLATION_HERE
-
+ Connected to zcashdYOUR_TRANSLATION_HERE
-
+ zcashd has no peer connections
-
+ There was an error connecting to zcashd. The error wasYOUR_TRANSLATION_HERE
-
+
+
+ The transaction with id YOUR_TRANSLATION_HERE
-
+
+
+ failed. The error wasYOUR_TRANSLATION_HERE
-
+
+
+ failedYOUR_TRANSLATION_HERE
-
+
+
+ Tx YOUR_TRANSLATION_HERE
-
+ tx computing. This can take several minutes.YOUR_TRANSLATION_HERE
-
+ Update Available
-
+ A new release v%1 is available! You have v%2.
Would you like to visit the releases page?
-
+
+ No updates available
-
+
+ You already have the latest release v%1
-
+ Please wait for zec-qt-wallet to exitYOUR_TRANSLATION_HERE
-
+ Waiting for zcashd to exitYOUR_TRANSLATION_HERE
-
+ failed. Please check the help site for more infoYOUR_TRANSLATION_HERE
-
+ zcashd errorYOUR_TRANSLATION_HERE
-
+ A manual connection was requested, but the settings are not configured.
Please set the host/port and user/password in the Edit->Settings menu.YOUR_TRANSLATION_HERE
-
+ Could not connect to zcashd configured in settings.
Please set the host/port and user/password in the Edit->Settings menu.YOUR_TRANSLATION_HERE
-
+ Authentication failed. The username / password you specified was not accepted by zcashd. Try changing it in the Edit->Settings menuYOUR_TRANSLATION_HERE
-
+ Your zcashd is starting up. Please wait.YOUR_TRANSLATION_HERE
-
-
+
+ Connection ErrorYOUR_TRANSLATION_HERE
-
-
+
+
+
+ Transaction ErrorYOUR_TRANSLATION_HERE
-
+ There was an error sending the transaction. The error was:YOUR_TRANSLATION_HERE
-
-
+
+ No ConnectionYOUR_TRANSLATION_HERE
@@ -1006,7 +1099,7 @@ You either have unconfirmed funds or the balance is too low for an automatic mig
YOUR_TRANSLATION_HERE
-
+ Computing Tx: YOUR_TRANSLATION_HERE
@@ -1031,6 +1124,29 @@ You either have unconfirmed funds or the balance is too low for an automatic mig
YOUR_TRANSLATION_HERE
+
+ RecurringDialog
+
+
+ Dialog
+
+
+
+
+ Add
+
+
+
+
+ Edit
+
+
+
+
+ Delete
+
+
+Settings
@@ -1265,6 +1381,102 @@ You either have unconfirmed funds or the balance is too low for an automatic mig
YOUR_TRANSLATION_HERE
+
+ createZcashConf
+
+
+ Configure zcash.conf
+
+
+
+
+ Show Advanced Configuration
+
+
+
+
+ Your zcash node will be configured for you automatically
+
+
+
+
+ Use custom datadir
+
+
+
+
+ Please chose a directory to store your wallet.dat and blockchain
+
+
+
+
+ Choose directory
+
+
+
+
+ Connect over Tor
+
+
+
+
+ Please note that you'll need to already have a Tor service configured on port 9050
+
+
+
+
+ newRecurringDialog
+
+
+ Edit Schedule
+
+
+
+
+ Schedule
+
+
+
+
+ Payment Description
+
+
+
+
+ TextLabel
+
+
+
+
+ From
+ YOUR_TRANSLATION_HERE
+
+
+
+ Number of payments
+
+
+
+
+ Amount
+ YOUR_TRANSLATION_HERE
+
+
+
+ Next Payment
+
+
+
+
+ To
+ YOUR_TRANSLATION_HERE
+
+
+
+ Memo
+ YOUR_TRANSLATION_HERE
+
+zboard
diff --git a/res/zec_qt_wallet_es.ts b/res/zec_qt_wallet_es.ts
index d7f69e0..dbcaa7b 100644
--- a/res/zec_qt_wallet_es.ts
+++ b/res/zec_qt_wallet_es.ts
@@ -84,7 +84,7 @@
-
+ SendEnvía
@@ -111,23 +111,23 @@
-
-
-
+
+
+ AddressDirección
-
+ Address BookDirectorio
-
-
+
+ AmountMonto
@@ -138,9 +138,9 @@
-
-
-
+
+
+ MemoMemo
@@ -151,530 +151,563 @@
-
+ Recurring payment
+
+
+
+
+ Every month, starting 12-May-2012, for 6 payments
+
+
+
+
+ Edit Schedule
+
+
+
+
+ Miner FeeCuota Minera
-
+ 00
-
+ CancelCancelar
-
+ ReceiveRecibir
-
+ Address TypeTipo De Dirección
- z-Addr(Sapling)
- z-Addr(Sapling)
+ z-Addr(Sapling)
-
+ t-Addrt-Addr
- z-Addr(Sprout)
- z-Addr(Sprout)
+ z-Addr(Sprout)
-
+ New AddressNueva Dirección
-
+ LabelEtiqueta
-
+ Update LabelActualizar Etiqueta
-
+ Address balance
-
+ OptionalOpcional
-
+ Export Private KeyExportar Clave Privada
-
- Address used
+
+ z-Addr
-
+
+ z-Addr(Legacy Sprout)
+
+
+
+ TransactionsTransacciones
-
+ zcashdzcashd
-
+ You are currently not miningActualmente no estas minando
-
-
-
-
+
+
+
+ Loading...Cargando...
-
+ Block heightAltura del bloque
-
+ Network solution rateRapidez de solución de red
-
+ ConnectionsConexiones
-
-
-
+
+
+ ||
-
+ &File&Archivo
-
+ &Help&Ayuda
-
+ &Apps&Apps
-
+ &Edit&Editar
-
+ E&xitSalir
-
+ &About&Acerca de
-
+ &Settings&Configuración
-
+ Ctrl+PCtrl+P
-
+ &Donate&Donar
-
+ Check github.com for &updatesConsulte las actualizaciones en github.com
-
+ Sapling &turnstileSapling &turnstile
-
+ Ctrl+A, Ctrl+TCtrl+A, Ctrl+T
-
+ &Import private keyImportar clave privada
-
+ &Export all private keysExportar todas las claves privadas
-
+ &z-board.netz-board.net
-
+ Ctrl+A, Ctrl+ZCtrl+A, Ctrl+Z
-
+ Address &bookDirectorio
-
+ Ctrl+BCtrl+B
-
+ &Backup wallet.datRespaldar wallet.dat
-
-
+
+ Export transactions
-
+ Pay zcash &URI...
-
+
+ Connect mobile &app
+
+
+
+
+ Ctrl+M
+
+
+
+ Tor configuration is available only when running an embedded zcashd.
-
+ Enable Tor
-
+ Connection over Tor has been enabled. To use this feature, you need to restart zec-qt-wallet.
-
+ Disable Tor
-
+ Connection over Tor has been disabled. To fully disconnect from Tor, you need to restart zec-qt-wallet.
-
+ Thanks for supporting zec-qt-wallet!Gracias por apoyar zec-qt-wallet!
-
+ Donate 0.01 Donar 0.01
-
+ to support zec-qt-wallet para apoyar zec-qt-wallet
-
+ You are on testnet, your post won't actually appear on z-board.netEstas en testnet, tu publicación no aparecerá en z-board.net
-
+ You need a sapling address with available balance to postNecesitas una dirección Sapling con saldo disponible para publicar
-
-
+
+ Computing Tx: Calculando Tx:
-
+ The keys were imported. It may take several minutes to rescan the blockchain. Until then, functionality may be limitedLas claves fueron importadas. Puede que se demore varios minutos en volver a escanear el blockchain. Hasta entonces, la funcionalidad puede ser limitada.
-
+ Private key import rescan finishedImportación de clave privada re-escaneada finalizada
-
+ Error paying zcash URI
-
+ URI should be of the form 'zcash:<addr>?amt=x&memo=y
-
+ Paste Zcash URI
-
+ Could not understand address
-
+ Unknown field in URI:
-
+ Please paste your private keys (z-Addr or t-Addr) here, one per linePor favor pegue sus claves privadas (z-Addr o t-Addr) aqui, una por línea
-
+ The keys will be imported into your connected zcashd nodeLas claves serán importadas en su nodo zcashd conectado
-
+ Error
-
+ Error exporting transactions, file was not saved
-
+ No wallet.datSin wallet.dat
-
+ Couldn't find the wallet.dat on this computerNo se pudo encontrar wallet.dat en esta computadora
-
+ You need to back it up from the machine zcashd is running onNecesitas hacer una copia de seguridad de la computadora en la que se está ejecutando zcashd
-
+ Backup wallet.datRespaldar wallet.dat
-
+ Couldn't backupNo se pudo hacer una copia de seguridad
-
+ Couldn't backup the wallet.dat file.No se pudo hacer copia de seguridad de wallet.dat
-
+ You need to back it up manually.Necesitas hacer una copia de seguridad manualmente.
-
+ These are all the private keys for all the addresses in your walletEstas son todas las claves privadas para todas las direcciones en tu billetera
-
+ Private key for Clave privada para
-
+ Save FileGuardar Archivo
-
+ Unable to open fileNo es posible abrir el archivo
-
-
+
+ Copy addressCopiar dirección
-
-
-
+
+
+ Copied to clipboardCopiado al portapapeles
-
+ Get private keyObtener clave privada
-
+ Shield balance to SaplingProteger saldo a Sapling
-
-
+
+ View on block explorerVer en el explorador de bloques
-
+ Migrate to SaplingMigrar a Sapling
-
+ Copy txidCopiar txid
-
+ View MemoVer Memo
-
+ Reply to
-
+ Created new t-AddrNuevo dirección t-Addr creada
-
+
+ Creation of new Sprout addresses is deprecated
+
+
+
+ Address has been previously used
-
+ Address is unused
-
+ Recipient Destinatario
-
+ Only z-addresses can have memosSolo las direcciones z-Addr pueden tener memos
-
+ Memos can only be used with z-addressesLos memos solo se pueden usar con direcciones z-Addr
-
+ The memo field can only be used with a z-address.
El campo memo solo puede ser usado con una direccion z-Addr
-
+
doesn't look like a z-addressno parece una direccion z-Addr
-
+ Reply to
-
+ Change from Cambiar de
-
+ Current balance :
-
+ Balance after this Tx:
-
+ Transaction ErrorError de Transacción
-
+ From Address is InvalidDirección de envio inválida
-
+ Recipient Address Dirección de Destinatario
-
+ is Invalid es Inválida
-
+ Amount '%1' is invalid!
@@ -693,6 +726,39 @@ doesn't look like a z-address
+
+ MobileAppConnector
+
+
+ Connect Mobile App
+
+
+
+
+ Scan this QRCode from your ZecQT companion app to connect your phone
+
+
+
+
+ QR Code
+
+
+
+
+ ZecQT Wallet Companion App
+
+
+
+
+ Disconnect
+
+
+
+
+ TextLabel
+
+
+PrivKey
@@ -704,161 +770,186 @@ doesn't look like a z-address
QObject
-
-
+
+ No ConnectionSin Conexión
-
+ Downloading blocksDescargando Bloques
-
+ Block heightAltura del bloque
-
+ SyncingSincronizando
-
+ ConnectedConectando
-
+ testnet:testnet:
-
+ Connected to zcashdConectando a zcashd
-
+ zcashd has no peer connections
-
+ There was an error connecting to zcashd. The error wasHubo un error al conectar con zcashd. El error fue
-
+
+
+ The transaction with id La transacción con id
-
+
+
+ failed. The error was falló. El error fue
-
+
+
+ Tx Tx
-
+
+
+ failed falló
-
+ tx computing. This can take several minutes.tx computando. Esto puede tomar varios minutos.
-
+ Update Available
-
+ A new release v%1 is available! You have v%2.
Would you like to visit the releases page?
-
+
+ No updates available
-
+
+ You already have the latest release v%1
-
+ Please wait for zec-qt-wallet to exitPor favor, espere que zec-qt-wallet salga
-
+ Waiting for zcashd to exitEsperando que zcashd salga
-
+ Attempting autoconnectIntentando de autoconectarse
-
+ Starting embedded zcashdIniciando zcashd incorporado
-
+ zcashd is set to run as daemonzcashd está configurado para ejecutarse como demonio
-
+ Waiting for zcashdEsperando zcashd
-
+
+ Hide Advanced Config
+
+
+
+
+ Show Advanced Config
+
+
+
+
+ Choose data directory
+
+
+
+ All Downloads Finished Successfully!Todas Las Descargas Terminaron Exitosamente!
-
+ Couldn't download params. Please check the help site for more info.No se pudieron descargar los parámetros. Por favor, consulta el sitio de ayuda para mayor información.
-
-
+
+ Downloading Descargando
-
+ more remaining ) faltan ))
-
+ MB of MB de
-
+ MB at MB a
-
+ A manual connection was requested, but the settings are not configured.
Please set the host/port and user/password in the Edit->Settings menu.
@@ -867,7 +958,7 @@ Please set the host/port and user/password in the Edit->Settings menu.
-
+ Could not connect to zcashd configured in settings.
Please set the host/port and user/password in the Edit->Settings menu.
@@ -877,18 +968,20 @@ Por favor, especificar el host/puerta y usario/contraseña en el menú Editar-&g
-
-
+
+
+
+ Transaction Error Error De Transacción
-
+ failed. Please check the help site for more info falló. Por favor, consulte el sitio de ayuda para más información
-
+ You have zcashd set to start as a daemon, which can cause problems with zec-qt-wallet
.Please remove the following line from your zcash.conf and restart zec-qt-wallet
@@ -898,7 +991,7 @@ Por favor, eliminar la siguente linea de zcashd.conf y reinicia zec-qt-wallet
daemon=1
-
+ Couldn't start the embedded zcashd.
Please try restarting.
@@ -914,12 +1007,12 @@ Si todo falla, por favor ejecutar zcashd manualmente.
-
+ The process returnedEl proceso devuelto
-
+ Couldn't connect to zcashd configured in zcash.conf.
Not starting embedded zcashd because --no-embedded was passed
@@ -928,28 +1021,28 @@ Not starting embedded zcashd because --no-embedded was passed
No iniciaré zcashd incorporado porque la opcion --no-embedded fue dada.
-
+ zcashd errorerror de zcashd
-
+ Authentication failed. The username / password you specified was not accepted by zcashd. Try changing it in the Edit->Settings menuAutenticación fallida. El usario/contraseña que epecificó no fue aceptado por zcashd. Intenta cambiarlo en el menu Editar->Configuración.
-
+ Your zcashd is starting up. Please wait.Tu zcashd se está iniciando. Por favor espera.
-
-
+
+ Connection ErrorError de conexión
-
+ There was an error sending the transaction. The error was:Hubo un error al enviar la transacción. El error fue:
@@ -972,7 +1065,7 @@ El saldo es insuficiente para una migración automática.
-
+ Computing Tx: Calculando Tx:
@@ -1047,6 +1140,29 @@ El saldo es insuficiente para una migración automática.
Eliminar etiqueta
+
+ RecurringDialog
+
+
+ Dialog
+
+
+
+
+ Add
+
+
+
+
+ Edit
+
+
+
+
+ Delete
+
+
+Settings
@@ -1281,6 +1397,102 @@ El saldo es insuficiente para una migración automática.
Estás utilizando una tarifa personalizada. Como las tarifas son transparentes estás perdiendo algo de privacidad. Por favor, solo haz esto si sabes lo que estás haciendo!
+
+ createZcashConf
+
+
+ Configure zcash.conf
+
+
+
+
+ Show Advanced Configuration
+
+
+
+
+ Your zcash node will be configured for you automatically
+
+
+
+
+ Use custom datadir
+
+
+
+
+ Please chose a directory to store your wallet.dat and blockchain
+
+
+
+
+ Choose directory
+
+
+
+
+ Connect over Tor
+
+
+
+
+ Please note that you'll need to already have a Tor service configured on port 9050
+
+
+
+
+ newRecurringDialog
+
+
+ Edit Schedule
+
+
+
+
+ Schedule
+
+
+
+
+ Payment Description
+
+
+
+
+ TextLabel
+
+
+
+
+ From
+ Desde
+
+
+
+ Number of payments
+
+
+
+
+ Amount
+ Monto
+
+
+
+ Next Payment
+
+
+
+
+ To
+ A
+
+
+
+ Memo
+ Memo
+
+zboard
diff --git a/res/zec_qt_wallet_fr.qm b/res/zec_qt_wallet_fr.qm
index 0b575d8..cef7fde 100644
Binary files a/res/zec_qt_wallet_fr.qm and b/res/zec_qt_wallet_fr.qm differ
diff --git a/res/zec_qt_wallet_fr.ts b/res/zec_qt_wallet_fr.ts
index a263e31..d786d72 100644
--- a/res/zec_qt_wallet_fr.ts
+++ b/res/zec_qt_wallet_fr.ts
@@ -84,7 +84,7 @@
-
+ SendEnvoyer
@@ -111,23 +111,23 @@
-
-
-
+
+
+ AddressAdresse
-
+ Address BookCarnet d'adresses
-
-
+
+ AmountMontant
@@ -138,9 +138,9 @@
-
-
-
+
+
+ MemoMémo
@@ -151,535 +151,572 @@
-
+ Recurring payment
+
+
+
+
+ Every month, starting 12-May-2012, for 6 payments
+
+
+
+
+ Edit Schedule
+
+
+
+
+ Miner FeeI replaced this with "transaction fee" which sounds much better in French.. I hope it's correct too.. Frais de transaction
-
+ 00
-
+ CancelAnnuler
-
+ ReceiveRecevoir
-
+ Address TypeType d'adresse
- z-Addr(Sapling)
- Adresse-z(Sapling)
+ Adresse-z(Sapling)
-
+ t-AddrAdresse-t
- z-Addr(Sprout)
- Adresse-z(Sprout)
+ Adresse-z(Sprout)
-
+ New AddressNouvelle Adresse
-
+ LabelEtiquette
-
+ Update LabelMettre à jour l'étiquette
-
+ Address balanceSolde de l'adresse
-
+ OptionalOptionnel
-
+ Export Private KeyExporter la clef privée
- Address used
+ Adresse utilisée
+
+
+
+ z-Addr
-
+
+ z-Addr(Legacy Sprout)
+
+
+
+ TransactionsTransactions
-
+ zcashdzcashd
-
+ You are currently not miningVous ne minez pas à présent
-
-
-
-
+
+
+
+ Loading...Chargement...
-
+ Block heightHauteur de block
-
+ Network solution rateTaux de solution du réseau
-
+ ConnectionsConnections
-
-
-
+
+
+ ||
-
+ &File&Fichier
-
+ &Help&Aide
-
+ &Apps&Applications
-
+ &Edit&Edition
-
+ E&xitQ&uiter
-
+ &About&À propos
-
+ &Settings&Préférences
-
+ Ctrl+PCtrl+P
-
+ &Donate&Faire un don
-
+ Check github.com for &updatesVérifier &github.com pour des mises à jour
-
+ Sapling &turnstileSapling &turnstile
-
+ Ctrl+A, Ctrl+TCtrl+A, Ctrl+T
-
+ &Import private key&Importer une clef privée
-
+ &Export all private keys&Exporter toutes les clefs privées
-
+ &z-board.net&z-board.net
-
+ Ctrl+A, Ctrl+ZCtrl+A, Ctrl+Z
-
+ Address &bookCarnet &d'adresse
-
+ Ctrl+BCtrl+B
-
+ &Backup wallet.dat&Sauvegarder "wallet.dat"
-
-
+
+ Export transactionsExporter les transactions
-
+ Pay zcash &URI...
+ PAyer une URI zcash
+
+
+
+ Connect mobile &app
-
+
+ Ctrl+M
+
+
+
+ Tor configuration is available only when running an embedded zcashd.La configuration de Tor est disponible uniquement lors de l'exécution du processus zcashd intégré.
-
+ Enable TorActiver Tor
-
+ Connection over Tor has been enabled. To use this feature, you need to restart zec-qt-wallet.La connection via Tor est activée. Afin d'utiliser cette fonctionnalité, veuillez redémarer zec-qt-wallet.
-
+ Disable TorDésactiver Tor
-
+ Connection over Tor has been disabled. To fully disconnect from Tor, you need to restart zec-qt-wallet.La connection via Tor a été désactivée. Afin de complètement se déconnecter de Tor, vous devez redémarrer zec-qt-wallet.
-
+ Thanks for supporting zec-qt-wallet!Merci de supporter zec-qt-wallet !
-
+ Donate 0.01 Donner 0.01
-
+ to support zec-qt-wallet pour supporter zec-qt-wallet
-
+ You are on testnet, your post won't actually appear on z-board.netVous êtes connecté au réseau de test. Votre message n'apparaîtra donc pas sur z-board.net
-
+ You need a sapling address with available balance to postVous avez besoin d'une adresse de type Sapling avec un solde suffisant pour pouvoir poster
-
-
+
+ Computing Tx: Calcul de la transaction en cours:
-
+ The keys were imported. It may take several minutes to rescan the blockchain. Until then, functionality may be limitedLes clefs ont été importées. Cela peut prendre quelque minutes pour rescanner la blockchain. Durant cette période, les fonctionnalités peuvent être limitées
-
+ Private key import rescan finishedRescan de l'import de la clef privée achevé
-
+ Error paying zcash URI
-
+ Erreur lors du payement du URI zcash
-
+ URI should be of the form 'zcash:<addr>?amt=x&memo=y
-
+ Le format URI doit être comme suit: 'zcash:<addr>?amt=x&memo=y
-
+ Paste Zcash URI
-
+ Coller le URI Zcash
-
+ Could not understand address
-
+ Adresse non valide
-
+ Unknown field in URI:
-
+ Champ inconnu dans le URI
-
+ Please paste your private keys (z-Addr or t-Addr) here, one per lineVeuillez coller votre clef privée (Adresse-z ou Adresse-t) ici. Une clef par ligne
-
+ The keys will be imported into your connected zcashd nodeLes clef seront importées dans votre noeud zcashd connecté
-
+ ErrorErreur
-
+ Error exporting transactions, file was not savedErreur lors de l'exportation des transactions. Le fichier n'a pas été sauvegardé.
-
+ No wallet.datPas de fichier "wallet.dat"
-
+ Couldn't find the wallet.dat on this computerImpossible de trouver le fichier "wallet.dat" sur cet ordinateur
-
+ You need to back it up from the machine zcashd is running onVous devez effectuer la sauvegarde depuis la machine sur laquelle zcashd est en cours d'exécution
-
+ Backup wallet.datSauvegarder wallet.dat
-
+ Couldn't backupLa sauvegarde n'a pas pu être effectuée
-
+ Couldn't backup the wallet.dat file.Impossible de sauvegarder le fichier "wallet.dat".
-
+ You need to back it up manually.Vous devez le sauvegarder manuellement.
-
+ These are all the private keys for all the addresses in your walletCe sont toutes les clés privées pour toutes les adresses de votre portefeuille
-
+ Private key for Clef privée pour
-
+ Save FileSauvegarder le fichier
-
+ Unable to open filempossible d'ouvrir le fichier
-
-
+
+ Copy addressCopier l'adresse
-
-
-
+
+
+ Copied to clipboardCopié dans le presse-papier
-
+ Get private keyObtenir la clef privée
-
+ Shield balance to SaplingRendre privé le solde vers Sapling
-
-
+
+ View on block explorerVoir dans l'explorateur de block
-
+ Migrate to SaplingMigrer vers Sapling
-
+ Copy txidCopier l'ID de transaction
-
+ View MemoVoir le mémo
-
+ Reply to Répondre à
-
+ Created new t-AddrNouvelle Adresse-t créée
-
+
+ Creation of new Sprout addresses is deprecated
+
+
+
+ Address has been previously usedL'adresse a été utilisée précédemment.
-
+ Address is unusedL'adresse est inutilisée.
-
+ Recipient Destinataire
-
+ Only z-addresses can have memosSeules les Adresses-z peuvent avoir un mémo
-
+ Memos can only be used with z-addressesLes mémos peuvent seulement être utilisés avec des Adresses-z
-
+ The memo field can only be used with a z-address.
Le champs mémo ne peut uniquement être utilisé avec une adresse-z.
-
+
doesn't look like a z-address
Cette adresse ne semble pas être de type adresse-z
-
+ Reply toRépondre à
-
+ Change from Changer de
-
+ Current balance : Solde actuel :
-
+ Balance after this Tx: Solde après cette Tx:
-
+ Transaction ErrorErreur de transaction
-
+ From Address is InvalidL'adresse de l'émetteur est invalide
-
+ Recipient Address Adresse du destinataire
-
+ is Invalid est invalide
-
+ Amount '%1' is invalid!
-
+ Le montant '%1' est invalide.
@@ -696,6 +733,39 @@ Cette adresse ne semble pas être de type adresse-z
Inclure l'adresse de réponse
+
+ MobileAppConnector
+
+
+ Connect Mobile App
+
+
+
+
+ Scan this QRCode from your ZecQT companion app to connect your phone
+
+
+
+
+ QR Code
+
+
+
+
+ ZecQT Wallet Companion App
+
+
+
+
+ Disconnect
+
+
+
+
+ TextLabel
+
+
+PrivKey
@@ -707,27 +777,27 @@ Cette adresse ne semble pas être de type adresse-z
QObject
-
+ Attempting autoconnectTentative de connection automatique
-
+ Starting embedded zcashdDémarrage de zcashd intégré
-
+ zcashd is set to run as daemonzcashd est configuré pour s'exécuter en tant que démon
-
+ Waiting for zcashdEn attente de zcashd
-
+ You have zcashd set to start as a daemon, which can cause problems with zec-qt-wallet
.Please remove the following line from your zcash.conf and restart zec-qt-wallet
@@ -738,7 +808,7 @@ daemon=1
daemon=1
-
+ Couldn't start the embedded zcashd.
Please try restarting.
@@ -755,157 +825,182 @@ Si vous avez précédemment démarré zcashd avec des arguments, vous devrez peu
Si tout échoue, exécutez zcashd manuellement.
-
+ Couldn't connect to zcashd configured in zcash.conf.
Not starting embedded zcashd because --no-embedded was passedLe démarrage de zcashd n'a pas eu lieu car l'argument --no-embedded a été utilisé au lancement
-
+
+ Hide Advanced Config
+
+
+
+
+ Show Advanced Config
+
+
+
+
+ Choose data directory
+
+
+
+ All Downloads Finished Successfully!Tous les téléchargements terminés avec succès !
-
+ Couldn't download params. Please check the help site for more info.Impossible de télécharger les paramètres. Veuillez vous rendre sur le site d'aide pour plus d'info.
-
+ The process returnedLe processus a renvoyé
-
-
+
+ Downloading Téléchargement en cours
-
+ more remaining ) restant)
-
+ MB of MB de
-
+ MB at MB à
-
+ Downloading blocksBlocs en cours de téléchargement
-
+ Block heightHauteur de bloc
-
+ SyncingSynchronisation
-
+ ConnectedConnecté
-
+ testnet:réseau test:
-
+ Connected to zcashdConnecté à zcashd
-
+ zcashd has no peer connections
-
+ zcashd n'a aucune connexion à un pair
-
+ There was an error connecting to zcashd. The error wasUne erreur est survenue lors de la connection à zcashd. L'erreur est
-
+
+
+ The transaction with id La transaction avec ID
-
+
+
+ failed. The error was a échoué. L'erreur était
-
+
+
+ failed a échoué
-
+
+
+ Tx Tx
-
+ tx computing. This can take several minutes. tx en cours de calcul. Ceci peut prendre quelques minutes.
-
+ Update Available
-
+ MàJ disponible
-
+ A new release v%1 is available! You have v%2.
Would you like to visit the releases page?
-
+ Voulez-vous visiter la page des nouvelles versions ?
-
+
+ No updates available
-
+ Pas de MàJ disponible
-
+
+ You already have the latest release v%1
-
+ Vous utilisez déjà la dernière version v%1
-
+ Please wait for zec-qt-wallet to exitVeuillez patienter. Fermeture de zec-qt-wallet en cours
-
+ Waiting for zcashd to exitAttente de la fermeture de zcashd
-
+ failed. Please check the help site for more info a échoué. Veuillez vous rendre sur le site d'aide pour plus d'info
-
+ zcashd errorerreur zcashd
-
+ A manual connection was requested, but the settings are not configured.
Please set the host/port and user/password in the Edit->Settings menu.
@@ -914,7 +1009,7 @@ Please set the host/port and user/password in the Edit->Settings menu.
-
+ Could not connect to zcashd configured in settings.
Please set the host/port and user/password in the Edit->Settings menu.
@@ -923,35 +1018,37 @@ Please set the host/port and user/password in the Edit->Settings menu.
-
+ Authentication failed. The username / password you specified was not accepted by zcashd. Try changing it in the Edit->Settings menuAuthentification échouée. Le nom d'utilisateur / mot de passe que vous avez spécifié n'a pas été accepté par zcashd. Essayez de le changer dans le menu Edition-> Préférences
-
+ Your zcashd is starting up. Please wait.Votre zcashd est en cours de démarrage. Veuillez patienter.
-
-
+
+ Connection ErrorErreur de connection
-
-
+
+
+
+ Transaction ErrorErreur de transaction
-
+ There was an error sending the transaction. The error was:Une erreur est survenue en envoyant la transaction. L'erreur est:
-
-
+
+ No ConnectionPas de connection
@@ -973,22 +1070,22 @@ Veuillez configurer l'hôte/port et utilisateur/mot de passe dans le menu E
Import Address Book
-
+ Importer le carnet d'adressesUnable to open file
- mpossible d'ouvrir le fichier
+ Impossible d'ouvrir le fichierAddress Book Import Done
-
+ Import du carnet d'adresses terminéImported %1 new Address book entries
-
+ %1 nouvelle(s) entrée(s) importée(s) dans le carnet d'adresses.
@@ -1023,7 +1120,7 @@ You either have unconfirmed funds or the balance is too low for an automatic mig
Vous avez soit des fonds non confirmés soit le solde est trop petit pour une migration automatique.
-
+ Computing Tx: Calcul de Tx en cours:
@@ -1048,6 +1145,29 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi
Montant
+
+ RecurringDialog
+
+
+ Dialog
+
+
+
+
+ Add
+
+
+
+
+ Edit
+
+
+
+
+ Delete
+
+
+Settings
@@ -1246,7 +1366,7 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi
Import Address Book
-
+ Importer de carnet d'adresses
@@ -1269,7 +1389,7 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi
zcashd doesn't seem to have any peers. You might not be connected to the internet, so this Transaction might not work.
-
+ zcashd semble n'avoir aucune connexion à un autre pair. Comme vous n'êtes peut-être pas connecté à Internet, cette transaction pourrait ne pas fonctionner.
@@ -1282,6 +1402,102 @@ Vous avez soit des fonds non confirmés soit le solde est trop petit pour une mi
Vous appliquez des frais personnalisés. Comme les frais sont transparents, vous diminuez votre caractère privé. Veuillez seulement utiliser ceci si vous êtes sûr de ce que vous faites !
+
+ createZcashConf
+
+
+ Configure zcash.conf
+
+
+
+
+ Show Advanced Configuration
+
+
+
+
+ Your zcash node will be configured for you automatically
+
+
+
+
+ Use custom datadir
+
+
+
+
+ Please chose a directory to store your wallet.dat and blockchain
+
+
+
+
+ Choose directory
+
+
+
+
+ Connect over Tor
+
+
+
+
+ Please note that you'll need to already have a Tor service configured on port 9050
+
+
+
+
+ newRecurringDialog
+
+
+ Edit Schedule
+
+
+
+
+ Schedule
+
+
+
+
+ Payment Description
+
+
+
+
+ TextLabel
+
+
+
+
+ From
+ De
+
+
+
+ Number of payments
+
+
+
+
+ Amount
+ Montant
+
+
+
+ Next Payment
+
+
+
+
+ To
+ À
+
+
+
+ Memo
+ Mémo
+
+zboard
diff --git a/res/zec_qt_wallet_pt.ts b/res/zec_qt_wallet_pt.ts
index 60cecf2..464a70f 100644
--- a/res/zec_qt_wallet_pt.ts
+++ b/res/zec_qt_wallet_pt.ts
@@ -84,7 +84,7 @@
-
+ SendEnviar
@@ -111,23 +111,23 @@
-
-
-
+
+
+ AddressEndereço
-
+ Address BookAgenda
-
-
+
+ AmountQuantidade
@@ -138,9 +138,9 @@
-
-
-
+
+
+ MemoAnexar recado
@@ -151,532 +151,565 @@
-
+ Recurring payment
+
+
+
+
+ Every month, starting 12-May-2012, for 6 payments
+
+
+
+
+ Edit Schedule
+
+
+
+
+ Miner FeeTaxa de mineração
-
+ 00
-
+ CancelCancelar
-
+ ReceiveReceber
-
+ Address TypeTipo de Endereço
- z-Addr(Sapling)
- z-Addr(Sapling)
+ z-Addr(Sapling)
-
+ t-Addrt-Addr
- z-Addr(Sprout)
- z-Addr(Sprout)
+ z-Addr(Sprout)
-
+ New AddressNovo Endereço
-
+ LabelEtiqueta
-
+ Update LabelAtualizar
-
+ Address balance
-
+ OptionalOpcional
-
+ Export Private KeyExportar Chave Privada
-
- Address used
+
+ z-Addr
-
+
+ z-Addr(Legacy Sprout)
+
+
+
+ TransactionsTransações
-
+ zcashdzcashd
-
+ You are currently not miningVocê não está minerando atualmente
-
-
-
-
+
+
+
+ Loading...Carregando...
-
+ Block heightAltura do Bloco
-
+ Network solution rateTaxa de soluções da rede
-
+ ConnectionsConexões
-
-
-
+
+
+ ||
-
+ &File&Arquivo
-
+ &Help&Ajuda
-
+ &Apps&Aplicações
-
+ &Edit&Editar
-
+ E&xitSair
-
+ &About&Sobre
-
+ &Settings&Preferências
-
+ Ctrl+PCtrl+P
-
+ &Donate&Doar
-
+ Check github.com for &updates&Checar github.com por atualizações
-
+ Sapling &turnstileSapling &turnstile
-
+ Ctrl+A, Ctrl+TCtrl+A, Ctrl+T
-
+ &Import private key&Importar chave privada
-
+ &Export all private keys&Exportar todas as chaves privadas
-
+ &z-board.net&z-board.net
-
+ Ctrl+A, Ctrl+ZCtrl+A, Ctrl+Z
-
+ Address &book&Agenda de Endereços
-
+ Ctrl+BCtrl+B
-
+ &Backup wallet.dat&Salvar wallet.dat
-
-
+
+ Export transactions
-
+ Pay zcash &URI...
-
+
+ Connect mobile &app
+
+
+
+
+ Ctrl+M
+
+
+
+ Tor configuration is available only when running an embedded zcashd.
-
+ Enable Tor
-
+ Connection over Tor has been enabled. To use this feature, you need to restart zec-qt-wallet.
-
+ Disable Tor
-
+ Connection over Tor has been disabled. To fully disconnect from Tor, you need to restart zec-qt-wallet.
-
+ Thanks for supporting zec-qt-wallet!Obrigado por apoiar a zec-qt-wallet!
-
+ Donate 0.01 Doar 0.01
-
+ to support zec-qt-wallet para apoiar zec-qt-wallet
-
+ You are on testnet, your post won't actually appear on z-board.netVocê está na testnet, seu post não aparecerá no z-board.net
-
+ You need a sapling address with available balance to postVocê precisa de um endereço sapling com saldo disponível para postar
-
-
+
+ Computing Tx: Gerando Tx:
-
+ The keys were imported. It may take several minutes to rescan the blockchain. Until then, functionality may be limitedChaves importadas. Pode demorar alguns minutos para re-escanear a blockchain. Até lá, funcionalidades poderão estar limitadas
-
+ Private key import rescan finishedRe-escan de chave privada completo
-
+ Error paying zcash URI
-
+ URI should be of the form 'zcash:<addr>?amt=x&memo=y
-
+ Paste Zcash URI
-
+ Could not understand address
-
+ Unknown field in URI:
-
+ Please paste your private keys (z-Addr or t-Addr) here, one per lineColoque sua(s) chave(s) privadas (z-Addr ou t-Addr) aqui, uma por linha
-
+ The keys will be imported into your connected zcashd nodeAs chaves serão importadas em seu nó zcashd conectado
-
+ Error
-
+ Error exporting transactions, file was not saved
-
+ No wallet.datNenhum wallet.data
-
+ Couldn't find the wallet.dat on this computerNão foi localizado o wallet.dat nesse computador
-
+ You need to back it up from the machine zcashd is running onVocê precisar salvar a partir da máquina que zcashd está rodando
-
+ Backup wallet.datSalvar wallet.dat
-
+ Couldn't backupNão foi possível salvar
-
+ Couldn't backup the wallet.dat file.Não foi possível salvar o arquivo wallet.dat.
-
+ You need to back it up manually.Você precisar salvá-lo manualmente.
-
+ These are all the private keys for all the addresses in your walletYOUR_TRANSLATION_HERE
-
+ Private key for Chave privada para
-
+ Save FileSalvar Arquivo
-
+ Unable to open fileNão foi possível abrir o arquivo
-
-
+
+ Copy addressCopiar endereço
-
-
-
+
+
+ Copied to clipboardCopiado
-
+ Get private keyObter chave privada
-
+ Shield balance to SaplingBlindar saldo para Sapling
-
-
+
+ View on block explorerVer no explorador de blocos
-
+ Migrate to SaplingMigrar para Sapling
-
+ Copy txidCopiar txid
-
+ View MemoVer Recado
-
+ Reply to
-
+ Created new t-AddrCriar novo t-Addr
-
+
+ Creation of new Sprout addresses is deprecated
+
+
+
+ Address has been previously used
-
+ Address is unused
-
+ Recipient Destinatário
-
+ Only z-addresses can have memosApenas z-Addresses podem conter recados
-
+ Memos can only be used with z-addressesRecados só podem ser anexados com z-Addresses
-
+ The memo field can only be used with a z-address.
O campo de recado só pode ser usado junto com z-Addresses.
-
+
doesn't look like a z-address
não se parece com um z-Address
-
+ Reply to
-
+ Change from Troco de
-
+ Current balance :
-
+ Balance after this Tx:
-
+ Transaction ErrorErro na Transação
-
+ From Address is InvalidEndereço de partida inválido
-
+ Recipient Address Endereço destinatário
-
+ is Invalid é Inválido
-
+ Amount '%1' is invalid!
@@ -695,6 +728,39 @@ não se parece com um z-Address
+
+ MobileAppConnector
+
+
+ Connect Mobile App
+
+
+
+
+ Scan this QRCode from your ZecQT companion app to connect your phone
+
+
+
+
+ QR Code
+
+
+
+
+ ZecQT Wallet Companion App
+
+
+
+
+ Disconnect
+
+
+
+
+ TextLabel
+
+
+PrivKey
@@ -706,27 +772,27 @@ não se parece com um z-Address
QObject
-
+ Attempting autoconnectTentando conectar-se automaticamente
-
+ Starting embedded zcashdIniciando zcashd acoplado
-
+ zcashd is set to run as daemonerro no zcashd
-
+ Waiting for zcashdEsperando pelo zcashd
-
+ You have zcashd set to start as a daemon, which can cause problems with zec-qt-wallet
.Please remove the following line from your zcash.conf and restart zec-qt-wallet
@@ -736,7 +802,7 @@ daemon=1
daemon=1
-
+ Couldn't start the embedded zcashd.
Please try restarting.
@@ -751,7 +817,7 @@ Se você iniciou zcashd anteriormente com parâmetros customizados você pode pr
Se ainda assim não der certo, por favor rode zcashd manualmente.
-
+ Couldn't connect to zcashd configured in zcash.conf.
Not starting embedded zcashd because --no-embedded was passed
@@ -760,150 +826,175 @@ Not starting embedded zcashd because --no-embedded was passed
Não iniciando zcashd acoplado porque nenhum foi passado como parâmetro
-
+
+ Hide Advanced Config
+
+
+
+
+ Show Advanced Config
+
+
+
+
+ Choose data directory
+
+
+
+ All Downloads Finished Successfully!Todos os downloads terminaram com sucesso!
-
+ Couldn't download params. Please check the help site for more info.Não foi possível baixar os parâmetros. Por favor, verifique o site de ajuda para mais informações.
-
+ The process returnedO processo retornou
-
-
+
+ Downloading Baixando
-
+ more remaining ) faltando )
-
+ MB of MB de
-
+ MB at MB a
-
+ Downloading blocksBaixando blocos
-
+ Block heightAltura do bloco
-
+ SyncingSincronizando
-
+ ConnectedConectado
-
+ testnet:testnet:
-
+ Connected to zcashdConectado ao zcashd
-
+ zcashd has no peer connections
-
+ There was an error connecting to zcashd. The error wasOcorreu um erro conectando ao zcashd. O erro foi
-
+
+
+ The transaction with id A transação com id
-
+
+
+ failed. The error was falhou. O erro foi
-
+
+
+ failed falhou
-
+
+
+ Tx Tx
-
+ tx computing. This can take several minutes. gerando transação. Isso pode levar alguns minutos.
-
+ Update Available
-
+ A new release v%1 is available! You have v%2.
Would you like to visit the releases page?
-
+
+ No updates available
-
+
+ You already have the latest release v%1
-
+ Please wait for zec-qt-wallet to exitPor favor, espera zec-qt-wallet finalizar
-
+ Waiting for zcashd to exitEsperando zcashd finalizar
-
+ failed. Please check the help site for more info falhou. Por favor, cheque o site de ajuda para mais informações
-
+ zcashd errorerro no zcashd
-
+ A manual connection was requested, but the settings are not configured.
Please set the host/port and user/password in the Edit->Settings menu.
@@ -912,7 +1003,7 @@ Please set the host/port and user/password in the Edit->Settings menu.
-
+ Could not connect to zcashd configured in settings.
Please set the host/port and user/password in the Edit->Settings menu.
@@ -921,35 +1012,37 @@ Please set the host/port and user/password in the Edit->Settings menu.
-
+ Authentication failed. The username / password you specified was not accepted by zcashd. Try changing it in the Edit->Settings menuAutenticação falhou. O usuário/senha especificado não foi aceitado pelo zcashd. Tente alterá-los em Editar->Preferências
-
+ Your zcashd is starting up. Please wait.Seu zcashd está iniciando. Por favor aguarde.
-
-
+
+ Connection ErrorErro na Conexão
-
-
+
+
+
+ Transaction ErrorErro na transação
-
+ There was an error sending the transaction. The error was:Ocorreu um erro enviando a transação. O erro foi:
-
-
+
+ No ConnectionSem Conexão
@@ -1021,7 +1114,7 @@ You either have unconfirmed funds or the balance is too low for an automatic mig
Você possui fundos não confirmados ou o saldo é muito baixo para uma migração automática.
-
+ Computing Tx: Gerando Tx:
@@ -1046,6 +1139,29 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç
Quantidade
+
+ RecurringDialog
+
+
+ Dialog
+
+
+
+
+ Add
+
+
+
+
+ Edit
+
+
+
+
+ Delete
+
+
+Settings
@@ -1280,6 +1396,102 @@ Você possui fundos não confirmados ou o saldo é muito baixo para uma migraç
Você está usando uma taxa customizada. Como as taxas são transparentes, você pode estar comprometendo sua privacidade. Por favor, só use isso se souber o que está fazendo!
+
+ createZcashConf
+
+
+ Configure zcash.conf
+
+
+
+
+ Show Advanced Configuration
+
+
+
+
+ Your zcash node will be configured for you automatically
+
+
+
+
+ Use custom datadir
+
+
+
+
+ Please chose a directory to store your wallet.dat and blockchain
+
+
+
+
+ Choose directory
+
+
+
+
+ Connect over Tor
+
+
+
+
+ Please note that you'll need to already have a Tor service configured on port 9050
+
+
+
+
+ newRecurringDialog
+
+
+ Edit Schedule
+
+
+
+
+ Schedule
+
+
+
+
+ Payment Description
+
+
+
+
+ TextLabel
+
+
+
+
+ From
+ Endereço de partida
+
+
+
+ Number of payments
+
+
+
+
+ Amount
+ Quantidade
+
+
+
+ Next Payment
+
+
+
+
+ To
+ Para
+
+
+
+ Memo
+
+
+zboard
diff --git a/src/addressbook.cpp b/src/addressbook.cpp
index 7d74cbd..c839b18 100644
--- a/src/addressbook.cpp
+++ b/src/addressbook.cpp
@@ -254,9 +254,6 @@ void AddressBook::readFromStorage() {
}
void AddressBook::writeToStorage() {
- if (allLabels.isEmpty())
- return;
-
QFile file(AddressBook::writeableFile());
file.open(QIODevice::ReadWrite | QIODevice::Truncate);
QDataStream out(&file); // we will serialize the data into the file
diff --git a/src/connection.cpp b/src/connection.cpp
index 5db52a3..b2c46f2 100644
--- a/src/connection.cpp
+++ b/src/connection.cpp
@@ -2,6 +2,7 @@
#include "mainwindow.h"
#include "settings.h"
#include "ui_connection.h"
+#include "ui_createzcashconfdialog.h"
#include "rpc.h"
#include "precompiled.h"
@@ -128,9 +129,47 @@ void ConnectionLoader::createZcashConf() {
main->logger->write("createZcashConf");
auto confLocation = zcashConfWritableLocation();
- main->logger->write("Creating file " + confLocation);
-
QFileInfo fi(confLocation);
+
+ QDialog d(main);
+ Ui_createZcashConf ui;
+ ui.setupUi(&d);
+
+ QPixmap logo(":/img/res/zcashdlogo.gif");
+ ui.lblTopIcon->setBasePixmap(logo.scaled(256, 256, Qt::KeepAspectRatio, Qt::SmoothTransformation));
+ ui.btnPickDir->setEnabled(false);
+
+ ui.grpAdvanced->setVisible(false);
+ QObject::connect(ui.btnAdvancedConfig, &QPushButton::toggled, [=](bool isVisible) {
+ ui.grpAdvanced->setVisible(isVisible);
+ ui.btnAdvancedConfig->setText(isVisible ? QObject::tr("Hide Advanced Config") : QObject::tr("Show Advanced Config"));
+ });
+
+ QObject::connect(ui.chkCustomDatadir, &QCheckBox::stateChanged, [=](int chked) {
+ if (chked == Qt::Checked) {
+ ui.btnPickDir->setEnabled(true);
+ }
+ else {
+ ui.btnPickDir->setEnabled(false);
+ }
+ });
+
+ QObject::connect(ui.btnPickDir, &QPushButton::clicked, [=]() {
+ auto datadir = QFileDialog::getExistingDirectory(main, QObject::tr("Choose data directory"), ui.lblDirName->text(), QFileDialog::ShowDirsOnly);
+ if (!datadir.isEmpty()) {
+ ui.lblDirName->setText(QDir::toNativeSeparators(datadir));
+ }
+ });
+
+ // Show the dialog
+ QString datadir = "";
+ bool useTor = false;
+ if (d.exec() == QDialog::Accepted) {
+ datadir = ui.lblDirName->text();
+ useTor = ui.chkUseTor->isChecked();
+ }
+
+ main->logger->write("Creating file " + confLocation);
QDir().mkdir(fi.dir().absolutePath());
QFile file(confLocation);
@@ -145,6 +184,13 @@ void ConnectionLoader::createZcashConf() {
out << "addnode=mainnet.z.cash\n";
out << "rpcuser=zec-qt-wallet\n";
out << "rpcpassword=" % randomPassword() << "\n";
+ if (!datadir.isEmpty()) {
+ out << "datadir=" % datadir % "\n";
+ }
+ if (useTor) {
+ out << "proxy=127.0.0.1:9050\n";
+ }
+
file.close();
// Now that zcash.conf exists, try to autoconnect again
diff --git a/src/createzcashconfdialog.ui b/src/createzcashconfdialog.ui
new file mode 100644
index 0000000..4da75b2
--- /dev/null
+++ b/src/createzcashconfdialog.ui
@@ -0,0 +1,212 @@
+
+
+ createZcashConf
+
+
+
+ 0
+ 0
+ 508
+ 352
+
+
+
+ Configure zcash.conf
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ background: #fff;
+
+
+
+
+
+ true
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Ok
+
+
+ true
+
+
+
+
+
+
+
+
+ Show Advanced Configuration
+
+
+ true
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ Your zcash node will be configured for you automatically
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+
+
+
+
+
+
+
+
+
+ Use custom datadir
+
+
+
+
+
+
+ Please chose a directory to store your wallet.dat and blockchain
+
+
+
+
+
+
+
+
+ Choose directory
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Connect over Tor
+
+
+
+
+
+
+ Please note that you'll need to already have a Tor service configured on port 9050
+
+
+
+
+
+
+
+
+
+
+ FilledIconLabel
+ QLabel
+ fillediconlabel.h
+
+
+
+
+
+ buttonBox
+ accepted()
+ createZcashConf
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ createZcashConf
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 1cbd876..eb3e8b4 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -256,12 +256,18 @@ void MainWindow::turnstileDoMigration(QString fromAddr) {
auto fnUpdateSproutBalance = [=] (QString addr) {
double bal = 0;
+
+ // The currentText contains the balance as well, so strip that.
+ if (addr.contains("(")) {
+ addr = addr.left(addr.indexOf("("));
+ }
+
if (addr.startsWith("All")) {
bal = fnGetAllSproutBalance();
} else {
bal = rpc->getAllBalances()->value(addr);
}
-
+
auto balTxt = Settings::getZECUSDDisplayFormat(bal);
if (bal < Turnstile::minMigrationAmount) {
@@ -634,17 +640,20 @@ void MainWindow::postToZBoard() {
tx.toAddrs.push_back(ToFields{ toAddr, Settings::getZboardAmount(), memo, memo.toUtf8().toHex() });
tx.fee = Settings::getMinerFee();
- json params = json::array();
- rpc->fillTxJsonParams(params, tx);
- std::cout << std::setw(2) << params << std::endl;
-
// And send the Tx
- rpc->sendZTransaction(params, [=](const json& reply) {
- QString opid = QString::fromStdString(reply.get());
+ rpc->executeTransaction(tx, [=] (QString opid) {
ui->statusBar->showMessage(tr("Computing Tx: ") % opid);
+ },
+ [=] (QString /*opid*/, QString txid) {
+ ui->statusBar->showMessage(Settings::txidStatusMessage + " " + txid);
+ },
+ [=] (QString opid, QString errStr) {
+ ui->statusBar->showMessage(QObject::tr(" Tx ") % opid % QObject::tr(" failed"), 15 * 1000);
- // And then start monitoring the transaction
- rpc->addNewTxToWatch(tx, opid);
+ if (!opid.isEmpty())
+ errStr = QObject::tr("The transaction with id ") % opid % QObject::tr(" failed. The error was") + ":\n\n" + errStr;
+
+ QMessageBox::critical(this, QObject::tr("Transaction Error"), errStr, QMessageBox::Ok);
});
}
}
@@ -731,7 +740,7 @@ void MainWindow::payZcashURI() {
if (kv[0].toLower() == "amt" || kv[0].toLower() == "amount") {
amount = kv[1].toDouble();
- } else if (kv[0].toLower() == "memo") {
+ } else if (kv[0].toLower() == "memo" || kv[0].toLower() == "message" || kv[0].toLower() == "msg") {
memo = kv[1];
// Test if this is hex
@@ -1200,7 +1209,16 @@ void MainWindow::setupRecieveTab() {
});
// zAddr toggle button, one for sprout and one for sapling
- QObject::connect(ui->rdioZAddr, &QRadioButton::toggled, addZAddrsToComboList(false));
+ QObject::connect(ui->rdioZAddr, &QRadioButton::toggled, [=](bool checked) {
+ ui->btnRecieveNewAddr->setEnabled(!checked);
+ if (checked) {
+ ui->btnRecieveNewAddr->setToolTip(tr("Creation of new Sprout addresses is deprecated"));
+ }
+ else {
+ ui->btnRecieveNewAddr->setToolTip("");
+ }
+ addZAddrsToComboList(false)(checked);
+ });
QObject::connect(ui->rdioZSAddr, &QRadioButton::toggled, addZAddrsToComboList(true));
// Explicitly get new address button.
@@ -1233,7 +1251,7 @@ void MainWindow::setupRecieveTab() {
if (Settings::getInstance()->isSaplingActive()) {
ui->rdioZSAddr->setVisible(true);
ui->rdioZSAddr->setChecked(true);
- ui->rdioZAddr->setText("z-Addr(Sprout)");
+ ui->rdioZAddr->setText("z-Addr(Legacy Sprout)");
} else {
ui->rdioZSAddr->setVisible(false);
ui->rdioZAddr->setChecked(true);
@@ -1260,7 +1278,6 @@ void MainWindow::setupRecieveTab() {
ui->rcvBal->clear();
ui->txtRecieve->clear();
ui->qrcodeDisplay->clear();
- ui->lblUsed->clear();
return;
}
@@ -1277,9 +1294,9 @@ void MainWindow::setupRecieveTab() {
ui->txtRecieve->setPlainText(addr);
ui->qrcodeDisplay->setQrcodeString(addr);
if (rpc->getUsedAddresses()->value(addr, false)) {
- ui->lblUsed->setText(tr("Address has been previously used"));
+ ui->rcvBal->setToolTip(tr("Address has been previously used"));
} else {
- ui->lblUsed->setText(tr("Address is unused"));
+ ui->rcvBal->setToolTip(tr("Address is unused"));
}
});
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 69a4d3f..692a332 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -38,6 +38,7 @@ public:
~MainWindow();
void updateLabelsAutoComplete();
+ RPC* getRPC() { return rpc; }
QString doSendTxValidations(Tx tx);
void setDefaultPayFrom();
@@ -78,6 +79,8 @@ private:
void addAddressSection();
void maxAmountChecked(int checked);
+ void editSchedule();
+
void addressChanged(int number, const QString& text);
void amountChanged (int number, const QString& text);
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index c96d35d..72647a6 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -22,7 +22,7 @@
- 2
+ 1
@@ -346,8 +346,8 @@
00
- 928
- 380
+ 920
+ 301
@@ -530,6 +530,50 @@
+
+
+
+
+
+ Recurring payment
+
+
+
+
+
+
+ Every month, starting 12-May-2012, for 6 payments
+
+
+
+
+
+
+ Edit Schedule
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
@@ -559,6 +603,13 @@
+
+
+
+
+
+
+
@@ -629,7 +680,7 @@
- z-Addr(Sapling)
+ z-Addr
@@ -649,7 +700,7 @@
- z-Addr(Sprout)
+ z-Addr(Legacy Sprout)
@@ -739,17 +790,7 @@
-
-
-
- Address
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
-
-
+
@@ -773,17 +814,13 @@
-
-
+
+
- Address used
+ Address
-
-
-
-
-
-
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
diff --git a/src/newrecurring.ui b/src/newrecurring.ui
new file mode 100644
index 0000000..f8f8521
--- /dev/null
+++ b/src/newrecurring.ui
@@ -0,0 +1,245 @@
+
+
+ newRecurringDialog
+
+
+
+ 0
+ 0
+ 740
+ 403
+
+
+
+ Edit Schedule
+
+
+
+
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+ Schedule
+
+
+
+
+
+
+ Payment Description
+
+
+
+
+
+
+ TextLabel
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+ From
+
+
+
+
+
+
+ Number of payments
+
+
+
+
+
+
+ Amount
+
+
+
+
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ Next Payment
+
+
+
+
+
+
+
+
+
+ To
+
+
+
+
+
+
+
+
+
+ Memo
+
+
+
+
+
+
+
+ AddressCombo
+ QComboBox
+ addresscombo.h
+
+
+
+ txtDesc
+ cmbFromAddress
+ txtToAddr
+ txtAmt
+ cmbCurrency
+ cmbSchedule
+ txtNumPayments
+
+
+
+
+ buttonBox
+ accepted()
+ newRecurringDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ newRecurringDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/recurring.cpp b/src/recurring.cpp
new file mode 100644
index 0000000..64affec
--- /dev/null
+++ b/src/recurring.cpp
@@ -0,0 +1,48 @@
+#include "recurring.h"
+
+#include "mainwindow.h"
+#include "rpc.h"
+#include "settings.h"
+#include "ui_newrecurring.h"
+
+void Recurring::showEditDialog(QWidget* parent, MainWindow* main, Tx tx) {
+ Ui_newRecurringDialog ui;
+ QDialog d(parent);
+ ui.setupUi(&d);
+ Settings::saveRestore(&d);
+
+ // Add all the from addresses
+ auto allBalances = main->getRPC()->getAllBalances();
+ for (QString addr : allBalances->keys()) {
+ ui.cmbFromAddress->addItem(addr, allBalances->value(addr));
+ }
+
+ if (!tx.fromAddr.isEmpty()) {
+ ui.cmbFromAddress->setCurrentText(tx.fromAddr);
+ ui.cmbFromAddress->setEnabled(false);
+ }
+
+ ui.cmbCurrency->addItem(Settings::getTokenName());
+ ui.cmbCurrency->addItem("USD");
+
+ if (tx.toAddrs.length() > 0) {
+ ui.txtToAddr->setText(tx.toAddrs[0].addr);
+ ui.txtToAddr->setEnabled(false);
+
+ ui.txtAmt->setText(Settings::getDecimalString(tx.toAddrs[0].amount));
+ ui.txtAmt->setEnabled(false);
+
+ ui.txtMemo->setPlainText(tx.toAddrs[0].txtMemo);
+ ui.txtMemo->setEnabled(false);
+ }
+
+ ui.cmbSchedule->addItem("Every Day", QVariant(Schedule::DAY));
+ ui.cmbSchedule->addItem("Every Week", QVariant(Schedule::WEEK));
+ ui.cmbSchedule->addItem("Every Month", QVariant(Schedule::MONTH));
+ ui.cmbSchedule->addItem("Every Year", QVariant(Schedule::YEAR));
+
+ ui.txtNumPayments->setText("10");
+
+ ui.txtDesc->setFocus();
+ d.exec();
+}
\ No newline at end of file
diff --git a/src/recurring.h b/src/recurring.h
new file mode 100644
index 0000000..3f27115
--- /dev/null
+++ b/src/recurring.h
@@ -0,0 +1,36 @@
+#ifndef RECURRING_H
+#define RECURRING_H
+
+#include "precompiled.h"
+
+#include "mainwindow.h"
+
+enum Schedule {
+ DAY = 1,
+ WEEK,
+ MONTH,
+ YEAR
+};
+
+struct RecurringPaymentInfo {
+ QString desc;
+ QString fromAddr;
+ QString toAddr;
+ double amt;
+ QString currency;
+ Schedule schedule;
+ int numPayments;
+
+ long startBlock;
+ int completedPayments;
+};
+
+class Recurring
+{
+public:
+ Recurring();
+
+ static void showEditDialog(QWidget* parent, MainWindow* main, Tx tx);
+};
+
+#endif // RECURRING_H
\ No newline at end of file
diff --git a/src/recurringdialog.ui b/src/recurringdialog.ui
new file mode 100644
index 0000000..c957d87
--- /dev/null
+++ b/src/recurringdialog.ui
@@ -0,0 +1,92 @@
+
+
+ RecurringDialog
+
+
+
+ 0
+ 0
+ 601
+ 438
+
+
+
+ Dialog
+
+
+
+
+
+
+
+
+
+
+ Add
+
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+ Qt::Vertical
+
+
+ QDialogButtonBox::Close
+
+
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ RecurringDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ RecurringDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/rpc.cpp b/src/rpc.cpp
index dd4a01f..27c7c15 100644
--- a/src/rpc.cpp
+++ b/src/rpc.cpp
@@ -227,7 +227,8 @@ void RPC::getTransactions(const std::function& cb) {
conn->doRPCWithDefaultErrorHandling(payload, cb);
}
-void RPC::sendZTransaction(json params, const std::function& cb) {
+void RPC::sendZTransaction(json params, const std::function& cb,
+ const std::function& err) {
json payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
@@ -235,7 +236,13 @@ void RPC::sendZTransaction(json params, const std::function& cb) {
{"params", params}
};
- conn->doRPCWithDefaultErrorHandling(payload, cb);
+ conn->doRPC(payload, cb, [=] (auto reply, auto parsed) {
+ if (!parsed.is_discarded() && !parsed["error"]["message"].is_null()) {
+ err(QString::fromStdString(parsed["error"]["message"]));
+ } else {
+ err(reply->errorString());
+ }
+ });
}
/**
@@ -537,11 +544,15 @@ void RPC::getInfoThenRefresh(bool force) {
static int lastBlock = 0;
int curBlock = reply["blocks"].get();
+ int version = reply["version"].get();
if ( force || (curBlock != lastBlock) ) {
// Something changed, so refresh everything.
lastBlock = curBlock;
+ // See if the turnstile migration has any steps that need to be done.
+ turnstile->executeMigrationStep();
+
refreshBalances();
refreshAddresses(); // This calls refreshZSentTransactions() and refreshReceivedZTrans()
refreshTransactions();
@@ -602,7 +613,7 @@ void RPC::getInfoThenRefresh(bool force) {
// as the progress instead of verification progress.
progress = (double)blockNumber / (double)estimatedheight;
}
- txt = txt % " ( " % QString::number(progress * 100, 'f', 0) % "% )";
+ txt = txt % " ( " % QString::number(progress * 100, 'f', 2) % "% )";
ui->blockheight->setText(txt);
ui->heightLabel->setText(QObject::tr("Downloading blocks"));
} else {
@@ -617,7 +628,7 @@ void RPC::getInfoThenRefresh(bool force) {
" (" %
(Settings::getInstance()->isTestnet() ? QObject::tr("testnet:") : "") %
QString::number(blockNumber) %
- (isSyncing ? ("/" % QString::number(progress*100, 'f', 0) % "%") : QString()) %
+ (isSyncing ? ("/" % QString::number(progress*100, 'f', 2) % "%") : QString()) %
")";
main->statusLabel->setText(statusText);
@@ -629,6 +640,7 @@ void RPC::getInfoThenRefresh(bool force) {
else {
tooltip = QObject::tr("zcashd has no peer connections");
}
+ tooltip = tooltip % "(v " % QString::number(version) % ")";
if (!zecPrice.isEmpty()) {
tooltip = "1 ZEC = " % zecPrice % "\n" % tooltip;
@@ -690,10 +702,7 @@ void RPC::refreshAddresses() {
}
// Function to create the data model and update the views, used below.
-void RPC::updateUI(bool anyUnconfirmed) {
- // See if the turnstile migration has any steps that need to be done.
- turnstile->executeMigrationStep();
-
+void RPC::updateUI(bool anyUnconfirmed) {
ui->unconfirmedWarning->setVisible(anyUnconfirmed);
// Update balances model data, which will update the table too
@@ -863,12 +872,36 @@ void RPC::refreshSentZTrans() {
);
}
-void RPC::addNewTxToWatch(Tx tx, const QString& newOpid) {
- watchingOps.insert(newOpid, tx);
+void RPC::addNewTxToWatch(const QString& newOpid, WatchedTx wtx) {
+ watchingOps.insert(newOpid, wtx);
watchTxStatus();
}
+
+// Execute a transaction!
+void RPC::executeTransaction(Tx tx,
+ const std::function submitted,
+ const std::function computed,
+ const std::function error) {
+ // First, create the json params
+ json params = json::array();
+ fillTxJsonParams(params, tx);
+ std::cout << std::setw(2) << params << std::endl;
+
+ sendZTransaction(params, [=](const json& reply) {
+ QString opid = QString::fromStdString(reply.get());
+
+ // And then start monitoring the transaction
+ addNewTxToWatch( opid, WatchedTx { opid, tx, computed, error} );
+ submitted(opid);
+ },
+ [=](QString errStr) {
+ error("", errStr);
+ });
+}
+
+
void RPC::watchTxStatus() {
if (conn == nullptr)
return noConnection();
@@ -888,35 +921,26 @@ void RPC::watchTxStatus() {
if (watchingOps.contains(id)) {
// And if it ended up successful
QString status = QString::fromStdString(it["status"]);
+ main->loadingLabel->setVisible(false);
+
if (status == "success") {
auto txid = QString::fromStdString(it["result"]["txid"]);
- SentTxStore::addToSentTx(watchingOps.value(id), txid);
-
- main->ui->statusBar->showMessage(Settings::txidStatusMessage + " " + txid);
- main->loadingLabel->setVisible(false);
+ SentTxStore::addToSentTx(watchingOps[id].tx, txid);
+ auto wtx = watchingOps[id];
watchingOps.remove(id);
+ wtx.completed(id, txid);
// Refresh balances to show unconfirmed balances
- refresh(true);
+ refresh(true);
} else if (status == "failed") {
// If it failed, then we'll actually show a warning.
auto errorMsg = QString::fromStdString(it["error"]["message"]);
- QMessageBox msg(
- QMessageBox::Critical,
- QObject::tr("Transaction Error"),
- QObject::tr("The transaction with id ") % id % QObject::tr(" failed. The error was") + ":\n\n" + errorMsg,
- QMessageBox::Ok,
- main
- );
-
- watchingOps.remove(id);
-
- main->ui->statusBar->showMessage(QObject::tr(" Tx ") % id % QObject::tr(" failed"), 15 * 1000);
- main->loadingLabel->setVisible(false);
- msg.exec();
+ auto wtx = watchingOps[id];
+ watchingOps.remove(id);
+ wtx.error(id, errorMsg);
}
}
@@ -973,8 +997,14 @@ void RPC::checkForUpdate(bool silent) {
}
auto currentVersion = QVersionNumber::fromString(APP_VERSION);
+
+ // Get the max version that the user has hidden updates for
+ QSettings s;
+ auto maxHiddenVersion = QVersionNumber::fromString(s.value("update/lastversion", "0.0.0").toString());
+
qDebug() << "Version check: Current " << currentVersion << ", Available " << maxVersion;
- if (maxVersion > currentVersion) {
+
+ if (maxVersion > currentVersion && maxVersion > maxHiddenVersion) {
auto ans = QMessageBox::information(main, QObject::tr("Update Available"),
QObject::tr("A new release v%1 is available! You have v%2.\n\nWould you like to visit the releases page?")
.arg(maxVersion.toString())
@@ -982,6 +1012,15 @@ void RPC::checkForUpdate(bool silent) {
QMessageBox::Yes, QMessageBox::Cancel);
if (ans == QMessageBox::Yes) {
QDesktopServices::openUrl(QUrl("https://github.com/ZcashFoundation/zec-qt-wallet/releases"));
+ } else {
+ // If the user selects cancel, don't bother them again for this version
+ s.setValue("update/lastversion", maxVersion.toString());
+ }
+ } else {
+ if (!silent) {
+ QMessageBox::information(main, QObject::tr("No updates available"),
+ QObject::tr("You already have the latest release v%1")
+ .arg(currentVersion.toString()));
}
} else {
if (!silent) {
diff --git a/src/rpc.h b/src/rpc.h
index 78893f9..689ecbe 100644
--- a/src/rpc.h
+++ b/src/rpc.h
@@ -24,6 +24,13 @@ struct TransactionItem {
QString memo;
};
+struct WatchedTx {
+ QString opid;
+ Tx tx;
+ std::function completed;
+ std::function error;
+};
+
class RPC
{
public:
@@ -42,11 +49,17 @@ public:
void refreshZECPrice();
void getZboardTopics(std::function)> cb);
+ void executeTransaction(Tx tx,
+ const std::function submitted,
+ const std::function computed,
+ const std::function error);
+
void fillTxJsonParams(json& params, Tx tx);
- void sendZTransaction (json params, const std::function& cb);
+ void sendZTransaction(json params, const std::function& cb, const std::function& err);
void watchTxStatus();
- void addNewTxToWatch(Tx tx, const QString& newOpid);
+
const QMap getWatchingTxns() { return watchingOps; }
+ void addNewTxToWatch(const QString& newOpid, WatchedTx wtx);
const TxTableModel* getTransactionsModel() { return transactionsTableModel; }
const QList* getAllZAddresses() { return zaddresses; }
@@ -103,7 +116,7 @@ private:
QList* zaddresses = nullptr;
QList* taddresses = nullptr;
- QMap watchingOps;
+ QMap watchingOps;
TxTableModel* transactionsTableModel = nullptr;
BalancesTableModel* balancesTableModel = nullptr;
diff --git a/src/sendtab.cpp b/src/sendtab.cpp
index 5c1364d..878e0dd 100644
--- a/src/sendtab.cpp
+++ b/src/sendtab.cpp
@@ -3,8 +3,10 @@
#include "addressbook.h"
#include "ui_confirm.h"
#include "ui_memodialog.h"
+#include "ui_newrecurring.h"
#include "settings.h"
#include "rpc.h"
+#include "recurring.h"
using json = nlohmann::json;
@@ -80,6 +82,34 @@ void MainWindow::setupSendTab() {
QFont f = ui->Address1->font();
f.setPointSize(f.pointSize() - 1);
ui->MemoTxt1->setFont(f);
+
+ // Recurring button
+ QObject::connect(ui->chkRecurring, &QCheckBox::stateChanged, [=] (int checked) {
+ if (checked) {
+ ui->btnRecurSchedule->setEnabled(true);
+ } else {
+ ui->btnRecurSchedule->setEnabled(false);
+ ui->lblRecurDesc->setText("");
+ }
+
+ });
+
+ // Recurring schedule button
+ QObject::connect(ui->btnRecurSchedule, &QPushButton::clicked, this, &MainWindow::editSchedule);
+
+ // Hide the recurring section for now
+ ui->chkRecurring->setVisible(false);
+ ui->lblRecurDesc->setVisible(false);
+ ui->btnRecurSchedule->setVisible(false);
+
+ // Set the default state for the whole page
+ removeExtraAddresses();
+}
+
+void MainWindow::editSchedule() {
+ // Open the edit schedule dialog
+ Recurring::showEditDialog(this, this, createTxFromSendPage());
+
}
void MainWindow::updateLabelsAutoComplete() {
@@ -354,6 +384,11 @@ void MainWindow::removeExtraAddresses() {
delete addressGroupBox;
}
+
+ // Reset the recurring button
+ ui->chkRecurring->setCheckState(Qt::Unchecked);
+ ui->btnRecurSchedule->setEnabled(false);
+ ui->lblRecurDesc->setText("");
}
void MainWindow::maxAmountChecked(int checked) {
@@ -620,18 +655,23 @@ void MainWindow::sendButton() {
// Show a dialog to confirm the Tx
if (confirmTx(tx)) {
- json params = json::array();
- rpc->fillTxJsonParams(params, tx);
- std::cout << std::setw(2) << params << std::endl;
-
// And send the Tx
- rpc->sendZTransaction(params, [=](const json& reply) {
- QString opid = QString::fromStdString(reply.get());
- ui->statusBar->showMessage(tr("Computing Tx: ") % opid);
+ rpc->executeTransaction(tx,
+ [=] (QString opid) {
+ ui->statusBar->showMessage(tr("Computing Tx: ") % opid);
+ },
+ [=] (QString, QString txid) {
+ ui->statusBar->showMessage(Settings::txidStatusMessage + " " + txid);
+ },
+ [=] (QString opid, QString errStr) {
+ ui->statusBar->showMessage(QObject::tr(" Tx ") % opid % QObject::tr(" failed"), 15 * 1000);
- // And then start monitoring the transaction
- rpc->addNewTxToWatch(tx, opid);
- });
+ if (!opid.isEmpty())
+ errStr = QObject::tr("The transaction with id ") % opid % QObject::tr(" failed. The error was") + ":\n\n" + errStr;
+
+ QMessageBox::critical(this, QObject::tr("Transaction Error"), errStr, QMessageBox::Ok);
+ }
+ );
}
}
diff --git a/src/senttxstore.cpp b/src/senttxstore.cpp
index 9237a3c..3fc66ac 100644
--- a/src/senttxstore.cpp
+++ b/src/senttxstore.cpp
@@ -84,12 +84,22 @@ void SentTxStore::addToSentTx(Tx tx, QString txid) {
totalAmount += i.amount;
}
+ QString toAddresses;
+ if (tx.toAddrs.length() == 1) {
+ toAddresses = tx.toAddrs[0].addr;
+ } else {
+ // Concatenate all the toAddresses
+ for (auto a : tx.toAddrs) {
+ toAddresses += a.addr % "(" % Settings::getZECDisplayFormat(a.amount) % ") ";
+ }
+ }
+
auto list = jsonDoc.array();
QJsonObject txItem;
txItem["type"] = "sent";
txItem["from"] = tx.fromAddr;
txItem["datetime"] = QDateTime::currentMSecsSinceEpoch() / (qint64)1000;
- txItem["address"] = QString(); // The sent address is blank, to be consistent with t-Addr sent behaviour
+ txItem["address"] = toAddresses;
txItem["txid"] = txid;
txItem["amount"] = -totalAmount;
txItem["fee"] = -tx.fee;
diff --git a/src/turnstile.cpp b/src/turnstile.cpp
index a2e1c2c..df58b15 100644
--- a/src/turnstile.cpp
+++ b/src/turnstile.cpp
@@ -320,8 +320,10 @@ void Turnstile::executeMigrationStep() {
return;
}
+ // Sometimes, we check too quickly, and the unspent UTXO is not updated yet, so we'll
+ // double check to see if there is enough balance.
if (!rpc->getAllBalances()->keys().contains(nextStep->intTAddr)) {
- qDebug() << QString("The intermediate t-address doesn't have balance, even though it is confirmed");
+ //qDebug() << QString("The intermediate t-address doesn't have balance, even though it seems to be confirmed");
return;
}
@@ -351,17 +353,20 @@ void Turnstile::executeMigrationStep() {
}
void Turnstile::doSendTx(Tx tx, std::function cb) {
- json params = json::array();
- rpc->fillTxJsonParams(params, tx);
- std::cout << std::setw(2) << params << std::endl;
- rpc->sendZTransaction(params, [=] (const json& reply) {
- QString opid = QString::fromStdString(reply.get());
- //qDebug() << opid;
- mainwindow->ui->statusBar->showMessage(QObject::tr("Computing Tx: ") % opid);
+ rpc->executeTransaction(tx, [=] (QString opid) {
+ mainwindow->ui->statusBar->showMessage(QObject::tr("Computing Tx: ") % opid);
+ },
+ [=] (QString /*opid*/, QString txid) {
+ mainwindow->ui->statusBar->showMessage(Settings::txidStatusMessage + " " + txid);
+ cb();
+ },
+ [=] (QString opid, QString errStr) {
+ mainwindow->ui->statusBar->showMessage(QObject::tr(" Tx ") % opid % QObject::tr(" failed"), 15 * 1000);
- // And then start monitoring the transaction
- rpc->addNewTxToWatch(tx, opid);
+ if (!opid.isEmpty())
+ errStr = QObject::tr("The transaction with id ") % opid % QObject::tr(" failed. The error was") + ":\n\n" + errStr;
- cb();
- });
+ QMessageBox::critical(mainwindow, QObject::tr("Transaction Error"), errStr, QMessageBox::Ok);
+ });
+
}
diff --git a/zec-qt-wallet.pro b/zec-qt-wallet.pro
index 9f2eaa0..5d9dc1d 100644
--- a/zec-qt-wallet.pro
+++ b/zec-qt-wallet.pro
@@ -54,7 +54,8 @@ SOURCES += \
src/logger.cpp \
src/addresscombo.cpp \
src/websockets.cpp \
- src/mobileappconnector.cpp
+ src/mobileappconnector.cpp \
+ src/recurring.cpp
HEADERS += \
src/mainwindow.h \
@@ -76,7 +77,8 @@ HEADERS += \
src/logger.h \
src/addresscombo.h \
src/websockets.h \
- src/mobileappconnector.h
+ src/mobileappconnector.h \
+ src/recurring.h
FORMS += \
src/mainwindow.ui \
@@ -90,7 +92,10 @@ FORMS += \
src/connection.ui \
src/zboard.ui \
src/addressbook.ui \
- src/mobileappconnector.ui
+ src/mobileappconnector.ui \
+ src/createzcashconfdialog.ui \
+ src/recurringdialog.ui \
+ src/newrecurring.ui
TRANSLATIONS = res/zec_qt_wallet_es.ts \