summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-09-04 08:38:44 +0200
committerhjk <hjk@qt.io>2018-09-04 11:02:49 +0000
commit25400751a4b4cd03758862b8365f57e8afed7985 (patch)
treecbca0d539027c09fc2cdbfd99672bb83085901e1 /src/plugins
parent760e6a9b13a666ba37edd981f9d752755a744b0d (diff)
downloadqt-creator-25400751a4b4cd03758862b8365f57e8afed7985.tar.gz
ProjectExplorer: Remove RunConfiguration::fillConfigurationLayout
Instead of using a hard-coded list of well-known (optional) aspects, add all aspects, so there is no need for special treatment of RunConfiguration with unusual/custom aspects needed. Price and benefit is that the individual run configs are again responsible for the aspect display order which is determined from the aspect construction order. Change-Id: Iff2656b2e358c0f0f789d4c006a5c44d0a1536a5 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp2
-rw-r--r--src/plugins/projectexplorer/customexecutablerunconfiguration.cpp4
-rw-r--r--src/plugins/projectexplorer/runconfiguration.cpp23
-rw-r--r--src/plugins/projectexplorer/runconfiguration.h3
-rw-r--r--src/plugins/pythoneditor/pythoneditorplugin.cpp9
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp2
-rw-r--r--src/plugins/qnx/qnxrunconfiguration.cpp6
-rw-r--r--src/plugins/qnx/qnxrunconfiguration.h1
8 files changed, 10 insertions, 40 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index d4488e0ec2..30945013a9 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -56,8 +56,8 @@ CMakeRunConfiguration::CMakeRunConfiguration(Target *target, Core::Id id)
addExtraAspect(new LocalEnvironmentAspect(this, cmakeRunEnvironmentModifier));
addExtraAspect(new ExecutableAspect(this));
addExtraAspect(new ArgumentsAspect(this));
- addExtraAspect(new TerminalAspect(this));
addExtraAspect(new WorkingDirectoryAspect(this));
+ addExtraAspect(new TerminalAspect(this));
connect(target->project(), &Project::parsingFinished,
this, &CMakeRunConfiguration::updateTargetInformation);
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index 310c5fb0ec..42393a23db 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -139,8 +139,8 @@ void CustomExecutableDialog::accept()
{
auto executable = FileName::fromString(m_executableChooser->path());
m_rc->extraAspect<ExecutableAspect>()->setExecutable(executable);
- m_rc->extraAspect<WorkingDirectoryAspect>()->copyFrom(&m_workingDirectory);
m_rc->extraAspect<ArgumentsAspect>()->copyFrom(&m_arguments);
+ m_rc->extraAspect<WorkingDirectoryAspect>()->copyFrom(&m_workingDirectory);
m_rc->extraAspect<TerminalAspect>()->copyFrom(&m_terminal);
QDialog::accept();
@@ -187,8 +187,8 @@ CustomExecutableRunConfiguration::CustomExecutableRunConfiguration(Target *targe
addExtraAspect(exeAspect);
addExtraAspect(new ArgumentsAspect(this));
- addExtraAspect(new TerminalAspect(this));
addExtraAspect(new WorkingDirectoryAspect(this));
+ addExtraAspect(new TerminalAspect(this));
connect(envAspect, &EnvironmentAspect::environmentChanged,
this, [exeAspect, envAspect] { exeAspect->setEnvironment(envAspect->environment()); });
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index f0df6164b2..595aa2a024 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -258,31 +258,16 @@ QWidget *RunConfiguration::createConfigurationWidget()
auto widget = new QWidget;
auto formLayout = new QFormLayout(widget);
- fillConfigurationLayout(formLayout);
+ for (IRunConfigurationAspect *aspect : m_aspects) {
+ if (aspect->m_visible)
+ aspect->addToConfigurationLayout(formLayout);
+ }
Core::VariableChooser::addSupportForChildWidgets(widget, macroExpander());
return wrapWidget(widget);
}
-void RunConfiguration::fillConfigurationLayout(QFormLayout *layout) const
-{
- if (auto aspect = extraAspect<ExecutableAspect>())
- aspect->addToConfigurationLayout(layout);
- if (auto aspect = extraAspect<SymbolFileAspect>())
- aspect->addToConfigurationLayout(layout);
- if (auto aspect = extraAspect<ArgumentsAspect>())
- aspect->addToConfigurationLayout(layout);
- if (auto aspect = extraAspect<WorkingDirectoryAspect>())
- aspect->addToConfigurationLayout(layout);
- if (auto aspect = extraAspect<TerminalAspect>())
- aspect->addToConfigurationLayout(layout);
- if (auto aspect = extraAspect<UseLibraryPathsAspect>())
- aspect->addToConfigurationLayout(layout);
- if (auto aspect = extraAspect<UseDyldSuffixAspect>())
- aspect->addToConfigurationLayout(layout);
-}
-
void RunConfiguration::updateEnabledState()
{
Project *p = target()->project();
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index 2e54c9caec..47cc11ce48 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -129,6 +129,7 @@ public:
QString settingsKey() const { return m_settingsKey; }
bool isUsingGlobalSettings() const { return m_useGlobalSettings; }
void setUsingGlobalSettings(bool value);
+ void setVisible(bool visible) { m_visible = visible; }
void resetProjectToGlobalSettings();
ISettingsAspect *projectSettings() const { return m_projectSettings; }
@@ -151,6 +152,7 @@ private:
QString m_displayName;
QString m_settingsKey; // Name of data in settings.
bool m_useGlobalSettings = false;
+ bool m_visible = true;
RunConfiguration *m_runConfiguration = nullptr;
ISettingsAspect *m_projectSettings = nullptr; // Owned if present.
ISettingsAspect *m_globalSettings = nullptr; // Not owned.
@@ -185,7 +187,6 @@ public:
QString disabledReason() const override;
virtual QWidget *createConfigurationWidget();
- virtual void fillConfigurationLayout(QFormLayout *layout) const;
virtual bool isConfigured() const;
// Pop up configuration dialog in case for example the executable is missing.
diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp
index dc28a7c7be..2417c3e7b6 100644
--- a/src/plugins/pythoneditor/pythoneditorplugin.cpp
+++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp
@@ -234,7 +234,6 @@ public:
private:
void doAdditionalSetup(const RunConfigurationCreationInfo &) final { updateTargetInformation(); }
- void fillConfigurationLayout(QFormLayout *layout) const final;
Runnable runnable() const final;
bool supportsDebugger() const { return true; }
@@ -285,14 +284,6 @@ void PythonRunConfiguration::updateTargetInformation()
extraAspect<MainScriptAspect>()->setValue(script);
}
-void PythonRunConfiguration::fillConfigurationLayout(QFormLayout *layout) const
-{
- extraAspect<InterpreterAspect>()->addToConfigurationLayout(layout);
- extraAspect<MainScriptAspect>()->addToConfigurationLayout(layout);
- extraAspect<ArgumentsAspect>()->addToConfigurationLayout(layout);
- extraAspect<TerminalAspect>()->addToConfigurationLayout(layout);
-}
-
Runnable PythonRunConfiguration::runnable() const
{
Runnable r;
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
index 5af7bff215..104425d8d2 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
@@ -70,8 +70,8 @@ DesktopQmakeRunConfiguration::DesktopQmakeRunConfiguration(Target *target, Core:
addExtraAspect(new ExecutableAspect(this));
addExtraAspect(new ArgumentsAspect(this));
- addExtraAspect(new TerminalAspect(this));
addExtraAspect(new WorkingDirectoryAspect(this));
+ addExtraAspect(new TerminalAspect(this));
setOutputFormatter<QtSupport::QtOutputFormatter>();
diff --git a/src/plugins/qnx/qnxrunconfiguration.cpp b/src/plugins/qnx/qnxrunconfiguration.cpp
index 19d14cbbbe..8b546c6092 100644
--- a/src/plugins/qnx/qnxrunconfiguration.cpp
+++ b/src/plugins/qnx/qnxrunconfiguration.cpp
@@ -56,12 +56,6 @@ Runnable QnxRunConfiguration::runnable() const
return r;
}
-void QnxRunConfiguration::fillConfigurationLayout(QFormLayout *layout) const
-{
- RemoteLinuxRunConfiguration::fillConfigurationLayout(layout);
- extraAspect<QtLibPathAspect>()->addToConfigurationLayout(layout);
-}
-
// QnxRunConfigurationFactory
QnxRunConfigurationFactory::QnxRunConfigurationFactory()
diff --git a/src/plugins/qnx/qnxrunconfiguration.h b/src/plugins/qnx/qnxrunconfiguration.h
index 25849014a0..de0e96a7bd 100644
--- a/src/plugins/qnx/qnxrunconfiguration.h
+++ b/src/plugins/qnx/qnxrunconfiguration.h
@@ -48,7 +48,6 @@ public:
private:
ProjectExplorer::Runnable runnable() const override;
- void fillConfigurationLayout(QFormLayout *layout) const override;
};
class QnxRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory