aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp')
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp57
1 files changed, 36 insertions, 21 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index 5afb957789..a0b77fffb7 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -27,7 +27,7 @@
#include "qmlproject.h"
#include "qmlprojectmanagerconstants.h"
#include "qmlmainfileaspect.h"
-#include "qmlmainfileaspect.h"
+#include "qmlmultilanguageaspect.h"
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
@@ -59,6 +59,7 @@ using namespace QtSupport;
using namespace Utils;
namespace QmlProjectManager {
+class QmlMultiLanguageAspect;
namespace Internal {
// QmlProjectRunConfiguration
@@ -68,7 +69,7 @@ class QmlProjectRunConfiguration final : public RunConfiguration
Q_DECLARE_TR_FUNCTIONS(QmlProjectManager::QmlProjectRunConfiguration)
public:
- QmlProjectRunConfiguration(Target *target, Core::Id id);
+ QmlProjectRunConfiguration(Target *target, Utils::Id id);
private:
Runnable runnable() const final;
@@ -81,30 +82,12 @@ private:
BaseStringAspect *m_qmlViewerAspect = nullptr;
QmlMainFileAspect *m_qmlMainFileAspect = nullptr;
+ QmlMultiLanguageAspect *m_multiLanguageAspect = nullptr;
};
QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
: RunConfiguration(target, id)
{
- auto envAspect = addAspect<EnvironmentAspect>();
-
- auto envModifier = [this](Environment env) {
- if (auto bs = dynamic_cast<const QmlBuildSystem *>(activeBuildSystem()))
- env.modify(bs->environment());
- return env;
- };
-
- const Id deviceTypeId = DeviceTypeKitAspect::deviceTypeId(target->kit());
- if (deviceTypeId == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
- envAspect->addPreferredBaseEnvironment(tr("System Environment"), [envModifier] {
- return envModifier(Environment::systemEnvironment());
- });
- }
-
- envAspect->addSupportedBaseEnvironment(tr("Clean Environment"), [envModifier] {
- return envModifier(Environment());
- });
-
m_qmlViewerAspect = addAspect<BaseStringAspect>();
m_qmlViewerAspect->setLabelText(tr("QML Viewer:"));
m_qmlViewerAspect->setPlaceHolderText(commandLine().executable().toString());
@@ -123,6 +106,34 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
connect(target, &Target::kitChanged, this, &RunConfiguration::update);
+ m_multiLanguageAspect = addAspect<QmlMultiLanguageAspect>(target);
+
+ auto envAspect = addAspect<EnvironmentAspect>();
+ connect(m_multiLanguageAspect, &QmlMultiLanguageAspect::changed, envAspect, &EnvironmentAspect::environmentChanged);
+
+ auto envModifier = [this](Environment env) {
+ if (auto bs = dynamic_cast<const QmlBuildSystem *>(activeBuildSystem()))
+ env.modify(bs->environment());
+
+ if (m_multiLanguageAspect && m_multiLanguageAspect->value() && !m_multiLanguageAspect->databaseFilePath().isEmpty()) {
+ env.set("QT_MULTILANGUAGE_DATABASE", m_multiLanguageAspect->databaseFilePath().toString());
+ env.set("QT_MULTILANGUAGE_LANGUAGE", m_multiLanguageAspect->lastUsedLanguage());
+ }
+ return env;
+ };
+
+ const Id deviceTypeId = DeviceTypeKitAspect::deviceTypeId(target->kit());
+ if (deviceTypeId == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
+ envAspect->addPreferredBaseEnvironment(tr("System Environment"), [envModifier] {
+ return envModifier(Environment::systemEnvironment());
+ });
+ }
+
+ envAspect->addSupportedBaseEnvironment(tr("Clean Environment"), [envModifier] {
+ Environment environment;
+ return envModifier(environment);
+ });
+
setDisplayName(tr("QML Scene", "QMLRunConfiguration display name."));
update();
}
@@ -208,6 +219,10 @@ QString QmlProjectRunConfiguration::commandLineArguments() const
const QString main = bs->targetFile(FilePath::fromString(mainScript())).toString();
if (!main.isEmpty())
QtcProcess::addArg(&args, main, osType);
+
+ if (m_multiLanguageAspect && m_multiLanguageAspect->value())
+ QtcProcess::addArg(&args, "-qmljsdebugger=file:unused_if_debugger_arguments_added,services:DebugTranslation", osType);
+
return args;
}