diff options
author | Aaron McCarthy <mccarthy.aaron@gmail.com> | 2012-10-05 21:34:09 +1000 |
---|---|---|
committer | Aaron McCarthy <mccarthy.aaron@gmail.com> | 2012-10-27 10:27:50 +0200 |
commit | 1b3909e45a18648cd635c082b0839688206ae3cb (patch) | |
tree | d41bcea80e6621fbe3b48234f48e7af29256f83b /src/plugins/projectexplorer/projectexplorersettingspage.cpp | |
parent | 2198fa90eb078a130a77924fbea56fda1696a365 (diff) | |
download | qt-creator-1b3909e45a18648cd635c082b0839688206ae3cb.tar.gz |
Add option to place shadow build directory parallel to source tree.
This option requires that the projects directory setting is enabled.
For example with the following settings:
Projects directory: $HOME/depot
Build directory: $HOME/build
This will by default place the default shadow build directory in the
$HOME/build tree instead of adjacent to the source in $HOME/depot.
Change-Id: I74bfc00883d0479d5965350c760d14ef7602cc34
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/plugins/projectexplorer/projectexplorersettingspage.cpp')
-rw-r--r-- | src/plugins/projectexplorer/projectexplorersettingspage.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index 830efb5f5d..bb40f64a20 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -53,6 +53,8 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) : m_ui.directoryButtonGroup->setId(m_ui.directoryRadioButton, UseProjectDirectory); connect(m_ui.directoryButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(slotDirectoryButtonGroupChanged())); + connect(m_ui.buildDirectoryCheckBox, SIGNAL(toggled(bool)), + this, SLOT(slotBuildDirectoryCheckBoxChanged(bool))); } void ProjectExplorerSettingsWidget::setJomVisible(bool v) @@ -118,9 +120,40 @@ void ProjectExplorerSettingsWidget::setUseProjectsDirectory(bool b) } } +bool ProjectExplorerSettingsWidget::useBuildDirectory() const +{ + return m_ui.buildDirectoryCheckBox->isChecked(); +} + +void ProjectExplorerSettingsWidget::setUseBuildDirectory(bool v) +{ + if (useBuildDirectory() != v) { + m_ui.buildDirectoryCheckBox->setChecked(v); + slotBuildDirectoryCheckBoxChanged(v); + } +} + +QString ProjectExplorerSettingsWidget::buildDirectory() const +{ + return m_ui.buildDirectoryPathChooser->path(); +} + +void ProjectExplorerSettingsWidget::setBuildDirectory(const QString &bd) +{ + m_ui.buildDirectoryPathChooser->setPath(bd); +} + void ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged() { - m_ui.projectsDirectoryPathChooser->setEnabled(useProjectsDirectory()); + bool enable = useProjectsDirectory(); + m_ui.projectsDirectoryPathChooser->setEnabled(enable); + m_ui.buildDirectoryCheckBox->setEnabled(enable); + m_ui.buildDirectoryPathChooser->setEnabled(enable && useBuildDirectory()); +} + +void ProjectExplorerSettingsWidget::slotBuildDirectoryCheckBoxChanged(bool checked) +{ + m_ui.buildDirectoryPathChooser->setEnabled(useProjectsDirectory() && checked); } QString ProjectExplorerSettingsWidget::searchKeywords() const @@ -167,6 +200,8 @@ QWidget *ProjectExplorerSettingsPage::createPage(QWidget *parent) m_widget->setSettings(ProjectExplorerPlugin::instance()->projectExplorerSettings()); m_widget->setProjectsDirectory(Core::DocumentManager::projectsDirectory()); m_widget->setUseProjectsDirectory(Core::DocumentManager::useProjectsDirectory()); + m_widget->setUseBuildDirectory(Core::DocumentManager::useBuildDirectory()); + m_widget->setBuildDirectory(Core::DocumentManager::buildDirectory()); if (m_searchKeywords.isEmpty()) m_searchKeywords = m_widget->searchKeywords(); return m_widget; @@ -178,6 +213,8 @@ void ProjectExplorerSettingsPage::apply() ProjectExplorerPlugin::instance()->setProjectExplorerSettings(m_widget->settings()); Core::DocumentManager::setProjectsDirectory(m_widget->projectsDirectory()); Core::DocumentManager::setUseProjectsDirectory(m_widget->useProjectsDirectory()); + Core::DocumentManager::setUseBuildDirectory(m_widget->useBuildDirectory()); + Core::DocumentManager::setBuildDirectory(m_widget->buildDirectory()); } } |