diff options
author | hjk <hjk@qt.io> | 2018-09-04 08:38:44 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-09-04 11:02:49 +0000 |
commit | 25400751a4b4cd03758862b8365f57e8afed7985 (patch) | |
tree | cbca0d539027c09fc2cdbfd99672bb83085901e1 /src/plugins | |
parent | 760e6a9b13a666ba37edd981f9d752755a744b0d (diff) | |
download | qt-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')
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 |