diff options
-rw-r--r-- | src/bench/main.cpp | 18 | ||||
-rw-r--r-- | src/bench/options.cpp | 11 | ||||
-rw-r--r-- | src/bench/options.h | 4 |
3 files changed, 33 insertions, 0 deletions
diff --git a/src/bench/main.cpp b/src/bench/main.cpp index 651b83b..ed0b2a8 100644 --- a/src/bench/main.cpp +++ b/src/bench/main.cpp @@ -195,15 +195,23 @@ void Application::parseArguments(const QStringList &arguments, Options *options) parser.addOption(noRemoteOption); QCommandLineOption remoteOnlyOption("remoteonly", "talk to a running bench, do nothing if none is running."); parser.addOption(remoteOnlyOption); + QCommandLineOption pingOption("ping", "just check if there is a bench running and accepting remote connections."); + parser.addOption(pingOption); parser.process(arguments); options->setNoRemote(parser.isSet(noRemoteOption)); options->setRemoteOnly(parser.isSet(remoteOnlyOption)); + options->setPing(parser.isSet(pingOption)); if (options->noRemote() && options->remoteOnly()) { qWarning() << "Options --noremote and --remoteonly cannot be used together"; parser.showHelp(-1); } + if (options->noRemote() && options->ping()) { + qWarning() << "Options --noremote and --ping cannot be used together"; + parser.showHelp(-1); + } + options->setPluginPath(parser.value(pluginPathOption)); options->setImportPaths(parser.values(importPathOption)); @@ -284,6 +292,11 @@ MasterApplication::MasterApplication(int &argc, char **argv) Options options; parseArguments(arguments(), &options); + if (options.ping()) { + QTimer::singleShot(0, [] { QCoreApplication::exit(1); }); + return; + } + if (options.remoteOnly()) { QTimer::singleShot(0, this, &QCoreApplication::quit); return; @@ -430,6 +443,11 @@ SlaveApplication::SlaveApplication(int &argc, char **argv) Options options; parseArguments(arguments(), &options); + if (options.ping()) { + QTimer::singleShot(0, &QCoreApplication::quit); + return; + } + if (!options.remoteOnly() && !options.hasNoninteractiveOptions()) qInfo() << "Another instance running. Activating..."; diff --git a/src/bench/options.cpp b/src/bench/options.cpp index 054022f..87cc83f 100644 --- a/src/bench/options.cpp +++ b/src/bench/options.cpp @@ -35,6 +35,7 @@ Options::Options(QObject *parent) : QObject(parent) , m_noRemote(false) , m_remoteOnly(false) + , m_ping(false) , m_stayOnTop(false) { @@ -71,6 +72,16 @@ void Options::setRemoteOnly(bool remoteOnly) m_remoteOnly = remoteOnly; } +bool Options::ping() const +{ + return m_ping; +} + +void Options::setPing(bool ping) +{ + m_ping = ping; +} + QString Options::activeDocument() const { return m_activeDocument; diff --git a/src/bench/options.h b/src/bench/options.h index 781abb1..ee98e99 100644 --- a/src/bench/options.h +++ b/src/bench/options.h @@ -55,6 +55,9 @@ public: bool remoteOnly() const; void setRemoteOnly(bool remoteOnly); + bool ping() const; + void setPing(bool ping); + QString activeDocument() const; void setActiveDocument(const QString &activeDocument); @@ -81,6 +84,7 @@ public: private: bool m_noRemote; bool m_remoteOnly; + bool m_ping; QString m_activeDocument; QString m_workspace; QString m_pluginPath; |