diff options
author | Svetlana Abramenkova <sabramenkova@luxoft.com> | 2018-12-12 22:47:25 +0100 |
---|---|---|
committer | Svetlana Abramenkova <sabramenkova@luxoft.com> | 2018-12-17 15:25:59 +0000 |
commit | 1ba09fc6951b722dddd156d9c1247b2312247443 (patch) | |
tree | 24c98783e6765bcd6eb0680f8cc99f763f97382f | |
parent | 737ded4b7dde6e336a427f28d09b5d053f22f407 (diff) |
Bench: process qmllive project file as command line arg
It is now possible to provide .qmllive project file as command line option --project
Change-Id: I0d09607adfb444122cde179423f7f166e83f8d5c
Fixes: QTAUTO-1110
Reviewed-by: Nikolay Zamotaev <nzamotaev@luxoft.com>
-rw-r--r-- | src/bench/main.cpp | 37 | ||||
-rw-r--r-- | src/bench/mainwindow.cpp | 13 | ||||
-rw-r--r-- | src/bench/mainwindow.h | 2 | ||||
-rw-r--r-- | src/bench/options.cpp | 11 | ||||
-rw-r--r-- | src/bench/options.h | 4 |
5 files changed, 61 insertions, 6 deletions
diff --git a/src/bench/main.cpp b/src/bench/main.cpp index 4a2f2ea..c5c897d 100644 --- a/src/bench/main.cpp +++ b/src/bench/main.cpp @@ -40,6 +40,7 @@ #include "options.h" #include "mainwindow.h" #include "qmllive_version.h" +#include "projectmanager.h" class Application : public QApplication { @@ -230,6 +231,8 @@ void Application::parseArguments(const QStringList &arguments, Options *options) parser.addOption(pingOption); QCommandLineOption maxWatchesOption("maxdirwatch", "limit the number of directories to watch for changes", "number", QString::number(options->maximumWatches())); parser.addOption(maxWatchesOption); + QCommandLineOption projectOption("project", "loads project document .qmllive containing workspace path, imports paths, main document in JSON format"); + parser.addOption(projectOption); parser.process(arguments); @@ -297,12 +300,16 @@ void Application::parseArguments(const QStringList &arguments, Options *options) options->setHostsToRemove(parser.values(rmHostOption)); options->setHostsToProbe(parser.values(probeHostOption)); + if (parser.isSet(projectOption)){ + options->setProject(parser.value(projectOption)); + } + const QStringList positionalArguments = parser.positionalArguments(); if (positionalArguments.count() >= 1) { QString argument = positionalArguments.value(0); QFileInfo fi(argument); if (argument.endsWith(".qml")) { - qDebug() << "First argument ends with \".qml\". Assuming it is a file."; + qInfo() << "First argument ends with \".qml\". Assuming it is a file."; if (!fi.exists() || !fi.isFile()) { qWarning() << "Document does not exist or is not a file: " << fi.absoluteFilePath(); parser.showHelp(-1); @@ -310,12 +317,17 @@ void Application::parseArguments(const QStringList &arguments, Options *options) options->setWorkspace(fi.absolutePath()); options->setActiveDocument(LiveDocument(fi.absoluteFilePath())); } else { - qDebug() << "First argument does not ending with \".qml\". Assuming it is a workspace."; - if (!fi.exists() || !fi.isDir()) { - qWarning() << "Workspace does not exist or is not a directory: " << fi.absoluteFilePath(); - parser.showHelp(-1); + if (argument.endsWith(".qmllive") && parser.isSet(projectOption)){ + qInfo() << "First argument is ending with \".qmllive\". Assuming it is a project."; + options->setProject(fi.absoluteFilePath()); + } else { + qInfo() << "First argument does not ending with \".qml\". Assuming it is a workspace."; + if (!fi.exists() || !fi.isDir()) { + qWarning() << "Workspace does not exist or is not a directory: " << fi.absoluteFilePath(); + parser.showHelp(-1); + } + options->setWorkspace(fi.absoluteFilePath()); } - options->setWorkspace(fi.absoluteFilePath()); } } if (positionalArguments.count() == 2) { @@ -444,6 +456,19 @@ void MasterApplication::applyOptions(const Options &options) { LiveHubEngine::setMaximumWatches(options.maximumWatches()); + if (!options.project().isEmpty()) { + if (m_window->isInitialized()) + m_window->setProject(options.project()); + else { + ProjectManager pr; + if (pr.read(options.project())) { + m_window->setWorkspace(pr.workspace()); + m_window->setImportPaths(pr.imports()); + m_window->activateDocument(LiveDocument(pr.mainDocument())); + } + } + } + if (!options.workspace().isEmpty()) m_window->setWorkspace(QDir(options.workspace()).absolutePath(), false); diff --git a/src/bench/mainwindow.cpp b/src/bench/mainwindow.cpp index 960dcab..3a8159e 100644 --- a/src/bench/mainwindow.cpp +++ b/src/bench/mainwindow.cpp @@ -507,6 +507,11 @@ void MainWindow::setStaysOnTop(bool enabled) stayOnTop(); } +void MainWindow::setProject(const QString &projectFile) +{ + openProjectFile(projectFile); +} + void MainWindow::closeEvent(QCloseEvent *event) { writeSettings(); @@ -619,6 +624,11 @@ void MainWindow::openProject() if (path.isEmpty()) { return; } + openProjectFile(path); +} + +void MainWindow::openProjectFile(const QString &path) +{ if (m_projectManager->read(path)) { QStringList paths; @@ -645,6 +655,9 @@ void MainWindow::openProject() setWorkspace(path); activateDocument(LiveDocument(m_projectManager->mainDocument())); } + else { + qWarning() << "Unable to read project document: "<<path; + } } void MainWindow::newProjectWizard() diff --git a/src/bench/mainwindow.h b/src/bench/mainwindow.h index c3725a2..51923d2 100644 --- a/src/bench/mainwindow.h +++ b/src/bench/mainwindow.h @@ -66,6 +66,7 @@ public: void setPluginPath(const QString& path); void setImportPaths(const QStringList& pathList); void setStaysOnTop(bool enabled); + void setProject(const QString& projectFile); void init(); bool isInitialized() const { return m_initialized; } @@ -84,6 +85,7 @@ private: void setupMenuBar(); void writeSettings(); void resetImportPaths(); + void openProjectFile(const QString& path); private slots: void resizeToFit(); void takeSnapshot(); diff --git a/src/bench/options.cpp b/src/bench/options.cpp index 1e1f28b..de1cf17 100644 --- a/src/bench/options.cpp +++ b/src/bench/options.cpp @@ -38,6 +38,7 @@ Options::Options(QObject *parent) , m_ping(false) , m_stayOnTop(false) , m_maximumWatches(100) + , m_project("") { } @@ -185,3 +186,13 @@ void Options::setMaximumWatches(int maximumWatches) { m_maximumWatches = maximumWatches; } + +QString Options::project() const +{ + return m_project; +} + +void Options::setProject(const QString &project) +{ + m_project = project; +} diff --git a/src/bench/options.h b/src/bench/options.h index a0ab44f..4fbed80 100644 --- a/src/bench/options.h +++ b/src/bench/options.h @@ -89,6 +89,9 @@ public: int maximumWatches() const; void setMaximumWatches(int maximumWatches); + QString project() const; + void setProject(const QString &project); + private: bool m_noRemote; bool m_remoteOnly; @@ -102,5 +105,6 @@ private: QStringList m_hostsToRemove; QStringList m_hostsToProbe; int m_maximumWatches; + QString m_project; }; |