QmlProjectManager: Support running on RemoteLinux

This adds a per-device qml run time path and enables X11 forwarding
via a run configuration aspect.

Task-number: QTCREATORBUG-28074
Change-Id: Iae5e724f44dba876d7a12443b3b89f85cd28f3df
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2022-12-13 14:47:24 +01:00
parent 4159c4b5d5
commit 041c59e90f

View File

@@ -72,7 +72,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
: RunConfiguration(target, id) : RunConfiguration(target, id)
{ {
m_qmlViewerAspect = addAspect<StringAspect>(); m_qmlViewerAspect = addAspect<StringAspect>();
m_qmlViewerAspect->setLabelText(tr("QML Viewer:")); m_qmlViewerAspect->setLabelText(tr("Override device QML viewer:"));
m_qmlViewerAspect->setPlaceHolderText(commandLine().executable().toString()); m_qmlViewerAspect->setPlaceHolderText(commandLine().executable().toString());
m_qmlViewerAspect->setDisplayStyle(StringAspect::PathChooserDisplay); m_qmlViewerAspect->setDisplayStyle(StringAspect::PathChooserDisplay);
m_qmlViewerAspect->setHistoryCompleter("QmlProjectManager.viewer.history"); m_qmlViewerAspect->setHistoryCompleter("QmlProjectManager.viewer.history");
@@ -130,9 +130,14 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
return envModifier(environment); return envModifier(environment);
}); });
if (HostOsInfo::isAnyUnixHost())
addAspect<X11ForwardingAspect>(macroExpander());
setRunnableModifier([this](Runnable &r) { setRunnableModifier([this](Runnable &r) {
const QmlBuildSystem *bs = static_cast<QmlBuildSystem *>(activeBuildSystem()); const QmlBuildSystem *bs = static_cast<QmlBuildSystem *>(activeBuildSystem());
r.workingDirectory = bs->targetDirectory(); r.workingDirectory = bs->targetDirectory();
if (const auto * const forwardingAspect = aspect<X11ForwardingAspect>())
r.extraData.insert("Ssh.X11ForwardToDisplay", forwardingAspect->display());
}); });
setDisplayName(tr("QML Utility", "QMLRunConfiguration display name.")); setDisplayName(tr("QML Utility", "QMLRunConfiguration display name."));
@@ -157,7 +162,7 @@ QString QmlProjectRunConfiguration::disabledReason() const
FilePath QmlProjectRunConfiguration::qmlRuntimeFilePath() const FilePath QmlProjectRunConfiguration::qmlRuntimeFilePath() const
{ {
// Give precedence to the manual override. // Give precedence to the manual override in the run configuration.
const FilePath qmlViewer = m_qmlViewerAspect->filePath(); const FilePath qmlViewer = m_qmlViewerAspect->filePath();
if (!qmlViewer.isEmpty()) if (!qmlViewer.isEmpty())
return qmlViewer; return qmlViewer;