Remove the "make active" links from build and run settings.

Show the state in the combo boxes instead.
This commit is contained in:
con
2010-02-01 15:12:38 +01:00
parent 172f57e99c
commit 2e0fa4fc84
4 changed files with 43 additions and 75 deletions

View File

@@ -157,16 +157,8 @@ void BuildSettingsWidget::setupUi()
vbox->addLayout(hbox); vbox->addLayout(hbox);
} }
m_makeActiveLabel = new QLabel(this);
m_makeActiveLabel->setContentsMargins(m_leftMargin, 4, 0, 4);
m_makeActiveLabel->setVisible(false);
vbox->addWidget(m_makeActiveLabel);
m_buildConfiguration = m_project->activeBuildConfiguration(); m_buildConfiguration = m_project->activeBuildConfiguration();
connect(m_makeActiveLabel, SIGNAL(linkActivated(QString)),
this, SLOT(makeActive()));
connect(m_buildConfigurationComboBox, SIGNAL(currentIndexChanged(int)), connect(m_buildConfigurationComboBox, SIGNAL(currentIndexChanged(int)),
this, SLOT(currentIndexChanged(int))); this, SLOT(currentIndexChanged(int)));
@@ -178,8 +170,7 @@ void BuildSettingsWidget::setupUi()
// this, SLOT(buildConfigurationDisplayNameChanged(const QString &))); // this, SLOT(buildConfigurationDisplayNameChanged(const QString &)));
connect(m_project, SIGNAL(activeBuildConfigurationChanged()), connect(m_project, SIGNAL(activeBuildConfigurationChanged()),
this, SLOT(checkMakeActiveLabel())); this, SLOT(updateConfigurationComboBoxLabels()));
connect(m_project, SIGNAL(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)), connect(m_project, SIGNAL(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)),
this, SLOT(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*))); this, SLOT(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)));
@@ -214,9 +205,8 @@ void BuildSettingsWidget::buildConfigurationDisplayNameChanged()
{ {
for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) {
BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>();
m_buildConfigurationComboBox->setItemText(i, bc->displayName()); m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc));
} }
checkMakeActiveLabel();
} }
void BuildSettingsWidget::addSubWidget(const QString &name, QWidget *widget) void BuildSettingsWidget::addSubWidget(const QString &name, QWidget *widget)
@@ -253,11 +243,6 @@ QList<QWidget *> BuildSettingsWidget::subWidgets() const
return m_subWidgets; return m_subWidgets;
} }
void BuildSettingsWidget::makeActive()
{
m_project->setActiveBuildConfiguration(m_buildConfiguration);
}
void BuildSettingsWidget::updateAddButtonMenu() void BuildSettingsWidget::updateAddButtonMenu()
{ {
m_addButtonMenu->clear(); m_addButtonMenu->clear();
@@ -297,23 +282,23 @@ void BuildSettingsWidget::updateBuildSettings()
// Add tree items // Add tree items
foreach (BuildConfiguration *bc, m_project->buildConfigurations()) { foreach (BuildConfiguration *bc, m_project->buildConfigurations()) {
m_buildConfigurationComboBox->addItem(bc->displayName(), QVariant::fromValue<BuildConfiguration *>(bc)); m_buildConfigurationComboBox->addItem(buildConfigurationItemName(bc), QVariant::fromValue<BuildConfiguration *>(bc));
if (bc == m_buildConfiguration) if (bc == m_buildConfiguration)
m_buildConfigurationComboBox->setCurrentIndex(m_buildConfigurationComboBox->count() - 1); m_buildConfigurationComboBox->setCurrentIndex(m_buildConfigurationComboBox->count() - 1);
} }
m_buildConfigurationComboBox->blockSignals(blocked); m_buildConfigurationComboBox->blockSignals(blocked);
activeBuildConfigurationChanged(); currentBuildConfigurationChanged();
} }
void BuildSettingsWidget::currentIndexChanged(int index) void BuildSettingsWidget::currentIndexChanged(int index)
{ {
m_buildConfiguration = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); m_buildConfiguration = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>();
activeBuildConfigurationChanged(); currentBuildConfigurationChanged();
} }
void BuildSettingsWidget::activeBuildConfigurationChanged() void BuildSettingsWidget::currentBuildConfigurationChanged()
{ {
for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) {
if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == m_buildConfiguration) { if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == m_buildConfiguration) {
@@ -326,18 +311,23 @@ void BuildSettingsWidget::activeBuildConfigurationChanged()
buildStepWidget->init(m_buildConfiguration); buildStepWidget->init(m_buildConfiguration);
} }
} }
checkMakeActiveLabel();
} }
void BuildSettingsWidget::checkMakeActiveLabel() void BuildSettingsWidget::updateConfigurationComboBoxLabels()
{ {
m_makeActiveLabel->setVisible(false); for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) {
if (!m_project->activeBuildConfiguration() || m_project->activeBuildConfiguration() != m_buildConfiguration) { BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>();
m_makeActiveLabel->setText(tr("<a href=\"#\">Make %1 active.</a>").arg(m_buildConfiguration->displayName())); m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc));
m_makeActiveLabel->setVisible(true);
} }
} }
QString BuildSettingsWidget::buildConfigurationItemName(const BuildConfiguration *bc) const
{
if (bc == m_project->activeBuildConfiguration())
return tr("%1 (Active)").arg(bc->displayName());
return bc->displayName();
}
void BuildSettingsWidget::createConfiguration() void BuildSettingsWidget::createConfiguration()
{ {
QAction *action = qobject_cast<QAction *>(sender()); QAction *action = qobject_cast<QAction *>(sender());

View File

@@ -91,21 +91,22 @@ public:
private slots: private slots:
void updateBuildSettings(); void updateBuildSettings();
void currentIndexChanged(int index); void currentIndexChanged(int index);
void activeBuildConfigurationChanged(); void currentBuildConfigurationChanged();
void createConfiguration(); void createConfiguration();
void cloneConfiguration(); void cloneConfiguration();
void deleteConfiguration(); void deleteConfiguration();
void updateAddButtonMenu(); void updateAddButtonMenu();
void checkMakeActiveLabel();
void makeActive();
void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc);
void removedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); void removedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc);
void buildConfigurationDisplayNameChanged(); void buildConfigurationDisplayNameChanged();
void updateConfigurationComboBoxLabels();
private: private:
void cloneConfiguration(BuildConfiguration *toClone); void cloneConfiguration(BuildConfiguration *toClone);
void deleteConfiguration(BuildConfiguration *toDelete); void deleteConfiguration(BuildConfiguration *toDelete);
QString buildConfigurationItemName(const BuildConfiguration *bc) const;
Project *m_project; Project *m_project;
BuildConfiguration *m_buildConfiguration; BuildConfiguration *m_buildConfiguration;
@@ -114,7 +115,6 @@ private:
QPushButton *m_removeButton; QPushButton *m_removeButton;
QComboBox *m_buildConfigurationComboBox; QComboBox *m_buildConfigurationComboBox;
QMenu *m_addButtonMenu; QMenu *m_addButtonMenu;
QLabel *m_makeActiveLabel;
QList<QWidget *> m_subWidgets; QList<QWidget *> m_subWidgets;
QList<QLabel *> m_labels; QList<QLabel *> m_labels;

