diff options
author | hjk <hjk@qt.io> | 2023-07-17 16:38:40 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-07-21 11:57:40 +0000 |
commit | 273939afce0f7786284418473d182ddb9dde9b5c (patch) | |
tree | cd574f20ffb6c1eb335f2e70d927afe3301fcd53 | |
parent | fa9601990ba770677a2ea769ecd64fa5c8b4e35b (diff) |
ProjectExplorer: Access default build properties more directly
Change-Id: I2c80e68028971e8b6fd10ef8fba6cf23834e02de
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/plugins/projectexplorer/buildaspects.cpp | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildconfiguration.cpp | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildpropertiessettings.cpp | 52 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildpropertiessettings.h | 9 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 30 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.h | 7 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp | 19 | ||||
-rw-r--r-- | src/plugins/qtsupport/qtbuildaspects.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qtsupport/qtsupportplugin.cpp | 5 |
9 files changed, 58 insertions, 74 deletions
diff --git a/src/plugins/projectexplorer/buildaspects.cpp b/src/plugins/projectexplorer/buildaspects.cpp index 74650f49c1..fd7d3f7ae9 100644 --- a/src/plugins/projectexplorer/buildaspects.cpp +++ b/src/plugins/projectexplorer/buildaspects.cpp @@ -8,7 +8,6 @@ #include "devicesupport/idevice.h" #include "kitinformation.h" #include "projectexplorerconstants.h" -#include "projectexplorer.h" #include "projectexplorertr.h" #include "target.h" @@ -168,7 +167,7 @@ SeparateDebugInfoAspect::SeparateDebugInfoAspect(AspectContainer *container) { setDisplayName(Tr::tr("Separate debug info:")); setSettingsKey("SeparateDebugInfo"); - setValue(ProjectExplorerPlugin::buildPropertiesSettings().separateDebugInfo()); + setValue(buildPropertiesSettings().separateDebugInfo()); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 6fa9b19875..920985c66c 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -5,6 +5,7 @@ #include "buildaspects.h" #include "buildinfo.h" +#include "buildpropertiessettings.h" #include "buildsteplist.h" #include "buildstepspage.h" #include "buildsystem.h" @@ -621,7 +622,7 @@ FilePath BuildConfiguration::buildDirectoryFromTemplate(const FilePath &projectD [buildType] { return buildTypeName(buildType); }); exp.registerSubProvider([kit] { return kit->macroExpander(); }); - FilePath buildDir = FilePath::fromUserInput(ProjectExplorerPlugin::buildDirectoryTemplate()); + FilePath buildDir = FilePath::fromUserInput(buildPropertiesSettings().buildDirectoryTemplate()); qCDebug(bcLog) << "build dir template:" << buildDir.toUserOutput(); buildDir = exp.expand(buildDir); qCDebug(bcLog) << "expanded build:" << buildDir.toUserOutput(); diff --git a/src/plugins/projectexplorer/buildpropertiessettings.cpp b/src/plugins/projectexplorer/buildpropertiessettings.cpp index aed8c5a8ba..09c373befb 100644 --- a/src/plugins/projectexplorer/buildpropertiessettings.cpp +++ b/src/plugins/projectexplorer/buildpropertiessettings.cpp @@ -6,15 +6,24 @@ #include "projectexplorerconstants.h" #include "projectexplorertr.h" +#include <coreplugin/dialogs/ioptionspage.h> + #include <utils/layoutbuilder.h> using namespace Utils; namespace ProjectExplorer { -// Default directory: -const char DEFAULT_BUILD_DIRECTORY_TEMPLATE[] - = "../%{JS: Util.asciify(\"build-%{Project:Name}-%{Kit:FileSystemName}-%{BuildConfig:Name}\")}"; +static QString defaultBuildDirectoryTemplate() +{ + return "../%{JS: Util.asciify(\"build-%{Project:Name}-%{Kit:FileSystemName}-%{BuildConfig:Name}\")}"; +} + +BuildPropertiesSettings &buildPropertiesSettings() +{ + static BuildPropertiesSettings theSettings; + return theSettings; +} BuildPropertiesSettings::BuildTriStateAspect::BuildTriStateAspect(AspectContainer *container) : TriStateAspect(container, Tr::tr("Enable"), Tr::tr("Disable"), Tr::tr("Use Project Default")) @@ -24,11 +33,6 @@ BuildPropertiesSettings::BuildPropertiesSettings() { setAutoApply(false); - setId("AB.ProjectExplorer.BuildPropertiesSettingsPage"); - setDisplayName(Tr::tr("Default Build Properties")); - setCategory(ProjectExplorer::Constants::BUILD_AND_RUN_SETTINGS_CATEGORY); - setSettings(this); - setLayouter([this] { using namespace Layouting; @@ -45,7 +49,7 @@ BuildPropertiesSettings::BuildPropertiesSettings() buildDirectoryTemplate.setDisplayStyle(StringAspect::LineEditDisplay); buildDirectoryTemplate.setSettingsKey("Directories/BuildDirectory.TemplateV2"); - buildDirectoryTemplate.setDefaultValue(DEFAULT_BUILD_DIRECTORY_TEMPLATE); + buildDirectoryTemplate.setDefaultValue(defaultBuildDirectoryTemplate()); buildDirectoryTemplate.setLabelText(Tr::tr("Default build directory:")); buildDirectoryTemplate.setUseGlobalMacroExpander(); buildDirectoryTemplate.setUseResetButton(); @@ -55,21 +59,35 @@ BuildPropertiesSettings::BuildPropertiesSettings() qmlDebugging.setSettingsKey("ProjectExplorer/Settings/QmlDebugging"); qmlDebugging.setLabelText(Tr::tr("QML debugging:")); + qmlDebugging.setVisible(false); qtQuickCompiler.setSettingsKey("ProjectExplorer/Settings/QtQuickCompiler"); qtQuickCompiler.setLabelText(Tr::tr("Use qmlcachegen:")); + qtQuickCompiler.setVisible(false); - QObject::connect(&showQtSettings, &BaseAspect::changed, &qmlDebugging, [this] { - qmlDebugging.setVisible(showQtSettings()); - }); - QObject::connect(&showQtSettings, &BaseAspect::changed, &qtQuickCompiler, [this] { - qtQuickCompiler.setVisible(showQtSettings()); - }); + readSettings(); } -QString BuildPropertiesSettings::defaultBuildDirectoryTemplate() +void BuildPropertiesSettings::showQtSettings() { - return QString(DEFAULT_BUILD_DIRECTORY_TEMPLATE); + buildPropertiesSettings().qmlDebugging.setVisible(true); + buildPropertiesSettings().qtQuickCompiler.setVisible(true); } +// BuildPropertiesSettingsPage + +class BuildPropertiesSettingsPage final : public Core::IOptionsPage +{ +public: + BuildPropertiesSettingsPage() + { + setId("AB.ProjectExplorer.BuildPropertiesSettingsPage"); + setDisplayName(Tr::tr("Default Build Properties")); + setCategory(ProjectExplorer::Constants::BUILD_AND_RUN_SETTINGS_CATEGORY); + setSettingsProvider([] { return &buildPropertiesSettings(); }); + } +}; + +const BuildPropertiesSettingsPage settingsPage; + } // ProjectExplorer diff --git a/src/plugins/projectexplorer/buildpropertiessettings.h b/src/plugins/projectexplorer/buildpropertiessettings.h index 3b1b2b7c69..75061f3e28 100644 --- a/src/plugins/projectexplorer/buildpropertiessettings.h +++ b/src/plugins/projectexplorer/buildpropertiessettings.h @@ -5,11 +5,11 @@ #include "projectexplorer_export.h" -#include <coreplugin/dialogs/ioptionspage.h> +#include <utils/aspects.h> namespace ProjectExplorer { -class PROJECTEXPLORER_EXPORT BuildPropertiesSettings : public Core::PagedSettings +class PROJECTEXPLORER_EXPORT BuildPropertiesSettings : public Utils::AspectContainer { public: BuildPropertiesSettings(); @@ -24,9 +24,10 @@ public: BuildTriStateAspect separateDebugInfo{this}; BuildTriStateAspect qmlDebugging{this}; BuildTriStateAspect qtQuickCompiler{this}; - Utils::BoolAspect showQtSettings; - QString defaultBuildDirectoryTemplate(); + static void showQtSettings(); // Called by the Qt support plugin }; +PROJECTEXPLORER_EXPORT BuildPropertiesSettings &buildPropertiesSettings(); + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 773a44a647..111aec12aa 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -588,7 +588,6 @@ public: QString m_projectFilterString; MiniProjectTargetSelector * m_targetSelector; ProjectExplorerSettings m_projectExplorerSettings; - BuildPropertiesSettings m_buildPropertiesSettings; QList<CustomParserSettings> m_customParsers; bool m_shouldHaveRunConfiguration = false; Id m_runMode = Constants::NO_RUN_MODE; @@ -1681,8 +1680,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, defaultSettings.lowBuildPriority) .toBool(); - dd->m_buildPropertiesSettings.readSettings(); - const int customParserCount = s->value(Constants::CUSTOM_PARSER_COUNT_KEY).toInt(); for (int i = 0; i < customParserCount; ++i) { CustomParserSettings settings; @@ -2258,7 +2255,7 @@ void ProjectExplorerPluginPrivate::savePersistentSettings() int(dd->m_projectExplorerSettings.stopBeforeBuild), int(defaultSettings.stopBeforeBuild)); - dd->m_buildPropertiesSettings.writeSettings(); + buildPropertiesSettings().writeSettings(); // FIXME: Should not be needed. s->setValueWithDefault(Constants::CUSTOM_PARSER_COUNT_KEY, int(dd->m_customParsers.count()), 0); for (int i = 0; i < dd->m_customParsers.count(); ++i) { @@ -3927,16 +3924,6 @@ const AppOutputSettings &ProjectExplorerPlugin::appOutputSettings() return dd->m_outputPane.settings(); } -BuildPropertiesSettings &ProjectExplorerPlugin::buildPropertiesSettings() -{ - return dd->m_buildPropertiesSettings; -} - -void ProjectExplorerPlugin::showQtSettings() -{ - dd->m_buildPropertiesSettings.showQtSettings.setValue(true); -} - void ProjectExplorerPlugin::setCustomParsers(const QList<CustomParserSettings> &settings) { if (dd->m_customParsers != settings) { @@ -4000,21 +3987,6 @@ void ProjectExplorerPlugin::openOpenProjectDialog() ICore::openFiles(files, ICore::SwitchMode); } -/*! - Returns the current build directory template. - - \sa setBuildDirectoryTemplate -*/ -QString ProjectExplorerPlugin::buildDirectoryTemplate() -{ - return dd->m_buildPropertiesSettings.buildDirectoryTemplate.value(); -} - -QString ProjectExplorerPlugin::defaultBuildDirectoryTemplate() -{ - return dd->m_buildPropertiesSettings.defaultBuildDirectoryTemplate(); -} - void ProjectExplorerPlugin::updateActions() { dd->updateActions(); diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index c472094a98..8ba0b646f0 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -28,7 +28,6 @@ class ProcessHandle; } // Utils namespace ProjectExplorer { -class BuildPropertiesSettings; class CustomParserSettings; class FolderNode; class Node; @@ -119,9 +118,6 @@ public: static void setAppOutputSettings(const Internal::AppOutputSettings &settings); static const Internal::AppOutputSettings &appOutputSettings(); - static BuildPropertiesSettings &buildPropertiesSettings(); - static void showQtSettings(); - static void setCustomParsers(const QList<CustomParserSettings> &settings); static void addCustomParser(const CustomParserSettings &settings); static void removeCustomParser(Utils::Id id); @@ -159,9 +155,6 @@ public: static void openNewProjectDialog(); static void openOpenProjectDialog(); - static QString buildDirectoryTemplate(); - static QString defaultBuildDirectoryTemplate(); - static void updateActions(); static void activateProjectPanel(Utils::Id panelId); diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 3fca1a4a3e..eaff42d8f3 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -26,7 +26,6 @@ #include <projectexplorer/buildsteplist.h> #include <projectexplorer/kit.h> #include <projectexplorer/makestep.h> -#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorertr.h> #include <projectexplorer/runconfiguration.h> @@ -55,10 +54,10 @@ namespace QmakeProjectManager { QmakeExtraBuildInfo::QmakeExtraBuildInfo() { - const BuildPropertiesSettings &settings = ProjectExplorerPlugin::buildPropertiesSettings(); - config.separateDebugInfo = settings.separateDebugInfo.value(); - config.linkQmlDebuggingQQ2 = settings.qmlDebugging.value(); - config.useQtQuickCompiler = settings.qtQuickCompiler.value(); + const BuildPropertiesSettings &settings = buildPropertiesSettings(); + config.separateDebugInfo = settings.separateDebugInfo(); + config.linkQmlDebuggingQQ2 = settings.qmlDebugging(); + config.useQtQuickCompiler = settings.qtQuickCompiler(); } // -------------------------------------------------------------------- @@ -655,7 +654,7 @@ QString QmakeBuildConfiguration::extractSpecFromArguments(QString *args, static BuildInfo createBuildInfo(const Kit *k, const FilePath &projectPath, BuildConfiguration::BuildType type) { - const BuildPropertiesSettings &settings = ProjectExplorerPlugin::buildPropertiesSettings(); + const BuildPropertiesSettings &settings = buildPropertiesSettings(); QtVersion *version = QtKitAspect::qtVersion(k); QmakeExtraBuildInfo extraInfo; BuildInfo info; @@ -666,7 +665,7 @@ static BuildInfo createBuildInfo(const Kit *k, const FilePath &projectPath, info.displayName = ::ProjectExplorer::Tr::tr("Release"); //: Non-ASCII characters in directory suffix may cause build issues. suffix = Tr::tr("Release", "Shadow build directory suffix"); - if (settings.qtQuickCompiler.value() == TriState::Default) { + if (settings.qtQuickCompiler() == TriState::Default) { if (version && version->isQtQuickCompilerSupported()) extraInfo.config.useQtQuickCompiler = TriState::Enabled; } @@ -681,15 +680,15 @@ static BuildInfo createBuildInfo(const Kit *k, const FilePath &projectPath, info.displayName = ::ProjectExplorer::Tr::tr("Profile"); //: Non-ASCII characters in directory suffix may cause build issues. suffix = Tr::tr("Profile", "Shadow build directory suffix"); - if (settings.separateDebugInfo.value() == TriState::Default) + if (settings.separateDebugInfo() == TriState::Default) extraInfo.config.separateDebugInfo = TriState::Enabled; - if (settings.qtQuickCompiler.value() == TriState::Default) { + if (settings.qtQuickCompiler() == TriState::Default) { if (version && version->isQtQuickCompilerSupported()) extraInfo.config.useQtQuickCompiler = TriState::Enabled; } } - if (settings.qmlDebugging.value() == TriState::Default) { + if (settings.qmlDebugging() == TriState::Default) { if (version && version->isQmlDebuggingSupported()) extraInfo.config.linkQmlDebuggingQQ2 = TriState::Enabled; } diff --git a/src/plugins/qtsupport/qtbuildaspects.cpp b/src/plugins/qtsupport/qtbuildaspects.cpp index 55f47d8ac5..e941dcb187 100644 --- a/src/plugins/qtsupport/qtbuildaspects.cpp +++ b/src/plugins/qtsupport/qtbuildaspects.cpp @@ -27,7 +27,7 @@ QmlDebuggingAspect::QmlDebuggingAspect(AspectContainer *container) { setSettingsKey("EnableQmlDebugging"); setDisplayName(Tr::tr("QML debugging and profiling:")); - setValue(ProjectExplorerPlugin::buildPropertiesSettings().qmlDebugging.value()); + setValue(buildPropertiesSettings().qmlDebugging()); } void QmlDebuggingAspect::addToLayout(Layouting::LayoutItem &parent) @@ -69,7 +69,7 @@ QtQuickCompilerAspect::QtQuickCompilerAspect(AspectContainer *container) { setSettingsKey("QtQuickCompiler"); setDisplayName(Tr::tr("Qt Quick Compiler:")); - setValue(ProjectExplorerPlugin::buildPropertiesSettings().qtQuickCompiler.value()); + setValue(buildPropertiesSettings().qtQuickCompiler()); } void QtQuickCompilerAspect::setBuildConfiguration(const BuildConfiguration *buildConfig) diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index 497390045b..ed0cb998ff 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -22,8 +22,8 @@ #include <coreplugin/jsexpander.h> #include <projectexplorer/jsonwizard/jsonwizardfactory.h> +#include <projectexplorer/buildpropertiessettings.h> #include <projectexplorer/project.h> -#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectmanager.h> #include <projectexplorer/projecttree.h> #include <projectexplorer/target.h> @@ -132,7 +132,8 @@ void QtSupportPlugin::initialize() JsExpander::registerGlobalObject<CodeGenerator>("QtSupport"); ProjectExplorer::JsonWizardFactory::registerPageFactory(new TranslationWizardPageFactory); - ProjectExplorerPlugin::showQtSettings(); + + BuildPropertiesSettings::showQtSettings(); d = new QtSupportPluginPrivate; |