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:
parent
fad2502240
commit
fa6f402bde
3 changed files with 8 additions and 4 deletions
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue