diff options
author | BogDan Vatra <bogdan@kde.org> | 2015-01-22 17:36:53 +0200 |
---|---|---|
committer | BogDan Vatra <bogdan@kde.org> | 2015-01-23 16:28:05 +0100 |
commit | f23a5fc41d6d961db1174ffb27c051a4c4792133 (patch) | |
tree | 0878cb8dfa1b27319b59b7acdc23eebfa3d6ea8a | |
parent | 56dab9e9313a85d5b148bdf80e2871d6a55aabee (diff) | |
download | qt-creator-f23a5fc41d6d961db1174ffb27c051a4c4792133.tar.gz |
Set QML[2]_IMPORT_PATH evn variable when running qml[2]puppet
qml[2]puppet can't use any QML plugin that are defined in your .pro file
(using QML_IMPORT_PATH) unless we don't specify it.
Change-Id: I0fffb8a5da1023565fa9fce5cd4cf38f098a0df1
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
3 files changed, 29 insertions, 20 deletions
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 442bcc4c77..3f3eb9ae0a 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -123,32 +123,29 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV m_runModus(runModus), m_synchronizeId(-1) { - PuppetCreator puppetCreator(kit, QString()); - QString socketToken(QUuid::createUuid().toString()); m_localServer->listen(socketToken); m_localServer->setMaxPendingConnections(3); PuppetCreator::QmlPuppetVersion puppetVersion = hasQtQuick1(nodeInstanceView) ? PuppetCreator::Qml1Puppet : PuppetCreator::Qml2Puppet; + PuppetCreator puppetCreator(kit, QString(), nodeInstanceView->model(), puppetVersion); + - puppetCreator.createPuppetExecutableIfMissing(puppetVersion); + puppetCreator.createPuppetExecutableIfMissing(); - m_qmlPuppetEditorProcess = puppetCreator.createPuppetProcess(puppetVersion, - "editormode", + m_qmlPuppetEditorProcess = puppetCreator.createPuppetProcess("editormode", socketToken, this, SLOT(printEditorProcessOutput()), SLOT(processFinished(int,QProcess::ExitStatus))); if (runModus == NormalModus) { - m_qmlPuppetRenderProcess = puppetCreator.createPuppetProcess(puppetVersion, - "rendermode", + m_qmlPuppetRenderProcess = puppetCreator.createPuppetProcess("rendermode", socketToken, this, SLOT(printRenderProcessOutput()), SLOT(processFinished(int,QProcess::ExitStatus))); - m_qmlPuppetPreviewProcess = puppetCreator.createPuppetProcess(puppetVersion, - "previewmode", + m_qmlPuppetPreviewProcess = puppetCreator.createPuppetProcess("previewmode", socketToken, this, SLOT(printPreviewProcessOutput()), diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 258a4d62d1..075b3f8b3c 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -114,10 +114,12 @@ bool PuppetCreator::useOnlyFallbackPuppet() const || !qgetenv("USE_ONLY_FALLBACK_PUPPET").isEmpty() || m_kit == 0 || !m_kit->isValid(); } -PuppetCreator::PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion) +PuppetCreator::PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion, const Model *model, QmlPuppetVersion puppetVersion) : m_qtCreatorVersion(qtCreatorVersion), m_kit(kit), - m_availablePuppetType(FallbackPuppet) + m_availablePuppetType(FallbackPuppet), + m_model(model), + m_puppetVersion(puppetVersion) { } @@ -125,18 +127,18 @@ PuppetCreator::~PuppetCreator() { } -void PuppetCreator::createPuppetExecutableIfMissing(PuppetCreator::QmlPuppetVersion puppetVersion) +void PuppetCreator::createPuppetExecutableIfMissing() { - if (puppetVersion == Qml1Puppet) + if (m_puppetVersion == Qml1Puppet) createQml1PuppetExecutableIfMissing(); else createQml2PuppetExecutableIfMissing(); } -QProcess *PuppetCreator::createPuppetProcess(PuppetCreator::QmlPuppetVersion puppetVersion, const QString &puppetMode, const QString &socketToken, QObject *handlerObject, const char *outputSlot, const char *finishSlot) const +QProcess *PuppetCreator::createPuppetProcess(const QString &puppetMode, const QString &socketToken, QObject *handlerObject, const char *outputSlot, const char *finishSlot) const { QString puppetPath; - if (puppetVersion == Qml1Puppet) + if (m_puppetVersion == Qml1Puppet) puppetPath = qmlPuppetPath(m_availablePuppetType); else puppetPath = qml2PuppetPath(m_availablePuppetType); @@ -332,13 +334,21 @@ QString PuppetCreator::qmlPuppetPath(PuppetType puppetType) const QProcessEnvironment PuppetCreator::processEnvironment() const { +#if defined(Q_OS_WIN) + static QLatin1String pathSep(";"); +#else + static QLatin1String pathSep(":"); +#endif Utils::Environment environment = Utils::Environment::systemEnvironment(); if (!useOnlyFallbackPuppet()) m_kit->addToEnvironment(environment); environment.set("QML_BAD_GUI_RENDER_LOOP", "true"); environment.set("QML_USE_MOCKUPS", "true"); environment.set("QML_PUPPET_MODE", "true"); - + if (m_puppetVersion == Qml1Puppet) + environment.appendOrSet("QML_IMPORT_PATH", m_model->importPaths().join(pathSep), pathSep); + else + environment.appendOrSet("QML2_IMPORT_PATH", m_model->importPaths().join(pathSep), pathSep); return environment.toProcessEnvironment(); } diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h index b8ef4e68ba..ab27deb6d9 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h @@ -41,6 +41,7 @@ class Kit; namespace QmlDesigner { +class Model; class PuppetBuildProgressDialog; class PuppetCreator @@ -56,13 +57,12 @@ public: Qml2Puppet }; - PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion); + PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion, const Model *model, QmlPuppetVersion puppetVersion); ~PuppetCreator(); - void createPuppetExecutableIfMissing(QmlPuppetVersion puppetVersion); + void createPuppetExecutableIfMissing(); - QProcess *createPuppetProcess(QmlPuppetVersion puppetVersion, - const QString &puppetMode, + QProcess *createPuppetProcess(const QString &puppetMode, const QString &socketToken, QObject *handlerObject, const char *outputSlot, @@ -120,6 +120,8 @@ private: PuppetType m_availablePuppetType; static QHash<Core::Id, PuppetType> m_qml1PuppetForKitPuppetHash; static QHash<Core::Id, PuppetType> m_qml2PuppetForKitPuppetHash; + const Model *m_model; + QmlPuppetVersion m_puppetVersion; }; } // namespace QmlDesigner |