aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2012-03-31 15:08:25 +0200
committerLuke Dashjr <luke-jr+git@utopios.org>2012-04-04 13:57:32 -0400
commit91d7e847e051c9aa8be87a72d2763872b6b4f385 (patch)
treedaf2e86f6c36979413549a08e08af16fa07de570
parent724c65c1f8b34245eee6dbd761e1956a7b0d9c53 (diff)
downloadbitcoin-91d7e847e051c9aa8be87a72d2763872b6b4f385.tar.xz
Use a messagebox to display the error when -server is provided without providing a rpc password
(plus part of 7cfbe1fee465e82ddbdc8ed17dfcce791bd765f5)
-rw-r--r--src/bitcoinrpc.cpp5
-rw-r--r--src/noui.h2
-rw-r--r--src/qt/bitcoin.cpp9
-rw-r--r--src/qt/bitcoingui.cpp9
-rw-r--r--src/qt/bitcoingui.h2
-rw-r--r--src/qtui.h2
6 files changed, 23 insertions, 6 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 1f57bf9cd0..a4a1fd4d6b 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -2174,7 +2174,7 @@ void ThreadRPCServer2(void* parg)
strWhatAmI = strprintf(_("To use the %s option"), "\"-server\"");
else if (mapArgs.count("-daemon"))
strWhatAmI = strprintf(_("To use the %s option"), "\"-daemon\"");
- PrintConsole(
+ ThreadSafeMessageBox(strprintf(
_("Error: %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"
@@ -2183,7 +2183,8 @@ void ThreadRPCServer2(void* parg)
"If the file does not exist, create it with owner-readable-only file permissions.\n"),
strWhatAmI.c_str(),
GetConfigFile().c_str(),
- EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str());
+ EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()),
+ _("Error"), wxOK | wxMODAL);
#ifndef QT_GUI
CreateThread(Shutdown, NULL);
#endif
diff --git a/src/noui.h b/src/noui.h
index 754c2225fc..0bbf45a72a 100644
--- a/src/noui.h
+++ b/src/noui.h
@@ -36,6 +36,8 @@ typedef void wxWindow;
#define wxHELP 0x00008000
#define wxMORE 0x00010000
#define wxSETUP 0x00020000
+// Force blocking, modal message box dialog (not just notification)
+#define wxMODAL 0x00040000
inline int MyMessageBox(const std::string& message, const std::string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
{
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 54e6bb34c2..311fab3c9b 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -41,12 +41,19 @@ int MyMessageBox(const std::string& message, const std::string& caption, int sty
int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y)
{
+ bool modal = style & wxMODAL;
+
+ if (modal)
+ while (!guiref)
+ sleep(1);
+
// Message from network thread
if(guiref)
{
QMetaObject::invokeMethod(guiref, "error", 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
{
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp
index 78becafe5b..ed891f369d 100644
--- a/src/qt/bitcoingui.cpp
+++ b/src/qt/bitcoingui.cpp
@@ -516,10 +516,15 @@ void BitcoinGUI::refreshStatusBar()
setNumBlocks(clientModel->getNumBlocks());
}
-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 9b672ee809..efe3e9cc6d 100644
--- a/src/qt/bitcoingui.h
+++ b/src/qt/bitcoingui.h
@@ -100,7 +100,7 @@ public slots:
/** Set the status bar text if there are any warnings (removes sync progress bar if applicable) */
void refreshStatusBar();
- void error(const QString &title, const QString &message);
+ void error(const QString &title, const QString &message, bool modal = false);
/* It is currently not possible to pass a return value to another thread through
BlockingQueuedConnection, so use an indirected pointer.
http://bugreports.qt.nokia.com/browse/QTBUG-10440
diff --git a/src/qtui.h b/src/qtui.h
index 17fc44e94b..193f849249 100644
--- a/src/qtui.h
+++ b/src/qtui.h
@@ -35,6 +35,8 @@ typedef void wxWindow;
#define wxHELP 0x00008000
#define wxMORE 0x00010000
#define wxSETUP 0x00020000
+// Force blocking, modal message box dialog (not just notification)
+#define wxMODAL 0x00040000
extern int MyMessageBox(const std::string& message, const std::string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);
#define wxMessageBox MyMessageBox