From 55f69a47002a1fc5bdf4e0c345e61ec955fa664b Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 24 Mar 2012 16:52:43 +0100 Subject: move QT_PLUGINS stuff to qt main file, where it belongs --- src/qt/bitcoin.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/qt') diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 6ee7fed5c9..738464668f 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -21,6 +21,17 @@ #include +#if defined(BITCOIN_NEED_QT_PLUGINS) && !defined(_BITCOIN_QT_PLUGINS_INCLUDED) +#define _BITCOIN_QT_PLUGINS_INCLUDED +#define __INSURE__ +#include +Q_IMPORT_PLUGIN(qcncodecs) +Q_IMPORT_PLUGIN(qjpcodecs) +Q_IMPORT_PLUGIN(qtwcodecs) +Q_IMPORT_PLUGIN(qkrcodecs) +Q_IMPORT_PLUGIN(qtaccessiblewidgets) +#endif + // Need a global reference for the notifications to find the GUI BitcoinGUI *guiref; QSplashScreen *splashref; -- cgit v1.2.3 From 7e7bcce2d992c6fd53fdc4d9eb40f21c951d5347 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 24 Mar 2012 17:07:29 +0100 Subject: Code deduplication: make function in GUIUtil to get connection type to call object slot in GUI thread with invokeMethod. --- src/qt/bitcoin.cpp | 21 +++------------------ src/qt/guiutil.cpp | 12 ++++++++++++ src/qt/guiutil.h | 8 ++++++++ 3 files changed, 23 insertions(+), 18 deletions(-) (limited to 'src/qt') diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 738464668f..0f7c96e6a8 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -5,6 +5,7 @@ #include "clientmodel.h" #include "walletmodel.h" #include "optionsmodel.h" +#include "guiutil.h" #include "headers.h" #include "init.h" @@ -12,7 +13,6 @@ #include #include -#include #include #include #include @@ -70,15 +70,7 @@ bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, wxWindo return true; bool payFee = false; - // Call slot on GUI thread. - // If called from another thread, use a blocking QueuedConnection. - Qt::ConnectionType connectionType = Qt::DirectConnection; - if(QThread::currentThread() != QCoreApplication::instance()->thread()) - { - connectionType = Qt::BlockingQueuedConnection; - } - - QMetaObject::invokeMethod(guiref, "askFee", connectionType, + QMetaObject::invokeMethod(guiref, "askFee", GUIUtil::blockingGUIThreadConnection(), Q_ARG(qint64, nFeeRequired), Q_ARG(bool*, &payFee)); @@ -90,14 +82,7 @@ void ThreadSafeHandleURL(const std::string& strURL) if(!guiref) return; - // Call slot on GUI thread. - // If called from another thread, use a blocking QueuedConnection. - Qt::ConnectionType connectionType = Qt::DirectConnection; - if(QThread::currentThread() != QCoreApplication::instance()->thread()) - { - connectionType = Qt::BlockingQueuedConnection; - } - QMetaObject::invokeMethod(guiref, "handleURL", connectionType, + QMetaObject::invokeMethod(guiref, "handleURL", GUIUtil::blockingGUIThreadConnection(), Q_ARG(QString, QString::fromStdString(strURL))); } diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index ac69bd07e9..ad530a78e4 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -17,6 +17,7 @@ #include #include #include +#include QString GUIUtil::dateTimeStr(qint64 nTime) { @@ -184,3 +185,14 @@ QString GUIUtil::getSaveFileName(QWidget *parent, const QString &caption, return result; } +Qt::ConnectionType GUIUtil::blockingGUIThreadConnection() +{ + if(QThread::currentThread() != QCoreApplication::instance()->thread()) + { + return Qt::BlockingQueuedConnection; + } + else + { + return Qt::DirectConnection; + } +} diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 75ba53f206..06426d76bc 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -60,6 +60,14 @@ public: const QString &dir=QString(), const QString &filter=QString(), QString *selectedSuffixOut=0); + + /** Get connection type to call object slot in GUI thread with invokeMethod. The call will be blocking. + + @returns If called from the GUI thread, return a Qt::DirectConnection. + If called from another thread, return a Qt::BlockingQueuedConnection. + */ + static Qt::ConnectionType blockingGUIThreadConnection(); + }; #endif // GUIUTIL_H -- cgit v1.2.3 From 98e61758744ed34e8b7f59b37edb6d09b33d5517 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 24 Mar 2012 18:48:18 +0100 Subject: Update UI through async calls MainFrameRepaint and AddressBookRepaint instead of a timer. - Overall, this is better design - This fixes problems with the address book UI not updating when the address book is changed through RPC - Move Statusbar change detection responsibility to ClientModel --- src/qt/addressbookpage.cpp | 2 -- src/qt/addresstablemodel.cpp | 11 ++--------- src/qt/addresstablemodel.h | 6 ++---- src/qt/bitcoin.cpp | 22 ++++++++++++++++++---- src/qt/bitcoingui.cpp | 13 ------------- src/qt/bitcoingui.h | 2 -- src/qt/clientmodel.cpp | 18 ++++++++++-------- src/qt/clientmodel.h | 1 + src/qt/walletmodel.cpp | 15 +++++---------- src/qt/walletmodel.h | 3 +-- 10 files changed, 39 insertions(+), 54 deletions(-) (limited to 'src/qt') diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index cb185beae5..88212835de 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -94,8 +94,6 @@ void AddressBookPage::setModel(AddressTableModel *model) this->model = model; if(!model) return; - // Refresh list from core - model->updateList(); proxyModel = new QSortFilterProxyModel(this); proxyModel->setSourceModel(model); diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index 8fd6d52b7e..198a857b2d 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -231,7 +231,7 @@ QModelIndex AddressTableModel::index(int row, int column, const QModelIndex & pa } } -void AddressTableModel::updateList() +void AddressTableModel::update() { // Update address book model from Bitcoin core beginResetModel(); @@ -285,10 +285,9 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con { return QString(); } - // Add entry and update list + // Add entry CRITICAL_BLOCK(wallet->cs_wallet) wallet->SetAddressBookName(strAddress, strLabel); - updateList(); return QString::fromStdString(strAddress); } @@ -306,15 +305,9 @@ bool AddressTableModel::removeRows(int row, int count, const QModelIndex & paren { wallet->DelAddressBookName(rec->address.toStdString()); } - updateList(); return true; } -void AddressTableModel::update() -{ - -} - /* Look up label for address in address book, if not found return empty string. */ QString AddressTableModel::labelForAddress(const QString &address) const diff --git a/src/qt/addresstablemodel.h b/src/qt/addresstablemodel.h index 0743300137..7fd07cfb81 100644 --- a/src/qt/addresstablemodel.h +++ b/src/qt/addresstablemodel.h @@ -56,10 +56,6 @@ public: */ QString addRow(const QString &type, const QString &label, const QString &address); - /* Update address list from core. Invalidates any indices. - */ - void updateList(); - /* Look up label for address in address book, if not found return empty string. */ QString labelForAddress(const QString &address) const; @@ -82,6 +78,8 @@ signals: void defaultAddressChanged(const QString &address); public slots: + /* Update address list from core. Invalidates any indices. + */ void update(); }; diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 0f7c96e6a8..f330feedbc 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -33,8 +33,10 @@ Q_IMPORT_PLUGIN(qtaccessiblewidgets) #endif // Need a global reference for the notifications to find the GUI -BitcoinGUI *guiref; -QSplashScreen *splashref; +static BitcoinGUI *guiref; +static QSplashScreen *splashref; +static WalletModel *walletmodel; +static ClientModel *clientmodel; int MyMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) { @@ -98,8 +100,16 @@ void UIThreadCall(boost::function0 fn) void MainFrameRepaint() { - if(guiref) - QMetaObject::invokeMethod(guiref, "refreshStatusBar", Qt::QueuedConnection); + if(clientmodel) + QMetaObject::invokeMethod(clientmodel, "update", Qt::QueuedConnection); + if(walletmodel) + QMetaObject::invokeMethod(walletmodel, "update", Qt::QueuedConnection); +} + +void AddressBookRepaint() +{ + if(walletmodel) + QMetaObject::invokeMethod(walletmodel, "updateAddressList", Qt::QueuedConnection); } void InitMessage(const std::string &message) @@ -230,7 +240,9 @@ int main(int argc, char *argv[]) splash.finish(&window); ClientModel clientModel(&optionsModel); + clientmodel = &clientModel; WalletModel walletModel(pwalletMain, &optionsModel); + walletmodel = &walletModel; guiref = &window; window.setClientModel(&clientModel); @@ -270,6 +282,8 @@ int main(int argc, char *argv[]) app.exec(); guiref = 0; + clientmodel = 0; + walletmodel = 0; } Shutdown(NULL); } diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index cf4e43c5da..f2d1318517 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -538,19 +538,6 @@ void BitcoinGUI::setNumBlocks(int count) progressBar->setToolTip(tooltip); } -void BitcoinGUI::refreshStatusBar() -{ - /* Might display multiple times in the case of multiple alerts - static QString prevStatusBar; - QString newStatusBar = clientModel->getStatusBarWarnings(); - if (prevStatusBar != newStatusBar) - { - prevStatusBar = newStatusBar; - error(tr("Network Alert"), newStatusBar); - }*/ - setNumBlocks(clientModel->getNumBlocks()); -} - void BitcoinGUI::error(const QString &title, const QString &message) { // Report errors from network/worker thread diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index dbc32640b8..2130babcbf 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -113,8 +113,6 @@ public slots: @see WalletModel::EncryptionStatus */ void setEncryptionStatus(int status); - /** Set the status bar text if there are any warnings (removes sync progress bar if applicable) */ - void refreshStatusBar(); /** Notify the user of an error in the network or transaction handling code. */ void error(const QString &title, const QString &message); diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index 5a0b4aa83c..8163da0915 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -6,19 +6,12 @@ #include "headers.h" -#include #include ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) : QObject(parent), optionsModel(optionsModel), cachedNumConnections(0), cachedNumBlocks(0) { - // Until signal notifications is built into the bitcoin core, - // simply update everything after polling using a timer. - QTimer *timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(update())); - timer->start(MODEL_UPDATE_DELAY); - numBlocksAtStartup = -1; } @@ -47,14 +40,23 @@ void ClientModel::update() { int newNumConnections = getNumConnections(); int newNumBlocks = getNumBlocks(); + QString newStatusBar = getStatusBarWarnings(); if(cachedNumConnections != newNumConnections) emit numConnectionsChanged(newNumConnections); - if(cachedNumBlocks != newNumBlocks) + if(cachedNumBlocks != newNumBlocks || cachedStatusBar != newStatusBar) + { + // Simply emit a numBlocksChanged for now in case the status message changes, + // so that the view updates the status bar. + // TODO: It should send a notification. + // (However, this might generate looped notifications and needs to be thought through and tested carefully) + // error(tr("Network Alert"), newStatusBar); emit numBlocksChanged(newNumBlocks); + } cachedNumConnections = newNumConnections; cachedNumBlocks = newNumBlocks; + cachedStatusBar = newStatusBar; } bool ClientModel::isTestNet() const diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index 5a12c4fcd8..3dfbcecc02 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -43,6 +43,7 @@ private: int cachedNumConnections; int cachedNumBlocks; + QString cachedStatusBar; int numBlocksAtStartup; diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 8344a653d5..084185492a 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -7,7 +7,6 @@ #include "headers.h" #include "db.h" // for BackupWallet -#include #include WalletModel::WalletModel(CWallet *wallet, OptionsModel *optionsModel, QObject *parent) : @@ -16,12 +15,6 @@ WalletModel::WalletModel(CWallet *wallet, OptionsModel *optionsModel, QObject *p cachedBalance(0), cachedUnconfirmedBalance(0), cachedNumTransactions(0), cachedEncryptionStatus(Unencrypted) { - // Until signal notifications is built into the bitcoin core, - // simply update everything after polling using a timer. - QTimer *timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(update())); - timer->start(MODEL_UPDATE_DELAY); - addressTableModel = new AddressTableModel(wallet, this); transactionTableModel = new TransactionTableModel(wallet, this); } @@ -69,6 +62,11 @@ void WalletModel::update() addressTableModel->update(); } +void WalletModel::updateAddressList() +{ + addressTableModel->update(); +} + bool WalletModel::validateAddress(const QString &address) { CBitcoinAddress addressParsed(address.toStdString()); @@ -164,9 +162,6 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QListupdateList(); - return SendCoinsReturn(OK, 0, hex); } diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index e894842499..6a85abd6d5 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -138,9 +138,8 @@ signals: void error(const QString &title, const QString &message); public slots: - -private slots: void update(); + void updateAddressList(); }; -- cgit v1.2.3 From f0b5e9e116a1eb8b19b3676e7f8b125e912a78f3 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 24 Mar 2012 19:11:39 +0100 Subject: remove unused CalledSetStatusBar and UIThreadCall notifications --- src/qt/bitcoin.cpp | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'src/qt') diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index f330feedbc..e91855bec4 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -88,16 +88,6 @@ void ThreadSafeHandleURL(const std::string& strURL) Q_ARG(QString, QString::fromStdString(strURL))); } -void CalledSetStatusBar(const std::string& strText, int nField) -{ - // Only used for built-in mining, which is disabled, simple ignore -} - -void UIThreadCall(boost::function0 fn) -{ - // Only used for built-in mining, which is disabled, simple ignore -} - void MainFrameRepaint() { if(clientmodel) -- cgit v1.2.3 From 6cb6d623479c5dd42d91de7a4d391078d0800e54 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 24 Mar 2012 20:07:01 +0100 Subject: remove dependency on serialize.h and util.h for SecureString --- src/qt/walletmodel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/qt') diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index 6a85abd6d5..6c62b5b4af 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -3,7 +3,7 @@ #include -#include "util.h" +#include "allocators.h" /* for SecureString */ class OptionsModel; class AddressTableModel; -- cgit v1.2.3 From 1a3f0da9229a8e524d1010cdc8bd3b9da71fe529 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 25 Mar 2012 20:17:59 +0200 Subject: support RPC stop and encryptwallet with UI --- src/qt/bitcoin.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/qt') diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index e91855bec4..f566476e66 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -111,6 +111,11 @@ void InitMessage(const std::string &message) } } +void QueueShutdown() +{ + QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection); +} + /* Translate string to current locale using Qt. */ -- cgit v1.2.3 From 7cfbe1fee465e82ddbdc8ed17dfcce791bd765f5 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 25 Mar 2012 20:47:33 +0200 Subject: qtui.h/noui.h interface cleanup - rename wxMessageBox, remove redundant arguments to noui/qtui calls - also, add flag to force blocking, modal dialog box for disk space warning etc - clarify function naming - no more special MessageBox needed from AppInit2, as window object is created before calling AppInit2 --- src/qt/bitcoin.cpp | 31 ++++++++++++++----------------- src/qt/bitcoingui.cpp | 13 +++++++++---- src/qt/bitcoingui.h | 2 +- src/qt/clientmodel.h | 2 +- src/qt/walletmodel.cpp | 2 +- src/qt/walletmodel.h | 2 +- 6 files changed, 27 insertions(+), 25 deletions(-) (limited to 'src/qt') diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index f566476e66..394e4a7661 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -38,23 +38,18 @@ static QSplashScreen *splashref; static WalletModel *walletmodel; static ClientModel *clientmodel; -int MyMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) -{ - // Message from AppInit2(), always in main thread before main window is constructed - QMessageBox::critical(0, QString::fromStdString(caption), - QString::fromStdString(message), - QMessageBox::Ok, QMessageBox::Ok); - return 4; -} - -int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) +int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style) { // Message from network thread if(guiref) { - QMetaObject::invokeMethod(guiref, "error", Qt::QueuedConnection, + bool modal = (style & wxMODAL); + // in case of modal message, use blocking connection to wait for user to click OK + QMetaObject::invokeMethod(guiref, "error", + modal ? GUIUtil::blockingGUIThreadConnection() : Qt::QueuedConnection, Q_ARG(QString, QString::fromStdString(caption)), - Q_ARG(QString, QString::fromStdString(message))); + Q_ARG(QString, QString::fromStdString(message)), + Q_ARG(bool, modal)); } else { @@ -64,7 +59,7 @@ int ThreadSafeMessageBox(const std::string& message, const std::string& caption, return 4; } -bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, wxWindow* parent) +bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption) { if(!guiref) return false; @@ -222,15 +217,16 @@ int main(int argc, char *argv[]) try { + BitcoinGUI window; + guiref = &window; if(AppInit2(argc, argv)) { { - // Put this in a block, so that BitcoinGUI is cleaned up properly before - // calling Shutdown() in case of exceptions. + // Put this in a block, so that the Model objects are cleaned up before + // calling Shutdown(). optionsModel.Upgrade(); // Must be done after AppInit2 - BitcoinGUI window; if (splashref) splash.finish(&window); @@ -239,7 +235,6 @@ int main(int argc, char *argv[]) WalletModel walletModel(pwalletMain, &optionsModel); walletmodel = &walletModel; - guiref = &window; window.setClientModel(&clientModel); window.setWalletModel(&walletModel); @@ -276,6 +271,8 @@ int main(int argc, char *argv[]) #endif app.exec(); + window.setClientModel(0); + window.setWalletModel(0); guiref = 0; clientmodel = 0; walletmodel = 0; diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index f2d1318517..c65a26debb 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -336,7 +336,7 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel) connect(clientModel, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int))); // Report errors from network/worker thread - connect(clientModel, SIGNAL(error(QString,QString)), this, SLOT(error(QString,QString))); + connect(clientModel, SIGNAL(error(QString,QString, bool)), this, SLOT(error(QString,QString,bool))); } } @@ -346,7 +346,7 @@ void BitcoinGUI::setWalletModel(WalletModel *walletModel) if(walletModel) { // Report errors from wallet thread - connect(walletModel, SIGNAL(error(QString,QString)), this, SLOT(error(QString,QString))); + connect(walletModel, SIGNAL(error(QString,QString,bool)), this, SLOT(error(QString,QString,bool))); // Put transaction list in tabs transactionView->setModel(walletModel); @@ -538,10 +538,15 @@ void BitcoinGUI::setNumBlocks(int count) progressBar->setToolTip(tooltip); } -void BitcoinGUI::error(const QString &title, const QString &message) +void BitcoinGUI::error(const QString &title, const QString &message, bool modal) { // Report errors from network/worker thread - notificator->notify(Notificator::Critical, title, message); + if(modal) + { + QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok); + } else { + notificator->notify(Notificator::Critical, title, message); + } } void BitcoinGUI::changeEvent(QEvent *e) diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 2130babcbf..c684d7cc3a 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -115,7 +115,7 @@ public slots: void setEncryptionStatus(int status); /** Notify the user of an error in the network or transaction handling code. */ - void error(const QString &title, const QString &message); + void error(const QString &title, const QString &message, bool modal); /** Asks the user whether to pay the transaction fee or to cancel the transaction. It is currently not possible to pass a return value to another thread through BlockingQueuedConnection, so an indirected pointer is used. diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index 3dfbcecc02..6366b4d617 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -52,7 +52,7 @@ signals: void numBlocksChanged(int count); //! Asynchronous error notification - void error(const QString &title, const QString &message); + void error(const QString &title, const QString &message, bool modal); public slots: diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 084185492a..6cc023792d 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -140,7 +140,7 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QList Date: Wed, 4 Apr 2012 13:19:30 +0200 Subject: Move from noui.h / ui.h to one ui_interface.h with dummy implementation for the daemon. --- src/qt/transactiondesc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/qt') diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index 4cb2e68d0f..c32a006f71 100644 --- a/src/qt/transactiondesc.cpp +++ b/src/qt/transactiondesc.cpp @@ -4,7 +4,7 @@ #include "bitcoinunits.h" #include "headers.h" -#include "qtui.h" +#include "ui_interface.h" #include -- cgit v1.2.3