diff --git a/doc/src/projects/creator-only/creator-projects-builds-customizing.qdoc b/doc/src/projects/creator-only/creator-projects-builds-customizing.qdoc index 52b367cbf38..5b35cf90dbb 100644 --- a/doc/src/projects/creator-only/creator-projects-builds-customizing.qdoc +++ b/doc/src/projects/creator-only/creator-projects-builds-customizing.qdoc @@ -58,7 +58,4 @@ To use \c jom, select the \uicontrol {Use jom instead of nmake} check box. Deselect the check box if you experience build problems. - You can specify the default build directory in the - \uicontrol {Default build directory} field using \QC variables (2). - */ diff --git a/doc/src/projects/creator-only/creator-projects-settings-build.qdoc b/doc/src/projects/creator-only/creator-projects-settings-build.qdoc index b0d28787d2f..931285a5a5e 100644 --- a/doc/src/projects/creator-only/creator-projects-settings-build.qdoc +++ b/doc/src/projects/creator-only/creator-projects-settings-build.qdoc @@ -72,7 +72,7 @@ To make in-source builds the default option for all projects, select \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > - \uicontrol General, and enter a period (.) in the + \uicontrol {Default Build Properties}, and enter a period (.) in the \uicontrol {Default build directory} field. You can create separate versions of project files to keep platform-dependent diff --git a/src/plugins/projectexplorer/buildpropertiessettings.h b/src/plugins/projectexplorer/buildpropertiessettings.h index 288d475b2fa..13eeebb6bcb 100644 --- a/src/plugins/projectexplorer/buildpropertiessettings.h +++ b/src/plugins/projectexplorer/buildpropertiessettings.h @@ -32,6 +32,7 @@ namespace ProjectExplorer { class PROJECTEXPLORER_EXPORT BuildPropertiesSettings { public: + QString buildDirectoryTemplate; TriState separateDebugInfo; TriState qmlDebugging; TriState qtQuickCompiler; diff --git a/src/plugins/projectexplorer/buildpropertiessettingspage.cpp b/src/plugins/projectexplorer/buildpropertiessettingspage.cpp index 722a69e80a4..7cd3766e50e 100644 --- a/src/plugins/projectexplorer/buildpropertiessettingspage.cpp +++ b/src/plugins/projectexplorer/buildpropertiessettingspage.cpp @@ -28,8 +28,13 @@ #include "buildpropertiessettings.h" #include "projectexplorer.h" -#include +#include + #include +#include +#include +#include +#include namespace ProjectExplorer { namespace Internal { @@ -55,6 +60,23 @@ public: m_qtQuickCompilerComboBox.setCurrentIndex(m_qtQuickCompilerComboBox .findData(settings.qtQuickCompiler.toVariant())); const auto layout = new QFormLayout(this); + const auto buildDirLayout = new QHBoxLayout; + const auto resetButton = new QPushButton(tr("Reset")); + connect(resetButton, &QPushButton::clicked, this, [this] { + m_buildDirTemplateLineEdit.setText( + ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); + }); + connect(&m_buildDirTemplateLineEdit, &QLineEdit::textChanged, + this, [this, resetButton] { + resetButton->setEnabled(m_buildDirTemplateLineEdit.text() + != ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); + }); + const auto chooser = new Core::VariableChooser(this); + chooser->addSupportedWidget(&m_buildDirTemplateLineEdit); + m_buildDirTemplateLineEdit.setText(settings.buildDirectoryTemplate); + buildDirLayout->addWidget(&m_buildDirTemplateLineEdit); + buildDirLayout->addWidget(resetButton); + layout->addRow(tr("Default build directory:"), buildDirLayout); layout->addRow(tr("Separate debug info:"), &m_separateDebugInfoComboBox); if (settings.showQtSettings) { layout->addRow(tr("QML debugging:"), &m_qmlDebuggingComboBox); @@ -68,6 +90,7 @@ public: void apply() final { BuildPropertiesSettings s = ProjectExplorerPlugin::buildPropertiesSettings(); + s.buildDirectoryTemplate = m_buildDirTemplateLineEdit.text(); s.separateDebugInfo = TriState::fromVariant(m_separateDebugInfoComboBox.currentData()); s.qmlDebugging = TriState::fromVariant(m_qmlDebuggingComboBox.currentData()); s.qtQuickCompiler = TriState::fromVariant(m_qtQuickCompilerComboBox.currentData()); @@ -75,6 +98,7 @@ public: } private: + QLineEdit m_buildDirTemplateLineEdit; QComboBox m_separateDebugInfoComboBox; QComboBox m_qmlDebuggingComboBox; QComboBox m_qtQuickCompilerComboBox; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 08f9a0eb795..df815a626d6 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1458,10 +1458,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er = s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, true).toBool(); dd->m_projectExplorerSettings.lowBuildPriority = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, false).toBool(); - dd->m_projectExplorerSettings.buildDirectoryTemplate + dd->m_buildPropertiesSettings.buildDirectoryTemplate = s->value(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY).toString(); - if (dd->m_projectExplorerSettings.buildDirectoryTemplate.isEmpty()) - dd->m_projectExplorerSettings.buildDirectoryTemplate = Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE; + if (dd->m_buildPropertiesSettings.buildDirectoryTemplate.isEmpty()) + dd->m_buildPropertiesSettings.buildDirectoryTemplate = Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE; const auto loadTriStateValue = [&s](const QString &key) { return TriState::fromVariant(s->value(key, TriState::Default.toVariant())); @@ -2074,7 +2074,8 @@ void ProjectExplorerPluginPrivate::savePersistentSettings() s->setValue(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY, int(dd->m_projectExplorerSettings.stopBeforeBuild)); // Store this in the Core directory scope for backward compatibility! - s->setValue(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY, dd->m_projectExplorerSettings.buildDirectoryTemplate); + s->setValue(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY, + dd->m_buildPropertiesSettings.buildDirectoryTemplate); s->setValue(Constants::SEPARATE_DEBUG_INFO_SETTINGS_KEY, dd->m_buildPropertiesSettings.separateDebugInfo.toVariant()); @@ -3852,7 +3853,7 @@ void ProjectExplorerPlugin::openOpenProjectDialog() */ QString ProjectExplorerPlugin::buildDirectoryTemplate() { - return dd->m_projectExplorerSettings.buildDirectoryTemplate; + return dd->m_buildPropertiesSettings.buildDirectoryTemplate; } QString ProjectExplorerPlugin::defaultBuildDirectoryTemplate() diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h index e3065a7f533..b1509f2c3e3 100644 --- a/src/plugins/projectexplorer/projectexplorersettings.h +++ b/src/plugins/projectexplorer/projectexplorersettings.h @@ -55,7 +55,6 @@ public: bool lowBuildPriority = false; StopBeforeBuild stopBeforeBuild = StopBeforeBuild::None; TerminalMode terminalMode = TerminalMode::Smart; - QString buildDirectoryTemplate; // Add a UUid which is used to identify the development environment. // This is used to warn the user when he is trying to open a .user file that was created @@ -79,8 +78,7 @@ inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerS && p1.closeSourceFilesWithProject == p2.closeSourceFilesWithProject && p1.clearIssuesOnRebuild == p2.clearIssuesOnRebuild && p1.abortBuildAllOnError == p2.abortBuildAllOnError - && p1.lowBuildPriority == p2.lowBuildPriority - && p1.buildDirectoryTemplate == p2.buildDirectoryTemplate; + && p1.lowBuildPriority == p2.lowBuildPriority; } class AppOutputSettings diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index 205aa0d9edb..113c070ae30 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -59,12 +58,8 @@ public: private: void slotDirectoryButtonGroupChanged(); - void resetBuildDirectoryTemplate(); - void updateBuildDirectoryResetButton(); void setJomVisible(bool); - QString buildDirectoryTemplate() const; - void setBuildDirectoryTemplate(const QString &bd); Ui::ProjectExplorerSettingsPageUi m_ui; mutable ProjectExplorerSettings m_settings; @@ -93,13 +88,6 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) : connect(m_ui.directoryButtonGroup, QOverload::of(&QButtonGroup::buttonClicked), this, &ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged); - connect(m_ui.buildDirectoryResetButton, &QAbstractButton::clicked, - this, &ProjectExplorerSettingsWidget::resetBuildDirectoryTemplate); - connect(m_ui.buildDirectoryEdit, &QLineEdit::textChanged, - this, &ProjectExplorerSettingsWidget::updateBuildDirectoryResetButton); - - auto chooser = new Core::VariableChooser(this); - chooser->addSupportedWidget(m_ui.buildDirectoryEdit); } void ProjectExplorerSettingsWidget::setJomVisible(bool v) @@ -125,7 +113,6 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const m_settings.clearIssuesOnRebuild = m_ui.clearIssuesCheckBox->isChecked(); m_settings.abortBuildAllOnError = m_ui.abortBuildAllOnErrorCheckBox->isChecked(); m_settings.lowBuildPriority = m_ui.lowBuildPriorityCheckBox->isChecked(); - m_settings.buildDirectoryTemplate = buildDirectoryTemplate(); return m_settings; } @@ -147,7 +134,6 @@ void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings & m_ui.clearIssuesCheckBox->setChecked(m_settings.clearIssuesOnRebuild); m_ui.abortBuildAllOnErrorCheckBox->setChecked(m_settings.abortBuildAllOnError); m_ui.lowBuildPriorityCheckBox->setChecked(m_settings.lowBuildPriority); - setBuildDirectoryTemplate(pes.buildDirectoryTemplate); } QString ProjectExplorerSettingsWidget::projectsDirectory() const @@ -173,32 +159,12 @@ void ProjectExplorerSettingsWidget::setUseProjectsDirectory(bool b) } } -QString ProjectExplorerSettingsWidget::buildDirectoryTemplate() const -{ - return m_ui.buildDirectoryEdit->text(); -} - -void ProjectExplorerSettingsWidget::setBuildDirectoryTemplate(const QString &bd) -{ - m_ui.buildDirectoryEdit->setText(bd); -} - void ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged() { bool enable = useProjectsDirectory(); m_ui.projectsDirectoryPathChooser->setEnabled(enable); } -void ProjectExplorerSettingsWidget::resetBuildDirectoryTemplate() -{ - setBuildDirectoryTemplate(ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); -} - -void ProjectExplorerSettingsWidget::updateBuildDirectoryResetButton() -{ - m_ui.buildDirectoryResetButton->setEnabled(buildDirectoryTemplate() != ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); -} - // ------------------ ProjectExplorerSettingsPage ProjectExplorerSettingsPage::ProjectExplorerSettingsPage() { diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui index 913566ef2f1..d17b7582c4a 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.ui +++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui @@ -68,20 +68,6 @@ Build and Run - - - - Add linker library search paths to run environment - - - - - - - Clear issues list on new build - - - @@ -122,6 +108,24 @@ + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + @@ -139,6 +143,47 @@ + + + + Add linker library search paths to run environment + + + + + + + Save all files before build + + + + + + + Creates suitable run configurations automatically when setting up a new kit. + + + Create suitable run configurations automatically + + + + + + + Asks before terminating the running application in response to clicking the stop button in Application Output. + + + Always ask before stopping applications + + + + + + + Clear issues list on new build + + + @@ -240,75 +285,6 @@ - - - - Save all files before build - - - - - - - Creates suitable run configurations automatically when setting up a new kit. - - - Create suitable run configurations automatically - - - - - - - 12 - - - - - Default build directory: - - - - - - - - - - Reset - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - Asks before terminating the running application in response to clicking the stop button in Application Output. - - - Always ask before stopping applications - - -