diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index ac03deb6466736c244dcf453cd0ee430faa135a8..70f84584fd0921c828139d50d3a4129f5bf9d801 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -168,6 +168,17 @@ void BuildSettingsWidget::setupUi() connect(m_project, SIGNAL(activeBuildConfigurationChanged()), this, SLOT(checkMakeActiveLabel())); + connect(m_project, SIGNAL(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)), + this, SLOT(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + + connect(m_project, SIGNAL(removedBuildConfiguration(ProjectExplorer::BuildConfiguration*)), + this, SLOT(removedBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + + foreach (BuildConfiguration *bc, m_project->buildConfigurations()) { + connect(bc, SIGNAL(displayNameChanged()), + this, SLOT(buildConfigurationDisplayNameChanged())); + } + if (m_project->buildConfigurationFactory()) connect(m_project->buildConfigurationFactory(), SIGNAL(availableCreationIdsChanged()), SLOT(updateAddButtonMenu())); @@ -175,6 +186,27 @@ void BuildSettingsWidget::setupUi() updateBuildSettings(); } +void BuildSettingsWidget::addedBuildConfiguration(BuildConfiguration *bc) +{ + connect(bc, SIGNAL(displayNameChanged()), + this, SLOT(buildConfigurationDisplayNameChanged())); +} + +void BuildSettingsWidget::removedBuildConfiguration(BuildConfiguration *bc) +{ + disconnect(bc, SIGNAL(displayNameChanged()), + this, SLOT(buildConfigurationDisplayNameChanged())); +} + +void BuildSettingsWidget::buildConfigurationDisplayNameChanged() +{ + for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { + BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); + m_buildConfigurationComboBox->setItemText(i, bc->displayName()); + } + checkMakeActiveLabel(); +} + void BuildSettingsWidget::addSubWidget(const QString &name, QWidget *widget) { widget->setContentsMargins(m_leftMargin, 10, 0, 0); @@ -260,9 +292,6 @@ void BuildSettingsWidget::updateBuildSettings() m_buildConfigurationComboBox->blockSignals(blocked); - // TODO Restore position, entry from combbox - // TODO? select entry from combobox ? - activeBuildConfigurationChanged(); } diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h index 5a805f3e7767e1ade6ae84281bbf55928277a69a..9b1321edccf27f50c719f4f3d0793516253fb446 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.h +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h @@ -98,6 +98,9 @@ private slots: void setupUi(); + void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); + void removedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); + void buildConfigurationDisplayNameChanged(); private: void cloneConfiguration(BuildConfiguration *toClone); void deleteConfiguration(BuildConfiguration *toDelete);