diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index df6bee13842..440495cb4c6 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -43,6 +43,7 @@ #include #include +#include #include #include #include @@ -123,8 +124,23 @@ void BuildConfiguration::setBuildDirectory(const Utils::FileName &dir) NamedWidget *BuildConfiguration::createConfigWidget() { - auto widget = new NamedWidget; - widget->setDisplayName(m_configWidgetDisplayName); + NamedWidget *named = new NamedWidget; + named->setDisplayName(m_configWidgetDisplayName); + + QWidget *widget = nullptr; + + if (m_configWidgetHasFrame) { + auto container = new Utils::DetailsWidget(named); + widget = new QWidget(container); + container->setState(Utils::DetailsWidget::NoSummary); + container->setWidget(widget); + + auto vbox = new QVBoxLayout(named); + vbox->setMargin(0); + vbox->addWidget(container); + } else { + widget = named; + } auto formLayout = new QFormLayout(widget); formLayout->setMargin(0); @@ -135,7 +151,7 @@ NamedWidget *BuildConfiguration::createConfigWidget() aspect->addToConfigurationLayout(formLayout); } - return widget; + return named; } void BuildConfiguration::initialize(const BuildInfo &info) @@ -242,6 +258,11 @@ void BuildConfiguration::setBuildDirectoryHistoryCompleter(const QString &histor m_buildDirectoryAspect->setHistoryCompleter(history); } +void BuildConfiguration::setConfigWidgetHasFrame(bool configWidgetHasFrame) +{ + m_configWidgetHasFrame = configWidgetHasFrame; +} + Target *BuildConfiguration::target() const { return static_cast(parent()); diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 7739cd5304f..8e087d42079 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -102,6 +102,7 @@ public: ProjectExplorer::BaseStringAspect *buildDirectoryAspect() const; void setConfigWidgetDisplayName(const QString &display); void setBuildDirectoryHistoryCompleter(const QString &history); + void setConfigWidgetHasFrame(bool configWidgetHasFrame); signals: void environmentChanged(); @@ -122,6 +123,7 @@ private: Utils::FileName m_lastEmmitedBuildDirectory; mutable Utils::Environment m_cachedEnvironment; QString m_configWidgetDisplayName; + bool m_configWidgetHasFrame = false; }; class PROJECTEXPLORER_EXPORT BuildConfigurationFactory : public QObject diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index ec2f1319f8c..faa0c8b7bd9 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -25,7 +25,6 @@ #include "qbsbuildconfiguration.h" -#include "qbsbuildconfigurationwidget.h" #include "qbsbuildstep.h" #include "qbscleanstep.h" #include "qbsinstallstep.h" @@ -34,7 +33,6 @@ #include "qbsprojectmanagersettings.h" #include -#include #include #include @@ -54,7 +52,6 @@ #include #include -#include using namespace ProjectExplorer; using namespace Utils; @@ -62,8 +59,6 @@ using namespace Utils; namespace QbsProjectManager { namespace Internal { -static QString configNameKey() { return QStringLiteral("Qbs.configName"); } - static FileName defaultBuildDirectory(const QString &projectFilePath, const Kit *k, const QString &bcName, BuildConfiguration::BuildType buildType) @@ -82,6 +77,15 @@ static FileName defaultBuildDirectory(const QString &projectFilePath, const Kit QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id) : BuildConfiguration(target, id) { + setConfigWidgetHasFrame(true); + + m_configurationName = addAspect(); + m_configurationName->setLabelText(tr("Configuration name:")); + m_configurationName->setSettingsKey("Qbs.configName"); + m_configurationName->setDisplayStyle(BaseStringAspect::LineEditDisplay); + connect(m_configurationName, &BaseStringAspect::changed, + this, &BuildConfiguration::buildDirectoryChanged); + connect(project(), &Project::parsingStarted, this, &BuildConfiguration::enabledChanged); connect(project(), &Project::parsingFinished, this, &BuildConfiguration::enabledChanged); } @@ -109,7 +113,8 @@ void QbsBuildConfiguration::initialize(const BuildInfo &info) configName = "qtc_" + target()->kit()->fileSystemFriendlyName() + '_' + Utils::FileUtils::fileSystemFriendlyName(info.displayName); } - setConfigurationName(configName); + + m_configurationName->setValue(configName); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); auto bs = new QbsBuildStep(buildSteps); @@ -130,12 +135,11 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map) if (!BuildConfiguration::fromMap(map)) return false; - m_configurationName = map.value(configNameKey()).toString(); - if (m_configurationName.isEmpty()) { // pre-4.4 backwards compatibility + if (m_configurationName->value().isEmpty()) { // pre-4.4 backwards compatibility const QString profileName = QbsManager::profileForKit(target()->kit()); const QString buildVariant = qbsConfiguration() .value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); - m_configurationName = profileName + QLatin1Char('-') + buildVariant; + m_configurationName->setValue(profileName + '-' + buildVariant); } BuildStepList *bsl = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); // Fix up the existing build steps: @@ -148,18 +152,6 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map) return true; } -QVariantMap QbsBuildConfiguration::toMap() const -{ - QVariantMap map = BuildConfiguration::toMap(); - map.insert(configNameKey(), m_configurationName); - return map; -} - -NamedWidget *QbsBuildConfiguration::createConfigWidget() -{ - return new QbsBuildConfigurationWidget(this); -} - QbsBuildStep *QbsBuildConfiguration::qbsStep() const { return stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)->firstOfType(); @@ -241,17 +233,9 @@ void QbsBuildConfiguration::emitBuildTypeChanged() emit buildTypeChanged(); } -void QbsBuildConfiguration::setConfigurationName(const QString &configName) -{ - if (m_configurationName == configName) - return; - m_configurationName = configName; - emit buildDirectoryChanged(); -} - QString QbsBuildConfiguration::configurationName() const { - return m_configurationName; + return m_configurationName->value(); } class StepProxy diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index 1db60592522..27e986600db 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -37,7 +37,6 @@ namespace ProjectExplorer { class BuildStep; } namespace QbsProjectManager { namespace Internal { -class QbsBuildConfigurationWidget; class QbsBuildStep; class QbsProject; @@ -50,7 +49,6 @@ class QbsBuildConfiguration : public ProjectExplorer::BuildConfiguration public: void initialize(const ProjectExplorer::BuildInfo &info) override; - ProjectExplorer::NamedWidget *createConfigWidget() override; QbsBuildStep *qbsStep() const; QVariantMap qbsConfiguration() const; @@ -73,7 +71,6 @@ public: void emitBuildTypeChanged(); - void setConfigurationName(const QString &configName); QString configurationName() const; QString equivalentCommandLine(const ProjectExplorer::BuildStep *buildStep) const; @@ -83,16 +80,13 @@ signals: private: bool fromMap(const QVariantMap &map) override; - QVariantMap toMap() const override; bool m_isParsing = true; bool m_parsingError = false; QStringList m_changedFiles; QStringList m_activeFileTags; QStringList m_products; - QString m_configurationName; - - friend class QbsBuildConfigurationWidget; + ProjectExplorer::BaseStringAspect *m_configurationName; }; class QbsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp deleted file mode 100644 index 057280a21a8..00000000000 --- a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "qbsbuildconfigurationwidget.h" - -#include "qbsbuildconfiguration.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace QbsProjectManager { -namespace Internal { - -QbsBuildConfigurationWidget::QbsBuildConfigurationWidget(QbsProjectManager::Internal::QbsBuildConfiguration *bc) : - m_buildConfiguration(bc), - m_ignoreChange(false) -{ - connect(bc, &ProjectExplorer::BuildConfiguration::buildDirectoryChanged, - this, &QbsBuildConfigurationWidget::buildDirectoryChanged); - connect(bc, &ProjectExplorer::BuildConfiguration::environmentChanged, - this, &QbsBuildConfigurationWidget::environmentHasChanged); - - auto vbox = new QVBoxLayout(this); - vbox->setMargin(0); - auto container = new Utils::DetailsWidget(this); - container->setState(Utils::DetailsWidget::NoSummary); - vbox->addWidget(container); - - QWidget *details = new QWidget(container); - container->setWidget(details); - - auto layout = new QGridLayout(details); - layout->setMargin(0); - layout->addWidget(new QLabel(tr("Build directory:")), 0, 0); - - m_buildDirChooser = new Utils::PathChooser; - m_buildDirChooser->setExpectedKind(Utils::PathChooser::Directory); - m_buildDirChooser->setBaseFileName(bc->target()->project()->projectDirectory()); - m_buildDirChooser->setEnvironment(bc->environment()); - layout->addWidget(m_buildDirChooser, 0, 1); - layout->addWidget(new QLabel(tr("Configuration name:")), 1, 0); - m_configNameEdit = new QLineEdit; - m_configNameEdit->setText(m_buildConfiguration->configurationName()); - layout->addWidget(m_configNameEdit, 1, 1); - - connect(m_buildDirChooser, &Utils::PathChooser::rawPathChanged, - this, &QbsBuildConfigurationWidget::buildDirEdited); - connect(m_configNameEdit, &QLineEdit::textEdited, - this, &QbsBuildConfigurationWidget::configNameEdited); - - buildDirectoryChanged(); -} - -void QbsBuildConfigurationWidget::buildDirEdited() -{ - m_ignoreChange = true; - m_buildConfiguration->setBuildDirectory(m_buildDirChooser->fileName()); -} - -void QbsBuildConfigurationWidget::configNameEdited() -{ - m_ignoreChange = true; - m_buildConfiguration->setConfigurationName(m_configNameEdit->text()); -} - -void QbsBuildConfigurationWidget::buildDirectoryChanged() -{ - if (m_ignoreChange) - return; - - m_buildDirChooser->setPath(m_buildConfiguration->rawBuildDirectory().toString()); -} - -void QbsBuildConfigurationWidget::environmentHasChanged() -{ - m_buildDirChooser->setEnvironment(m_buildConfiguration->environment()); -} - -} // namespace Internal -} // namespace QbsProjectManager diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h b/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h deleted file mode 100644 index 48ffaa5fcc1..00000000000 --- a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include - -namespace Utils { -class DetailsWidget; -class PathChooser; -} // namespace Utils - -QT_BEGIN_NAMESPACE -class QLineEdit; -QT_END_NAMESPACE - -namespace QbsProjectManager { -namespace Internal { -class QbsBuildConfiguration; - -class QbsBuildConfigurationWidget : public ProjectExplorer::NamedWidget -{ - Q_OBJECT - -public: - QbsBuildConfigurationWidget(Internal::QbsBuildConfiguration *bc); - -private: - void buildDirEdited(); - void configNameEdited(); - - // Changes triggered from creator - void buildDirectoryChanged(); - void environmentHasChanged(); - -private: - Internal::QbsBuildConfiguration *m_buildConfiguration; - Utils::PathChooser *m_buildDirChooser; - QLineEdit *m_configNameEdit; - bool m_ignoreChange; -}; - -} // namespace Internal -} // namespace QbsProjectManager diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro index bef7cd2a059..831422f2621 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro +++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro @@ -20,7 +20,6 @@ HEADERS = \ defaultpropertyprovider.h \ propertyprovider.h \ qbsbuildconfiguration.h \ - qbsbuildconfigurationwidget.h \ qbsbuildstep.h \ qbscleanstep.h \ qbskitinformation.h \ @@ -45,7 +44,6 @@ SOURCES = \ customqbspropertiesdialog.cpp \ defaultpropertyprovider.cpp \ qbsbuildconfiguration.cpp \ - qbsbuildconfigurationwidget.cpp \ qbsbuildstep.cpp \ qbscleanstep.cpp \ qbsinstallstep.cpp \ diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs b/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs index 45e5d1f3a4c..1ef3f1b63bc 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs +++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs @@ -66,8 +66,6 @@ QtcPlugin { "propertyprovider.h", "qbsbuildconfiguration.cpp", "qbsbuildconfiguration.h", - "qbsbuildconfigurationwidget.cpp", - "qbsbuildconfigurationwidget.h", "qbsbuildstep.cpp", "qbsbuildstep.h", "qbsbuildstepconfigwidget.ui",