Call node->initError instead of InitError from GUI code

Avoids GUI code calling a node function, and having to live in the same process
as g_ui_signals and uiInterface global variables.
This commit is contained in:
Russell Yanofsky 2019-07-11 18:20:44 -04:00 committed by MarcoFalke
parent fad2502240
commit fa6f402bde
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
3 changed files with 8 additions and 4 deletions

View file

@ -54,6 +54,7 @@ class NodeImpl : public Node
{ {
public: public:
NodeImpl() { m_interfaces.chain = MakeChain(); } NodeImpl() { m_interfaces.chain = MakeChain(); }
void initError(const std::string& message) override { InitError(message); }
bool parseParameters(int argc, const char* const argv[], std::string& error) override bool parseParameters(int argc, const char* const argv[], std::string& error) override
{ {
return gArgs.ParseParameters(argc, argv, error); return gArgs.ParseParameters(argc, argv, error);

View file

@ -38,6 +38,9 @@ class Node
public: public:
virtual ~Node() {} virtual ~Node() {}
//! Send init error.
virtual void initError(const std::string& message) = 0;
//! Set command line arguments. //! Set command line arguments.
virtual bool parseParameters(int argc, const char* const argv[], std::string& error) = 0; virtual bool parseParameters(int argc, const char* const argv[], std::string& error) = 0;

View file

@ -456,7 +456,7 @@ int GuiMain(int argc, char* argv[])
SetupUIArgs(); SetupUIArgs();
std::string error; std::string error;
if (!node->parseParameters(argc, argv, error)) { if (!node->parseParameters(argc, argv, error)) {
InitError(strprintf("Error parsing command line arguments: %s\n", error)); node->initError(strprintf("Error parsing command line arguments: %s\n", error));
// Create a message box, because the gui has neither been created nor has subscribed to core signals // Create a message box, because the gui has neither been created nor has subscribed to core signals
QMessageBox::critical(nullptr, PACKAGE_NAME, QMessageBox::critical(nullptr, PACKAGE_NAME,
// message can not be translated because translations have not been initialized // message can not be translated because translations have not been initialized
@ -496,13 +496,13 @@ int GuiMain(int argc, char* argv[])
/// - Do not call GetDataDir(true) before this step finishes /// - Do not call GetDataDir(true) before this step finishes
if (!fs::is_directory(GetDataDir(false))) if (!fs::is_directory(GetDataDir(false)))
{ {
InitError(strprintf("Specified data directory \"%s\" does not exist.\n", gArgs.GetArg("-datadir", ""))); node->initError(strprintf("Specified data directory \"%s\" does not exist.\n", gArgs.GetArg("-datadir", "")));
QMessageBox::critical(nullptr, PACKAGE_NAME, QMessageBox::critical(nullptr, PACKAGE_NAME,
QObject::tr("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(gArgs.GetArg("-datadir", "")))); QObject::tr("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(gArgs.GetArg("-datadir", ""))));
return EXIT_FAILURE; return EXIT_FAILURE;
} }
if (!node->readConfigFiles(error)) { if (!node->readConfigFiles(error)) {
InitError(strprintf("Error reading configuration file: %s\n", error)); node->initError(strprintf("Error reading configuration file: %s\n", error));
QMessageBox::critical(nullptr, PACKAGE_NAME, QMessageBox::critical(nullptr, PACKAGE_NAME,
QObject::tr("Error: Cannot parse configuration file: %1.").arg(QString::fromStdString(error))); QObject::tr("Error: Cannot parse configuration file: %1.").arg(QString::fromStdString(error)));
return EXIT_FAILURE; return EXIT_FAILURE;
@ -518,7 +518,7 @@ int GuiMain(int argc, char* argv[])
try { try {
node->selectParams(gArgs.GetChainName()); node->selectParams(gArgs.GetChainName());
} catch(std::exception &e) { } catch(std::exception &e) {
InitError(strprintf("%s\n", e.what())); node->initError(strprintf("%s\n", e.what()));
QMessageBox::critical(nullptr, PACKAGE_NAME, QObject::tr("Error: %1").arg(e.what())); QMessageBox::critical(nullptr, PACKAGE_NAME, QObject::tr("Error: %1").arg(e.what()));
return EXIT_FAILURE; return EXIT_FAILURE;
} }