aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvetlana Abramenkova <sabramenkova@luxoft.com>2018-12-12 22:47:25 +0100
committerSvetlana Abramenkova <sabramenkova@luxoft.com>2018-12-17 15:25:59 +0000
commit1ba09fc6951b722dddd156d9c1247b2312247443 (patch)
tree24c98783e6765bcd6eb0680f8cc99f763f97382f
parent737ded4b7dde6e336a427f28d09b5d053f22f407 (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.cpp37
-rw-r--r--src/bench/mainwindow.cpp13
-rw-r--r--src/bench/mainwindow.h2
-rw-r--r--src/bench/options.cpp11
-rw-r--r--src/bench/options.h4
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;
};