Merge #14162: gui: Also log and print messages or questions like bitcoind

fa7e9694e1 qt: Also log and print messages or questions like bitcoind (MarcoFalke)
dd031e3839 noui: Move handlers to header file (MarcoFalke)

Pull request description:

  Testing and debugging after shutdown are harder if the node was run through the gui, because errors and warnings would not be logged to the debug.log or written to the stderr (as is the case for bitcoind).

Tree-SHA512: 1154e2bf02e3c2616c8d28609569d6c3c7344c5877ad5c1303245044cc7aced9eaec9627f1e1258ed087b49c2a2e6f99bc6c1ad0abe0a855b61e737bdf2059bc
This commit is contained in:
Wladimir J. van der Laan 2018-09-11 08:38:43 +02:00
commit 7ab2837b65
No known key found for this signature in database
GPG key ID: 1E4AED62986CD25D
4 changed files with 22 additions and 8 deletions

View file

@ -14,7 +14,7 @@
#include <boost/signals2/connection.hpp> #include <boost/signals2/connection.hpp>
static bool noui_ThreadSafeMessageBox(const std::string& message, const std::string& caption, unsigned int style) bool noui_ThreadSafeMessageBox(const std::string& message, const std::string& caption, unsigned int style)
{ {
bool fSecure = style & CClientUIInterface::SECURE; bool fSecure = style & CClientUIInterface::SECURE;
style &= ~CClientUIInterface::SECURE; style &= ~CClientUIInterface::SECURE;
@ -41,19 +41,18 @@ static bool noui_ThreadSafeMessageBox(const std::string& message, const std::str
return false; return false;
} }
static bool noui_ThreadSafeQuestion(const std::string& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style) bool noui_ThreadSafeQuestion(const std::string& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style)
{ {
return noui_ThreadSafeMessageBox(message, caption, style); return noui_ThreadSafeMessageBox(message, caption, style);
} }
static void noui_InitMessage(const std::string& message) void noui_InitMessage(const std::string& message)
{ {
LogPrintf("init message: %s\n", message); LogPrintf("init message: %s\n", message);
} }
void noui_connect() void noui_connect()
{ {
// Connect bitcoind signal handlers
uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBox); uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBox);
uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestion); uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestion);
uiInterface.InitMessage_connect(noui_InitMessage); uiInterface.InitMessage_connect(noui_InitMessage);

View file

@ -5,6 +5,16 @@
#ifndef BITCOIN_NOUI_H #ifndef BITCOIN_NOUI_H
#define BITCOIN_NOUI_H #define BITCOIN_NOUI_H
extern void noui_connect(); #include <string>
/** Non-GUI handler, which logs and prints messages. */
bool noui_ThreadSafeMessageBox(const std::string& message, const std::string& caption, unsigned int style);
/** Non-GUI handler, which logs and prints questions. */
bool noui_ThreadSafeQuestion(const std::string& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style);
/** Non-GUI handler, which only logs a message. */
void noui_InitMessage(const std::string& message);
/** Connect all bitcoind signal handlers */
void noui_connect();
#endif // BITCOIN_NOUI_H #endif // BITCOIN_NOUI_H

View file

@ -28,6 +28,7 @@
#include <interfaces/handler.h> #include <interfaces/handler.h>
#include <interfaces/node.h> #include <interfaces/node.h>
#include <noui.h>
#include <rpc/server.h> #include <rpc/server.h>
#include <ui_interface.h> #include <ui_interface.h>
#include <uint256.h> #include <uint256.h>
@ -71,9 +72,9 @@ Q_DECLARE_METATYPE(bool*)
Q_DECLARE_METATYPE(CAmount) Q_DECLARE_METATYPE(CAmount)
Q_DECLARE_METATYPE(uint256) Q_DECLARE_METATYPE(uint256)
static void InitMessage(const std::string &message) static void InitMessage(const std::string& message)
{ {
LogPrintf("init message: %s\n", message); noui_InitMessage(message);
} }
/** Translate string to current locale using Qt. */ /** Translate string to current locale using Qt. */

View file

@ -31,6 +31,7 @@
#include <chainparams.h> #include <chainparams.h>
#include <interfaces/handler.h> #include <interfaces/handler.h>
#include <interfaces/node.h> #include <interfaces/node.h>
#include <noui.h>
#include <ui_interface.h> #include <ui_interface.h>
#include <util.h> #include <util.h>
@ -1217,8 +1218,11 @@ void BitcoinGUI::showModalOverlay()
modalOverlay->toggleVisibility(); modalOverlay->toggleVisibility();
} }
static bool ThreadSafeMessageBox(BitcoinGUI *gui, const std::string& message, const std::string& caption, unsigned int style) static bool ThreadSafeMessageBox(BitcoinGUI* gui, const std::string& message, const std::string& caption, unsigned int style)
{ {
// Redundantly log and print message in non-gui fashion
noui_ThreadSafeMessageBox(message, caption, style);
bool modal = (style & CClientUIInterface::MODAL); bool modal = (style & CClientUIInterface::MODAL);
// The SECURE flag has no effect in the Qt GUI. // The SECURE flag has no effect in the Qt GUI.
// bool secure = (style & CClientUIInterface::SECURE); // bool secure = (style & CClientUIInterface::SECURE);