diff options
author | hjk <hjk@qt.io> | 2020-09-08 14:53:15 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-09-09 06:50:17 +0000 |
commit | 4964d0bf81029a5d1b9f48c2a24b3fb23ae4b4aa (patch) | |
tree | 0c997a05899bf241a8d3726d3f0eccef8d81400f /src/plugins/cmakeprojectmanager | |
parent | 61bfd3243809b6a5e6cc77f49d96565dfb2d383e (diff) |
CMake: Use StringAspect for cmake arguments
Change-Id: I18e9af5f630a2b0a11a427848368c9f980819717
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildstep.cpp | 85 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildstep.h | 15 |
2 files changed, 32 insertions, 68 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index f394f8ff16a..0613772d4f0 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -44,8 +44,6 @@ #include <utils/algorithm.h> #include <QBoxLayout> -#include <QFormLayout> -#include <QLineEdit> #include <QListWidget> #include <QRegularExpression> @@ -117,15 +115,11 @@ public: private: void itemsChanged(); - void cmakeArgumentsEdited(); - void toolArgumentsEdited(); void updateDetails(); void buildTargetsChanged(); void updateBuildTargets(); CMakeBuildStep *m_buildStep; - QLineEdit *m_cmakeArguments; - QLineEdit *m_toolArguments; QListWidget *m_buildTargetsList; }; @@ -140,6 +134,16 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Utils::Id id) : //: Default display name for the cmake make step. setDefaultDisplayName(tr("CMake Build")); + m_cmakeArguments = addAspect<StringAspect>(); + m_cmakeArguments->setSettingsKey(CMAKE_ARGUMENTS_KEY); + m_cmakeArguments->setLabelText(tr("CMake arguments:")); + m_cmakeArguments->setDisplayStyle(StringAspect::LineEditDisplay); + + m_toolArguments = addAspect<StringAspect>(); + m_toolArguments->setSettingsKey(TOOL_ARGUMENTS_KEY); + m_toolArguments->setLabelText(tr("Tool arguments:")); + m_toolArguments->setDisplayStyle(StringAspect::LineEditDisplay); + // Set a good default build target: if (m_buildTargets.isEmpty()) setBuildTargets({defaultBuildTarget()}); @@ -182,16 +186,12 @@ QVariantMap CMakeBuildStep::toMap() const QVariantMap map(AbstractProcessStep::toMap()); // Use QStringList for compatibility with old files map.insert(BUILD_TARGETS_KEY, QStringList(m_buildTargets)); - map.insert(CMAKE_ARGUMENTS_KEY, m_cmakeArguments); - map.insert(TOOL_ARGUMENTS_KEY, m_toolArguments); return map; } bool CMakeBuildStep::fromMap(const QVariantMap &map) { m_buildTargets = map.value(BUILD_TARGETS_KEY).toStringList(); - m_cmakeArguments = map.value(CMAKE_ARGUMENTS_KEY).toString(); - m_toolArguments = map.value(TOOL_ARGUMENTS_KEY).toString(); if (map.value(ADD_RUNCONFIGURATION_ARGUMENT_KEY, false).toBool()) m_buildTargets = QStringList(ADD_RUNCONFIGURATION_TEXT); @@ -348,26 +348,6 @@ void CMakeBuildStep::setBuildTargets(const QStringList &buildTargets) emit targetsToBuildChanged(); } -QString CMakeBuildStep::cmakeArguments() const -{ - return m_cmakeArguments; -} - -void CMakeBuildStep::setCMakeArguments(const QString &list) -{ - m_cmakeArguments = list; -} - -QString CMakeBuildStep::toolArguments() const -{ - return m_toolArguments; -} - -void CMakeBuildStep::setToolArguments(const QString &list) -{ - m_toolArguments = list; -} - Utils::CommandLine CMakeBuildStep::cmakeCommand(RunConfiguration *rc) const { CMakeTool *tool = CMakeKitAspect::cmakeTool(kit()); @@ -392,12 +372,12 @@ Utils::CommandLine CMakeBuildStep::cmakeCommand(RunConfiguration *rc) const return target; })); - if (!m_cmakeArguments.isEmpty()) - cmd.addArgs(m_cmakeArguments, Utils::CommandLine::Raw); + if (!m_cmakeArguments->value().isEmpty()) + cmd.addArgs(m_cmakeArguments->value(), CommandLine::Raw); - if (!m_toolArguments.isEmpty()) { + if (!m_toolArguments->value().isEmpty()) { cmd.addArg("--"); - cmd.addArgs(m_toolArguments, Utils::CommandLine::Raw); + cmd.addArgs(m_toolArguments->value(), CommandLine::Raw); } return cmd; @@ -441,21 +421,13 @@ QStringList CMakeBuildStep::specialTargets() CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep) : BuildStepConfigWidget(buildStep) , m_buildStep(buildStep) - , m_cmakeArguments(new QLineEdit) - , m_toolArguments(new QLineEdit) , m_buildTargetsList(new QListWidget) { setDisplayName(tr("Build", "CMakeProjectManager::CMakeBuildStepConfigWidget display name.")); - auto fl = new QFormLayout(this); - fl->setContentsMargins(0, 0, 0, 0); - fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); - setLayout(fl); - - fl->addRow(tr("CMake arguments:"), m_cmakeArguments); - m_cmakeArguments->setText(m_buildStep->cmakeArguments()); - fl->addRow(tr("Tool arguments:"), m_toolArguments); - m_toolArguments->setText(m_buildStep->toolArguments()); + LayoutBuilder builder(this); + builder.addRow(buildStep->m_cmakeArguments); + builder.addRow(buildStep->m_toolArguments); m_buildTargetsList->setFrameStyle(QFrame::NoFrame); m_buildTargetsList->setMinimumHeight(200); @@ -467,14 +439,18 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep frameLayout->addWidget(Core::ItemViewFind::createSearchableWrapper(m_buildTargetsList, Core::ItemViewFind::LightColored)); - fl->addRow(tr("Targets:"), frame); + builder.startNewRow().addItems(tr("Targets:"), frame); buildTargetsChanged(); updateDetails(); - connect(m_cmakeArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::cmakeArgumentsEdited); - connect(m_toolArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::toolArgumentsEdited); - connect(m_buildTargetsList, &QListWidget::itemChanged, this, &CMakeBuildStepConfigWidget::itemsChanged); + connect(buildStep->m_cmakeArguments, &StringAspect::changed, + this, &CMakeBuildStepConfigWidget::updateDetails); + connect(buildStep->m_toolArguments, &StringAspect::changed, + this, &CMakeBuildStepConfigWidget::updateDetails); + + connect(m_buildTargetsList, &QListWidget::itemChanged, + this, &CMakeBuildStepConfigWidget::itemsChanged); connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged, this, &CMakeBuildStepConfigWidget::updateDetails); @@ -494,17 +470,6 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep &CMakeBuildStepConfigWidget::updateDetails); } -void CMakeBuildStepConfigWidget::cmakeArgumentsEdited() { - m_buildStep->setCMakeArguments(m_cmakeArguments->text()); - updateDetails(); -} - -void CMakeBuildStepConfigWidget::toolArgumentsEdited() -{ - m_buildStep->setToolArguments(m_toolArguments->text()); - updateDetails(); -} - void CMakeBuildStepConfigWidget::itemsChanged() { const QList<QListWidgetItem *> items = [this]() { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h index 960fc7b7264..7f220deb8f2 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h @@ -31,7 +31,10 @@ namespace Utils { class CommandLine; } -namespace ProjectExplorer { class RunConfiguration; } +namespace ProjectExplorer { +class RunConfiguration; +class StringAspect; +} // ProjectExplorer namespace CMakeProjectManager { namespace Internal { @@ -53,11 +56,6 @@ public: bool buildsBuildTarget(const QString &target) const; void setBuildTargets(const QStringList &target); - QString cmakeArguments() const; - void setCMakeArguments(const QString &list); - QString toolArguments() const; - void setToolArguments(const QString &list); - Utils::CommandLine cmakeCommand(ProjectExplorer::RunConfiguration *rc) const; QStringList knownBuildTargets(); @@ -96,9 +94,10 @@ private: QMetaObject::Connection m_runTrigger; + friend class CMakeBuildStepConfigWidget; QStringList m_buildTargets; - QString m_cmakeArguments; - QString m_toolArguments; + ProjectExplorer::StringAspect *m_cmakeArguments = nullptr; + ProjectExplorer::StringAspect *m_toolArguments = nullptr; bool m_waiting = false; }; |