Mercurial > hg > bitcoin
changeset 2261:fca07c7f60ee draft
Merge pull request #1091 from Diapolo/GUI-BlockDL
revert to default OS theme for progressbar (fix #1071)
author | Wladimir J. van der Laan <laanwj@gmail.com> |
---|---|
date | Mon, 16 Apr 2012 00:55:37 -0700 |
parents | 4f0ae80532dc (diff) 5e4d0658987e (current diff) |
children | 0d9216028afa |
files | src/qt/bitcoingui.cpp |
diffstat | 36 files changed, 744 insertions(+), 490 deletions(-) [+] |
line wrap: on
line diff
--- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -90,8 +90,7 @@ DEFINES += HAVE_BUILD_INFO } -# disable quite some warnings because bitcoin core "sins" a lot -QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wno-strict-aliasing -Wno-invalid-offsetof -Wno-unused-variable -Wno-unused-parameter -Wno-sign-compare -Wno-char-subscripts -Wno-unused-value -Wno-sequence-point -Wno-parentheses -Wno-unknown-pragmas -Wno-switch +QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wformat -Wformat-security -Wno-invalid-offsetof -Wno-sign-compare -Wno-unused-parameter # Input DEPENDPATH += src/qt src src json/include
deleted file mode 100755 --- a/scripts/qt/extract_strings_qt.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/python -''' -Extract _("...") strings for translation and convert to Qt4 stringdefs so that -they can be picked up by Qt linguist. -''' -from subprocess import Popen, PIPE - -OUT_CPP="src/qt/bitcoinstrings.cpp" -EMPTY=['""'] - -def parse_po(text): - """ - Parse 'po' format produced by xgettext. - Return a list of (msgid,msgstr) tuples. - """ - messages = [] - msgid = [] - msgstr = [] - in_msgid = False - in_msgstr = False - - for line in text.split('\n'): - line = line.rstrip('\r') - if line.startswith('msgid '): - if in_msgstr: - messages.append((msgid, msgstr)) - in_msgstr = False - # message start - in_msgid = True - - msgid = [line[6:]] - elif line.startswith('msgstr '): - in_msgid = False - in_msgstr = True - msgstr = [line[7:]] - elif line.startswith('"'): - if in_msgid: - msgid.append(line) - if in_msgstr: - msgstr.append(line) - - if in_msgstr: - messages.append((msgid, msgstr)) - - return messages - -files = ['src/base58.h', 'src/bignum.h', 'src/db.cpp', 'src/db.h', 'src/headers.h', 'src/init.cpp', 'src/init.h', 'src/irc.cpp', 'src/irc.h', 'src/key.h', 'src/main.cpp', 'src/main.h', 'src/net.cpp', 'src/net.h', 'src/noui.h', 'src/script.cpp', 'src/script.h', 'src/serialize.h', 'src/strlcpy.h', 'src/uint256.h', 'src/util.cpp', 'src/util.h'] - -# xgettext -n --keyword=_ $FILES -child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE) -(out, err) = child.communicate() - -messages = parse_po(out) - -f = open(OUT_CPP, 'w') -f.write('#include <QtGlobal>\n') -f.write('// Automatically generated by extract_strings.py\n') -f.write('static const char *bitcoin_strings[] = {') -for (msgid, msgstr) in messages: - if msgid != EMPTY: - f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid))) -f.write('};') -f.close()
deleted file mode 100644 index dc8be62831673c2e99f05f5e5b42581e6e4e1db1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch literal 0 Hc$@<O00001
deleted file mode 100755 --- a/scripts/qt/make_spinner.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python -# W.J. van der Laan, 2011 -# Make spinning .mng animation from a .png -# Requires imagemagick 6.7+ -from __future__ import division -from os import path -from PIL import Image -from subprocess import Popen - -SRC='img/reload_scaled.png' -DST='../../src/qt/res/movies/update_spinner.mng' -TMPDIR='/tmp' -TMPNAME='tmp-%03i.png' -NUMFRAMES=35 -FRAMERATE=10.0 -CONVERT='convert' -CLOCKWISE=True -DSIZE=(16,16) - -im_src = Image.open(SRC) - -if CLOCKWISE: - im_src = im_src.transpose(Image.FLIP_LEFT_RIGHT) - -def frame_to_filename(frame): - return path.join(TMPDIR, TMPNAME % frame) - -frame_files = [] -for frame in xrange(NUMFRAMES): - rotation = (frame + 0.5) / NUMFRAMES * 360.0 - if CLOCKWISE: - rotation = -rotation - im_new = im_src.rotate(rotation, Image.BICUBIC) - im_new.thumbnail(DSIZE, Image.ANTIALIAS) - outfile = frame_to_filename(frame) - im_new.save(outfile, 'png') - frame_files.append(outfile) - -p = Popen([CONVERT, "-delay", str(FRAMERATE), "-dispose", "2"] + frame_files + [DST]) -p.communicate() - - -
deleted file mode 100755 --- a/scripts/qt/make_windows_icon.py +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# create multiresolution windows icon -ICON_SRC=../../src/qt/res/icons/bitcoin.png -ICON_DST=../../src/qt/res/icons/bitcoin.ico -convert ${ICON_SRC} -resize 16x16 bitcoin-16.png -convert ${ICON_SRC} -resize 32x32 bitcoin-32.png -convert ${ICON_SRC} -resize 48x48 bitcoin-48.png -convert bitcoin-16.png bitcoin-32.png bitcoin-48.png ${ICON_DST} -
new file mode 100755 --- /dev/null +++ b/share/qt/extract_strings_qt.py @@ -0,0 +1,70 @@ +#!/usr/bin/python +''' +Extract _("...") strings for translation and convert to Qt4 stringdefs so that +they can be picked up by Qt linguist. +''' +from subprocess import Popen, PIPE +import glob + +OUT_CPP="src/qt/bitcoinstrings.cpp" +EMPTY=['""'] + +def parse_po(text): + """ + Parse 'po' format produced by xgettext. + Return a list of (msgid,msgstr) tuples. + """ + messages = [] + msgid = [] + msgstr = [] + in_msgid = False + in_msgstr = False + + for line in text.split('\n'): + line = line.rstrip('\r') + if line.startswith('msgid '): + if in_msgstr: + messages.append((msgid, msgstr)) + in_msgstr = False + # message start + in_msgid = True + + msgid = [line[6:]] + elif line.startswith('msgstr '): + in_msgid = False + in_msgstr = True + msgstr = [line[7:]] + elif line.startswith('"'): + if in_msgid: + msgid.append(line) + if in_msgstr: + msgstr.append(line) + + if in_msgstr: + messages.append((msgid, msgstr)) + + return messages + +files = glob.glob('src/*.cpp') + glob.glob('src/*.h') + +# xgettext -n --keyword=_ $FILES +child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE) +(out, err) = child.communicate() + +messages = parse_po(out) + +f = open(OUT_CPP, 'w') +f.write("""#include <QtGlobal> +// Automatically generated by extract_strings.py +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif +""") +f.write('static const char UNUSED *bitcoin_strings[] = {') +for (msgid, msgstr) in messages: + if msgid != EMPTY: + f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid))) +f.write('};') +f.close()
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dc8be62831673c2e99f05f5e5b42581e6e4e1db1 GIT binary patch literal 25292 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 DhY;cx
new file mode 100755 --- /dev/null +++ b/share/qt/make_spinner.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# W.J. van der Laan, 2011 +# Make spinning .mng animation from a .png +# Requires imagemagick 6.7+ +from __future__ import division +from os import path +from PIL import Image +from subprocess import Popen + +SRC='img/reload_scaled.png' +DST='../../src/qt/res/movies/update_spinner.mng' +TMPDIR='/tmp' +TMPNAME='tmp-%03i.png' +NUMFRAMES=35 +FRAMERATE=10.0 +CONVERT='convert' +CLOCKWISE=True +DSIZE=(16,16) + +im_src = Image.open(SRC) + +if CLOCKWISE: + im_src = im_src.transpose(Image.FLIP_LEFT_RIGHT) + +def frame_to_filename(frame): + return path.join(TMPDIR, TMPNAME % frame) + +frame_files = [] +for frame in xrange(NUMFRAMES): + rotation = (frame + 0.5) / NUMFRAMES * 360.0 + if CLOCKWISE: + rotation = -rotation + im_new = im_src.rotate(rotation, Image.BICUBIC) + im_new.thumbnail(DSIZE, Image.ANTIALIAS) + outfile = frame_to_filename(frame) + im_new.save(outfile, 'png') + frame_files.append(outfile) + +p = Popen([CONVERT, "-delay", str(FRAMERATE), "-dispose", "2"] + frame_files + [DST]) +p.communicate() + + +
new file mode 100755 --- /dev/null +++ b/share/qt/make_windows_icon.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# create multiresolution windows icon +ICON_SRC=../../src/qt/res/icons/bitcoin.png +ICON_DST=../../src/qt/res/icons/bitcoin.ico +convert ${ICON_SRC} -resize 16x16 bitcoin-16.png +convert ${ICON_SRC} -resize 32x32 bitcoin-32.png +convert ${ICON_SRC} -resize 48x48 bitcoin-48.png +convert bitcoin-16.png bitcoin-32.png bitcoin-48.png ${ICON_DST} +
--- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -312,7 +312,7 @@ pinfo->nServices |= addr.nServices; // do not update if no new information is present - if (!addr.nTime || pinfo->nTime && addr.nTime <= pinfo->nTime) + if (!addr.nTime || (pinfo->nTime && addr.nTime <= pinfo->nTime)) return false; // do not update if the entry was already in the "tried" table
--- a/src/base58.h +++ b/src/base58.h @@ -396,6 +396,16 @@ return fExpectTestNet == fTestNet && (vchData.size() == 32 || (vchData.size() == 33 && vchData[32] == 1)); } + bool SetString(const char* pszSecret) + { + return CBase58Data::SetString(pszSecret) && IsValid(); + } + + bool SetString(const std::string& strSecret) + { + return SetString(strSecret.c_str()); + } + CBitcoinSecret(const CSecret& vchSecret, bool fCompressed) { SetSecret(vchSecret, fCompressed);
--- a/src/bignum.h +++ b/src/bignum.h @@ -301,7 +301,7 @@ while (isxdigit(*psz)) { *this <<= 4; - int n = phexdigit[*psz++]; + int n = phexdigit[(unsigned char)*psz++]; *this += n; } if (fNegative)
--- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -796,8 +796,10 @@ list<pair<CBitcoinAddress, int64> > listSent; wtx.GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount); if (wtx.GetDepthInMainChain() >= nMinDepth) + { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listReceived) nBalance += r.second; + } BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listSent) nBalance -= r.second; nBalance -= allFee; @@ -1228,6 +1230,7 @@ // Received if (listReceived.size() > 0 && wtx.GetDepthInMainChain() >= nMinDepth) + { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64)& r, listReceived) { string account; @@ -1245,6 +1248,7 @@ ret.push_back(entry); } } + } } void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Array& ret)
--- a/src/db.cpp +++ b/src/db.cpp @@ -642,6 +642,7 @@ // check level 4: check whether spent txouts were spent within the main chain int nOutput = 0; if (nCheckLevel>3) + { BOOST_FOREACH(const CDiskTxPos &txpos, txindex.vSpent) { if (!txpos.IsNull()) @@ -682,9 +683,11 @@ } nOutput++; } + } } // check level 5: check whether all prevouts are marked spent if (nCheckLevel>4) + { BOOST_FOREACH(const CTxIn &txin, tx.vin) { CTxIndex txindex; @@ -695,6 +698,7 @@ pindexFork = pindex->pprev; } } + } } } }
--- a/src/keystore.h +++ b/src/keystore.h @@ -15,6 +15,8 @@ mutable CCriticalSection cs_KeyStore; public: + virtual ~CKeyStore() {} + // Add a key to the store. virtual bool AddKey(const CKey& key) =0;
--- a/src/main.cpp +++ b/src/main.cpp @@ -592,12 +592,6 @@ return true; } -bool CTransaction::AcceptToMemoryPool(bool fCheckInputs, bool* pfMissingInputs) -{ - CTxDB txdb("r"); - return AcceptToMemoryPool(txdb, fCheckInputs, pfMissingInputs); -} - uint64 nPooledTx = 0; bool CTransaction::AddToMemoryPoolUnchecked() @@ -1267,14 +1261,18 @@ // This rule applies to all blocks whose timestamp is after March 15, 2012, 0:00 UTC. // On testnet it is enabled as of februari 20, 2012, 0:00 UTC. if (pindex->nTime > 1331769600 || (fTestNet && pindex->nTime > 1329696000)) + { BOOST_FOREACH(CTransaction& tx, vtx) { CTxIndex txindexOld; if (txdb.ReadTxIndex(tx.GetHash(), txindexOld)) + { BOOST_FOREACH(CDiskTxPos &pos, txindexOld.vSpent) if (pos.IsNull()) return false; + } } + } // BIP16 didn't become active until Apr 1 2012 (Feb 15 on testnet) int64 nBIP16SwitchTime = fTestNet ? 1329264000 : 1333238400; @@ -2522,6 +2520,7 @@ { vector<uint256> vWorkQueue; CDataStream vMsg(vRecv); + CTxDB txdb("r"); CTransaction tx; vRecv >> tx; @@ -2529,7 +2528,7 @@ pfrom->AddInventoryKnown(inv); bool fMissingInputs = false; - if (tx.AcceptToMemoryPool(true, &fMissingInputs)) + if (tx.AcceptToMemoryPool(txdb, true, &fMissingInputs)) { SyncWithWallets(tx, NULL, true); RelayMessage(inv, vMsg); @@ -2549,7 +2548,7 @@ CDataStream(vMsg) >> tx; CInv inv(MSG_TX, tx.GetHash()); - if (tx.AcceptToMemoryPool(true)) + if (tx.AcceptToMemoryPool(txdb, true)) { printf(" accepted orphan tx %s\n", inv.hash.ToString().substr(0,10).c_str()); SyncWithWallets(tx, NULL, true);
--- a/src/main.h +++ b/src/main.h @@ -573,9 +573,11 @@ // To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01 if (nMinFee < nBaseFee) + { BOOST_FOREACH(const CTxOut& txout, vout) if (txout.nValue < CENT) nMinFee = nBaseFee; + } // Raise the price as the block approaches full if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2) @@ -684,7 +686,6 @@ bool ClientConnectInputs(); bool CheckTransaction() const; bool AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs=true, bool* pfMissingInputs=NULL); - bool AcceptToMemoryPool(bool fCheckInputs=true, bool* pfMissingInputs=NULL); protected: const CTxOut& GetOutputFor(const CTxIn& input, const MapPrevTx& inputs) const;
--- a/src/makefile.osx +++ b/src/makefile.osx @@ -62,7 +62,7 @@ endif # ppc doesn't work because we don't support big-endian -CFLAGS += -Wextra -Wno-sign-compare -Wno-char-subscripts -Wno-invalid-offsetof -Wformat-security \ +CFLAGS += -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wformat-security \ $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) OBJS= \
--- a/src/makefile.unix +++ b/src/makefile.unix @@ -81,7 +81,7 @@ DEBUGFLAGS=-g CXXFLAGS=-O2 -xCXXFLAGS=-pthread -Wextra -Wno-sign-compare -Wno-char-subscripts -Wno-invalid-offsetof -Wformat -Wformat-security \ +xCXXFLAGS=-pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security \ $(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS) OBJS= \
--- a/src/net.cpp +++ b/src/net.cpp @@ -1233,8 +1233,6 @@ if (fShutdown) return; - bool fAddSeeds = false; - // Add seed nodes if IRC isn't working bool fTOR = (fUseProxy && addrProxy.GetPort() == 9050); if (addrman.size()==0 && (GetTime() - nStart > 60 || fTOR) && !fTestNet) @@ -1260,7 +1258,6 @@ // Choose an address to connect to based on most recently seen // CAddress addrConnect; - int64 nBest = std::numeric_limits<int64>::min(); // Only connect to one address per a.b.?.? range. // Do this here so we don't have to critsect vNodes inside mapAddresses critsect.
--- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -27,8 +27,9 @@ }; // Private implementation -struct AddressTablePriv +class AddressTablePriv { +public: CWallet *wallet; QList<AddressTableEntry> cachedAddressTable;
--- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -119,6 +119,15 @@ return QCoreApplication::translate("bitcoin-core", psz).toStdString(); } +/* Handle runaway exceptions. Shows a message box with the problem and quits the program. + */ +static void handleRunawayException(std::exception *e) +{ + PrintExceptionContinue(e, "Runaway exception"); + QMessageBox::critical(0, "Runaway exception", BitcoinGUI::tr("A fatal error occured. Bitcoin can no longer continue safely and will quit.") + QString("\n\n") + QString::fromStdString(strMiscWarning)); + exit(1); +} + #ifdef WIN32 #define strncasecmp strnicmp #endif @@ -284,9 +293,9 @@ return 1; } } catch (std::exception& e) { - PrintException(&e, "Runaway exception"); + handleRunawayException(&e); } catch (...) { - PrintException(NULL, "Runaway exception"); + handleRunawayException(NULL); } return 0; }
--- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -238,7 +238,7 @@ optionsAction->setToolTip(tr("Modify configuration options for bitcoin")); optionsAction->setMenuRole(QAction::PreferencesRole); toggleHideAction = new QAction(QIcon(":/icons/bitcoin"), tr("Show/Hide &Bitcoin"), this); - toggleHideAction->setToolTip(tr("Show or Hide the Bitcoin window")); + toggleHideAction->setToolTip(tr("Show or hide the Bitcoin window")); exportAction = new QAction(QIcon(":/icons/export"), tr("&Export..."), this); exportAction->setToolTip(tr("Export the data in the current tab to a file")); encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet"), this); @@ -549,7 +549,7 @@ } // Set icon state: spinning if catching up, tick otherwise - if(secs < 90*60) + if(secs < 90*60 && count >= nTotalBlocks) { tooltip = tr("Up to date") + QString(".\n") + tooltip; labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE));
--- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -1,6 +1,15 @@ #include <QtGlobal> // Automatically generated by extract_strings.py -static const char *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif +static const char UNUSED *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "" +"Unable to bind to port %d on this computer. Bitcoin is probably already " +"running."), +QT_TRANSLATE_NOOP("bitcoin-core", "Warning: Disk space is low "), +QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), QT_TRANSLATE_NOOP("bitcoin-core", "Usage:"), QT_TRANSLATE_NOOP("bitcoin-core", "Send command to -server or bitcoind"), QT_TRANSLATE_NOOP("bitcoin-core", "List commands"), @@ -11,25 +20,30 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Generate coins"), QT_TRANSLATE_NOOP("bitcoin-core", "Don't generate coins"), QT_TRANSLATE_NOOP("bitcoin-core", "Start minimized"), +QT_TRANSLATE_NOOP("bitcoin-core", "Show splash screen on startup (default: 1)"), QT_TRANSLATE_NOOP("bitcoin-core", "Specify data directory"), +QT_TRANSLATE_NOOP("bitcoin-core", "Set database cache size in megabytes (default: 25)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Set database disk log size in megabytes (default: 100)"), QT_TRANSLATE_NOOP("bitcoin-core", "Specify connection timeout (in milliseconds)"), QT_TRANSLATE_NOOP("bitcoin-core", "Connect through socks4 proxy"), QT_TRANSLATE_NOOP("bitcoin-core", "Allow DNS lookups for addnode and connect"), QT_TRANSLATE_NOOP("bitcoin-core", "Listen for connections on <port> (default: 8333 or testnet: 18333)"), QT_TRANSLATE_NOOP("bitcoin-core", "Maintain at most <n> connections to peers (default: 125)"), -QT_TRANSLATE_NOOP("bitcoin-core", "Add a node to connect to"), +QT_TRANSLATE_NOOP("bitcoin-core", "Add a node to connect to and attempt to keep the connection open"), QT_TRANSLATE_NOOP("bitcoin-core", "Connect only to the specified node"), -QT_TRANSLATE_NOOP("bitcoin-core", "Don't accept connections from outside"), -QT_TRANSLATE_NOOP("bitcoin-core", "Don't bootstrap list of peers using DNS"), +QT_TRANSLATE_NOOP("bitcoin-core", "Find peers using internet relay chat (default: 0)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Accept connections from outside (default: 1)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Set language, for example \"de_DE\" (default: system locale)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Find peers using DNS lookup (default: 1)"), QT_TRANSLATE_NOOP("bitcoin-core", "Threshold for disconnecting misbehaving peers (default: 100)"), QT_TRANSLATE_NOOP("bitcoin-core", "" "Number of seconds to keep misbehaving peers from reconnecting (default: " "86400)"), QT_TRANSLATE_NOOP("bitcoin-core", "Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000)"), QT_TRANSLATE_NOOP("bitcoin-core", "Maximum per-connection send buffer, <n>*1000 bytes (default: 10000)"), -QT_TRANSLATE_NOOP("bitcoin-core", "Don't attempt to use UPnP to map the listening port"), -QT_TRANSLATE_NOOP("bitcoin-core", "Attempt to use UPnP to map the listening port"), -QT_TRANSLATE_NOOP("bitcoin-core", "Fee per kB to add to transactions you send"), +QT_TRANSLATE_NOOP("bitcoin-core", "Use Universal Plug and Play to map the listening port (default: 1)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Use Universal Plug and Play to map the listening port (default: 0)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Fee per KB to add to transactions you send"), QT_TRANSLATE_NOOP("bitcoin-core", "Accept command line and JSON-RPC commands"), QT_TRANSLATE_NOOP("bitcoin-core", "Run in the background as a daemon and accept commands"), QT_TRANSLATE_NOOP("bitcoin-core", "Use the test network"), @@ -42,8 +56,14 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Listen for JSON-RPC connections on <port> (default: 8332)"), QT_TRANSLATE_NOOP("bitcoin-core", "Allow JSON-RPC connections from specified IP address"), QT_TRANSLATE_NOOP("bitcoin-core", "Send commands to node running on <ip> (default: 127.0.0.1)"), +QT_TRANSLATE_NOOP("bitcoin-core", "" +"Execute command when the best block changes (%s in cmd is replaced by block " +"hash)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Upgrade wallet to latest format"), QT_TRANSLATE_NOOP("bitcoin-core", "Set key pool size to <n> (default: 100)"), QT_TRANSLATE_NOOP("bitcoin-core", "Rescan the block chain for missing wallet transactions"), +QT_TRANSLATE_NOOP("bitcoin-core", "How many blocks to check at startup (default: 2500, 0 = all)"), +QT_TRANSLATE_NOOP("bitcoin-core", "How thorough the block verification is (0-6, default: 1)"), QT_TRANSLATE_NOOP("bitcoin-core", "" "\n" "SSL options: (see the Bitcoin Wiki for SSL setup instructions)"), @@ -54,9 +74,11 @@ "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:" "@STRENGTH)"), QT_TRANSLATE_NOOP("bitcoin-core", "This help message"), +QT_TRANSLATE_NOOP("bitcoin-core", "Usage"), QT_TRANSLATE_NOOP("bitcoin-core", "" "Cannot obtain a lock on data directory %s. Bitcoin is probably already " "running."), +QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin"), QT_TRANSLATE_NOOP("bitcoin-core", "Loading addresses..."), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading addr.dat"), QT_TRANSLATE_NOOP("bitcoin-core", "Loading block index..."), @@ -66,6 +88,9 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet requires newer version of Bitcoin"), QT_TRANSLATE_NOOP("bitcoin-core", "Wallet needed to be rewritten: restart Bitcoin to complete"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat"), +QT_TRANSLATE_NOOP("bitcoin-core", "Cannot downgrade wallet"), +QT_TRANSLATE_NOOP("bitcoin-core", "Cannot initialize keypool"), +QT_TRANSLATE_NOOP("bitcoin-core", "Cannot write default address"), QT_TRANSLATE_NOOP("bitcoin-core", "Rescanning..."), QT_TRANSLATE_NOOP("bitcoin-core", "Done loading"), QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -proxy address"), @@ -74,12 +99,36 @@ "Warning: -paytxfee is set very high. This is the transaction fee you will " "pay if you send a transaction."), QT_TRANSLATE_NOOP("bitcoin-core", "Error: CreateThread(StartNode) failed"), -QT_TRANSLATE_NOOP("bitcoin-core", "Warning: Disk space is low "), +QT_TRANSLATE_NOOP("bitcoin-core", "To use the %s option"), QT_TRANSLATE_NOOP("bitcoin-core", "" -"Unable to bind to port %d on this computer. Bitcoin is probably already " -"running."), +"%s, you must set a rpcpassword in the configuration file:\n" +" %s\n" +"It is recommended you use the following random password:\n" +"rpcuser=bitcoinrpc\n" +"rpcpassword=%s\n" +"(you do not need to remember this password)\n" +"If the file does not exist, create it with owner-readable-only file " +"permissions.\n"), +QT_TRANSLATE_NOOP("bitcoin-core", "Error"), +QT_TRANSLATE_NOOP("bitcoin-core", "An error occured while setting up the RPC port %i for listening: %s"), +QT_TRANSLATE_NOOP("bitcoin-core", "" +"You must set rpcpassword=<password> in the configuration file:\n" +"%s\n" +"If the file does not exist, create it with owner-readable-only file " +"permissions."), QT_TRANSLATE_NOOP("bitcoin-core", "" "Warning: Please check that your computer's date and time are correct. If " "your clock is wrong Bitcoin will not work properly."), -QT_TRANSLATE_NOOP("bitcoin-core", "beta"), -}; +QT_TRANSLATE_NOOP("bitcoin-core", "Error: Wallet locked, unable to create transaction "), +QT_TRANSLATE_NOOP("bitcoin-core", "" +"Error: This transaction requires a transaction fee of at least %s because of " +"its amount, complexity, or use of recently received funds "), +QT_TRANSLATE_NOOP("bitcoin-core", "Error: Transaction creation failed "), +QT_TRANSLATE_NOOP("bitcoin-core", "Sending..."), +QT_TRANSLATE_NOOP("bitcoin-core", "" +"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."), +QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount"), +QT_TRANSLATE_NOOP("bitcoin-core", "Insufficient funds"), +}; \ No newline at end of file
--- a/src/qt/editaddressdialog.cpp +++ b/src/qt/editaddressdialog.cpp @@ -106,6 +106,9 @@ tr("New key generation failed."), QMessageBox::Ok, QMessageBox::Ok); return; + case AddressTableModel::OK: + // Failed with unknown reason. Just reject. + break; } return;
--- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="en_US"> +<TS version="2.0" language="en"> <defaultcodec>UTF-8</defaultcodec> <context> <name>AboutDialog</name> @@ -15,7 +15,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/aboutdialog.ui" line="85"/> + <location filename="../forms/aboutdialog.ui" line="91"/> <source>Copyright © 2009-2012 Bitcoin Developers This is experimental software. @@ -89,42 +89,42 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="61"/> + <location filename="../addressbookpage.cpp" line="65"/> <source>Copy address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="62"/> + <location filename="../addressbookpage.cpp" line="66"/> <source>Copy label</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="63"/> + <location filename="../addressbookpage.cpp" line="67"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="64"/> + <location filename="../addressbookpage.cpp" line="68"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="281"/> + <location filename="../addressbookpage.cpp" line="288"/> <source>Export Address Book Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="282"/> + <location filename="../addressbookpage.cpp" line="289"/> <source>Comma separated file (*.csv)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="295"/> + <location filename="../addressbookpage.cpp" line="302"/> <source>Error exporting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="295"/> + <location filename="../addressbookpage.cpp" line="302"/> <source>Could not write to file %1.</source> <translation type="unfinished"></translation> </message> @@ -288,293 +288,300 @@ <context> <name>BitcoinGUI</name> <message> - <location filename="../bitcoingui.cpp" line="69"/> + <location filename="../bitcoingui.cpp" line="70"/> <source>Bitcoin Wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="142"/> - <location filename="../bitcoingui.cpp" line="464"/> + <location filename="../bitcoingui.cpp" line="243"/> + <source>Show/Hide &Bitcoin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="499"/> <source>Synchronizing with network...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="145"/> - <source>Block chain synchronization in progress</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoingui.cpp" line="176"/> + <location filename="../bitcoingui.cpp" line="180"/> <source>&Overview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="177"/> + <location filename="../bitcoingui.cpp" line="181"/> <source>Show general overview of wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="182"/> + <location filename="../bitcoingui.cpp" line="186"/> <source>&Transactions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="183"/> + <location filename="../bitcoingui.cpp" line="187"/> <source>Browse transaction history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="188"/> + <location filename="../bitcoingui.cpp" line="192"/> <source>&Address Book</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="189"/> + <location filename="../bitcoingui.cpp" line="193"/> <source>Edit the list of stored addresses and labels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="194"/> + <location filename="../bitcoingui.cpp" line="198"/> <source>&Receive coins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="195"/> + <location filename="../bitcoingui.cpp" line="199"/> <source>Show the list of addresses for receiving payments</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="200"/> + <location filename="../bitcoingui.cpp" line="204"/> <source>&Send coins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="201"/> + <location filename="../bitcoingui.cpp" line="205"/> <source>Send coins to a bitcoin address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="206"/> + <location filename="../bitcoingui.cpp" line="210"/> <source>Sign &message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="207"/> + <location filename="../bitcoingui.cpp" line="211"/> <source>Prove you control an address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="226"/> + <location filename="../bitcoingui.cpp" line="230"/> <source>E&xit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="227"/> + <location filename="../bitcoingui.cpp" line="231"/> <source>Quit application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="230"/> - <source>&About %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoingui.cpp" line="231"/> - <source>Show information about Bitcoin</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoingui.cpp" line="233"/> - <source>About &Qt</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../bitcoingui.cpp" line="234"/> - <source>Show information about Qt</source> + <source>&About %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="236"/> - <source>&Options...</source> + <location filename="../bitcoingui.cpp" line="235"/> + <source>Show information about Bitcoin</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoingui.cpp" line="237"/> - <source>Modify configuration options for bitcoin</source> + <source>About &Qt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="239"/> - <source>Open &Bitcoin</source> + <location filename="../bitcoingui.cpp" line="238"/> + <source>Show information about Qt</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoingui.cpp" line="240"/> - <source>Show the Bitcoin window</source> + <source>&Options...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoingui.cpp" line="241"/> + <source>Modify configuration options for bitcoin</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location filename="../bitcoingui.cpp" line="501"/> + <source>~%n block(s) remaining</source> + <translation> + <numerusform>~%n block remaining</numerusform> + <numerusform>~%n blocks remaining</numerusform> + </translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="512"/> + <source>Downloaded %1 of %2 blocks of transaction history (%3% done).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="245"/> <source>&Export...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="242"/> - <source>Export the data in the current tab to a file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoingui.cpp" line="243"/> - <source>&Encrypt Wallet</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../bitcoingui.cpp" line="244"/> - <source>Encrypt or decrypt wallet</source> + <source>Show or hide the Bitcoin window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoingui.cpp" line="246"/> - <source>&Backup Wallet</source> + <source>Export the data in the current tab to a file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoingui.cpp" line="247"/> + <source>&Encrypt Wallet</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="248"/> + <source>Encrypt or decrypt wallet</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="250"/> + <source>&Backup Wallet</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="251"/> <source>Backup wallet to another location</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="248"/> + <location filename="../bitcoingui.cpp" line="252"/> <source>&Change Passphrase</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="249"/> + <location filename="../bitcoingui.cpp" line="253"/> <source>Change the passphrase used for wallet encryption</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="272"/> + <location filename="../bitcoingui.cpp" line="276"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="281"/> + <location filename="../bitcoingui.cpp" line="285"/> <source>&Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="287"/> + <location filename="../bitcoingui.cpp" line="291"/> <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="294"/> + <location filename="../bitcoingui.cpp" line="298"/> <source>Tabs toolbar</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="305"/> + <location filename="../bitcoingui.cpp" line="309"/> <source>Actions toolbar</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="317"/> + <location filename="../bitcoingui.cpp" line="321"/> <source>[testnet]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="407"/> + <location filename="../bitcoingui.cpp" line="383"/> + <source>Bitcoin client</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="411"/> <source>bitcoin-qt</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="449"/> + <location filename="../bitcoingui.cpp" line="475"/> <source>%n active connection(s) to Bitcoin network</source> - <translation type="unfinished"> + <translation> <numerusform>%n active connection to Bitcoin network</numerusform> <numerusform>%n active connections to Bitcoin network</numerusform> </translation> </message> <message> - <location filename="../bitcoingui.cpp" line="475"/> - <source>Downloaded %1 of %2 blocks of transaction history.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoingui.cpp" line="487"/> + <location filename="../bitcoingui.cpp" line="524"/> <source>Downloaded %1 blocks of transaction history.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="502"/> + <location filename="../bitcoingui.cpp" line="539"/> <source>%n second(s) ago</source> - <translation type="unfinished"> + <translation> <numerusform>%n second ago</numerusform> <numerusform>%n seconds ago</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="506"/> + <location filename="../bitcoingui.cpp" line="543"/> <source>%n minute(s) ago</source> - <translation type="unfinished"> + <translation> <numerusform>%n minute ago</numerusform> <numerusform>%n minutes ago</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="510"/> + <location filename="../bitcoingui.cpp" line="547"/> <source>%n hour(s) ago</source> - <translation type="unfinished"> + <translation> <numerusform>%n hour ago</numerusform> <numerusform>%n hours ago</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="514"/> + <location filename="../bitcoingui.cpp" line="551"/> <source>%n day(s) ago</source> - <translation type="unfinished"> + <translation> <numerusform>%n day ago</numerusform> <numerusform>%n days ago</numerusform> </translation> </message> <message> - <location filename="../bitcoingui.cpp" line="520"/> + <location filename="../bitcoingui.cpp" line="557"/> <source>Up to date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="525"/> + <location filename="../bitcoingui.cpp" line="562"/> <source>Catching up...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="533"/> + <location filename="../bitcoingui.cpp" line="570"/> <source>Last received block was generated %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="597"/> + <location filename="../bitcoingui.cpp" line="626"/> <source>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?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="602"/> + <location filename="../bitcoingui.cpp" line="631"/> <source>Sending...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="629"/> + <location filename="../bitcoingui.cpp" line="658"/> <source>Sent transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="630"/> + <location filename="../bitcoingui.cpp" line="659"/> <source>Incoming transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="631"/> + <location filename="../bitcoingui.cpp" line="660"/> <source>Date: %1 Amount: %2 Type: %3 @@ -583,32 +590,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="751"/> + <location filename="../bitcoingui.cpp" line="785"/> <source>Wallet is <b>encrypted</b> and currently <b>unlocked</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="759"/> + <location filename="../bitcoingui.cpp" line="793"/> <source>Wallet is <b>encrypted</b> and currently <b>locked</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="782"/> + <location filename="../bitcoingui.cpp" line="816"/> <source>Backup Wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="782"/> + <location filename="../bitcoingui.cpp" line="816"/> <source>Wallet Data (*.dat)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="785"/> + <location filename="../bitcoingui.cpp" line="819"/> <source>Backup Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="785"/> + <location filename="../bitcoingui.cpp" line="819"/> <source>There was an error trying to save the wallet data to the new location.</source> <translation type="unfinished"></translation> </message> @@ -616,17 +623,17 @@ <context> <name>DisplayOptionsPage</name> <message> - <location filename="../optionsdialog.cpp" line="270"/> + <location filename="../optionsdialog.cpp" line="268"/> <source>&Unit to show amounts in: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="274"/> + <location filename="../optionsdialog.cpp" line="272"/> <source>Choose the default subdivision unit to show in the interface, and when sending coins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="281"/> + <location filename="../optionsdialog.cpp" line="279"/> <source>Display addresses in transaction list</source> <translation type="unfinished"></translation> </message> @@ -722,67 +729,67 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="180"/> + <location filename="../optionsdialog.cpp" line="184"/> <source>Map port using &UPnP</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="181"/> - <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../optionsdialog.cpp" line="185"/> + <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../optionsdialog.cpp" line="179"/> <source>M&inimize on close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="186"/> + <location filename="../optionsdialog.cpp" line="180"/> <source>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.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="190"/> + <location filename="../optionsdialog.cpp" line="188"/> <source>&Connect through SOCKS4 proxy:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="191"/> + <location filename="../optionsdialog.cpp" line="189"/> <source>Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="196"/> + <location filename="../optionsdialog.cpp" line="194"/> <source>Proxy &IP: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="202"/> + <location filename="../optionsdialog.cpp" line="200"/> <source>IP address of the proxy (e.g. 127.0.0.1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="205"/> + <location filename="../optionsdialog.cpp" line="203"/> <source>&Port: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="211"/> + <location filename="../optionsdialog.cpp" line="209"/> <source>Port of the proxy (e.g. 1234)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="217"/> + <location filename="../optionsdialog.cpp" line="215"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="223"/> + <location filename="../optionsdialog.cpp" line="221"/> <source>Pay transaction &fee</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="226"/> + <location filename="../optionsdialog.cpp" line="224"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.</source> <translation type="unfinished"></translation> </message> @@ -801,7 +808,7 @@ </message> <message> <location filename="../forms/messagepage.ui" line="38"/> - <source>The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> + <source>The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> <translation type="unfinished"></translation> </message> <message> @@ -975,42 +982,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/qrcodedialog.ui" line="52"/> + <location filename="../forms/qrcodedialog.ui" line="55"/> <source>Request Payment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/qrcodedialog.ui" line="67"/> + <location filename="../forms/qrcodedialog.ui" line="70"/> <source>Amount:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/qrcodedialog.ui" line="102"/> + <location filename="../forms/qrcodedialog.ui" line="105"/> <source>BTC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/qrcodedialog.ui" line="118"/> + <location filename="../forms/qrcodedialog.ui" line="121"/> <source>Label:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/qrcodedialog.ui" line="141"/> + <location filename="../forms/qrcodedialog.ui" line="144"/> <source>Message:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/qrcodedialog.ui" line="183"/> + <location filename="../forms/qrcodedialog.ui" line="186"/> <source>&Save As...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qrcodedialog.cpp" line="101"/> + <location filename="../qrcodedialog.cpp" line="59"/> + <source>Resulting URI too long, try to reduce the text for label / message.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qrcodedialog.cpp" line="116"/> <source>Save Image...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qrcodedialog.cpp" line="101"/> + <location filename="../qrcodedialog.cpp" line="116"/> <source>PNG Images (*.png)</source> <translation type="unfinished"></translation> </message> @@ -1217,115 +1229,115 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="47"/> + <location filename="../transactiondesc.cpp" line="48"/> <source><b>Status:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="52"/> + <location filename="../transactiondesc.cpp" line="53"/> <source>, has not been successfully broadcast yet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="54"/> + <location filename="../transactiondesc.cpp" line="55"/> <source>, broadcast through %1 node</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="56"/> + <location filename="../transactiondesc.cpp" line="57"/> <source>, broadcast through %1 nodes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="60"/> + <location filename="../transactiondesc.cpp" line="61"/> <source><b>Date:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="67"/> + <location filename="../transactiondesc.cpp" line="68"/> <source><b>Source:</b> Generated<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="73"/> - <location filename="../transactiondesc.cpp" line="90"/> + <location filename="../transactiondesc.cpp" line="74"/> + <location filename="../transactiondesc.cpp" line="91"/> <source><b>From:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="90"/> + <location filename="../transactiondesc.cpp" line="91"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="91"/> - <location filename="../transactiondesc.cpp" line="114"/> - <location filename="../transactiondesc.cpp" line="173"/> + <location filename="../transactiondesc.cpp" line="92"/> + <location filename="../transactiondesc.cpp" line="115"/> + <location filename="../transactiondesc.cpp" line="174"/> <source><b>To:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="94"/> + <location filename="../transactiondesc.cpp" line="95"/> <source> (yours, label: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="96"/> + <location filename="../transactiondesc.cpp" line="97"/> <source> (yours)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="131"/> - <location filename="../transactiondesc.cpp" line="145"/> - <location filename="../transactiondesc.cpp" line="190"/> - <location filename="../transactiondesc.cpp" line="207"/> + <location filename="../transactiondesc.cpp" line="132"/> + <location filename="../transactiondesc.cpp" line="146"/> + <location filename="../transactiondesc.cpp" line="191"/> + <location filename="../transactiondesc.cpp" line="208"/> <source><b>Credit:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="133"/> + <location filename="../transactiondesc.cpp" line="134"/> <source>(%1 matures in %2 more blocks)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="137"/> + <location filename="../transactiondesc.cpp" line="138"/> <source>(not accepted)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="181"/> - <location filename="../transactiondesc.cpp" line="189"/> - <location filename="../transactiondesc.cpp" line="204"/> + <location filename="../transactiondesc.cpp" line="182"/> + <location filename="../transactiondesc.cpp" line="190"/> + <location filename="../transactiondesc.cpp" line="205"/> <source><b>Debit:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="195"/> + <location filename="../transactiondesc.cpp" line="196"/> <source><b>Transaction fee:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="211"/> + <location filename="../transactiondesc.cpp" line="212"/> <source><b>Net amount:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="217"/> + <location filename="../transactiondesc.cpp" line="218"/> <source>Message:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="219"/> + <location filename="../transactiondesc.cpp" line="220"/> <source>Comment:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="221"/> + <location filename="../transactiondesc.cpp" line="222"/> <source>Transaction ID:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="224"/> + <location filename="../transactiondesc.cpp" line="225"/> <source>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.</source> <translation type="unfinished"></translation> </message> @@ -1368,7 +1380,7 @@ <message numerus="yes"> <location filename="../transactiontablemodel.cpp" line="274"/> <source>Open for %n block(s)</source> - <translation type="unfinished"> + <translation> <numerusform>Open for %n block</numerusform> <numerusform>Open for %n blocks</numerusform> </translation> @@ -1394,75 +1406,75 @@ <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../transactiontablemodel.cpp" line="295"/> + <location filename="../transactiontablemodel.cpp" line="294"/> <source>Mined balance will be available in %n more blocks</source> - <translation type="unfinished"> + <translation> <numerusform>Mined balance will be available in %n more block</numerusform> <numerusform>Mined balance will be available in %n more blocks</numerusform> </translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="301"/> + <location filename="../transactiontablemodel.cpp" line="300"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="304"/> + <location filename="../transactiontablemodel.cpp" line="303"/> <source>Generated but not accepted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="347"/> + <location filename="../transactiontablemodel.cpp" line="346"/> <source>Received with</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="349"/> + <location filename="../transactiontablemodel.cpp" line="348"/> <source>Received from</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="352"/> + <location filename="../transactiontablemodel.cpp" line="351"/> <source>Sent to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="354"/> + <location filename="../transactiontablemodel.cpp" line="353"/> <source>Payment to yourself</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="356"/> + <location filename="../transactiontablemodel.cpp" line="355"/> <source>Mined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="394"/> + <location filename="../transactiontablemodel.cpp" line="393"/> <source>(n/a)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="593"/> + <location filename="../transactiontablemodel.cpp" line="592"/> <source>Transaction status. Hover over this field to show number of confirmations.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="595"/> + <location filename="../transactiontablemodel.cpp" line="594"/> <source>Date and time that the transaction was received.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="597"/> + <location filename="../transactiontablemodel.cpp" line="596"/> <source>Type of transaction.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="599"/> + <location filename="../transactiontablemodel.cpp" line="598"/> <source>Destination address of transaction.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="601"/> + <location filename="../transactiontablemodel.cpp" line="600"/> <source>Amount removed from or added to balance.</source> <translation type="unfinished"></translation> </message> @@ -1634,7 +1646,7 @@ <context> <name>WalletModel</name> <message> - <location filename="../walletmodel.cpp" line="145"/> + <location filename="../walletmodel.cpp" line="143"/> <source>Sending...</source> <translation type="unfinished"></translation> </message> @@ -1642,344 +1654,478 @@ <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="3"/> + <location filename="../bitcoinstrings.cpp" line="7"/> <source>Bitcoin version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="4"/> + <location filename="../bitcoinstrings.cpp" line="8"/> <source>Usage:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="5"/> + <location filename="../bitcoinstrings.cpp" line="9"/> <source>Send command to -server or bitcoind</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="6"/> + <location filename="../bitcoinstrings.cpp" line="10"/> <source>List commands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="7"/> + <location filename="../bitcoinstrings.cpp" line="11"/> <source>Get help for a command</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="8"/> + <location filename="../bitcoinstrings.cpp" line="12"/> <source>Options:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="9"/> - <source>Specify configuration file (default: bitcoin.conf)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="10"/> - <source>Specify pid file (default: bitcoind.pid)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="11"/> - <source>Generate coins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="12"/> - <source>Don't generate coins</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../bitcoinstrings.cpp" line="13"/> - <source>Start minimized</source> + <source>Specify configuration file (default: bitcoin.conf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="14"/> - <source>Specify data directory</source> + <source>Specify pid file (default: bitcoind.pid)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="15"/> - <source>Specify connection timeout (in milliseconds)</source> + <source>Generate coins</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="16"/> - <source>Connect through socks4 proxy</source> + <source>Don't generate coins</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="17"/> - <source>Allow DNS lookups for addnode and connect</source> + <source>Start minimized</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="18"/> - <source>Listen for connections on <port> (default: 8333 or testnet: 18333)</source> + <source>Show splash screen on startup (default: 1)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="19"/> - <source>Maintain at most <n> connections to peers (default: 125)</source> + <source>Specify data directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="20"/> - <source>Add a node to connect to</source> + <source>Set database cache size in megabytes (default: 25)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="21"/> - <source>Connect only to the specified node</source> + <source>Set database disk log size in megabytes (default: 100)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="22"/> - <source>Don't accept connections from outside</source> + <source>Specify connection timeout (in milliseconds)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="23"/> - <source>Don't bootstrap list of peers using DNS</source> + <source>Connect through socks4 proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="24"/> - <source>Threshold for disconnecting misbehaving peers (default: 100)</source> + <source>Allow DNS lookups for addnode and connect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="25"/> - <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> + <source>Listen for connections on <port> (default: 8333 or testnet: 18333)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="26"/> + <source>Maintain at most <n> connections to peers (default: 125)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="28"/> + <source>Connect only to the specified node</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="33"/> + <source>Threshold for disconnecting misbehaving peers (default: 100)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="34"/> + <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="37"/> <source>Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="29"/> + <location filename="../bitcoinstrings.cpp" line="38"/> <source>Maximum per-connection send buffer, <n>*1000 bytes (default: 10000)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="30"/> - <source>Don't attempt to use UPnP to map the listening port</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="31"/> - <source>Attempt to use UPnP to map the listening port</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="32"/> - <source>Fee per kB to add to transactions you send</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="33"/> + <location filename="../bitcoinstrings.cpp" line="42"/> <source>Accept command line and JSON-RPC commands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="34"/> + <location filename="../bitcoinstrings.cpp" line="43"/> <source>Run in the background as a daemon and accept commands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="35"/> + <location filename="../bitcoinstrings.cpp" line="44"/> <source>Use the test network</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="36"/> + <location filename="../bitcoinstrings.cpp" line="45"/> <source>Output extra debugging information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="37"/> + <location filename="../bitcoinstrings.cpp" line="46"/> <source>Prepend debug output with timestamp</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="38"/> + <location filename="../bitcoinstrings.cpp" line="47"/> <source>Send trace/debug info to console instead of debug.log file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="39"/> + <location filename="../bitcoinstrings.cpp" line="48"/> <source>Send trace/debug info to debugger</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="40"/> + <location filename="../bitcoinstrings.cpp" line="49"/> <source>Username for JSON-RPC connections</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="41"/> + <location filename="../bitcoinstrings.cpp" line="50"/> <source>Password for JSON-RPC connections</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="42"/> + <location filename="../bitcoinstrings.cpp" line="51"/> <source>Listen for JSON-RPC connections on <port> (default: 8332)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="43"/> + <location filename="../bitcoinstrings.cpp" line="52"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="44"/> + <location filename="../bitcoinstrings.cpp" line="53"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="45"/> + <location filename="../bitcoinstrings.cpp" line="54"/> + <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="57"/> + <source>Upgrade wallet to latest format</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="58"/> <source>Set key pool size to <n> (default: 100)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="46"/> + <location filename="../bitcoinstrings.cpp" line="59"/> <source>Rescan the block chain for missing wallet transactions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="47"/> + <location filename="../bitcoinstrings.cpp" line="60"/> + <source>How many blocks to check at startup (default: 2500, 0 = all)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="61"/> + <source>How thorough the block verification is (0-6, default: 1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="62"/> <source> SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="50"/> + <location filename="../bitcoinstrings.cpp" line="65"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="51"/> + <location filename="../bitcoinstrings.cpp" line="66"/> <source>Server certificate file (default: server.cert)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="52"/> + <location filename="../bitcoinstrings.cpp" line="67"/> <source>Server private key (default: server.pem)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="53"/> - <source>Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="56"/> - <source>This help message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="57"/> - <source>Cannot obtain a lock on data directory %s. Bitcoin is probably already running.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="60"/> - <source>Loading addresses...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="61"/> - <source>Error loading addr.dat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="63"/> - <source>Error loading blkindex.dat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="65"/> - <source>Error loading wallet.dat: Wallet corrupted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="66"/> - <source>Error loading wallet.dat: Wallet requires newer version of Bitcoin</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="67"/> - <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../bitcoinstrings.cpp" line="68"/> - <source>Error loading wallet.dat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="62"/> - <source>Loading block index...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="64"/> - <source>Loading wallet...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="69"/> - <source>Rescanning...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="70"/> - <source>Done loading</source> + <source>Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="71"/> - <source>Invalid -proxy address</source> + <source>This help message</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="72"/> - <source>Invalid amount for -paytxfee=<amount></source> + <source>Usage</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="73"/> - <source>Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction.</source> + <source>Cannot obtain a lock on data directory %s. Bitcoin is probably already running.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="76"/> - <source>Error: CreateThread(StartNode) failed</source> + <source>Bitcoin</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="77"/> - <source>Warning: Disk space is low </source> + <source>Loading addresses...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="78"/> - <source>Unable to bind to port %d on this computer. Bitcoin is probably already running.</source> + <source>Error loading addr.dat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="80"/> + <source>Error loading blkindex.dat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="82"/> + <source>Error loading wallet.dat: Wallet corrupted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="83"/> + <source>Error loading wallet.dat: Wallet requires newer version of Bitcoin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="84"/> + <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="85"/> + <source>Error loading wallet.dat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="117"/> + <source>Error: Wallet locked, unable to create transaction </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="118"/> + <source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="121"/> + <source>Error: Transaction creation failed </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="122"/> + <source>Sending...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="123"/> + <source>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.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="127"/> + <source>Invalid amount</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="128"/> + <source>Insufficient funds</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="79"/> + <source>Loading block index...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="27"/> + <source>Add a node to connect to and attempt to keep the connection open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="29"/> + <source>Find peers using internet relay chat (default: 0)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="30"/> + <source>Accept connections from outside (default: 1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="31"/> + <source>Set language, for example "de_DE" (default: system locale)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="32"/> + <source>Find peers using DNS lookup (default: 1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="39"/> + <source>Use Universal Plug and Play to map the listening port (default: 1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="40"/> + <source>Use Universal Plug and Play to map the listening port (default: 0)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="41"/> + <source>Fee per KB to add to transactions you send</source> <translation type="unfinished"></translation> </message> <message> <location filename="../bitcoinstrings.cpp" line="81"/> - <source>Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly.</source> + <source>Loading wallet...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="86"/> + <source>Cannot downgrade wallet</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="87"/> + <source>Cannot initialize keypool</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="88"/> + <source>Cannot write default address</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="89"/> + <source>Rescanning...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="90"/> + <source>Done loading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="91"/> + <source>Invalid -proxy address</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="92"/> + <source>Invalid amount for -paytxfee=<amount></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="93"/> + <source>Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="84"/> - <source>beta</source> + <location filename="../bitcoinstrings.cpp" line="96"/> + <source>Error: CreateThread(StartNode) failed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="6"/> + <source>Warning: Disk space is low </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="3"/> + <source>Unable to bind to port %d on this computer. Bitcoin is probably already running.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="97"/> + <source>To use the %s option</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="98"/> + <source>%s, you must set a rpcpassword in the configuration file: + %s +It is recommended you use the following random password: +rpcuser=bitcoinrpc +rpcpassword=%s +(you do not need to remember this password) +If the file does not exist, create it with owner-readable-only file permissions. +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="107"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="108"/> + <source>An error occured while setting up the RPC port %i for listening: %s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="109"/> + <source>You must set rpcpassword=<password> in the configuration file: +%s +If the file does not exist, create it with owner-readable-only file permissions.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="114"/> + <source>Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly.</source> <translation type="unfinished"></translation> </message> </context>
--- a/src/qt/qrcodedialog.cpp +++ b/src/qt/qrcodedialog.cpp @@ -41,6 +41,11 @@ ui->lblQRCode->setText(""); QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); + if (!code) + { + ui->lblQRCode->setText(tr("Error encoding URI into QR Code.")); + return; + } myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32); myImage.fill(0xffffff); unsigned char *p = code->data;
--- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -154,6 +154,8 @@ tr("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."), QMessageBox::Ok, QMessageBox::Ok); break; + case WalletModel::Aborted: // User aborted, nothing to do + break; case WalletModel::OK: accept(); break;
--- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -45,8 +45,9 @@ }; // Private implementation -struct TransactionTablePriv +class TransactionTablePriv { +public: TransactionTablePriv(CWallet *wallet, TransactionTableModel *parent): wallet(wallet), parent(parent)
--- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -35,8 +35,7 @@ DuplicateAddress, TransactionCreationFailed, // Error returned when wallet is still locked TransactionCommitFailed, - Aborted, - MiscError + Aborted }; enum EncryptionStatus
--- a/src/script.cpp +++ b/src/script.cpp @@ -1443,7 +1443,6 @@ if (typeRet == TX_MULTISIG) { nRequiredRet = vSolutions.front()[0]; - int n = vSolutions.back()[0]; for (int i = 1; i < vSolutions.size()-1; i++) { CBitcoinAddress address;
--- a/src/test/key_tests.cpp +++ b/src/test/key_tests.cpp @@ -14,6 +14,7 @@ static const string strSecret2 ("5KC4ejrDjv152FGwP386VD1i2NYc5KkfSMyv1nGy1VGDxGHqVY3"); static const string strSecret1C("Kwr371tjA9u2rFSMZjTNun2PXXP3WPZu2afRHTcta6KxEUdm1vEw"); static const string strSecret2C("L3Hq7a8FEQwJkW1M2GNKDW28546Vp5miewcCzSqUD9kCAXrJdS3g"); +static const string strAddress1("1HV9Lc3sNHZxwj4Zk6fB38tEmBryq2cBiF"); #ifdef KEY_TESTS_DUMPINFO void dumpKeyInfo(uint256 privkey) @@ -47,11 +48,12 @@ BOOST_AUTO_TEST_CASE(key_test1) { - CBitcoinSecret bsecret1, bsecret2, bsecret1C, bsecret2C; - bsecret1.SetString (strSecret1); - bsecret2.SetString (strSecret2); - bsecret1C.SetString(strSecret1C); - bsecret2C.SetString(strSecret2C); + CBitcoinSecret bsecret1, bsecret2, bsecret1C, bsecret2C, baddress1; + BOOST_CHECK( bsecret1.SetString (strSecret1)); + BOOST_CHECK( bsecret2.SetString (strSecret2)); + BOOST_CHECK( bsecret1C.SetString(strSecret1C)); + BOOST_CHECK( bsecret2C.SetString(strSecret2C)); + BOOST_CHECK(!baddress1.SetString(strAddress1)); bool fCompressed; CSecret secret1 = bsecret1.GetSecret (fCompressed);
--- a/src/uint256.h +++ b/src/uint256.h @@ -308,7 +308,7 @@ // hex string to uint static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; const char* pbegin = psz; - while (phexdigit[*psz] || *psz == '0') + while (phexdigit[(unsigned char)*psz] || *psz == '0') psz++; psz--; unsigned char* p1 = (unsigned char*)pn;
--- a/src/util.cpp +++ b/src/util.cpp @@ -6,6 +6,17 @@ #include "headers.h" #include "strlcpy.h" #include <boost/algorithm/string/join.hpp> + +// Work around clang compilation problem in Boost 1.46: +// /usr/include/boost/program_options/detail/config_file.hpp:163:17: error: call to function 'to_internal' that is neither visible in the template definition nor found by argument-dependent lookup +// See also: http://stackoverflow.com/questions/10020179/compilation-fail-in-boost-librairies-program-options +// http://clang.debian.net/status.php?version=3.0&key=CANNOT_FIND_FUNCTION +namespace boost { + namespace program_options { + std::string to_internal(const std::string&); + } +} + #include <boost/program_options/detail/config_file.hpp> #include <boost/program_options/parsers.hpp> #include <boost/filesystem.hpp> @@ -625,7 +636,7 @@ while (1) { - int dec = decode64_table[*p]; + int dec = decode64_table[(unsigned char)*p]; if (dec == -1) break; p++; switch (mode) @@ -665,12 +676,12 @@ break; case 2: // 4n+2 base64 characters processed: require '==' - if (left || p[0] != '=' || p[1] != '=' || decode64_table[p[2]] != -1) + if (left || p[0] != '=' || p[1] != '=' || decode64_table[(unsigned char)p[2]] != -1) *pfInvalid = true; break; case 3: // 4n+3 base64 characters processed: require '=' - if (left || p[0] != '=' || decode64_table[p[1]] != -1) + if (left || p[0] != '=' || decode64_table[(unsigned char)p[1]] != -1) *pfInvalid = true; break; }