diff options
Diffstat (limited to 'src/qt')
-rw-r--r-- | src/qt/addresstablemodel.cpp | 24 | ||||
-rw-r--r-- | src/qt/bitcoin.cpp | 50 | ||||
-rw-r--r-- | src/qt/bitcoingui.cpp | 2 | ||||
-rw-r--r-- | src/qt/bitcoinstrings.cpp | 97 | ||||
-rw-r--r-- | src/qt/clientmodel.cpp | 4 | ||||
-rw-r--r-- | src/qt/clientmodel.h | 2 | ||||
-rw-r--r-- | src/qt/forms/rpcconsole.ui | 27 | ||||
-rw-r--r-- | src/qt/forms/verifymessagedialog.ui | 77 | ||||
-rw-r--r-- | src/qt/guiutil.cpp | 35 | ||||
-rw-r--r-- | src/qt/guiutil.h | 18 | ||||
-rw-r--r-- | src/qt/locale/bitcoin_en.ts | 582 | ||||
-rw-r--r-- | src/qt/messagepage.cpp | 10 | ||||
-rw-r--r-- | src/qt/rpcconsole.cpp | 17 | ||||
-rw-r--r-- | src/qt/rpcconsole.h | 2 | ||||
-rw-r--r-- | src/qt/transactiondesc.cpp | 24 | ||||
-rw-r--r-- | src/qt/transactionrecord.cpp | 13 | ||||
-rw-r--r-- | src/qt/verifymessagedialog.cpp | 101 | ||||
-rw-r--r-- | src/qt/verifymessagedialog.h | 6 | ||||
-rw-r--r-- | src/qt/walletmodel.cpp | 14 |
19 files changed, 605 insertions, 500 deletions
diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index 75ea2c12c5..e65d3915ec 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -3,6 +3,7 @@ #include "walletmodel.h" #include "wallet.h" +#include "base58.h" #include <QFont> #include <QColor> @@ -58,11 +59,11 @@ public: cachedAddressTable.clear(); { LOCK(wallet->cs_wallet); - BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, std::string)& item, wallet->mapAddressBook) + BOOST_FOREACH(const PAIRTYPE(CTxDestination, std::string)& item, wallet->mapAddressBook) { const CBitcoinAddress& address = item.first; const std::string& strName = item.second; - bool fMine = wallet->HaveKey(address); + bool fMine = IsMine(*wallet, address.Get()); cachedAddressTable.append(AddressTableEntry(fMine ? AddressTableEntry::Receiving : AddressTableEntry::Sending, QString::fromStdString(strName), QString::fromStdString(address.ToString()))); @@ -220,7 +221,8 @@ bool AddressTableModel::setData(const QModelIndex & index, const QVariant & valu switch(index.column()) { case Label: - wallet->SetAddressBookName(rec->address.toStdString(), value.toString().toStdString()); + wallet->SetAddressBookName(CBitcoinAddress(rec->address.toStdString()).Get(), value.toString().toStdString()); + rec->label = value.toString(); break; case Address: // Refuse to set invalid address, set error status and return false @@ -235,9 +237,9 @@ bool AddressTableModel::setData(const QModelIndex & index, const QVariant & valu { LOCK(wallet->cs_wallet); // Remove old entry - wallet->DelAddressBookName(rec->address.toStdString()); + wallet->DelAddressBookName(CBitcoinAddress(rec->address.toStdString()).Get()); // Add new entry with new address - wallet->SetAddressBookName(value.toString().toStdString(), rec->label.toStdString()); + wallet->SetAddressBookName(CBitcoinAddress(value.toString().toStdString()).Get(), rec->label.toStdString()); } } break; @@ -314,7 +316,7 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con // Check for duplicate addresses { LOCK(wallet->cs_wallet); - if(wallet->mapAddressBook.count(strAddress)) + if(wallet->mapAddressBook.count(CBitcoinAddress(strAddress).Get())) { editStatus = DUPLICATE_ADDRESS; return QString(); @@ -331,13 +333,13 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con editStatus = WALLET_UNLOCK_FAILURE; return QString(); } - std::vector<unsigned char> newKey; + CPubKey newKey; if(!wallet->GetKeyFromPool(newKey, true)) { editStatus = KEY_GENERATION_FAILURE; return QString(); } - strAddress = CBitcoinAddress(newKey).ToString(); + strAddress = CBitcoinAddress(newKey.GetID()).ToString(); } else { @@ -346,7 +348,7 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con // Add entry { LOCK(wallet->cs_wallet); - wallet->SetAddressBookName(strAddress, strLabel); + wallet->SetAddressBookName(CBitcoinAddress(strAddress).Get(), strLabel); } return QString::fromStdString(strAddress); } @@ -363,7 +365,7 @@ bool AddressTableModel::removeRows(int row, int count, const QModelIndex & paren } { LOCK(wallet->cs_wallet); - wallet->DelAddressBookName(rec->address.toStdString()); + wallet->DelAddressBookName(CBitcoinAddress(rec->address.toStdString()).Get()); } return true; } @@ -375,7 +377,7 @@ QString AddressTableModel::labelForAddress(const QString &address) const { LOCK(wallet->cs_wallet); CBitcoinAddress address_parsed(address.toStdString()); - std::map<CBitcoinAddress, std::string>::iterator mi = wallet->mapAddressBook.find(address_parsed); + std::map<CTxDestination, std::string>::iterator mi = wallet->mapAddressBook.find(address_parsed.Get()); if (mi != wallet->mapAddressBook.end()) { return QString::fromStdString(mi->second); diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index bdc6ea6ffd..2a2d200394 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -113,54 +113,6 @@ static void handleRunawayException(std::exception *e) exit(1); } -/** Help message for Bitcoin-Qt, shown with --help. */ -class HelpMessageBox: public QMessageBox -{ - Q_OBJECT -public: - HelpMessageBox(QWidget *parent = 0); - - void exec(); -private: - QString header; - QString coreOptions; - QString uiOptions; -}; - -HelpMessageBox::HelpMessageBox(QWidget *parent): - QMessageBox(parent) -{ - header = tr("Bitcoin-Qt") + " " + tr("version") + " " + - QString::fromStdString(FormatFullVersion()) + "\n\n" + - tr("Usage:") + "\n" + - " bitcoin-qt [" + tr("options") + "] " + "\n"; - coreOptions = QString::fromStdString(HelpMessage()); - uiOptions = tr("UI options") + ":\n" + - " -lang=<lang> " + tr("Set language, for example \"de_DE\" (default: system locale)") + "\n" + - " -min " + tr("Start minimized") + "\n" + - " -splash " + tr("Show splash screen on startup (default: 1)") + "\n"; - - setWindowTitle(tr("Bitcoin-Qt")); - setTextFormat(Qt::PlainText); - // setMinimumWidth is ignored for QMessageBox so put in nonbreaking spaces to make it wider. - QChar em_space(0x2003); - setText(header + QString(em_space).repeated(40)); - setDetailedText(coreOptions + "\n" + uiOptions); -} -#include "bitcoin.moc" - -void HelpMessageBox::exec() -{ -#if defined(WIN32) - // On windows, show a message box, as there is no stderr in windowed applications - QMessageBox::exec(); -#else - // On other operating systems, the expected action is to print the message to the console. - QString strUsage = header + "\n" + coreOptions + "\n" + uiOptions; - fprintf(stderr, "%s", strUsage.toStdString().c_str()); -#endif -} - #ifndef BITCOIN_QT_TEST int main(int argc, char *argv[]) { @@ -259,7 +211,7 @@ int main(int argc, char *argv[]) // but before showing splash screen. if (mapArgs.count("-?") || mapArgs.count("--help")) { - HelpMessageBox help; + GUIUtil::HelpMessageBox help; help.exec(); return 1; } diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index a4bb63886b..546a39f43d 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -849,7 +849,7 @@ void BitcoinGUI::changePassphrase() void BitcoinGUI::verifyMessage() { - VerifyMessageDialog *dlg = new VerifyMessageDialog(walletModel->getAddressTableModel(), this); + VerifyMessageDialog *dlg = new VerifyMessageDialog(this); dlg->setAttribute(Qt::WA_DeleteOnClose); dlg->show(); } diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index ad17475816..d71b5e1e25 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -5,10 +5,41 @@ #else #define UNUSED #endif -static const char UNUSED *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "" -"Unable to bind to %s on this computer. Bitcoin is probably already running."), +static const char UNUSED *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "To use the %s option"), +QT_TRANSLATE_NOOP("bitcoin-core", "" +"%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", "" +"Unable to bind to %s on this computer. Bitcoin is probably already running."), QT_TRANSLATE_NOOP("bitcoin-core", "Unable to bind to %s on this computer (bind returned error %d, %s)"), -QT_TRANSLATE_NOOP("bitcoin-core", "Warning: Disk space is low "), +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"), QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), QT_TRANSLATE_NOOP("bitcoin-core", "Usage:"), QT_TRANSLATE_NOOP("bitcoin-core", "Send command to -server or bitcoind"), @@ -83,11 +114,20 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Server private key (default: server.pem)"), QT_TRANSLATE_NOOP("bitcoin-core", "" "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:" "@STRENGTH)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -paytxfee=<amount>: '%s'"), +QT_TRANSLATE_NOOP("bitcoin-core", "" +"Warning: -paytxfee is set very high. This is the transaction fee you will " +"pay if you send a transaction."), QT_TRANSLATE_NOOP("bitcoin-core", "" "Cannot obtain a lock on data directory %s. Bitcoin is probably already " "running."), -QT_TRANSLATE_NOOP("bitcoin-core", "Loading addresses..."), -QT_TRANSLATE_NOOP("bitcoin-core", "Error loading addr.dat"), +QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -proxy address: '%s'"), +QT_TRANSLATE_NOOP("bitcoin-core", "Unknown network specified in -noproxy: '%s'"), +QT_TRANSLATE_NOOP("bitcoin-core", "Unknown -socks proxy version requested: %i"), +QT_TRANSLATE_NOOP("bitcoin-core", "Unknown network specified in -onlynet: '%s'"), +QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -bind address: '%s'"), +QT_TRANSLATE_NOOP("bitcoin-core", "Not listening on any port"), +QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -externalip address: '%s'"), QT_TRANSLATE_NOOP("bitcoin-core", "Loading block index..."), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading blkindex.dat"), QT_TRANSLATE_NOOP("bitcoin-core", "Loading wallet..."), @@ -99,49 +139,8 @@ 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: '%s'"), -QT_TRANSLATE_NOOP("bitcoin-core", "Unknown network specified in -noproxy: '%s'"), -QT_TRANSLATE_NOOP("bitcoin-core", "Unknown network specified in -onlynet: '%s'"), -QT_TRANSLATE_NOOP("bitcoin-core", "Unknown -socks proxy version requested: %i"), -QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -bind address: '%s'"), -QT_TRANSLATE_NOOP("bitcoin-core", "Not listening on any port"), -QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -externalip address: '%s'"), -QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -paytxfee=<amount>: '%s'"), -QT_TRANSLATE_NOOP("bitcoin-core", "" -"Warning: -paytxfee is set very high. This is the transaction fee you will " -"pay if you send a transaction."), +QT_TRANSLATE_NOOP("bitcoin-core", "Loading addresses..."), QT_TRANSLATE_NOOP("bitcoin-core", "Error: could not start node"), -QT_TRANSLATE_NOOP("bitcoin-core", "To use the %s option"), -QT_TRANSLATE_NOOP("bitcoin-core", "" -"%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", "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"), +QT_TRANSLATE_NOOP("bitcoin-core", "Done loading"), +QT_TRANSLATE_NOOP("bitcoin-core", "Warning: Disk space is low"), };
\ No newline at end of file diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index 64fd2a9450..cabbd5d240 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -130,9 +130,9 @@ QString ClientModel::clientName() const return QString::fromStdString(CLIENT_NAME); } -QDateTime ClientModel::formatClientStartupTime() const +QString ClientModel::formatClientStartupTime() const { - return QDateTime::fromTime_t(nClientStartupTime); + return QDateTime::fromTime_t(nClientStartupTime).toString(); } // Handlers for core signals diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index 0349c389c5..70d816ba9d 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -41,7 +41,7 @@ public: QString formatFullVersion() const; QString formatBuildDate() const; QString clientName() const; - QDateTime formatClientStartupTime() const; + QString formatClientStartupTime() const; private: OptionsModel *optionsModel; diff --git a/src/qt/forms/rpcconsole.ui b/src/qt/forms/rpcconsole.ui index cded274792..678afad0d4 100644 --- a/src/qt/forms/rpcconsole.ui +++ b/src/qt/forms/rpcconsole.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>706</width> - <height>446</height> + <width>740</width> + <height>450</height> </rect> </property> <property name="windowTitle"> @@ -304,6 +304,29 @@ </widget> </item> <item row="15" column="0"> + <widget class="QLabel" name="labelCLOptions"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Command-line options</string> + </property> + </widget> + </item> + <item row="16" column="0"> + <widget class="QPushButton" name="showCLOptionsButton"> + <property name="toolTip"> + <string>Show the Bitcoin-Qt help message to get a list with possible Bitcoin command-line options.</string> + </property> + <property name="text"> + <string>&Show</string> + </property> + </widget> + </item> + <item row="17" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> diff --git a/src/qt/forms/verifymessagedialog.ui b/src/qt/forms/verifymessagedialog.ui index a7c99716e4..afe98b05ab 100644 --- a/src/qt/forms/verifymessagedialog.ui +++ b/src/qt/forms/verifymessagedialog.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>494</width> - <height>342</height> + <width>650</width> + <height>380</height> </rect> </property> <property name="windowTitle"> @@ -17,7 +17,7 @@ <item> <widget class="QLabel" name="label"> <property name="text"> - <string>Enter the message and signature below (be careful to correctly copy newlines, spaces, tabs and other invisible characters) to obtain the Bitcoin address used to sign the message.</string> + <string>Enter the signing address, signature and message below (be careful to correctly copy newlines, spaces, tabs and other invisible characters) to verify the message.</string> </property> <property name="alignment"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> @@ -28,38 +28,28 @@ </widget> </item> <item> - <widget class="QPlainTextEdit" name="edMessage"/> - </item> - <item> - <widget class="QLineEdit" name="lnSig"> + <widget class="QValidatedLineEdit" name="lnAddress"> <property name="text"> <string/> </property> </widget> </item> <item> - <widget class="QLineEdit" name="lnAddress"> + <widget class="QValidatedLineEdit" name="lnSig"> <property name="text"> <string/> </property> - <property name="readOnly"> - <bool>true</bool> - </property> </widget> </item> <item> - <widget class="QLabel" name="lblStatus"> - <property name="text"> - <string/> - </property> - </widget> + <widget class="QPlainTextEdit" name="edMessage"/> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QPushButton" name="verifyMessage"> <property name="toolTip"> - <string>Verify a message and obtain the Bitcoin address used to sign the message</string> + <string>Verify a message to ensure it was signed with the specified Bitcoin address</string> </property> <property name="text"> <string>&Verify Message</string> @@ -71,33 +61,51 @@ </widget> </item> <item> - <widget class="QPushButton" name="copyToClipboard"> - <property name="enabled"> - <bool>false</bool> - </property> + <widget class="QPushButton" name="clearButton"> <property name="toolTip"> - <string>Copy the currently selected address to the system clipboard</string> + <string>Reset all verify message fields</string> </property> <property name="text"> - <string>&Copy Address</string> + <string>Clear &All</string> </property> <property name="icon"> <iconset resource="../bitcoin.qrc"> - <normaloff>:/icons/editcopy</normaloff>:/icons/editcopy</iconset> + <normaloff>:/icons/remove</normaloff>:/icons/remove</iconset> </property> </widget> </item> <item> - <widget class="QPushButton" name="clearButton"> - <property name="toolTip"> - <string>Reset all verify message fields</string> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="lblStatus"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>48</height> + </size> + </property> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> </property> <property name="text"> - <string>Clear &All</string> + <string/> </property> - <property name="icon"> - <iconset resource="../bitcoin.qrc"> - <normaloff>:/icons/remove</normaloff>:/icons/remove</iconset> + <property name="wordWrap"> + <bool>true</bool> </property> </widget> </item> @@ -118,6 +126,13 @@ </item> </layout> </widget> + <customwidgets> + <customwidget> + <class>QValidatedLineEdit</class> + <extends>QLineEdit</extends> + <header>qvalidatedlineedit.h</header> + </customwidget> + </customwidgets> <resources> <include location="../bitcoin.qrc"/> </resources> diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 22c0bfeebe..3f2fc2ffa1 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -3,6 +3,7 @@ #include "walletmodel.h" #include "bitcoinunits.h" #include "util.h" +#include "init.h" #include <QString> #include <QDateTime> @@ -413,5 +414,39 @@ bool SetStartOnSystemStartup(bool fAutoStart) { return false; } #endif +HelpMessageBox::HelpMessageBox(QWidget *parent) : + QMessageBox(parent) +{ + header = tr("Bitcoin-Qt") + " " + tr("version") + " " + + QString::fromStdString(FormatFullVersion()) + "\n\n" + + tr("Usage:") + "\n" + + " bitcoin-qt [" + tr("command-line options") + "] " + "\n"; + + coreOptions = QString::fromStdString(HelpMessage()); + + uiOptions = tr("UI options") + ":\n" + + " -lang=<lang> " + tr("Set language, for example \"de_DE\" (default: system locale)") + "\n" + + " -min " + tr("Start minimized") + "\n" + + " -splash " + tr("Show splash screen on startup (default: 1)") + "\n"; + + setWindowTitle(tr("Bitcoin-Qt")); + setTextFormat(Qt::PlainText); + // setMinimumWidth is ignored for QMessageBox so put in nonbreaking spaces to make it wider. + setText(header + QString(QChar(0x2003)).repeated(50)); + setDetailedText(coreOptions + "\n" + uiOptions); +} + +void HelpMessageBox::exec() +{ +#if defined(WIN32) + // On windows, show a message box, as there is no stderr in windowed applications + QMessageBox::exec(); +#else + // On other operating systems, the expected action is to print the message to the console. + QString strUsage = header + "\n" + coreOptions + "\n" + uiOptions; + fprintf(stderr, "%s", strUsage.toStdString().c_str()); +#endif +} + } // namespace GUIUtil diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index c5f9aae511..ca06348519 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -3,6 +3,7 @@ #include <QString> #include <QObject> +#include <QMessageBox> QT_BEGIN_NAMESPACE class QFont; @@ -80,6 +81,7 @@ namespace GUIUtil class ToolTipToRichTextFilter : public QObject { Q_OBJECT + public: explicit ToolTipToRichTextFilter(int size_threshold, QObject *parent = 0); @@ -93,6 +95,22 @@ namespace GUIUtil bool GetStartOnSystemStartup(); bool SetStartOnSystemStartup(bool fAutoStart); + /** Help message for Bitcoin-Qt, shown with --help. */ + class HelpMessageBox : public QMessageBox + { + Q_OBJECT + + public: + HelpMessageBox(QWidget *parent = 0); + + void exec(); + + private: + QString header; + QString coreOptions; + QString uiOptions; + }; + } // namespace GUIUtil #endif // GUIUTIL_H diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 5628db1229..f59f0f8abf 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -99,22 +99,22 @@ This product includes software developed by the OpenSSL Project for use in the O <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="297"/> + <location filename="../addressbookpage.cpp" line="292"/> <source>Export Address Book Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="298"/> + <location filename="../addressbookpage.cpp" line="293"/> <source>Comma separated file (*.csv)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="311"/> + <location filename="../addressbookpage.cpp" line="306"/> <source>Error exporting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addressbookpage.cpp" line="311"/> + <location filename="../addressbookpage.cpp" line="306"/> <source>Could not write to file %1.</source> <translation type="unfinished"></translation> </message> @@ -122,17 +122,17 @@ This product includes software developed by the OpenSSL Project for use in the O <context> <name>AddressTableModel</name> <message> - <location filename="../addresstablemodel.cpp" line="78"/> + <location filename="../addresstablemodel.cpp" line="142"/> <source>Label</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addresstablemodel.cpp" line="78"/> + <location filename="../addresstablemodel.cpp" line="142"/> <source>Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../addresstablemodel.cpp" line="114"/> + <location filename="../addresstablemodel.cpp" line="178"/> <source>(no label)</source> <translation type="unfinished"></translation> </message> @@ -287,7 +287,7 @@ Are you sure you wish to encrypt your wallet?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="517"/> + <location filename="../bitcoingui.cpp" line="515"/> <source>Synchronizing with network...</source> <translation type="unfinished"></translation> </message> @@ -337,11 +337,6 @@ Are you sure you wish to encrypt your wallet?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="210"/> - <source>Send coins to a bitcoin address</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../bitcoingui.cpp" line="216"/> <source>Prove you control an address</source> <translation type="unfinished"></translation> @@ -382,11 +377,6 @@ Are you sure you wish to encrypt your wallet?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="246"/> - <source>Modify configuration options for bitcoin</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../bitcoingui.cpp" line="252"/> <source>&Encrypt Wallet...</source> <translation type="unfinished"></translation> @@ -402,7 +392,7 @@ Are you sure you wish to encrypt your wallet?</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="519"/> + <location filename="../bitcoingui.cpp" line="517"/> <source>~%n block(s) remaining</source> <translation> <numerusform>~%n block remaining</numerusform> @@ -410,7 +400,7 @@ Are you sure you wish to encrypt your wallet?</source> </translation> </message> <message> - <location filename="../bitcoingui.cpp" line="530"/> + <location filename="../bitcoingui.cpp" line="528"/> <source>Downloaded %1 of %2 blocks of transaction history (%3% done).</source> <translation type="unfinished"></translation> </message> @@ -420,6 +410,16 @@ Are you sure you wish to encrypt your wallet?</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../bitcoingui.cpp" line="210"/> + <source>Send coins to a Bitcoin address</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoingui.cpp" line="246"/> + <source>Modify configuration options for Bitcoin</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../bitcoingui.cpp" line="249"/> <source>Show or hide the Bitcoin window</source> <translation type="unfinished"></translation> @@ -501,13 +501,8 @@ Are you sure you wish to encrypt your wallet?</source> <source>Bitcoin client</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../bitcoingui.cpp" line="429"/> - <source>bitcoin-qt</source> - <translation type="unfinished"></translation> - </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="493"/> + <location filename="../bitcoingui.cpp" line="492"/> <source>%n active connection(s) to Bitcoin network</source> <translation> <numerusform>%n active connection to Bitcoin network</numerusform> @@ -515,12 +510,12 @@ Are you sure you wish to encrypt your wallet?</source> </translation> </message> <message> - <location filename="../bitcoingui.cpp" line="542"/> + <location filename="../bitcoingui.cpp" line="540"/> <source>Downloaded %1 blocks of transaction history.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="557"/> + <location filename="../bitcoingui.cpp" line="555"/> <source>%n second(s) ago</source> <translation> <numerusform>%n second ago</numerusform> @@ -528,7 +523,7 @@ Are you sure you wish to encrypt your wallet?</source> </translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="561"/> + <location filename="../bitcoingui.cpp" line="559"/> <source>%n minute(s) ago</source> <translation> <numerusform>%n minute ago</numerusform> @@ -536,7 +531,7 @@ Are you sure you wish to encrypt your wallet?</source> </translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="565"/> + <location filename="../bitcoingui.cpp" line="563"/> <source>%n hour(s) ago</source> <translation> <numerusform>%n hour ago</numerusform> @@ -544,7 +539,7 @@ Are you sure you wish to encrypt your wallet?</source> </translation> </message> <message numerus="yes"> - <location filename="../bitcoingui.cpp" line="569"/> + <location filename="../bitcoingui.cpp" line="567"/> <source>%n day(s) ago</source> <translation> <numerusform>%n day ago</numerusform> @@ -552,7 +547,7 @@ Are you sure you wish to encrypt your wallet?</source> </translation> </message> <message> - <location filename="../bitcoingui.cpp" line="575"/> + <location filename="../bitcoingui.cpp" line="573"/> <source>Up to date</source> <translation type="unfinished"></translation> </message> @@ -562,32 +557,32 @@ Are you sure you wish to encrypt your wallet?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="588"/> + <location filename="../bitcoingui.cpp" line="590"/> <source>Last received block was generated %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="647"/> + <location filename="../bitcoingui.cpp" line="649"/> <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="652"/> + <location filename="../bitcoingui.cpp" line="654"/> <source>Confirm transaction fee</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="679"/> + <location filename="../bitcoingui.cpp" line="681"/> <source>Sent transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="680"/> + <location filename="../bitcoingui.cpp" line="682"/> <source>Incoming transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="681"/> + <location filename="../bitcoingui.cpp" line="683"/> <source>Date: %1 Amount: %2 Type: %3 @@ -596,51 +591,54 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="802"/> + <location filename="../bitcoingui.cpp" line="804"/> <source>Wallet is <b>encrypted</b> and currently <b>unlocked</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="810"/> + <location filename="../bitcoingui.cpp" line="812"/> <source>Wallet is <b>encrypted</b> and currently <b>locked</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="833"/> + <location filename="../bitcoingui.cpp" line="835"/> <source>Backup Wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="833"/> + <location filename="../bitcoingui.cpp" line="835"/> <source>Wallet Data (*.dat)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="836"/> + <location filename="../bitcoingui.cpp" line="838"/> <source>Backup Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoingui.cpp" line="836"/> + <location filename="../bitcoingui.cpp" line="838"/> <source>There was an error trying to save the wallet data to the new location.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="128"/> + <location filename="../bitcoin.cpp" line="112"/> <source>A fatal error occured. Bitcoin can no longer continue safely and will quit.</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>DisplayOptionsPage</name> + <name>ClientModel</name> <message> - <location filename="../optionsdialog.cpp" line="246"/> - <source>Display</source> + <location filename="../clientmodel.cpp" line="84"/> + <source>Network Alert</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>DisplayOptionsPage</name> <message> - <location filename="../optionsdialog.cpp" line="252"/> - <source>User Interface &Language: </source> + <location filename="../optionsdialog.cpp" line="246"/> + <source>Display</source> <translation type="unfinished"></translation> </message> <message> @@ -654,8 +652,13 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> + <location filename="../optionsdialog.cpp" line="252"/> + <source>User Interface &Language:</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../optionsdialog.cpp" line="273"/> - <source>&Unit to show amounts in: </source> + <source>&Unit to show amounts in:</source> <translation type="unfinished"></translation> </message> <message> @@ -738,7 +741,7 @@ Address: %4 </message> <message> <location filename="../editaddressdialog.cpp" line="96"/> - <source>The entered address "%1" is not a valid bitcoin address.</source> + <source>The entered address "%1" is not a valid Bitcoin address.</source> <translation type="unfinished"></translation> </message> <message> @@ -755,38 +758,43 @@ Address: %4 <context> <name>HelpMessageBox</name> <message> - <location filename="../bitcoin.cpp" line="149"/> - <location filename="../bitcoin.cpp" line="159"/> + <location filename="../bitcoin.cpp" line="133"/> + <location filename="../bitcoin.cpp" line="143"/> <source>Bitcoin-Qt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="149"/> + <location filename="../bitcoin.cpp" line="133"/> <source>version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="151"/> + <location filename="../bitcoin.cpp" line="135"/> <source>Usage:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="154"/> + <location filename="../bitcoin.cpp" line="136"/> + <source>options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoin.cpp" line="138"/> <source>UI options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="155"/> + <location filename="../bitcoin.cpp" line="139"/> <source>Set language, for example "de_DE" (default: system locale)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="156"/> + <location filename="../bitcoin.cpp" line="140"/> <source>Start minimized</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="157"/> + <location filename="../bitcoin.cpp" line="141"/> <source>Show splash screen on startup (default: 1)</source> <translation type="unfinished"></translation> </message> @@ -833,7 +841,7 @@ Address: %4 <name>MessagePage</name> <message> <location filename="../forms/messagepage.ui" line="14"/> - <source>Sign Message Dialog</source> + <source>Sign Message</source> <translation type="unfinished"></translation> </message> <message> @@ -892,7 +900,7 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location filename="../messagepage.cpp" line="30"/> + <location filename="../messagepage.cpp" line="31"/> <source>Click "Sign Message" to get signature</source> <translation type="unfinished"></translation> </message> @@ -907,29 +915,35 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location filename="../messagepage.cpp" line="29"/> + <location filename="../messagepage.cpp" line="30"/> <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../messagepage.cpp" line="82"/> - <location filename="../messagepage.cpp" line="97"/> - <location filename="../messagepage.cpp" line="109"/> + <location filename="../messagepage.cpp" line="83"/> + <location filename="../messagepage.cpp" line="90"/> + <location filename="../messagepage.cpp" line="105"/> + <location filename="../messagepage.cpp" line="117"/> <source>Error signing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../messagepage.cpp" line="82"/> + <location filename="../messagepage.cpp" line="83"/> <source>%1 is not a valid address.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../messagepage.cpp" line="97"/> + <location filename="../messagepage.cpp" line="90"/> + <source>%1 does not refer to a key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../messagepage.cpp" line="105"/> <source>Private key for %1 is not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../messagepage.cpp" line="109"/> + <location filename="../messagepage.cpp" line="117"/> <source>Sign failed</source> <translation type="unfinished"></translation> </message> @@ -963,17 +977,17 @@ Address: %4 </message> <message> <location filename="../optionsdialog.cpp" line="357"/> - <source>Proxy &IP: </source> + <source>Proxy &IP:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="363"/> - <source>IP address of the proxy (e.g. 127.0.0.1)</source> + <location filename="../optionsdialog.cpp" line="366"/> + <source>&Port:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../optionsdialog.cpp" line="366"/> - <source>&Port: </source> + <location filename="../optionsdialog.cpp" line="363"/> + <source>IP address of the proxy (e.g. 127.0.0.1)</source> <translation type="unfinished"></translation> </message> <message> @@ -998,50 +1012,57 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="40"/> - <source>Balance:</source> + <location filename="../forms/overviewpage.ui" line="47"/> + <location filename="../forms/overviewpage.ui" line="204"/> + <source>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="69"/> - <source>Number of transactions:</source> + <location filename="../forms/overviewpage.ui" line="89"/> + <source>Balance:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="79"/> - <source>0</source> + <location filename="../forms/overviewpage.ui" line="147"/> + <source>Number of transactions:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="86"/> + <location filename="../forms/overviewpage.ui" line="118"/> <source>Unconfirmed:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="122"/> + <location filename="../forms/overviewpage.ui" line="40"/> <source>Wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="158"/> + <location filename="../forms/overviewpage.ui" line="197"/> <source><b>Recent transactions</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="56"/> + <location filename="../forms/overviewpage.ui" line="105"/> <source>Your current balance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="102"/> + <location filename="../forms/overviewpage.ui" line="134"/> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the current balance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/overviewpage.ui" line="76"/> + <location filename="../forms/overviewpage.ui" line="154"/> <source>Total number of transactions in wallet</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../overviewpage.cpp" line="110"/> + <location filename="../overviewpage.cpp" line="111"/> + <source>out of sync</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QRCodeDialog</name> @@ -1127,7 +1148,7 @@ Address: %4 <location filename="../forms/rpcconsole.ui" line="214"/> <location filename="../forms/rpcconsole.ui" line="237"/> <location filename="../forms/rpcconsole.ui" line="260"/> - <location filename="../rpcconsole.cpp" line="242"/> + <location filename="../rpcconsole.cpp" line="245"/> <source>N/A</source> <translation type="unfinished"></translation> </message> @@ -1217,8 +1238,18 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location filename="../rpcconsole.cpp" line="210"/> - <source>Welcome to the Bitcoin RPC console.<br>Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen.<br>Type <b>help</b> for an overview of available commands.</source> + <location filename="../rpcconsole.cpp" line="212"/> + <source>Welcome to the Bitcoin RPC console.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../rpcconsole.cpp" line="213"/> + <source>Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../rpcconsole.cpp" line="214"/> + <source>Type <b>help</b> for an overview of available commands.</source> <translation type="unfinished"></translation> </message> </context> @@ -1399,140 +1430,140 @@ Address: %4 <context> <name>TransactionDesc</name> <message> - <location filename="../transactiondesc.cpp" line="20"/> + <location filename="../transactiondesc.cpp" line="21"/> <source>Open for %1 blocks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="22"/> + <location filename="../transactiondesc.cpp" line="23"/> <source>Open until %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="28"/> + <location filename="../transactiondesc.cpp" line="29"/> <source>%1/offline?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="30"/> + <location filename="../transactiondesc.cpp" line="31"/> <source>%1/unconfirmed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="32"/> + <location filename="../transactiondesc.cpp" line="33"/> <source>%1 confirmations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="50"/> + <location filename="../transactiondesc.cpp" line="51"/> <source><b>Status:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="55"/> + <location filename="../transactiondesc.cpp" line="56"/> <source>, has not been successfully broadcast yet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="57"/> + <location filename="../transactiondesc.cpp" line="58"/> <source>, broadcast through %1 node</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="59"/> + <location filename="../transactiondesc.cpp" line="60"/> <source>, broadcast through %1 nodes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="63"/> + <location filename="../transactiondesc.cpp" line="64"/> <source><b>Date:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="70"/> + <location filename="../transactiondesc.cpp" line="71"/> <source><b>Source:</b> Generated<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="76"/> - <location filename="../transactiondesc.cpp" line="93"/> + <location filename="../transactiondesc.cpp" line="77"/> + <location filename="../transactiondesc.cpp" line="94"/> <source><b>From:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="93"/> + <location filename="../transactiondesc.cpp" line="94"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="94"/> - <location filename="../transactiondesc.cpp" line="117"/> - <location filename="../transactiondesc.cpp" line="176"/> + <location filename="../transactiondesc.cpp" line="95"/> + <location filename="../transactiondesc.cpp" line="118"/> + <location filename="../transactiondesc.cpp" line="178"/> <source><b>To:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="97"/> + <location filename="../transactiondesc.cpp" line="98"/> <source> (yours, label: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="99"/> + <location filename="../transactiondesc.cpp" line="100"/> <source> (yours)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="134"/> - <location filename="../transactiondesc.cpp" line="148"/> - <location filename="../transactiondesc.cpp" line="193"/> - <location filename="../transactiondesc.cpp" line="210"/> + <location filename="../transactiondesc.cpp" line="136"/> + <location filename="../transactiondesc.cpp" line="150"/> + <location filename="../transactiondesc.cpp" line="195"/> + <location filename="../transactiondesc.cpp" line="212"/> <source><b>Credit:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="136"/> + <location filename="../transactiondesc.cpp" line="138"/> <source>(%1 matures in %2 more blocks)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="140"/> + <location filename="../transactiondesc.cpp" line="142"/> <source>(not accepted)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="184"/> - <location filename="../transactiondesc.cpp" line="192"/> - <location filename="../transactiondesc.cpp" line="207"/> + <location filename="../transactiondesc.cpp" line="186"/> + <location filename="../transactiondesc.cpp" line="194"/> + <location filename="../transactiondesc.cpp" line="209"/> <source><b>Debit:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="198"/> + <location filename="../transactiondesc.cpp" line="200"/> <source><b>Transaction fee:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="214"/> + <location filename="../transactiondesc.cpp" line="216"/> <source><b>Net amount:</b> </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="220"/> + <location filename="../transactiondesc.cpp" line="222"/> <source>Message:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="222"/> + <location filename="../transactiondesc.cpp" line="224"/> <source>Comment:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="224"/> + <location filename="../transactiondesc.cpp" line="226"/> <source>Transaction ID:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiondesc.cpp" line="227"/> + <location filename="../transactiondesc.cpp" line="229"/> <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> @@ -1553,27 +1584,27 @@ Address: %4 <context> <name>TransactionTableModel</name> <message> - <location filename="../transactiontablemodel.cpp" line="214"/> + <location filename="../transactiontablemodel.cpp" line="226"/> <source>Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="214"/> + <location filename="../transactiontablemodel.cpp" line="226"/> <source>Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="214"/> + <location filename="../transactiontablemodel.cpp" line="226"/> <source>Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="214"/> + <location filename="../transactiontablemodel.cpp" line="226"/> <source>Amount</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../transactiontablemodel.cpp" line="275"/> + <location filename="../transactiontablemodel.cpp" line="281"/> <source>Open for %n block(s)</source> <translation> <numerusform>Open for %n block</numerusform> @@ -1581,27 +1612,27 @@ Address: %4 </translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="278"/> + <location filename="../transactiontablemodel.cpp" line="284"/> <source>Open until %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="281"/> + <location filename="../transactiontablemodel.cpp" line="287"/> <source>Offline (%1 confirmations)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="284"/> + <location filename="../transactiontablemodel.cpp" line="290"/> <source>Unconfirmed (%1 of %2 confirmations)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="287"/> + <location filename="../transactiontablemodel.cpp" line="293"/> <source>Confirmed (%1 confirmations)</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../transactiontablemodel.cpp" line="295"/> + <location filename="../transactiontablemodel.cpp" line="301"/> <source>Mined balance will be available in %n more blocks</source> <translation> <numerusform>Mined balance will be available in %n more block</numerusform> @@ -1609,67 +1640,67 @@ Address: %4 </translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="301"/> + <location filename="../transactiontablemodel.cpp" line="307"/> <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="310"/> <source>Generated but not accepted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="347"/> + <location filename="../transactiontablemodel.cpp" line="353"/> <source>Received with</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="349"/> + <location filename="../transactiontablemodel.cpp" line="355"/> <source>Received from</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="352"/> + <location filename="../transactiontablemodel.cpp" line="358"/> <source>Sent to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="354"/> + <location filename="../transactiontablemodel.cpp" line="360"/> <source>Payment to yourself</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="356"/> + <location filename="../transactiontablemodel.cpp" line="362"/> <source>Mined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="394"/> + <location filename="../transactiontablemodel.cpp" line="400"/> <source>(n/a)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="593"/> + <location filename="../transactiontablemodel.cpp" line="599"/> <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="601"/> <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="603"/> <source>Type of transaction.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="599"/> + <location filename="../transactiontablemodel.cpp" line="605"/> <source>Destination address of transaction.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../transactiontablemodel.cpp" line="601"/> + <location filename="../transactiontablemodel.cpp" line="607"/> <source>Amount removed from or added to balance.</source> <translation type="unfinished"></translation> </message> @@ -1881,38 +1912,38 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="27"/> + <location filename="../verifymessagedialog.cpp" line="28"/> <source>Enter Bitcoin signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="28"/> - <source>Click "Apply" to obtain address</source> + <location filename="../verifymessagedialog.cpp" line="29"/> + <source>Click "Verify Message" to obtain address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="54"/> - <location filename="../verifymessagedialog.cpp" line="61"/> + <location filename="../verifymessagedialog.cpp" line="55"/> + <location filename="../verifymessagedialog.cpp" line="62"/> <source>Invalid Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="54"/> + <location filename="../verifymessagedialog.cpp" line="55"/> <source>The signature could not be decoded. Please check the signature and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="61"/> + <location filename="../verifymessagedialog.cpp" line="62"/> <source>The signature did not match the message digest. Please check the signature and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="71"/> + <location filename="../verifymessagedialog.cpp" line="72"/> <source>Address not found in address book.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../verifymessagedialog.cpp" line="71"/> + <location filename="../verifymessagedialog.cpp" line="72"/> <source>Address found in address book: %1</source> <translation type="unfinished"></translation> </message> @@ -1920,7 +1951,7 @@ Address: %4 <context> <name>WalletModel</name> <message> - <location filename="../walletmodel.cpp" line="142"/> + <location filename="../walletmodel.cpp" line="158"/> <source>Sending...</source> <translation type="unfinished"></translation> </message> @@ -1956,513 +1987,508 @@ Address: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="12"/> + <location filename="../bitcoinstrings.cpp" line="43"/> <source>Bitcoin version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="13"/> + <location filename="../bitcoinstrings.cpp" line="44"/> <source>Usage:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="14"/> + <location filename="../bitcoinstrings.cpp" line="45"/> <source>Send command to -server or bitcoind</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="15"/> + <location filename="../bitcoinstrings.cpp" line="46"/> <source>List commands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="16"/> + <location filename="../bitcoinstrings.cpp" line="47"/> <source>Get help for a command</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="18"/> + <location filename="../bitcoinstrings.cpp" line="49"/> <source>Options:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="19"/> + <location filename="../bitcoinstrings.cpp" line="50"/> <source>Specify configuration file (default: bitcoin.conf)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="20"/> + <location filename="../bitcoinstrings.cpp" line="51"/> <source>Specify pid file (default: bitcoind.pid)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="21"/> + <location filename="../bitcoinstrings.cpp" line="52"/> <source>Generate coins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="22"/> + <location filename="../bitcoinstrings.cpp" line="53"/> <source>Don't generate coins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="23"/> + <location filename="../bitcoinstrings.cpp" line="54"/> <source>Specify data directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="24"/> + <location filename="../bitcoinstrings.cpp" line="55"/> <source>Set database cache size in megabytes (default: 25)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="25"/> + <location filename="../bitcoinstrings.cpp" line="56"/> <source>Set database disk log size in megabytes (default: 100)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="26"/> + <location filename="../bitcoinstrings.cpp" line="57"/> <source>Specify connection timeout (in milliseconds)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="32"/> + <location filename="../bitcoinstrings.cpp" line="63"/> <source>Listen for connections on <port> (default: 8333 or testnet: 18333)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="33"/> + <location filename="../bitcoinstrings.cpp" line="64"/> <source>Maintain at most <n> connections to peers (default: 125)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="35"/> + <location filename="../bitcoinstrings.cpp" line="66"/> <source>Connect only to the specified node</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="36"/> + <location filename="../bitcoinstrings.cpp" line="67"/> <source>Connect to a node to retrieve peer addresses, and disconnect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="37"/> + <location filename="../bitcoinstrings.cpp" line="68"/> <source>Specify your own public address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="38"/> + <location filename="../bitcoinstrings.cpp" line="69"/> <source>Only connect to nodes in network <net> (IPv4 or IPv6)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="39"/> + <location filename="../bitcoinstrings.cpp" line="70"/> <source>Try to discover public IP address (default: 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="42"/> + <location filename="../bitcoinstrings.cpp" line="73"/> <source>Bind to given address. Use [host]:port notation for IPv6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="44"/> + <location filename="../bitcoinstrings.cpp" line="75"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="45"/> + <location filename="../bitcoinstrings.cpp" line="76"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="48"/> + <location filename="../bitcoinstrings.cpp" line="79"/> <source>Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="49"/> + <location filename="../bitcoinstrings.cpp" line="80"/> <source>Maximum per-connection send buffer, <n>*1000 bytes (default: 10000)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="52"/> + <location filename="../bitcoinstrings.cpp" line="83"/> <source>Detach block and address databases. Increases shutdown time (default: 0)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="55"/> + <location filename="../bitcoinstrings.cpp" line="86"/> <source>Accept command line and JSON-RPC commands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="56"/> + <location filename="../bitcoinstrings.cpp" line="87"/> <source>Run in the background as a daemon and accept commands</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="57"/> + <location filename="../bitcoinstrings.cpp" line="88"/> <source>Use the test network</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="58"/> + <location filename="../bitcoinstrings.cpp" line="89"/> <source>Output extra debugging information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="59"/> + <location filename="../bitcoinstrings.cpp" line="90"/> <source>Prepend debug output with timestamp</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="60"/> + <location filename="../bitcoinstrings.cpp" line="91"/> <source>Send trace/debug info to console instead of debug.log file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="61"/> + <location filename="../bitcoinstrings.cpp" line="92"/> <source>Send trace/debug info to debugger</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="62"/> + <location filename="../bitcoinstrings.cpp" line="93"/> <source>Username for JSON-RPC connections</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="63"/> + <location filename="../bitcoinstrings.cpp" line="94"/> <source>Password for JSON-RPC connections</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="64"/> + <location filename="../bitcoinstrings.cpp" line="95"/> <source>Listen for JSON-RPC connections on <port> (default: 8332)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="65"/> + <location filename="../bitcoinstrings.cpp" line="96"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="66"/> + <location filename="../bitcoinstrings.cpp" line="97"/> <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="67"/> + <location filename="../bitcoinstrings.cpp" line="98"/> <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="70"/> + <location filename="../bitcoinstrings.cpp" line="101"/> <source>Upgrade wallet to latest format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="71"/> + <location filename="../bitcoinstrings.cpp" line="102"/> <source>Set key pool size to <n> (default: 100)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="72"/> + <location filename="../bitcoinstrings.cpp" line="103"/> <source>Rescan the block chain for missing wallet transactions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="73"/> + <location filename="../bitcoinstrings.cpp" line="104"/> <source>How many blocks to check at startup (default: 2500, 0 = all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="74"/> + <location filename="../bitcoinstrings.cpp" line="105"/> <source>How thorough the block verification is (0-6, default: 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="75"/> + <location filename="../bitcoinstrings.cpp" line="106"/> <source>Imports blocks from external blk000?.dat file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="77"/> + <location filename="../bitcoinstrings.cpp" line="108"/> <source> SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="80"/> + <location filename="../bitcoinstrings.cpp" line="111"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="81"/> + <location filename="../bitcoinstrings.cpp" line="112"/> <source>Server certificate file (default: server.cert)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="82"/> + <location filename="../bitcoinstrings.cpp" line="113"/> <source>Server private key (default: server.pem)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="83"/> + <location filename="../bitcoinstrings.cpp" line="114"/> <source>Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="76"/> - <source>This help message</source> + <location filename="../bitcoinstrings.cpp" line="145"/> + <source>Warning: Disk space is low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="86"/> - <source>Cannot obtain a lock on data directory %s. Bitcoin is probably already running.</source> + <location filename="../bitcoinstrings.cpp" line="107"/> + <source>This help message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="17"/> - <source>Bitcoin</source> + <location filename="../bitcoinstrings.cpp" line="121"/> + <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="8"/> - <source>Unable to bind to %s on this computer. Bitcoin is probably already running.</source> + <location filename="../bitcoinstrings.cpp" line="48"/> + <source>Bitcoin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="10"/> + <location filename="../bitcoinstrings.cpp" line="30"/> <source>Unable to bind to %s on this computer (bind returned error %d, %s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="27"/> + <location filename="../bitcoinstrings.cpp" line="58"/> <source>Connect through socks proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="28"/> + <location filename="../bitcoinstrings.cpp" line="59"/> <source>Select the version of socks proxy to use (4 or 5, 5 is default)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="29"/> + <location filename="../bitcoinstrings.cpp" line="60"/> <source>Do not use proxy for connections to network <net> (IPv4 or IPv6)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="30"/> + <location filename="../bitcoinstrings.cpp" line="61"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="31"/> + <location filename="../bitcoinstrings.cpp" line="62"/> <source>Pass DNS requests to (SOCKS5) proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="89"/> + <location filename="../bitcoinstrings.cpp" line="142"/> <source>Loading addresses...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="90"/> - <source>Error loading addr.dat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="92"/> + <location filename="../bitcoinstrings.cpp" line="132"/> <source>Error loading blkindex.dat</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="94"/> + <location filename="../bitcoinstrings.cpp" line="134"/> <source>Error loading wallet.dat: Wallet corrupted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="95"/> + <location filename="../bitcoinstrings.cpp" line="135"/> <source>Error loading wallet.dat: Wallet requires newer version of Bitcoin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="96"/> + <location filename="../bitcoinstrings.cpp" line="136"/> <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="97"/> + <location filename="../bitcoinstrings.cpp" line="137"/> <source>Error loading wallet.dat</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="103"/> + <location filename="../bitcoinstrings.cpp" line="124"/> <source>Invalid -proxy address: '%s'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="104"/> + <location filename="../bitcoinstrings.cpp" line="125"/> <source>Unknown network specified in -noproxy: '%s'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="105"/> + <location filename="../bitcoinstrings.cpp" line="127"/> <source>Unknown network specified in -onlynet: '%s'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="106"/> + <location filename="../bitcoinstrings.cpp" line="126"/> <source>Unknown -socks proxy version requested: %i</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="107"/> + <location filename="../bitcoinstrings.cpp" line="128"/> <source>Cannot resolve -bind address: '%s'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="108"/> + <location filename="../bitcoinstrings.cpp" line="129"/> <source>Not listening on any port</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="109"/> + <location filename="../bitcoinstrings.cpp" line="130"/> <source>Cannot resolve -externalip address: '%s'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="110"/> + <location filename="../bitcoinstrings.cpp" line="117"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="114"/> + <location filename="../bitcoinstrings.cpp" line="143"/> <source>Error: could not start node</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="135"/> + <location filename="../bitcoinstrings.cpp" line="31"/> <source>Error: Wallet locked, unable to create transaction </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="136"/> + <location filename="../bitcoinstrings.cpp" line="32"/> <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="139"/> + <location filename="../bitcoinstrings.cpp" line="35"/> <source>Error: Transaction creation failed </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="140"/> + <location filename="../bitcoinstrings.cpp" line="36"/> <source>Sending...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="141"/> + <location filename="../bitcoinstrings.cpp" line="37"/> <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="145"/> + <location filename="../bitcoinstrings.cpp" line="41"/> <source>Invalid amount</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="146"/> + <location filename="../bitcoinstrings.cpp" line="42"/> <source>Insufficient funds</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="91"/> + <location filename="../bitcoinstrings.cpp" line="131"/> <source>Loading block index...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="34"/> + <location filename="../bitcoinstrings.cpp" line="65"/> <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="40"/> + <location filename="../bitcoinstrings.cpp" line="28"/> + <source>Unable to bind to %s on this computer. Bitcoin is probably already running.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../bitcoinstrings.cpp" line="71"/> <source>Find peers using internet relay chat (default: 0)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="41"/> + <location filename="../bitcoinstrings.cpp" line="72"/> <source>Accept connections from outside (default: 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="43"/> + <location filename="../bitcoinstrings.cpp" line="74"/> <source>Find peers using DNS lookup (default: 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="50"/> + <location filename="../bitcoinstrings.cpp" line="81"/> <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="51"/> + <location filename="../bitcoinstrings.cpp" line="82"/> <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="54"/> + <location filename="../bitcoinstrings.cpp" line="85"/> <source>Fee per KB to add to transactions you send</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="93"/> + <location filename="../bitcoinstrings.cpp" line="118"/> + <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="133"/> <source>Loading wallet...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="98"/> + <location filename="../bitcoinstrings.cpp" line="138"/> <source>Cannot downgrade wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="99"/> + <location filename="../bitcoinstrings.cpp" line="139"/> <source>Cannot initialize keypool</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="100"/> + <location filename="../bitcoinstrings.cpp" line="140"/> <source>Cannot write default address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="101"/> + <location filename="../bitcoinstrings.cpp" line="141"/> <source>Rescanning...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="102"/> + <location filename="../bitcoinstrings.cpp" line="144"/> <source>Done loading</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="111"/> - <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="11"/> - <source>Warning: Disk space is low </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../bitcoinstrings.cpp" line="115"/> + <location filename="../bitcoinstrings.cpp" line="8"/> <source>To use the %s option</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="116"/> + <location filename="../bitcoinstrings.cpp" line="9"/> <source>%s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -2474,24 +2500,24 @@ If the file does not exist, create it with owner-readable-only file permissions. <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="125"/> + <location filename="../bitcoinstrings.cpp" line="18"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoinstrings.cpp" line="126"/> + <location filename="../bitcoinstrings.cpp" line="19"/> <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="127"/> + <location filename="../bitcoinstrings.cpp" line="20"/> <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="132"/> + <location filename="../bitcoinstrings.cpp" line="25"/> <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> diff --git a/src/qt/messagepage.cpp b/src/qt/messagepage.cpp index 1f895e28ff..ab3ea5a0c5 100644 --- a/src/qt/messagepage.cpp +++ b/src/qt/messagepage.cpp @@ -10,6 +10,7 @@ #include "main.h" #include "wallet.h" #include "init.h" +#include "base58.h" #include "messagepage.h" #include "ui_messagepage.h" @@ -83,6 +84,13 @@ void MessagePage::on_signMessage_clicked() QMessageBox::Abort, QMessageBox::Abort); return; } + CKeyID keyID; + if (!addr.GetKeyID(keyID)) + { + QMessageBox::critical(this, tr("Error signing"), tr("%1 does not refer to a key.").arg(address), + QMessageBox::Abort, QMessageBox::Abort); + return; + } WalletModel::UnlockContext ctx(model->requestUnlock()); if(!ctx.isValid()) @@ -92,7 +100,7 @@ void MessagePage::on_signMessage_clicked() } CKey key; - if (!pwalletMain->GetKey(addr, key)) + if (!pwalletMain->GetKey(keyID, key)) { QMessageBox::critical(this, tr("Error signing"), tr("Private key for %1 is not available.").arg(address), QMessageBox::Abort, QMessageBox::Abort); diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 7029ee33bc..f7b06b5b93 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -109,10 +109,13 @@ RPCConsole::RPCConsole(QWidget *parent) : { ui->setupUi(this); -#ifdef WIN32 +#ifndef Q_WS_MAC ui->openDebugLogfileButton->setIcon(QIcon(":/icons/export")); -#else - // Show Debug logfile label and Open button only for Windows + ui->showCLOptionsButton->setIcon(QIcon(":/icons/options")); +#endif + +#ifndef WIN32 + // Hide Debug logfile label and Open button for non Windows-OSes ui->labelDebugLogfile->setVisible(false); ui->openDebugLogfileButton->setVisible(false); #endif @@ -163,7 +166,7 @@ void RPCConsole::setClientModel(ClientModel *model) ui->clientVersion->setText(model->formatFullVersion()); ui->clientName->setText(model->clientName()); ui->buildDate->setText(model->formatBuildDate()); - ui->startupTime->setText(model->formatClientStartupTime().toString()); + ui->startupTime->setText(model->formatClientStartupTime()); setNumConnections(model->getNumConnections()); ui->isTestNet->setChecked(model->isTestNet()); @@ -326,3 +329,9 @@ void RPCConsole::scrollToEnd() QScrollBar *scrollbar = ui->messagesWidget->verticalScrollBar(); scrollbar->setValue(scrollbar->maximum()); } + +void RPCConsole::on_showCLOptionsButton_clicked() +{ + GUIUtil::HelpMessageBox help; + help.exec(); +} diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 4b71cdb988..3c38b4b8de 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -35,6 +35,8 @@ private slots: void on_tabWidget_currentChanged(int index); /** open the debug.log from the current datadir */ void on_openDebugLogfileButton_clicked(); + /** display messagebox with program parameters (same as bitcoin-qt --help) */ + void on_showCLOptionsButton_clicked(); public slots: void clear(); diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index 286cddf2a9..10bcef0d90 100644 --- a/src/qt/transactiondesc.cpp +++ b/src/qt/transactiondesc.cpp @@ -7,6 +7,7 @@ #include "wallet.h" #include "db.h" #include "ui_interface.h" +#include "base58.h" #include <QString> @@ -85,14 +86,14 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) { if (wallet->IsMine(txout)) { - CBitcoinAddress address; - if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address)) + CTxDestination address; + if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address)) { if (wallet->mapAddressBook.count(address)) { strHTML += tr("<b>From:</b> ") + tr("unknown") + "<br>"; strHTML += tr("<b>To:</b> "); - strHTML += GUIUtil::HtmlEscape(address.ToString()); + strHTML += GUIUtil::HtmlEscape(CBitcoinAddress(address).ToString()); if (!wallet->mapAddressBook[address].empty()) strHTML += tr(" (yours, label: ") + GUIUtil::HtmlEscape(wallet->mapAddressBook[address]) + ")"; else @@ -115,8 +116,9 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) // Online transaction strAddress = wtx.mapValue["to"]; strHTML += tr("<b>To:</b> "); - if (wallet->mapAddressBook.count(strAddress) && !wallet->mapAddressBook[strAddress].empty()) - strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[strAddress]) + " "; + CTxDestination dest = CBitcoinAddress(strAddress).Get(); + if (wallet->mapAddressBook.count(dest) && !wallet->mapAddressBook[dest].empty()) + strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[dest]) + " "; strHTML += GUIUtil::HtmlEscape(strAddress) + "<br>"; } @@ -170,13 +172,13 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) if (wtx.mapValue["to"].empty()) { // Offline transaction - CBitcoinAddress address; - if (ExtractAddress(txout.scriptPubKey, address)) + CTxDestination address; + if (ExtractDestination(txout.scriptPubKey, address)) { strHTML += tr("<b>To:</b> "); if (wallet->mapAddressBook.count(address) && !wallet->mapAddressBook[address].empty()) strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[address]) + " "; - strHTML += GUIUtil::HtmlEscape(address.ToString()); + strHTML += GUIUtil::HtmlEscape(CBitcoinAddress(address).ToString()); strHTML += "<br>"; } } @@ -260,12 +262,12 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) { strHTML += "<li>"; const CTxOut &vout = prev.vout[prevout.n]; - CBitcoinAddress address; - if (ExtractAddress(vout.scriptPubKey, address)) + CTxDestination address; + if (ExtractDestination(vout.scriptPubKey, address)) { if (wallet->mapAddressBook.count(address) && !wallet->mapAddressBook[address].empty()) strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[address]) + " "; - strHTML += QString::fromStdString(address.ToString()); + strHTML += QString::fromStdString(CBitcoinAddress(address).ToString()); } strHTML = strHTML + " Amount=" + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC,vout.nValue); strHTML = strHTML + " IsMine=" + (wallet->IsMine(vout) ? "true" : "false") + "</li>"; diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 017244ffd0..160973638d 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -1,6 +1,7 @@ #include "transactionrecord.h" #include "wallet.h" +#include "base58.h" /* Return positive answer if transaction should be shown in list. */ @@ -50,7 +51,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet * if(wallet->IsMine(txout)) { TransactionRecord sub(hash, nTime); - CBitcoinAddress address; + CTxDestination address; sub.idx = parts.size(); // sequence number sub.credit = txout.nValue; if (wtx.IsCoinBase()) @@ -58,11 +59,11 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet * // Generated sub.type = TransactionRecord::Generated; } - else if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address)) + else if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address)) { // Received by Bitcoin Address sub.type = TransactionRecord::RecvWithAddress; - sub.address = address.ToString(); + sub.address = CBitcoinAddress(address).ToString(); } else { @@ -113,12 +114,12 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet * continue; } - CBitcoinAddress address; - if (ExtractAddress(txout.scriptPubKey, address)) + CTxDestination address; + if (ExtractDestination(txout.scriptPubKey, address)) { // Sent to Bitcoin Address sub.type = TransactionRecord::SendToAddress; - sub.address = address.ToString(); + sub.address = CBitcoinAddress(address).ToString(); } else { diff --git a/src/qt/verifymessagedialog.cpp b/src/qt/verifymessagedialog.cpp index 0bac24820c..92f58328a4 100644 --- a/src/qt/verifymessagedialog.cpp +++ b/src/qt/verifymessagedialog.cpp @@ -4,34 +4,36 @@ #include <string> #include <vector> -#include <QDialogButtonBox> -#include <QAbstractButton> -#include <QClipboard> -#include <QMessageBox> +#include <QDialog> +#include <QLabel> +#include <QLineEdit> +#include <QPlainTextEdit> +#include <QPushButton> #include "main.h" #include "wallet.h" #include "walletmodel.h" -#include "addresstablemodel.h" #include "guiutil.h" +#include "base58.h" -VerifyMessageDialog::VerifyMessageDialog(AddressTableModel *addressModel, QWidget *parent) : +VerifyMessageDialog::VerifyMessageDialog(QWidget *parent) : QDialog(parent), - ui(new Ui::VerifyMessageDialog), - model(addressModel) + ui(new Ui::VerifyMessageDialog) { ui->setupUi(this); #if (QT_VERSION >= 0x040700) /* Do not move this to the XML file, Qt before 4.7 will choke on it */ + ui->lnAddress->setPlaceholderText(tr("Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)")); ui->lnSig->setPlaceholderText(tr("Enter Bitcoin signature")); - ui->lnAddress->setPlaceholderText(tr("Click \"Verify Message\" to obtain address")); #endif GUIUtil::setupAddressWidget(ui->lnAddress, this); ui->lnAddress->installEventFilter(this); - ui->edMessage->setFocus(); + ui->lnSig->setFont(GUIUtil::bitcoinAddressFont()); + + ui->lnAddress->setFocus(); } VerifyMessageDialog::~VerifyMessageDialog() @@ -39,54 +41,65 @@ VerifyMessageDialog::~VerifyMessageDialog() delete ui; } -bool VerifyMessageDialog::checkAddress() +void VerifyMessageDialog::on_verifyMessage_clicked() { - CDataStream ss(SER_GETHASH, 0); - ss << strMessageMagic; - ss << ui->edMessage->document()->toPlainText().toStdString(); - uint256 hash = Hash(ss.begin(), ss.end()); + CBitcoinAddress addr(ui->lnAddress->text().toStdString()); + if (!addr.IsValid()) + { + ui->lnAddress->setValid(false); + ui->lblStatus->setStyleSheet("QLabel { color: red; }"); + ui->lblStatus->setText(tr("\"%1\" is not a valid address.").arg(ui->lnAddress->text()) + QString(" ") + tr("Please check the address and try again.")); + return; + } + CKeyID keyID; + if (!addr.GetKeyID(keyID)) + { + ui->lnAddress->setValid(false); + ui->lblStatus->setStyleSheet("QLabel { color: red; }"); + ui->lblStatus->setText(tr("\"%1\" does not refer to a key.").arg(ui->lnAddress->text()) + QString(" ") + tr("Please check the address and try again.")); + return; + } - bool invalid = true; - std::vector<unsigned char> vchSig = DecodeBase64(ui->lnSig->text().toStdString().c_str(), &invalid); + bool fInvalid = false; + std::vector<unsigned char> vchSig = DecodeBase64(ui->lnSig->text().toStdString().c_str(), &fInvalid); - if(invalid) + if (fInvalid) { - QMessageBox::warning(this, tr("Invalid Signature"), tr("The signature could not be decoded. Please check the signature and try again.")); - return false; + ui->lnSig->setValid(false); + ui->lblStatus->setStyleSheet("QLabel { color: red; }"); + ui->lblStatus->setText(tr("The signature could not be decoded.") + QString(" ") + tr("Please check the signature and try again.")); + return; } + CDataStream ss(SER_GETHASH, 0); + ss << strMessageMagic; + ss << ui->edMessage->document()->toPlainText().toStdString(); + CKey key; - if(!key.SetCompactSignature(hash, vchSig)) + if (!key.SetCompactSignature(Hash(ss.begin(), ss.end()), vchSig)) { - QMessageBox::warning(this, tr("Invalid Signature"), tr("The signature did not match the message digest. Please check the signature and try again.")); - return false; + ui->lnSig->setValid(false); + ui->lblStatus->setStyleSheet("QLabel { color: red; }"); + ui->lblStatus->setText(tr("The signature did not match the message digest.")+ QString(" ") + tr("Please check the signature and try again.")); + return; } - CBitcoinAddress address(key.GetPubKey()); - QString qStringAddress = QString::fromStdString(address.ToString()); - ui->lnAddress->setText(qStringAddress); - ui->copyToClipboard->setEnabled(true); - - QString label = model->labelForAddress(qStringAddress); - ui->lblStatus->setText(label.isEmpty() ? tr("Address not found in address book.") : tr("Address found in address book: %1").arg(label)); - return true; -} - -void VerifyMessageDialog::on_verifyMessage_clicked() -{ - checkAddress(); -} + if (!(CBitcoinAddress(key.GetPubKey().GetID()) == addr)) + { + ui->lblStatus->setStyleSheet("QLabel { color: red; }"); + ui->lblStatus->setText(QString("<nobr>") + tr("Message verification failed.") + QString("</nobr>")); + return; + } -void VerifyMessageDialog::on_copyToClipboard_clicked() -{ - QApplication::clipboard()->setText(ui->lnAddress->text()); + ui->lblStatus->setStyleSheet("QLabel { color: green; }"); + ui->lblStatus->setText(QString("<nobr>") + tr("Message verified.") + QString("</nobr>")); } void VerifyMessageDialog::on_clearButton_clicked() { - ui->edMessage->clear(); - ui->lnSig->clear(); ui->lnAddress->clear(); + ui->lnSig->clear(); + ui->edMessage->clear(); ui->lblStatus->clear(); ui->edMessage->setFocus(); @@ -94,9 +107,11 @@ void VerifyMessageDialog::on_clearButton_clicked() bool VerifyMessageDialog::eventFilter(QObject *object, QEvent *event) { - if(object == ui->lnAddress && (event->type() == QEvent::MouseButtonPress || + if (object == ui->lnAddress && (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::FocusIn)) { + // set lnAddress to valid, as QEvent::FocusIn would not reach QValidatedLineEdit::focusInEvent + ui->lnAddress->setValid(true); ui->lnAddress->selectAll(); return true; } diff --git a/src/qt/verifymessagedialog.h b/src/qt/verifymessagedialog.h index 9a3fb43415..0bed442d4c 100644 --- a/src/qt/verifymessagedialog.h +++ b/src/qt/verifymessagedialog.h @@ -16,21 +16,17 @@ class VerifyMessageDialog : public QDialog Q_OBJECT public: - explicit VerifyMessageDialog(AddressTableModel *addressModel, QWidget *parent = 0); + explicit VerifyMessageDialog(QWidget *parent); ~VerifyMessageDialog(); protected: bool eventFilter(QObject *object, QEvent *event); private: - bool checkAddress(); - Ui::VerifyMessageDialog *ui; - AddressTableModel *model; private slots: void on_verifyMessage_clicked(); - void on_copyToClipboard_clicked(); void on_clearButton_clicked(); }; diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 807dfc6bf8..9245f774a4 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -7,6 +7,7 @@ #include "ui_interface.h" #include "wallet.h" #include "walletdb.h" // for BackupWallet +#include "base58.h" #include <QSet> @@ -146,7 +147,7 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QList<SendCoinsRecipie foreach(const SendCoinsRecipient &rcp, recipients) { CScript scriptPubKey; - scriptPubKey.SetBitcoinAddress(rcp.address.toStdString()); + scriptPubKey.SetDestination(CBitcoinAddress(rcp.address.toStdString()).Get()); vecSend.push_back(make_pair(scriptPubKey, rcp.amount)); } @@ -178,16 +179,17 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QList<SendCoinsRecipie foreach(const SendCoinsRecipient &rcp, recipients) { std::string strAddress = rcp.address.toStdString(); + CTxDestination dest = CBitcoinAddress(strAddress).Get(); std::string strLabel = rcp.label.toStdString(); { LOCK(wallet->cs_wallet); - std::map<CBitcoinAddress, std::string>::iterator mi = wallet->mapAddressBook.find(strAddress); + std::map<CTxDestination, std::string>::iterator mi = wallet->mapAddressBook.find(dest); // Check if we have a new address or an updated label if (mi == wallet->mapAddressBook.end() || mi->second != strLabel) { - wallet->SetAddressBookName(strAddress, strLabel); + wallet->SetAddressBookName(dest, strLabel); } } } @@ -277,11 +279,11 @@ static void NotifyKeyStoreStatusChanged(WalletModel *walletmodel, CCryptoKeyStor QMetaObject::invokeMethod(walletmodel, "updateStatus", Qt::QueuedConnection); } -static void NotifyAddressBookChanged(WalletModel *walletmodel, CWallet *wallet, const std::string &address, const std::string &label, bool isMine, ChangeType status) +static void NotifyAddressBookChanged(WalletModel *walletmodel, CWallet *wallet, const CTxDestination &address, const std::string &label, bool isMine, ChangeType status) { - OutputDebugStringF("NotifyAddressBookChanged %s %s isMine=%i status=%i\n", address.c_str(), label.c_str(), isMine, status); + OutputDebugStringF("NotifyAddressBookChanged %s %s isMine=%i status=%i\n", CBitcoinAddress(address).ToString().c_str(), label.c_str(), isMine, status); QMetaObject::invokeMethod(walletmodel, "updateAddressBook", Qt::QueuedConnection, - Q_ARG(QString, QString::fromStdString(address)), + Q_ARG(QString, QString::fromStdString(CBitcoinAddress(address).ToString())), Q_ARG(QString, QString::fromStdString(label)), Q_ARG(bool, isMine), Q_ARG(int, status)); |