View File

@@ -63,7 +63,8 @@ class RunConfigurationsModel : public QAbstractListModel
{ {
public: public:
RunConfigurationsModel(QObject *parent = 0) RunConfigurationsModel(QObject *parent = 0)
: QAbstractListModel(parent) : QAbstractListModel(parent),
m_activeRunConfiguration(0)
{} {}
int rowCount(const QModelIndex &parent = QModelIndex()) const; int rowCount(const QModelIndex &parent = QModelIndex()) const;
@@ -73,9 +74,11 @@ public:
void setRunConfigurations(const QList<RunConfiguration *> &runConfigurations); void setRunConfigurations(const QList<RunConfiguration *> &runConfigurations);
QList<RunConfiguration *> runConfigurations() const { return m_runConfigurations; } QList<RunConfiguration *> runConfigurations() const { return m_runConfigurations; }
void displayNameChanged(RunConfiguration *rc); void displayNameChanged(RunConfiguration *rc);
void activeRunConfigurationChanged(RunConfiguration *rc);
private: private:
QList<RunConfiguration *> m_runConfigurations; QList<RunConfiguration *> m_runConfigurations;
RunConfiguration *m_activeRunConfiguration;
}; };
} // namespace Internal } // namespace Internal
@@ -158,12 +161,21 @@ void RunConfigurationsModel::displayNameChanged(RunConfiguration *rc)
} }
} }
void RunConfigurationsModel::activeRunConfigurationChanged(RunConfiguration *rc)
{
m_activeRunConfiguration = rc;
emit dataChanged(index(0, 0), index(m_runConfigurations.size()-1, 0));
}
QVariant RunConfigurationsModel::data(const QModelIndex &index, int role) const QVariant RunConfigurationsModel::data(const QModelIndex &index, int role) const
{ {
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
const int row = index.row(); const int row = index.row();
if (row < m_runConfigurations.size()) { if (row < m_runConfigurations.size()) {
return m_runConfigurations.at(row)->displayName(); RunConfiguration *rc = m_runConfigurations.at(row);
if (rc == m_activeRunConfiguration)
return tr("%1 (Active)").arg(rc->displayName());
return rc->displayName();
} }
} }
@@ -194,10 +206,6 @@ RunSettingsWidget::RunSettingsWidget(Project *project)
m_ui->removeToolButton->setText(tr("Remove")); m_ui->removeToolButton->setText(tr("Remove"));
m_ui->runConfigurationCombo->setModel(m_runConfigurationsModel); m_ui->runConfigurationCombo->setModel(m_runConfigurationsModel);
m_makeActiveLabel = new QLabel(this);
m_makeActiveLabel->setVisible(false);
layout()->addWidget(m_makeActiveLabel);
connect(m_addMenu, SIGNAL(aboutToShow()), connect(m_addMenu, SIGNAL(aboutToShow()),
this, SLOT(aboutToShowAddMenu())); this, SLOT(aboutToShowAddMenu()));
connect(m_ui->runConfigurationCombo, SIGNAL(currentIndexChanged(int)), connect(m_ui->runConfigurationCombo, SIGNAL(currentIndexChanged(int)),
@@ -209,12 +217,8 @@ RunSettingsWidget::RunSettingsWidget(Project *project)
this, SLOT(initRunConfigurationComboBox())); this, SLOT(initRunConfigurationComboBox()));
connect(m_project, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration *)), connect(m_project, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration *)),
this, SLOT(initRunConfigurationComboBox())); this, SLOT(initRunConfigurationComboBox()));
connect(m_project, SIGNAL(activeRunConfigurationChanged()), connect(m_project, SIGNAL(activeRunConfigurationChanged()),
this, SLOT(updateMakeActiveLabel())); this, SLOT(activeRunConfigurationChanged()));
connect(m_makeActiveLabel, SIGNAL(linkActivated(QString)),
this, SLOT(makeActive()));
initRunConfigurationComboBox(); initRunConfigurationComboBox();
const QList<RunConfiguration *> runConfigurations = m_project->runConfigurations(); const QList<RunConfiguration *> runConfigurations = m_project->runConfigurations();
@@ -298,7 +302,12 @@ void RunSettingsWidget::initRunConfigurationComboBox()
else else
m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration)); m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration));
m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1); m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1);
updateMakeActiveLabel(); activeRunConfigurationChanged();
}
void RunSettingsWidget::activeRunConfigurationChanged()
{
m_runConfigurationsModel->activeRunConfigurationChanged(m_project->activeRunConfiguration());
} }
void RunSettingsWidget::showRunConfigurationWidget(int index) void RunSettingsWidget::showRunConfigurationWidget(int index)
@@ -316,39 +325,10 @@ void RunSettingsWidget::showRunConfigurationWidget(int index)
delete m_runConfigurationWidget; delete m_runConfigurationWidget;
m_runConfigurationWidget = selectedRunConfiguration->configurationWidget(); m_runConfigurationWidget = selectedRunConfiguration->configurationWidget();
layout()->addWidget(m_runConfigurationWidget); layout()->addWidget(m_runConfigurationWidget);
updateMakeActiveLabel();
}
void RunSettingsWidget::updateMakeActiveLabel()
{
m_makeActiveLabel->setVisible(false);
RunConfiguration *rc = 0;
int index = m_ui->runConfigurationCombo->currentIndex();
if (index != -1) {
rc = m_runConfigurationsModel->runConfigurations().at(index);
}
if (rc) {
if (m_project->activeRunConfiguration() != rc) {
m_makeActiveLabel->setText(tr("<a href=\"#\">Make %1 active.</a>").arg(rc->displayName()));
m_makeActiveLabel->setVisible(true);
}
}
}
void RunSettingsWidget::makeActive()
{
RunConfiguration *rc = 0;
int index = m_ui->runConfigurationCombo->currentIndex();
if (index != -1) {
rc = m_runConfigurationsModel->runConfigurations().at(index);
}
if (rc)
m_project->setActiveRunConfiguration(rc);
} }
void RunSettingsWidget::displayNameChanged() void RunSettingsWidget::displayNameChanged()
{ {
RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender()); RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender());
m_runConfigurationsModel->displayNameChanged(rc); m_runConfigurationsModel->displayNameChanged(rc);
updateMakeActiveLabel();
} }

View File

@@ -86,13 +86,11 @@ private slots:
void removeRunConfiguration(); void removeRunConfiguration();
void displayNameChanged(); void displayNameChanged();
void initRunConfigurationComboBox(); void initRunConfigurationComboBox();
void updateMakeActiveLabel(); void activeRunConfigurationChanged();
void makeActive();
private: private:
Project *m_project; Project *m_project;
RunConfigurationsModel *m_runConfigurationsModel; RunConfigurationsModel *m_runConfigurationsModel;
Ui::RunSettingsPropertiesPage *m_ui; Ui::RunSettingsPropertiesPage *m_ui;
QLabel *m_makeActiveLabel;
QWidget *m_runConfigurationWidget; QWidget *m_runConfigurationWidget;
QMenu *m_addMenu; QMenu *m_addMenu;
}; };