From 5f151d69e3e47961be659c6f258c9db190a6ac2b Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Fri, 12 Feb 2010 15:15:57 +0100 Subject: [PATCH] Add "make active" buttons, as replacement for the link. --- .../buildsettingspropertiespage.cpp | 37 +++++++++++++++---- .../buildsettingspropertiespage.h | 5 ++- .../runsettingspropertiespage.cpp | 32 ++++++++++++---- .../runsettingspropertiespage.h | 8 +++- .../runsettingspropertiespage.ui | 11 +++++- 5 files changed, 74 insertions(+), 19 deletions(-) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index 10f11d34aab..4727f074857 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -173,6 +173,13 @@ void BuildSettingsWidget::setupUi() m_removeButton->setText(tr("Remove")); m_removeButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); hbox->addWidget(m_removeButton); + + m_makeActiveButton = new QPushButton(this); + m_makeActiveButton->setText(tr("Make Active")); + m_makeActiveButton->setToolTip(tr("Sets this build configuration to be used for this target.")); + m_makeActiveButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + hbox->addWidget(m_makeActiveButton); + hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed)); vbox->addLayout(hbox); } @@ -185,12 +192,15 @@ void BuildSettingsWidget::setupUi() connect(m_removeButton, SIGNAL(clicked()), this, SLOT(deleteConfiguration())); + connect(m_makeActiveButton, SIGNAL(clicked()), + this, SLOT(makeActive())); + // TODO update on displayNameChange // connect(m_project, SIGNAL(buildConfigurationDisplayNameChanged(const QString &)), // this, SLOT(buildConfigurationDisplayNameChanged(const QString &))); connect(m_target, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), - this, SLOT(updateConfigurationComboBoxLabels())); + this, SLOT(updateActiveConfiguration())); connect(m_target, SIGNAL(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)), this, SLOT(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*))); @@ -324,6 +334,9 @@ void BuildSettingsWidget::currentIndexChanged(int index) void BuildSettingsWidget::currentBuildConfigurationChanged() { + m_makeActiveButton->setEnabled(m_buildConfiguration + && m_buildConfiguration != m_target->activeBuildConfiguration()); + if (!m_buildConfiguration) return; @@ -341,12 +354,14 @@ void BuildSettingsWidget::currentBuildConfigurationChanged() } } -void BuildSettingsWidget::updateConfigurationComboBoxLabels() +void BuildSettingsWidget::updateActiveConfiguration() { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc)); } + m_makeActiveButton->setEnabled(currentBuildConfiguration() + && currentBuildConfiguration() != m_target->activeBuildConfiguration()); } QString BuildSettingsWidget::buildConfigurationItemName(const BuildConfiguration *bc) const @@ -356,6 +371,11 @@ QString BuildSettingsWidget::buildConfigurationItemName(const BuildConfiguration return bc->displayName(); } +BuildConfiguration *BuildSettingsWidget::currentBuildConfiguration() const { + const int index = m_buildConfigurationComboBox->currentIndex(); + return m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); +} + void BuildSettingsWidget::createConfiguration() { if (!m_target->buildConfigurationFactory()) @@ -372,16 +392,17 @@ void BuildSettingsWidget::createConfiguration() void BuildSettingsWidget::cloneConfiguration() { - const int index = m_buildConfigurationComboBox->currentIndex(); - BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); - cloneConfiguration(bc); + cloneConfiguration(currentBuildConfiguration()); } void BuildSettingsWidget::deleteConfiguration() { - const int index = m_buildConfigurationComboBox->currentIndex(); - BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); - deleteConfiguration(bc); + deleteConfiguration(currentBuildConfiguration()); +} + +void BuildSettingsWidget::makeActive() +{ + m_target->setActiveBuildConfiguration(currentBuildConfiguration()); } void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfiguration) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h index cb5c7411172..807301759ac 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.h +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h @@ -101,23 +101,26 @@ private slots: void createConfiguration(); void cloneConfiguration(); void deleteConfiguration(); + void makeActive(); void updateAddButtonMenu(); void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); void removedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); void buildConfigurationDisplayNameChanged(); - void updateConfigurationComboBoxLabels(); + void updateActiveConfiguration(); private: void cloneConfiguration(BuildConfiguration *toClone); void deleteConfiguration(BuildConfiguration *toDelete); QString buildConfigurationItemName(const BuildConfiguration *bc) const; + BuildConfiguration *currentBuildConfiguration() const; Target *m_target; BuildConfiguration *m_buildConfiguration; QPushButton *m_addButton; QPushButton *m_removeButton; + QPushButton *m_makeActiveButton; QComboBox *m_buildConfigurationComboBox; QMenu *m_addButtonMenu; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index c82b676840c..907583a32ba 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -229,9 +229,11 @@ RunSettingsWidget::RunSettingsWidget(Target *target) connect(m_addMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowAddMenu())); connect(m_ui->runConfigurationCombo, SIGNAL(currentIndexChanged(int)), - this, SLOT(showRunConfigurationWidget(int))); + this, SLOT(currentRunConfigurationChanged(int))); connect(m_ui->removeToolButton, SIGNAL(clicked(bool)), this, SLOT(removeRunConfiguration())); + connect(m_ui->makeActiveButton, SIGNAL(clicked()), + this, SLOT(makeActive())); connect(m_target, SIGNAL(removedRunConfiguration(ProjectExplorer::RunConfiguration *)), this, SLOT(initRunConfigurationComboBox())); @@ -285,6 +287,15 @@ void RunSettingsWidget::aboutToShowAddMenu() } } +RunConfiguration *RunSettingsWidget::currentRunConfiguration() const +{ + RunConfiguration *currentSelection = 0; + const int index = m_ui->runConfigurationCombo->currentIndex(); + if (index >= 0) + currentSelection = m_runConfigurationsModel->runConfigurations().at(index); + return currentSelection; +} + void RunSettingsWidget::addRunConfiguration() { QAction *act = qobject_cast<QAction *>(sender()); @@ -303,20 +314,22 @@ void RunSettingsWidget::addRunConfiguration() void RunSettingsWidget::removeRunConfiguration() { - int index = m_ui->runConfigurationCombo->currentIndex(); - RunConfiguration *rc = m_runConfigurationsModel->runConfigurations().at(index); + RunConfiguration *rc = currentRunConfiguration(); disconnect(rc, SIGNAL(displayNameChanged()), this, SLOT(displayNameChanged())); m_target->removeRunConfiguration(rc); initRunConfigurationComboBox(); } +void RunSettingsWidget::makeActive() +{ + m_target->setActiveRunConfiguration(currentRunConfiguration()); +} + void RunSettingsWidget::initRunConfigurationComboBox() { const QList<RunConfiguration *> &runConfigurations = m_target->runConfigurations(); RunConfiguration *activeRunConfiguration = m_target->activeRunConfiguration(); - RunConfiguration *currentSelection = 0; - if (m_ui->runConfigurationCombo->currentIndex() >= 0) - currentSelection = m_runConfigurationsModel->runConfigurations().at(m_ui->runConfigurationCombo->currentIndex()); + RunConfiguration *currentSelection = currentRunConfiguration(); m_runConfigurationsModel->setRunConfigurations(runConfigurations); if (runConfigurations.contains(currentSelection)) @@ -330,10 +343,15 @@ void RunSettingsWidget::initRunConfigurationComboBox() void RunSettingsWidget::activeRunConfigurationChanged() { m_runConfigurationsModel->activeRunConfigurationChanged(m_target->activeRunConfiguration()); + m_ui->makeActiveButton->setEnabled(currentRunConfiguration() + && currentRunConfiguration() != m_target->activeRunConfiguration()); } -void RunSettingsWidget::showRunConfigurationWidget(int index) +void RunSettingsWidget::currentRunConfigurationChanged(int index) { + m_ui->makeActiveButton->setEnabled(currentRunConfiguration() + && currentRunConfiguration() != m_target->activeRunConfiguration()); + if (index == -1) { delete m_runConfigurationWidget; m_runConfigurationWidget = 0; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h index 869182111b6..1957cf2db72 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.h +++ b/src/plugins/projectexplorer/runsettingspropertiespage.h @@ -40,6 +40,9 @@ class QLabel; QT_END_NAMESPACE namespace ProjectExplorer { + +class RunConfiguration; + namespace Internal { const char * const RUNSETTINGS_PANEL_ID("ProjectExplorer.RunSettingsPanel"); @@ -85,14 +88,17 @@ public: ~RunSettingsWidget(); private slots: - void showRunConfigurationWidget(int index); + void currentRunConfigurationChanged(int index); void aboutToShowAddMenu(); void addRunConfiguration(); void removeRunConfiguration(); + void makeActive(); void displayNameChanged(); void initRunConfigurationComboBox(); void activeRunConfigurationChanged(); private: + RunConfiguration *currentRunConfiguration() const; + Target *m_target; RunConfigurationsModel *m_runConfigurationsModel; Ui::RunSettingsPropertiesPage *m_ui; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.ui b/src/plugins/projectexplorer/runsettingspropertiespage.ui index 8c4aec3e786..4a3706552ec 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/runsettingspropertiespage.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>437</width> - <height>25</height> + <width>442</width> + <height>32</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout"> @@ -62,6 +62,13 @@ </property> </widget> </item> + <item> + <widget class="QPushButton" name="makeActiveButton"> + <property name="text"> + <string>Make Active</string> + </property> + </widget> + </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> -- GitLab