From: Gavin Andresen Date: Wed, 21 Mar 2012 19:24:57 +0000 (-0700) Subject: Merge pull request #947 from ali1234/master X-Git-Tag: v0.4.0-unstable~129^2~143 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=2e2c04e250fff9a3404b4da2cf0f73c38c126050;hp=bb13d056ea332030a3b960bf2756a36de77e05b8;p=novacoin.git Merge pull request #947 from ali1234/master When disconnecting a node, the receive buffer should be cleared --- diff --git a/doc/translation_process.md b/doc/translation_process.md index 06ebe71..3ddfc0c 100644 --- a/doc/translation_process.md +++ b/doc/translation_process.md @@ -1,7 +1,7 @@ Translations ============ -The QT GUI can be easily be translated into other languages. Here's how we +The Qt GUI can be easily translated into other languages. Here's how we handle those translations. Files and Folders @@ -30,10 +30,14 @@ This directory contains all translations. Filenames must adhere to this format: #### Source file -`src/qt/locale/bitcoin_en.ts` is a treated in a special way. It is used as the -source for all other translations. Whenever a string in the code is change +`src/qt/locale/bitcoin_en.ts` is treated in a special way. It is used as the +source for all other translations. Whenever a string in the code is changed this file must be updated to reflect those changes. Usually, this can be -accomplished by running `lupdate` +accomplished by running `lupdate` (included in the Qt SDK). + +An updated source file should be merged to github and transifex will pick it +up from there. Afterwards the new strings show up as "Remaining" in transifex +and can be translated. Syncing with transifex ---------------------- @@ -42,9 +46,9 @@ We are using http://transifex.net as a frontend for translating the client. https://www.transifex.net/projects/p/bitcoin/resource/tx/ -The "transifex client":http://help.transifex.net/features/client/index.html -will help with fetching new translations from transifex. - +The "transifex client" (see: http://help.transifex.net/features/client/) +will help with fetching new translations from transifex. Use the following +config to be able to connect with the client. ### .tx/config @@ -55,11 +59,22 @@ will help with fetching new translations from transifex. file_filter = src/qt/locale/bitcoin_.ts source_file = src/qt/locale/bitcoin_en.ts source_lang = en + +### .tx/config (for Windows) + + [main] + host = https://www.transifex.net + + [bitcoin.tx] + file_filter = src\qt\locale\bitcoin_.ts + source_file = src\qt\locale\bitcoin_en.ts + source_lang = en + +It is also possible to directly download new translations one by one from transifex. ### Fetching new translations 1. `tx pull -a` -2. update `src/qt/bitcoin.qrc` +2. update `src/qt/bitcoin.qrc` manually or via `ls src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/locale/\1.qm<\/file>/'` 3. `git add` new translations from `src/qt/locale/` - diff --git a/src/db.cpp b/src/db.cpp index b77a038..0344c79 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -774,7 +774,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) // Get cursor Dbc* pcursor = GetCursor(); if (!pcursor) + { + printf("Error getting wallet database cursor\n"); return DB_CORRUPT; + } loop { @@ -785,7 +788,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) if (ret == DB_NOTFOUND) break; else if (ret != 0) + { + printf("Error reading next record from wallet database\n"); return DB_CORRUPT; + } // Unserialize // Taking advantage of the fact that pair serialization @@ -856,8 +862,16 @@ int CWalletDB::LoadWallet(CWallet* pwallet) ssValue >> pkey; key.SetPubKey(vchPubKey); key.SetPrivKey(pkey); - if (key.GetPubKey() != vchPubKey || !key.IsValid()) + if (key.GetPubKey() != vchPubKey) + { + printf("Error reading wallet database: CPrivKey pubkey inconsistency\n"); return DB_CORRUPT; + } + if (!key.IsValid()) + { + printf("Error reading wallet database: invalid CPrivKey\n"); + return DB_CORRUPT; + } } else { @@ -865,11 +879,22 @@ int CWalletDB::LoadWallet(CWallet* pwallet) ssValue >> wkey; key.SetPubKey(vchPubKey); key.SetPrivKey(wkey.vchPrivKey); - if (key.GetPubKey() != vchPubKey || !key.IsValid()) + if (key.GetPubKey() != vchPubKey) + { + printf("Error reading wallet database: CWalletKey pubkey inconsistency\n"); + return DB_CORRUPT; + } + if (!key.IsValid()) + { + printf("Error reading wallet database: invalid CWalletKey\n"); return DB_CORRUPT; + } } if (!pwallet->LoadKey(key)) + { + printf("Error reading wallet database: LoadKey failed\n"); return DB_CORRUPT; + } } else if (strType == "mkey") { @@ -878,7 +903,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CMasterKey kMasterKey; ssValue >> kMasterKey; if(pwallet->mapMasterKeys.count(nID) != 0) + { + printf("Error reading wallet database: duplicate CMasterKey id %u\n", nID); return DB_CORRUPT; + } pwallet->mapMasterKeys[nID] = kMasterKey; if (pwallet->nMasterKeyMaxID < nID) pwallet->nMasterKeyMaxID = nID; @@ -890,7 +918,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) vector vchPrivKey; ssValue >> vchPrivKey; if (!pwallet->LoadCryptedKey(vchPubKey, vchPrivKey)) + { + printf("Error reading wallet database: LoadCryptedKey failed\n"); return DB_CORRUPT; + } fIsEncrypted = true; } else if (strType == "defaultkey") @@ -924,7 +955,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CScript script; ssValue >> script; if (!pwallet->LoadCScript(script)) + { + printf("Error reading wallet database: LoadCScript failed\n"); return DB_CORRUPT; + } } } pcursor->close(); diff --git a/src/init.cpp b/src/init.cpp index 8fe0f90..a5db20b 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -370,12 +370,14 @@ bool AppInit2(int argc, char* argv[]) else if (nLoadWalletRet == DB_NEED_REWRITE) { strErrors << _("Wallet needed to be rewritten: restart Bitcoin to complete") << "\n"; + printf("%s", strErrors.str().c_str()); wxMessageBox(strErrors.str(), "Bitcoin", wxOK | wxICON_ERROR); return false; } else strErrors << _("Error loading wallet.dat") << "\n"; } + printf("%s", strErrors.str().c_str()); printf(" wallet %15"PRI64d"ms\n", GetTimeMillis() - nStart); RegisterWallet(pwalletMain); diff --git a/src/main.cpp b/src/main.cpp index 1b56cea..491044e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1382,6 +1382,9 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) vConnect.push_back(pindex); reverse(vConnect.begin(), vConnect.end()); + printf("REORGANIZE: Disconnect %i blocks; %s..%s\n", vDisconnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexBest->GetBlockHash().ToString().substr(0,20).c_str()); + printf("REORGANIZE: Connect %i blocks; %s..%s\n", vConnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexNew->GetBlockHash().ToString().substr(0,20).c_str()); + // Disconnect shorter branch vector vResurrect; BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) @@ -1390,7 +1393,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) if (!block.ReadFromDisk(pindex)) return error("Reorganize() : ReadFromDisk for disconnect failed"); if (!block.DisconnectBlock(txdb, pindex)) - return error("Reorganize() : DisconnectBlock failed"); + return error("Reorganize() : DisconnectBlock %s failed", pindex->GetBlockHash().ToString().substr(0,20).c_str()); // Queue memory transactions to resurrect BOOST_FOREACH(const CTransaction& tx, block.vtx) @@ -1410,7 +1413,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) { // Invalid block txdb.TxnAbort(); - return error("Reorganize() : ConnectBlock failed"); + return error("Reorganize() : ConnectBlock %s failed", pindex->GetBlockHash().ToString().substr(0,20).c_str()); } // Queue memory transactions to delete @@ -1442,8 +1445,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) BOOST_FOREACH(CTransaction& tx, vDelete) tx.RemoveFromMemoryPool(); - printf("REORGANIZE: Disconnected %i blocks; %s..%s\n", vDisconnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexBest->GetBlockHash().ToString().substr(0,20).c_str()); - printf("REORGANIZE: Connected %i blocks; %s..%s\n", vConnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexNew->GetBlockHash().ToString().substr(0,20).c_str()); + printf("REORGANIZE: done\n"); return true; } @@ -1457,10 +1459,9 @@ runCommand(std::string strCommand) printf("runCommand error: system(%s) returned %d\n", strCommand.c_str(), nErr); } +// Called from inside SetBestChain: attaches a block to the new best chain being built bool CBlock::SetBestChainInner(CTxDB& txdb, CBlockIndex *pindexNew) { - assert(pindexNew->pprev == pindexBest); - uint256 hash = GetHash(); // Adding to current best branch @@ -1707,10 +1708,11 @@ bool CBlock::AcceptBlock() return error("AcceptBlock() : AddToBlockIndex failed"); // Relay inventory, but don't relay old inventory during initial block download + int nBlockEstimate = Checkpoints::GetTotalBlocksEstimate(); if (hashBestChain == hash) CRITICAL_BLOCK(cs_vNodes) BOOST_FOREACH(CNode* pnode, vNodes) - if (nBestHeight > (pnode->nStartingHeight != -1 ? pnode->nStartingHeight - 2000 : 140700)) + if (nBestHeight > (pnode->nStartingHeight != -1 ? pnode->nStartingHeight - 2000 : nBlockEstimate)) pnode->PushInventory(CInv(MSG_BLOCK, hash)); return true; @@ -2357,8 +2359,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) } CTxDB txdb("r"); - BOOST_FOREACH(const CInv& inv, vInv) + for (int nInv = 0; nInv < vInv.size(); nInv++) { + const CInv &inv = vInv[nInv]; + if (fShutdown) return true; pfrom->AddInventoryKnown(inv); @@ -2367,9 +2371,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) if (fDebug) printf(" got inventory: %s %s\n", inv.ToString().c_str(), fAlreadyHave ? "have" : "new"); - if (!fAlreadyHave) + // Always request the last block in an inv bundle (even if we already have it), as it is the + // trigger for the other side to send further invs. If we are stuck on a (very long) side chain, + // this is necessary to connect earlier received orphan blocks to the chain again. + if (!fAlreadyHave || (inv.type == MSG_BLOCK && nInv==vInv.size()-1)) pfrom->AskFor(inv); - else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) + if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(mapOrphanBlocks[inv.hash])); // Track requests for our stuff diff --git a/src/makefile.unix b/src/makefile.unix index 80b5bca..23c6f72 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -85,7 +85,7 @@ LIBS+= \ DEBUGFLAGS=-g CXXFLAGS=-O2 -xCXXFLAGS=-pthread -Wextra -Wno-sign-compare -Wno-char-subscripts -Wno-invalid-offsetof -Wformat-security \ +xCXXFLAGS=-pthread -Wextra -Wno-sign-compare -Wno-char-subscripts -Wno-invalid-offsetof -Wformat -Wformat-security \ $(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS) OBJS= \ diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 5e79f6e..27d57b3 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -1,5 +1,5 @@ /* - * W.J. van der Laan 20011-2012 + * W.J. van der Laan 2011-2012 */ #include "bitcoingui.h" #include "clientmodel.h" diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index 5b7ccee..d0247c2 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -49,7 +49,6 @@ locale/bitcoin_ca_ES.qm - locale/bitcoin_cs_CZ.qm locale/bitcoin_cs.qm locale/bitcoin_da.qm locale/bitcoin_de.qm diff --git a/src/qt/locale/bitcoin_cs_CZ.ts b/src/qt/locale/bitcoin_cs_CZ.ts deleted file mode 100644 index dd14868..0000000 --- a/src/qt/locale/bitcoin_cs_CZ.ts +++ /dev/null @@ -1,1931 +0,0 @@ - -UTF-8 - - AboutDialog - - - About Bitcoin - - - - - <b>Bitcoin</b> version - - - - - Copyright © 2009-2012 Bitcoin Developers - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. - -This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - - - - AddressBookPage - - - Address Book - - - - - These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - - - - - Double-click to edit address or label - - - - - Create a new address - - - - - &New Address... - - - - - Copy the currently selected address to the system clipboard - - - - - &Copy to Clipboard - - - - - Show &QR Code - - - - - Sign a message to prove you own this address - - - - - &Sign Message - - - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - - - - - &Delete - - - - - Copy address - - - - - Copy label - - - - - Edit - - - - - Delete - - - - - Export Address Book Data - - - - - Comma separated file (*.csv) - - - - - Error exporting - - - - - Could not write to file %1. - - - - - AddressTableModel - - - Label - - - - - Address - - - - - (no label) - - - - - AskPassphraseDialog - - - Dialog - - - - - - TextLabel - - - - - Enter passphrase - - - - - New passphrase - - - - - Repeat new passphrase - - - - - Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - - - - - Encrypt wallet - - - - - This operation needs your wallet passphrase to unlock the wallet. - - - - - Unlock wallet - - - - - This operation needs your wallet passphrase to decrypt the wallet. - - - - - Decrypt wallet - - - - - Change passphrase - - - - - Enter the old and new passphrase to the wallet. - - - - - Confirm wallet encryption - - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! -Are you sure you wish to encrypt your wallet? - - - - - - Wallet encrypted - - - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - - - - - Warning: The Caps Lock key is on. - - - - - - - - Wallet encryption failed - - - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - - - - - - The supplied passphrases do not match. - - - - - Wallet unlock failed - - - - - - - The passphrase entered for the wallet decryption was incorrect. - - - - - Wallet decryption failed - - - - - Wallet passphrase was succesfully changed. - - - - - BitcoinGUI - - - Bitcoin Wallet - - - - - - Synchronizing with network... - - - - - Block chain synchronization in progress - - - - - &Overview - - - - - Show general overview of wallet - - - - - &Transactions - - - - - Browse transaction history - - - - - &Address Book - - - - - Edit the list of stored addresses and labels - - - - - &Receive coins - - - - - Show the list of addresses for receiving payments - - - - - &Send coins - - - - - Send coins to a bitcoin address - - - - - Sign &message - - - - - Prove you control an address - - - - - E&xit - - - - - Quit application - - - - - &About %1 - - - - - Show information about Bitcoin - - - - - About &Qt - - - - - Show information about Qt - - - - - &Options... - - - - - Modify configuration options for bitcoin - - - - - Open &Bitcoin - - - - - Show the Bitcoin window - - - - - &Export... - - - - - Export the current view to a file - - - - - &Encrypt Wallet - - - - - Encrypt or decrypt wallet - - - - - &Change Passphrase - - - - - Change the passphrase used for wallet encryption - - - - - &File - - - - - &Settings - - - - - &Help - - - - - Tabs toolbar - - - - - Actions toolbar - - - - - [testnet] - - - - - bitcoin-qt - - - - - %n active connection(s) to Bitcoin network - - - - - Downloaded %1 of %2 blocks of transaction history. - - - - - Downloaded %1 blocks of transaction history. - - - - - %n second(s) ago - - - - - %n minute(s) ago - - - - - %n hour(s) ago - - - - - %n day(s) ago - - - - - Up to date - - - - - Catching up... - - - - - Last received block was generated %1. - - - - - This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - - - - - Sending... - - - - - Sent transaction - - - - - Incoming transaction - - - - - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - - - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - - - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - - - - - DisplayOptionsPage - - - &Unit to show amounts in: - - - - - Choose the default subdivision unit to show in the interface, and when sending coins - - - - - Display addresses in transaction list - - - - - EditAddressDialog - - - Edit Address - - - - - &Label - - - - - The label associated with this address book entry - - - - - &Address - - - - - The address associated with this address book entry. This can only be modified for sending addresses. - - - - - New receiving address - - - - - New sending address - - - - - Edit receiving address - - - - - Edit sending address - - - - - The entered address "%1" is already in the address book. - - - - - The entered address "%1" is not a valid bitcoin address. - - - - - Could not unlock wallet. - - - - - New key generation failed. - - - - - MainOptionsPage - - - &Start Bitcoin on window system startup - - - - - Automatically start Bitcoin after the computer is turned on - - - - - &Minimize to the tray instead of the taskbar - - - - - Show only a tray icon after minimizing the window - - - - - Map port using &UPnP - - - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - - - - - M&inimize on close - - - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - - - - - &Connect through SOCKS4 proxy: - - - - - Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - - - - - Proxy &IP: - - - - - IP address of the proxy (e.g. 127.0.0.1) - - - - - &Port: - - - - - Port of the proxy (e.g. 1234) - - - - - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - - - - - Pay transaction &fee - - - - - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - - - - - MessagePage - - - Message - - - - - You can sign messages with your addresses to prove you own them. Be careful to only sign statement you agree to with full details, as phishing attacks may try to trick you into signing access to them. - - - - - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - - - - - Choose adress from address book - - - - - Alt+A - - - - - Paste address from clipboard - - - - - Alt+P - - - - - Enter the message you want to sign here - - - - - Click "Sign Message" to get signature - - - - - Sign a message to prove you own this address - - - - - &Sign Message - - - - - Copy the currently selected address to the system clipboard - - - - - &Copy to Clipboard - - - - - - - Error signing - - - - - %1 is not a valid address. - - - - - Private key for %1 is not available. - - - - - Sign failed - - - - - OptionsDialog - - - Main - - - - - Display - - - - - Options - - - - - OverviewPage - - - Form - - - - - Balance: - - - - - 123.456 BTC - - - - - Number of transactions: - - - - - 0 - - - - - Unconfirmed: - - - - - 0 BTC - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - - - - - <b>Recent transactions</b> - - - - - Your current balance - - - - - Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - - - - - Total number of transactions in wallet - - - - - QRCodeDialog - - - Dialog - - - - - QR Code - - - - - Request Payment - - - - - Amount: - - - - - BTC - - - - - Label: - - - - - Message: - - - - - &Save As... - - - - - SendCoinsDialog - - - - - - - - - - Send Coins - - - - - Send to multiple recipients at once - - - - - &Add recipient... - - - - - Remove all transaction fields - - - - - Clear all - - - - - Balance: - - - - - 123.456 BTC - - - - - Confirm the send action - - - - - &Send - - - - - <b>%1</b> to %2 (%3) - - - - - Confirm send coins - - - - - Are you sure you want to send %1? - - - - - and - - - - - The recepient address is not valid, please recheck. - - - - - The amount to pay must be larger than 0. - - - - - Amount exceeds your balance - - - - - Total exceeds your balance when the %1 transaction fee is included - - - - - Duplicate address found, can only send to each address once in one send operation - - - - - Error: Transaction creation failed - - - - - Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - - - - - SendCoinsEntry - - - Form - - - - - A&mount: - - - - - Pay &To: - - - - - - Enter a label for this address to add it to your address book - - - - - &Label: - - - - - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - - - - - Choose address from address book - - - - - Alt+A - - - - - Paste address from clipboard - - - - - Alt+P - - - - - Remove this recipient - - - - - Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - - - - - TransactionDesc - - - Open for %1 blocks - - - - - Open until %1 - - - - - %1/offline? - - - - - %1/unconfirmed - - - - - %1 confirmations - - - - - <b>Status:</b> - - - - - , has not been successfully broadcast yet - - - - - , broadcast through %1 node - - - - - , broadcast through %1 nodes - - - - - <b>Date:</b> - - - - - <b>Source:</b> Generated<br> - - - - - - <b>From:</b> - - - - - unknown - - - - - - - <b>To:</b> - - - - - (yours, label: - - - - - (yours) - - - - - - - - <b>Credit:</b> - - - - - (%1 matures in %2 more blocks) - - - - - (not accepted) - - - - - - - <b>Debit:</b> - - - - - <b>Transaction fee:</b> - - - - - <b>Net amount:</b> - - - - - Message: - - - - - Comment: - - - - - Transaction ID: - - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - - - - TransactionDescDialog - - - Transaction details - - - - - This pane shows a detailed description of the transaction - - - - - TransactionTableModel - - - Date - - - - - Type - - - - - Address - - - - - Amount - - - - - Open for %n block(s) - - - - - Open until %1 - - - - - Offline (%1 confirmations) - - - - - Unconfirmed (%1 of %2 confirmations) - - - - - Confirmed (%1 confirmations) - - - - - Mined balance will be available in %n more blocks - - - - - This block was not received by any other nodes and will probably not be accepted! - - - - - Generated but not accepted - - - - - Received with - - - - - Received from - - - - - Sent to - - - - - Payment to yourself - - - - - Mined - - - - - (n/a) - - - - - Transaction status. Hover over this field to show number of confirmations. - - - - - Date and time that the transaction was received. - - - - - Type of transaction. - - - - - Destination address of transaction. - - - - - Amount removed from or added to balance. - - - - - TransactionView - - - - All - - - - - Today - - - - - This week - - - - - This month - - - - - Last month - - - - - This year - - - - - Range... - - - - - Received with - - - - - Sent to - - - - - To yourself - - - - - Mined - - - - - Other - - - - - Enter address or label to search - - - - - Min amount - - - - - Copy address - - - - - Copy label - - - - - Copy amount - - - - - Edit label - - - - - Show details... - - - - - Export Transaction Data - - - - - Comma separated file (*.csv) - - - - - Confirmed - - - - - Date - - - - - Type - - - - - Label - - - - - Address - - - - - Amount - - - - - ID - - - - - Error exporting - - - - - Could not write to file %1. - - - - - Range: - - - - - to - - - - - WalletModel - - - Sending... - - - - - bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - - - Options: - - - - - Specify configuration file (default: bitcoin.conf) - - - - - Specify pid file (default: bitcoind.pid) - - - - - Generate coins - - - - - Don't generate coins - - - - - Start minimized - - - - - Specify data directory - - - - - Specify connection timeout (in milliseconds) - - - - - Connect through socks4 proxy - - - - - Allow DNS lookups for addnode and connect - - - - - Listen for connections on <port> (default: 8333 or testnet: 18333) - - - - - Maintain at most <n> connections to peers (default: 125) - - - - - Add a node to connect to - - - - - Connect only to the specified node - - - - - Don't accept connections from outside - - - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - - - - - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - - - - - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - - - - - Accept command line and JSON-RPC commands - - - - - Run in the background as a daemon and accept commands - - - - - Use the test network - - - - - Output extra debugging information - - - - - Prepend debug output with timestamp - - - - - Send trace/debug info to console instead of debug.log file - - - - - Send trace/debug info to debugger - - - - - Username for JSON-RPC connections - - - - - Password for JSON-RPC connections - - - - - Listen for JSON-RPC connections on <port> (default: 8332) - - - - - Allow JSON-RPC connections from specified IP address - - - - - Send commands to node running on <ip> (default: 127.0.0.1) - - - - - Set key pool size to <n> (default: 100) - - - - - Rescan the block chain for missing wallet transactions - - - - - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - - - - - Use OpenSSL (https) for JSON-RPC connections - - - - - Server certificate file (default: server.cert) - - - - - Server private key (default: server.pem) - - - - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - - This help message - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - - - - - Loading addresses... - - - - - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - - - - - Loading block index... - - - - - Loading wallet... - - - - - Rescanning... - - - - - Done loading - - - - - Invalid -proxy address - - - - - Invalid amount for -paytxfee=<amount> - - - - - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - - - - - Error: CreateThread(StartNode) failed - - - - - Warning: Disk space is low - - - - - Unable to bind to port %d on this computer. Bitcoin is probably already running. - - - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - - - - - beta - - - - - main - - - Bitcoin-Qt - - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 9afa996..aeeefd8 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -40,12 +40,12 @@ Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im Open These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - Dies sind Ihre Bitcoin-Adressen zum Empfangen von Zahlungen. Es steht Ihnen frei, jedem Absender eine Andere mitzuteilen, um einen besseren Überblick über eingehende Zahlungen zu erhalten. + Dies sind Ihre Bitcoin-Adressen zum Empfangen von Zahlungen. Es steht Ihnen frei, jedem Absender eine andere mitzuteilen, um einen besseren Überblick über eingehende Zahlungen zu erhalten. Double-click to edit address or label - Doppelklicken um die Adresse oder die Bezeichnung zu bearbeiten + Doppelklicken, um die Adresse oder die Bezeichnung zu bearbeiten @@ -55,7 +55,7 @@ Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im Open &New Address... - &Neue Adresse... + &Neue Adresse @@ -182,7 +182,7 @@ Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im Open Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - Geben Sie die neue Passphrase für die Brieftasche ein.<br/>Bitte benutzen Sie eine Passphrase bestehend aus <b>zehn oder mehr zufälligen Zeichen</b> oder <b>acht oder mehr Wörtern</b>. + Geben Sie die neue Passphrase für die Brieftasche ein. Bitte benutzen Sie eine Passphrase bestehend aus <b>10 oder mehr zufälligen Zeichen</b> oder <b>8 oder mehr Wörtern</b>. @@ -240,7 +240,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Bitcoin wird jetzt beendet, um den Verschlüsselungsprozess abzuschließen. Bitte beachten Sie, dass die Verschlüsselung Ihrer Brieftasche nicht vollständig vor Diebstahl Ihrer Bitcoins durch Schadprogramme schützt, die Ihren Computer befallen haben. + Bitcoin wird jetzt beendet, um den Verschlüsselungsprozess abzuschließen. Bitte beachten Sie, dass die Verschlüsselung Ihrer Brieftasche nicht vollständig vor Diebstahl Ihrer Bitcoins durch Schadsoftware schützt, die Ihren Computer befällt. @@ -336,7 +336,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? Edit the list of stored addresses and labels - Liste der gespeicherten Adressen und Bezeichnungen bearbeiten + Liste der gespeicherten Zahlungsadressen und Bezeichnungen bearbeiten @@ -361,7 +361,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? Sign &message - &Nachricht signieren + &Nachricht signieren... @@ -401,7 +401,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? &Options... - &Erweiterte Einstellungen... + &Erweiterte Einstellungen @@ -421,7 +421,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? &Export... - &Exportieren... + &Exportieren nach... @@ -431,7 +431,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? &Encrypt Wallet - Brieftasche &verschlüsseln + Brieftasche &verschlüsseln... @@ -536,12 +536,12 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Die Transaktion übersteigt das Größenlimit. Sie können sie trotzdem senden, wenn Sie eine zusätzliche Transaktionsgebühr von %1 zahlen. Diese wird an die Knoten verteilt, die Ihre Transaktion bearbeiten und unterstützt damit das Bitcoin-Netzwerk. Möchten Sie die Gebühr bezahlen? + Die Transaktion übersteigt das Größenlimit. Sie können sie trotzdem senden, wenn Sie eine zusätzliche Transaktionsgebühr in Höhe von %1 zahlen. Diese wird an die Knoten verteilt, die Ihre Transaktion bearbeiten und unterstützt damit das Bitcoin-Netzwerk. Möchten Sie die Gebühr bezahlen? Sending... - Überweisen... + Transaktionsgebühr bestätigen @@ -568,12 +568,12 @@ Adresse: %4 Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Brieftasche ist <b>verschlüsselt</b> und momentan <b>entsperrt</b> + Brieftasche ist <b>verschlüsselt</b> und aktuell <b>entsperrt</b> Wallet is <b>encrypted</b> and currently <b>locked</b> - Brieftasche ist <b>verschlüsselt</b> und momentan <b>gesperrt</b> + Brieftasche ist <b>verschlüsselt</b> und aktuell <b>gesperrt</b> @@ -737,7 +737,7 @@ Adresse: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - Optionale Transaktionsgebühr pro kB, die sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. + Optionale Transaktionsgebühr pro kB, die sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. @@ -755,7 +755,7 @@ Adresse: %4 Message - Nachricht + Nachricht signieren @@ -765,7 +765,7 @@ Adresse: %4 The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Die Zahlungsadresse der Überweisung (z.B. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Die Adresse mit der die Nachricht signiert wird (z.B. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) @@ -795,12 +795,12 @@ Adresse: %4 Click "Sign Message" to get signature - Auf "Nachricht signieren" klicken, um die Signatur zu erhalten + Auf "Nachricht signieren" klicken, um die Signatur zu erhalten. Diese wird dann hier angezeigt. Sign a message to prove you own this address - Eine Nachricht signieren, um den Besitz dieser Adresse nachzuweisen + Die Nachricht signieren, um den Besitz der angegebenen Adresse nachzuweisen @@ -921,7 +921,7 @@ p, li { white-space: pre-wrap; } Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - Betrag aus Transaktionen, die noch bestätigt werden müssen und der noch nicht zum aktuellen Kontostand zählt + Betrag aus unbestätigten Transaktionen, der noch nicht im aktuellen Kontostand enthalten ist @@ -989,12 +989,12 @@ p, li { white-space: pre-wrap; } Send to multiple recipients at once - An mehrere Empfänger auf einmal überweisen + In einer Transaktion an mehrere Empfänger auf einmal überweisen &Add recipient... - &Empfänger hinzufügen... + &Empfänger hinzufügen @@ -1039,7 +1039,7 @@ p, li { white-space: pre-wrap; } Are you sure you want to send %1? - Sind Sie sich sicher, dass Sie die folgende Überweisung ausführen möchten? %1 + Sind Sie sich sicher, dass Sie die folgende Überweisung ausführen möchten?<br>%1 @@ -1059,12 +1059,12 @@ p, li { white-space: pre-wrap; } Amount exceeds your balance - Der Betrag übersteigt Ihren Kontostand + Der angegebene Betrag übersteigt Ihren Kontostand. Total exceeds your balance when the %1 transaction fee is included - Der Betrag übersteigt aufgrund der Transaktionsgebühr in Höhe von %1 Ihren Kontostand + Der angegebene Betrag übersteigt aufgrund der Transaktionsgebühr in Höhe von %1 Ihren Kontostand. @@ -1074,12 +1074,12 @@ p, li { white-space: pre-wrap; } Error: Transaction creation failed - Fehler: Transaktionserstellung fehlgeschlagen + Fehler: Transaktionserstellung fehlgeschlagen Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - Fehler: Die Transaktion wurde abgelehnt. Dies kann passieren, wenn einige Bitcoins aus Ihrer Brieftasche bereits ausgegeben wurden. Beispielsweise weil Sie eine Kopie Ihrer wallet.dat genutzt, die Bitcoins dort ausgegeben haben und dies daher in der derzeit aktiven Brieftasche nicht vermerkt ist. + Fehler: Die Transaktion wurde abgelehnt. Dies kann passieren, wenn einige Bitcoins aus Ihrer Brieftasche bereits ausgegeben wurden. Beispielsweise weil Sie eine Kopie Ihrer wallet.dat genutzt, die Bitcoins dort ausgegeben haben und dies daher in der derzeit aktiven Brieftasche nicht vermerkt ist. @@ -1103,7 +1103,7 @@ p, li { white-space: pre-wrap; } Enter a label for this address to add it to your address book - Geben Sie hier eine Bezeichnung der Adresse ein, um sie zum Adressbuch hinzuzufügen + Adressbezeichnung eingeben (diese wird bei unbekannten Adressen inkl. der Adresse dem Adressbuch hinzugefügt) @@ -1181,17 +1181,17 @@ p, li { white-space: pre-wrap; } , has not been successfully broadcast yet - ; wurde noch nicht erfolgreich gesendet + , wurde noch nicht erfolgreich übertragen , broadcast through %1 node - ; über %1 Knoten gesendet + , über %1 Knoten übertragen , broadcast through %1 nodes - ; über %1 Knoten gesendet + , über %1 Knoten übertragen @@ -1224,12 +1224,12 @@ p, li { white-space: pre-wrap; } (yours, label: - (Ihre, Bezeichnung: + (Eigene Adresse, Bezeichnung: (yours) - (Ihre) + (Eigene Adresse) @@ -1242,7 +1242,7 @@ p, li { white-space: pre-wrap; } (%1 matures in %2 more blocks) - (%1 reift in weiteren %2 Blöcken) + %1 (reift noch %2 weitere Blöcke) @@ -1284,7 +1284,7 @@ p, li { white-space: pre-wrap; } Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Generierte Bitcoins müssen 120 Blöcke lang warten, bevor sie ausgegeben werden können. Als Sie diesen Block generierten, wurde er an das Netzwerk gesendet, um ihn der Blockkette hinzuzufügen. Falls dies fehlschlägt wird der Status in "nicht angenommen" geändert und der Betrag wird nicht verfügbar werden. Das kann gelegentlich passieren, wenn ein anderer Knoten einen Block zur selben Zeit wie Sie generierte. + Generierte Bitcoins müssen 120 Blöcke lang warten, bevor sie ausgegeben werden können. Als Sie diesen Block generierten, wurde er an das Netzwerk übertragen, um ihn der Blockkette hinzuzufügen. Falls dies fehlschlägt wird der Status in "nicht angenommen" geändert und der Betrag wird nicht verfügbar werden. Das kann gelegentlich passieren, wenn ein anderer Knoten einen Block zur selben Zeit wie Sie generierte. @@ -1380,7 +1380,7 @@ p, li { white-space: pre-wrap; } Payment to yourself - Zahlung an Sie selbst + Eigenüberweisung @@ -1454,7 +1454,7 @@ p, li { white-space: pre-wrap; } Range... - Zeitraum... + Zeitraum @@ -1469,7 +1469,7 @@ p, li { white-space: pre-wrap; } To yourself - Zu Ihnen selbst + Eigenüberweisung @@ -1489,7 +1489,7 @@ p, li { white-space: pre-wrap; } Min amount - Kleinster Betrag + Minimaler Betrag @@ -1514,7 +1514,7 @@ p, li { white-space: pre-wrap; } Show details... - Details anzeigen... + Transaktionsdetails anzeigen @@ -1610,8 +1610,7 @@ p, li { white-space: pre-wrap; } List commands - Befehle auflisten - + Befehle auflisten @@ -1636,7 +1635,7 @@ p, li { white-space: pre-wrap; } Generate coins - Generiere Bitcoins + Bitcoins generieren @@ -1908,7 +1907,7 @@ SSL Einstellungen: (siehe Bitcoin-Wiki für SSL Installationsanweisungen) Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - Warnung: -paytxfee ist auf einen sehr hohen Wert gesetzt. Dies ist die Gebühr die beim Senden einer Transaktion fällig wird. + Warnung: -paytxfee ist auf einen sehr hohen Wert gesetzt. Dies ist die Gebühr die beim Senden einer Transaktion fällig wird. @@ -1918,12 +1917,12 @@ SSL Einstellungen: (siehe Bitcoin-Wiki für SSL Installationsanweisungen) Warning: Disk space is low - Warnung: Festplattenplatz wird knapp + Warnung: Festplattenplatz wird knapp Unable to bind to port %d on this computer. Bitcoin is probably already running. - Fehler beim registrieren des Ports %d auf diesem Computer. Evtl. wurde Bitcoin bereits gestartet. + Fehler beim registrieren des Ports %d auf diesem Computer. Evtl. wurde Bitcoin bereits gestartet. diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 5e89fe1..d83d4bc 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -89,42 +89,42 @@ This product includes software developed by the OpenSSL Project for use in the O - + Copy address - + Copy label - + Edit - + Delete - + Export Address Book Data - + Comma separated file (*.csv) - + Error exporting - + Could not write to file %1. @@ -288,198 +288,208 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet - - + + Synchronizing with network... - + Block chain synchronization in progress - + &Overview - + Show general overview of wallet - + &Transactions - + Browse transaction history - + &Address Book - + Edit the list of stored addresses and labels - + &Receive coins - + Show the list of addresses for receiving payments - + &Send coins - + Send coins to a bitcoin address - + Sign &message - + Prove you control an address - + E&xit - + Quit application - + &About %1 - + Show information about Bitcoin - + About &Qt - + Show information about Qt - + &Options... - + Modify configuration options for bitcoin - + Open &Bitcoin - + Show the Bitcoin window - + &Export... - - Export the current view to a file + + Export the data in the current tab to a file - + &Encrypt Wallet - + Encrypt or decrypt wallet - + + &Backup Wallet + + + + + Backup wallet to another location + + + + &Change Passphrase - + Change the passphrase used for wallet encryption - + &File - + &Settings - + &Help - + Tabs toolbar - + Actions toolbar - + [testnet] - + bitcoin-qt - + %n active connection(s) to Bitcoin network %n active connection to Bitcoin network @@ -487,17 +497,17 @@ Are you sure you wish to encrypt your wallet? - + Downloaded %1 of %2 blocks of transaction history. - + Downloaded %1 blocks of transaction history. - + %n second(s) ago %n second ago @@ -505,7 +515,7 @@ Are you sure you wish to encrypt your wallet? - + %n minute(s) ago %n minute ago @@ -513,7 +523,7 @@ Are you sure you wish to encrypt your wallet? - + %n hour(s) ago %n hour ago @@ -521,7 +531,7 @@ Are you sure you wish to encrypt your wallet? - + %n day(s) ago %n day ago @@ -529,42 +539,42 @@ Are you sure you wish to encrypt your wallet? - + Up to date - + Catching up... - + Last received block was generated %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + Sending... - + Sent transaction - + Incoming transaction - + Date: %1 Amount: %2 Type: %3 @@ -573,15 +583,35 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> + + + Backup Wallet + + + + + Wallet Data (*.dat) + + + + + Backup Failed + + + + + There was an error trying to save the wallet data to the new location. + + DisplayOptionsPage @@ -766,7 +796,7 @@ Address: %4 - You can sign messages with your addresses to prove you own them. Be careful to only sign statement you agree to with full details, as phishing attacks may try to trick you into signing access to them. + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. @@ -974,6 +1004,16 @@ p, li { white-space: pre-wrap; } &Save As... + + + Save Image... + + + + + PNG Images (*.png) + + SendCoinsDialog @@ -1430,163 +1470,163 @@ p, li { white-space: pre-wrap; } TransactionView - - + + All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + Date - + Type - + Label - + Address - + Amount - + ID - + Error exporting - + Could not write to file %1. - + Range: - + to @@ -1594,7 +1634,7 @@ p, li { white-space: pre-wrap; } WalletModel - + Sending... @@ -1943,12 +1983,4 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - - main - - - Bitcoin-Qt - - - diff --git a/src/qt/notificator.cpp b/src/qt/notificator.cpp index a2314ca..e668079 100644 --- a/src/qt/notificator.cpp +++ b/src/qt/notificator.cpp @@ -52,10 +52,13 @@ Notificator::Notificator(const QString &programName, QSystemTrayIcon *trayicon, OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl); if (status != kLSApplicationNotFoundErr) { CFBundleRef bundle = CFBundleCreate(0, cfurl); - CFRelease(cfurl); if (CFStringCompare(CFBundleGetIdentifier(bundle), CFSTR("com.Growl.GrowlHelperApp"), kCFCompareCaseInsensitive | kCFCompareBackwards) == kCFCompareEqualTo) { - mode = Growl; + if (CFStringHasSuffix(CFURLGetString(cfurl), CFSTR("/Growl.app/"))) + mode = Growl13; + else + mode = Growl12; } + CFRelease(cfurl); CFRelease(bundle); } #endif @@ -226,7 +229,7 @@ void Notificator::notifySystray(Class cls, const QString &title, const QString & void Notificator::notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon) { const QString script( - "tell application \"GrowlHelperApp\"\n" + "tell application \"%5\"\n" " set the allNotificationsList to {\"Notification\"}\n" // -- Make a list of all the notification types (all) " set the enabledNotificationsList to {\"Notification\"}\n" // -- Make a list of the notifications (enabled) " register as application \"%1\" all notifications allNotificationsList default notifications enabledNotificationsList\n" // -- Register our script with Growl @@ -265,7 +268,8 @@ void Notificator::notifyGrowl(Class cls, const QString &title, const QString &te QString quotedTitle(title), quotedText(text); quotedTitle.replace("\\", "\\\\").replace("\"", "\\"); quotedText.replace("\\", "\\\\").replace("\"", "\\"); - qt_mac_execute_apple_script(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon), 0); + QString growlApp(this->mode == Notificator::Growl13 ? "Growl" : "GrowlHelperApp"); + qt_mac_execute_apple_script(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon, growlApp), 0); } #endif @@ -282,7 +286,8 @@ void Notificator::notify(Class cls, const QString &title, const QString &text, c notifySystray(cls, title, text, icon, millisTimeout); break; #ifdef Q_WS_MAC - case Growl: + case Growl12: + case Growl13: notifyGrowl(cls, title, text, icon); break; #endif diff --git a/src/qt/notificator.h b/src/qt/notificator.h index 2d83013..0271c26 100644 --- a/src/qt/notificator.h +++ b/src/qt/notificator.h @@ -49,7 +49,8 @@ private: None, /**< Ignore informational notifications, and show a modal pop-up dialog for Critical notifications. */ Freedesktop, /**< Use DBus org.freedesktop.Notifications */ QSystemTray, /**< Use QSystemTray::showMessage */ - Growl /**< Use the Growl notification system (Mac only) */ + Growl12, /**< Use the Growl 1.2 notification system (Mac only) */ + Growl13 /**< Use the Growl 1.3 notification system (Mac only) */ }; QString programName; Mode mode; diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index d98400c..caffaae 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -66,6 +66,7 @@ void SendCoinsEntry::on_payTo_textChanged(const QString &address) void SendCoinsEntry::setModel(WalletModel *model) { this->model = model; + clear(); } void SendCoinsEntry::setRemoveEnabled(bool enabled)