summaryrefslogtreecommitdiff
path: root/src/plugins/cmakeprojectmanager
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2022-12-12 20:02:01 +0100
committerCristian Adam <cristian.adam@qt.io>2023-01-05 14:37:50 +0000
commit2f39b51bdc1f73e2d87cc641a8501fd04ee76b4f (patch)
tree8d89b1372574dfb50699a556095669c1f7dba8e3 /src/plugins/cmakeprojectmanager
parent2a2455a6fa610944cb19a5cca78137b264e4d25f (diff)
downloadqt-creator-2f39b51bdc1f73e2d87cc641a8501fd04ee76b4f.tar.gz
CMakePM: Make "Autorun CMake" a global setting
The "Autorun CMake" is only visible in the Tools settings page when the user clicks on CMake tool. This is not very visible and it doesn't have to be per CMake version. Change-Id: I57ded0b2e6a3ecb731bb8bc1495b6b61bc04c8b6 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakesettingspage.cpp22
-rw-r--r--src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp8
-rw-r--r--src/plugins/cmakeprojectmanager/cmakespecificsettings.h1
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketool.cpp9
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketool.h2
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp10
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.cpp5
8 files changed, 28 insertions, 33 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
index b26c8acc7e..0f7665242f 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
@@ -832,8 +832,8 @@ void CMakeBuildSystem::wireUpConnections()
connect(project(), &Project::projectFileIsDirty, this, [this] {
if (buildConfiguration()->isActive() && !isParsing()) {
- const auto cmake = CMakeKitAspect::cmakeTool(kit());
- if (cmake && cmake->isAutoRun()) {
+ auto settings = CMakeProjectPlugin::projectTypeSpecificSettings();
+ if (settings->autorunCMake.value()) {
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to dirty project file";
reparse(CMakeBuildSystem::REPARSE_FORCE_CMAKE_RUN);
}
diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
index 4e9bb6a24a..317e4c10f3 100644
--- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
@@ -58,8 +58,7 @@ public:
void updateCMakeTool(const Utils::Id &id,
const QString &displayName,
const FilePath &executable,
- const FilePath &qchFile,
- bool autoRun);
+ const FilePath &qchFile);
void removeCMakeTool(const Utils::Id &id);
void apply();
@@ -82,7 +81,6 @@ public:
, m_qchFile(item->qchFilePath())
, m_versionDisplay(item->versionDisplay())
, m_detectionSource(item->detectionSource())
- , m_isAutoRun(item->isAutoRun())
, m_autodetected(item->isAutoDetected())
, m_isSupported(item->hasFileApi())
, m_changed(changed)
@@ -280,8 +278,7 @@ void CMakeToolItemModel::reevaluateChangedFlag(CMakeToolTreeItem *item) const
void CMakeToolItemModel::updateCMakeTool(const Id &id,
const QString &displayName,
const FilePath &executable,
- const FilePath &qchFile,
- bool autoRun)
+ const FilePath &qchFile)
{
CMakeToolTreeItem *treeItem = cmakeToolItem(id);
QTC_ASSERT(treeItem, return );
@@ -289,7 +286,6 @@ void CMakeToolItemModel::updateCMakeTool(const Id &id,
treeItem->m_name = displayName;
treeItem->m_executable = executable;
treeItem->m_qchFile = qchFile;
- treeItem->m_isAutoRun = autoRun;
treeItem->updateErrorFlags();
@@ -331,7 +327,6 @@ void CMakeToolItemModel::apply()
cmake->setFilePath(item->m_executable);
cmake->setQchFilePath(item->m_qchFile);
cmake->setDetectionSource(item->m_detectionSource);
- cmake->setAutorun(item->m_isAutoRun);
} else {
toRegister.append(item);
}
@@ -399,7 +394,6 @@ private:
CMakeToolItemModel *m_model;
QLineEdit *m_displayNameLineEdit;
- QCheckBox *m_autoRunCheckBox;
PathChooser *m_binaryChooser;
PathChooser *m_qchFileChooser;
QLabel *m_versionLabel;
@@ -428,24 +422,17 @@ CMakeToolItemConfigWidget::CMakeToolItemConfigWidget(CMakeToolItemModel *model)
m_versionLabel = new QLabel(this);
- m_autoRunCheckBox = new QCheckBox;
- m_autoRunCheckBox->setText(Tr::tr("Autorun CMake"));
- m_autoRunCheckBox->setToolTip(Tr::tr("Automatically run CMake after changes to CMake project files."));
-
auto formLayout = new QFormLayout(this);
formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
formLayout->addRow(new QLabel(Tr::tr("Name:")), m_displayNameLineEdit);
formLayout->addRow(new QLabel(Tr::tr("Path:")), m_binaryChooser);
formLayout->addRow(new QLabel(Tr::tr("Version:")), m_versionLabel);
formLayout->addRow(new QLabel(Tr::tr("Help file:")), m_qchFileChooser);
- formLayout->addRow(m_autoRunCheckBox);
connect(m_binaryChooser, &PathChooser::browsingFinished, this, &CMakeToolItemConfigWidget::onBinaryPathEditingFinished);
connect(m_binaryChooser, &PathChooser::editingFinished, this, &CMakeToolItemConfigWidget::onBinaryPathEditingFinished);
connect(m_qchFileChooser, &PathChooser::rawPathChanged, this, &CMakeToolItemConfigWidget::store);
connect(m_displayNameLineEdit, &QLineEdit::textChanged, this, &CMakeToolItemConfigWidget::store);
- connect(m_autoRunCheckBox, &QCheckBox::toggled,
- this, &CMakeToolItemConfigWidget::store);
}
void CMakeToolItemConfigWidget::store() const
@@ -454,8 +441,7 @@ void CMakeToolItemConfigWidget::store() const
m_model->updateCMakeTool(m_id,
m_displayNameLineEdit->text(),
m_binaryChooser->filePath(),
- m_qchFileChooser->filePath(),
- m_autoRunCheckBox->checkState() == Qt::Checked);
+ m_qchFileChooser->filePath());
}
void CMakeToolItemConfigWidget::onBinaryPathEditingFinished()
@@ -493,8 +479,6 @@ void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item)
m_versionLabel->setText(item->m_versionDisplay);
- m_autoRunCheckBox->setChecked(item->m_isAutoRun);
-
m_id = item->m_id;
m_loadingItem = false;
}
diff --git a/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp b/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp
index 8f4cadb40c..071588ed4a 100644
--- a/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp
@@ -23,6 +23,13 @@ CMakeSpecificSettings::CMakeSpecificSettings()
setSettingsGroup("CMakeSpecificSettings");
setAutoApply(false);
+ registerAspect(&autorunCMake);
+ autorunCMake.setSettingsKey("AutorunCMake");
+ autorunCMake.setDefaultValue(true);
+ autorunCMake.setLabelText(::CMakeProjectManager::Tr::tr("Autorun CMake"));
+ autorunCMake.setToolTip(::CMakeProjectManager::Tr::tr(
+ "Automatically run CMake after changes to CMake project files."));
+
registerAspect(&afterAddFileSetting);
afterAddFileSetting.setSettingsKey("ProjectPopupSetting");
afterAddFileSetting.setDefaultValue(AfterAddFileAction::AskUser);
@@ -85,6 +92,7 @@ CMakeSpecificSettingsPage::CMakeSpecificSettingsPage(CMakeSpecificSettings *sett
title(::CMakeProjectManager::Tr::tr("Adding Files")),
Column { s.afterAddFileSetting }
},
+ s.autorunCMake,
s.packageManagerAutoSetup,
s.askBeforeReConfigureInitialParams,
s.showSourceSubFolders,
diff --git a/src/plugins/cmakeprojectmanager/cmakespecificsettings.h b/src/plugins/cmakeprojectmanager/cmakespecificsettings.h
index 7b6b34e90f..f014a867ac 100644
--- a/src/plugins/cmakeprojectmanager/cmakespecificsettings.h
+++ b/src/plugins/cmakeprojectmanager/cmakespecificsettings.h
@@ -20,6 +20,7 @@ class CMakeSpecificSettings final : public Utils::AspectContainer
public:
CMakeSpecificSettings();
+ Utils::BoolAspect autorunCMake;
Utils::SelectionAspect afterAddFileSetting;
Utils::StringAspect ninjaPath;
Utils::BoolAspect packageManagerAutoSetup;
diff --git a/src/plugins/cmakeprojectmanager/cmaketool.cpp b/src/plugins/cmakeprojectmanager/cmaketool.cpp
index 0af885ac17..0f4d6f6f00 100644
--- a/src/plugins/cmakeprojectmanager/cmaketool.cpp
+++ b/src/plugins/cmakeprojectmanager/cmaketool.cpp
@@ -151,15 +151,6 @@ FilePath CMakeTool::filePath() const
return m_executable;
}
-void CMakeTool::setAutorun(bool autoRun)
-{
- if (m_isAutoRun == autoRun)
- return;
-
- m_isAutoRun = autoRun;
- CMakeToolManager::notifyAboutUpdate(this);
-}
-
bool CMakeTool::isValid() const
{
if (!m_id.isValid() || !m_introspection)
diff --git a/src/plugins/cmakeprojectmanager/cmaketool.h b/src/plugins/cmakeprojectmanager/cmaketool.h
index 94e122d204..75c1c05aa6 100644
--- a/src/plugins/cmakeprojectmanager/cmaketool.h
+++ b/src/plugins/cmakeprojectmanager/cmaketool.h
@@ -61,8 +61,6 @@ public:
Utils::Id id() const { return m_id; }
QVariantMap toMap () const;
- void setAutorun(bool autoRun);
-
void setFilePath(const Utils::FilePath &executable);
Utils::FilePath filePath() const;
Utils::FilePath cmakeExecutable() const;
diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp
index 301d20dea2..4d3fbeb2f6 100644
--- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp
@@ -4,6 +4,8 @@
#include "cmaketoolmanager.h"
#include "cmakeprojectmanagertr.h"
+#include "cmakeprojectplugin.h"
+#include "cmakespecificsettings.h"
#include "cmaketoolsettingsaccessor.h"
#include <extensionsystem/pluginmanager.h>
@@ -138,6 +140,14 @@ void CMakeToolManager::restoreCMakeTools()
updateDocumentation();
emit m_instance->cmakeToolsLoaded();
+
+ // Store the default CMake tool "Autorun CMake" value globally
+ auto settings = Internal::CMakeProjectPlugin::projectTypeSpecificSettings();
+ if (settings->autorunCMake.value() == settings->autorunCMake.defaultValue()) {
+ CMakeTool *cmake = defaultCMakeTool();
+ settings->autorunCMake.setValue(cmake ? cmake->isAutoRun() : true);
+ settings->writeSettings(Core::ICore::settings());
+ }
}
void CMakeToolManager::updateDocumentation()
diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp
index 9ddd15b5b8..38c7995134 100644
--- a/src/plugins/cmakeprojectmanager/fileapireader.cpp
+++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp
@@ -5,6 +5,8 @@
#include "cmakeprocess.h"
#include "cmakeprojectmanagertr.h"
+#include "cmakeprojectplugin.h"
+#include "cmakespecificsettings.h"
#include "fileapidataextractor.h"
#include "fileapiparser.h"
@@ -106,7 +108,8 @@ void FileApiReader::parse(bool forceCMakeRun,
// * A query file is newer than the reply file
const bool hasArguments = !args.isEmpty();
const bool replyFileMissing = !replyFile.exists();
- const bool cmakeFilesChanged = m_parameters.cmakeTool() && m_parameters.cmakeTool()->isAutoRun()
+ const auto settings = CMakeProjectPlugin::projectTypeSpecificSettings();
+ const bool cmakeFilesChanged = m_parameters.cmakeTool() && settings->autorunCMake.value()
&& anyOf(m_cmakeFiles, [&replyFile](const CMakeFileInfo &info) {
return !info.isGenerated
&& info.path.lastModified() > replyFile.lastModified();