From 58c326cb73872f25edc2ddf4d03d3050e89a1ae6 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 6 Apr 2016 15:29:39 +0200 Subject: [PATCH] CMake: Add a reset button to the CMake Configuration edit in Kits Add a reset button to the CMake configuration edit dialog that is available in the kits configuration panel. It restores the default value for the kit. Change-Id: I89921e2c86cbf8d9658a32fe5fa51dc2f903ff00 Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/cmakekitconfigwidget.cpp | 9 ++++++++- .../cmakeprojectmanager/cmakekitinformation.cpp | 15 +++++++++++---- .../cmakeprojectmanager/cmakekitinformation.h | 2 ++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp b/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp index e83f71fcdee..5810dc7b16b 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp @@ -344,13 +344,20 @@ void CMakeConfigurationKitConfigWidget::editConfigurationChanges() "separated from the variable value by \"=\".
" "You may provide a type hint by adding \":TYPE\" before the \"=\".")); - QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Apply|QDialogButtonBox::Cancel); + auto buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Apply + |QDialogButtonBox::Reset|QDialogButtonBox::Cancel); layout->addWidget(m_editor); layout->addWidget(buttons); connect(buttons, &QDialogButtonBox::accepted, m_dialog, &QDialog::accept); connect(buttons, &QDialogButtonBox::rejected, m_dialog, &QDialog::reject); + connect(buttons, &QDialogButtonBox::clicked, m_dialog, [buttons, this](QAbstractButton *button) { + if (button != buttons->button(QDialogButtonBox::Reset)) + return; + CMakeConfigurationKitInformation::setConfiguration(kit(), + CMakeConfigurationKitInformation::defaultConfiguration(kit())); + }); connect(m_dialog, &QDialog::accepted, this, &CMakeConfigurationKitConfigWidget::acceptChangesDialog); connect(m_dialog, &QDialog::rejected, this, &CMakeConfigurationKitConfigWidget::closeChangesDialog); connect(buttons->button(QDialogButtonBox::Apply), &QAbstractButton::clicked, diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index 5a8440a1b8b..d165c837300 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -314,15 +314,22 @@ void CMakeConfigurationKitInformation::fromStringList(Kit *k, const QStringList setConfiguration(k, result); } +CMakeConfig CMakeConfigurationKitInformation::defaultConfiguration(const Kit *k) +{ + Q_UNUSED(k); + CMakeConfig config; + config << CMakeConfigItem(CMAKE_QMAKE_KEY, "%{Qt:qmakeExecutable}"); + config << CMakeConfigItem(CMAKE_TOOLCHAIN_KEY, "%{Compiler:Executable}"); + + return config; +} + QVariant CMakeConfigurationKitInformation::defaultValue(const Kit *k) const { Q_UNUSED(k); // FIXME: Convert preload scripts - CMakeConfig config; - config << CMakeConfigItem(CMAKE_QMAKE_KEY, "%{Qt:qmakeExecutable}"); - config << CMakeConfigItem(CMAKE_TOOLCHAIN_KEY, "%{Compiler:Executable}"); - + CMakeConfig config = defaultConfiguration(k); const QStringList tmp = Utils::transform(config, [](const CMakeConfigItem &i) { return i.toString(); }); return tmp; diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.h b/src/plugins/cmakeprojectmanager/cmakekitinformation.h index 9a008d134f5..ede702dc6fd 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.h +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.h @@ -84,6 +84,8 @@ public: static QStringList toStringList(const ProjectExplorer::Kit *k); static void fromStringList(ProjectExplorer::Kit *k, const QStringList &in); + static CMakeConfig defaultConfiguration(const ProjectExplorer::Kit *k); + // KitInformation interface QVariant defaultValue(const ProjectExplorer::Kit *k) const override; QList validate(const ProjectExplorer::Kit *k) const override;