diff options
author | dt <qtc-committer@nokia.com> | 2010-03-24 15:51:04 +0100 |
---|---|---|
committer | dt <qtc-committer@nokia.com> | 2010-03-24 15:52:24 +0100 |
commit | 7e5902f385319ae20b52784250072495caaa2d97 (patch) | |
tree | 3e754e721e1c62c900ba044760f1fdb70dcf3136 /src/plugins/projectexplorer | |
parent | c05e11b165139dae9bbbb0d3b3adc518f9169ca6 (diff) |
Remove make active from the runconfigurations page
The active runconfiguration is now the same as the one you are editing.
Diffstat (limited to 'src/plugins/projectexplorer')
3 files changed, 117 insertions, 124 deletions
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index f5ff68b4f8..7384076972 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -56,35 +56,6 @@ struct FactoryAndId Q_DECLARE_METATYPE(ProjectExplorer::Internal::FactoryAndId); -namespace ProjectExplorer { -namespace Internal { - -/*! A model to represent the run configurations of a project. */ -class RunConfigurationsModel : public QAbstractListModel -{ -public: - RunConfigurationsModel(QObject *parent = 0) - : QAbstractListModel(parent), - m_activeRunConfiguration(0) - {} - - int rowCount(const QModelIndex &parent = QModelIndex()) const; - int columnCount(const QModelIndex &parent = QModelIndex()) const; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - - void setRunConfigurations(const QList<RunConfiguration *> &runConfigurations); - QList<RunConfiguration *> runConfigurations() const { return m_runConfigurations; } - void displayNameChanged(RunConfiguration *rc); - void activeRunConfigurationChanged(RunConfiguration *rc); - -private: - QList<RunConfiguration *> m_runConfigurations; - RunConfiguration *m_activeRunConfiguration; -}; - -} // namespace Internal -} // namespace ProjectExplorer - using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; using ExtensionSystem::PluginManager; @@ -159,6 +130,21 @@ QIcon RunSettingsPanel::icon() const /// RunConfigurationsModel /// +RunConfigurationsModel::RunConfigurationsModel(Target *target, QObject *parent) + : QAbstractListModel(parent), + m_target(target) +{ + m_runConfigurations = m_target->runConfigurations(); + connect(target, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration*)), + this, SLOT(addedRunConfiguration(ProjectExplorer::RunConfiguration*))); + connect(target, SIGNAL(removedRunConfiguration(ProjectExplorer::RunConfiguration*)), + this, SLOT(removedRunConfiguration(ProjectExplorer::RunConfiguration*))); + + foreach (RunConfiguration *rc, m_runConfigurations) + connect(rc, SIGNAL(displayNameChanged()), + this, SLOT(displayNameChanged())); +} + int RunConfigurationsModel::rowCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : m_runConfigurations.size(); @@ -169,9 +155,11 @@ int RunConfigurationsModel::columnCount(const QModelIndex &parent) const return parent.isValid() ? 0 : 1; } -void RunConfigurationsModel::displayNameChanged(RunConfiguration *rc) +void RunConfigurationsModel::displayNameChanged() { - for (int i = 0; i<m_runConfigurations.size(); ++i) { + RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender()); + QTC_ASSERT(rc, return); + for (int i = 0; i < m_runConfigurations.size(); ++i) { if (m_runConfigurations.at(i) == rc) { emit dataChanged(index(i, 0), index(i,0)); break; @@ -179,31 +167,60 @@ 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 { if (role == Qt::DisplayRole) { const int row = index.row(); if (row < m_runConfigurations.size()) { - RunConfiguration *rc = m_runConfigurations.at(row); - if (rc == m_activeRunConfiguration) - return QCoreApplication::translate("RunConfigurationsModel", "%1 (Active)").arg(rc->displayName()); - return rc->displayName(); + return m_runConfigurations.at(row)->displayName(); } } return QVariant(); } -void RunConfigurationsModel::setRunConfigurations(const QList<RunConfiguration *> &runConfigurations) +RunConfiguration *RunConfigurationsModel::runConfigurationAt(int i) +{ + if (i > m_runConfigurations.size() || i < 0) + return 0; + return m_runConfigurations.at(i); +} + +RunConfiguration *RunConfigurationsModel::runConfigurationFor(const QModelIndex &idx) +{ + if (idx.row() > m_runConfigurations.size() || idx.row() < 0) + return 0; + return m_runConfigurations.at(idx.row()); +} + +QModelIndex RunConfigurationsModel::indexFor(RunConfiguration *rc) +{ + int idx = m_runConfigurations.indexOf(rc); + if (idx == -1) + return QModelIndex(); + return index(idx, 0); +} + +void RunConfigurationsModel::addedRunConfiguration(ProjectExplorer::RunConfiguration *rc) +{ + int i = m_target->runConfigurations().indexOf(rc); + QTC_ASSERT(i > 0, return); + beginInsertRows(QModelIndex(), i, i); + m_runConfigurations.insert(i, rc); + endInsertRows(); + QTC_ASSERT(m_runConfigurations == m_target->runConfigurations(), return); + connect(rc, SIGNAL(displayNameChanged()), + this, SLOT(displayNameChanged())); +} + +void RunConfigurationsModel::removedRunConfiguration(ProjectExplorer::RunConfiguration *rc) { - m_runConfigurations = runConfigurations; - reset(); + int i = m_runConfigurations.indexOf(rc); + QTC_ASSERT(i > 0, return); + beginRemoveRows(QModelIndex(), i, i); + m_runConfigurations.removeAt(i); + endRemoveRows(); + QTC_ASSERT(m_runConfigurations == m_target->runConfigurations(), return); } @@ -213,8 +230,9 @@ void RunConfigurationsModel::setRunConfigurations(const QList<RunConfiguration * RunSettingsWidget::RunSettingsWidget(Target *target) : m_target(target), - m_runConfigurationsModel(new RunConfigurationsModel(this)), - m_runConfigurationWidget(0) + m_runConfigurationsModel(new RunConfigurationsModel(target, this)), + m_runConfigurationWidget(0), + m_ignoreChange(false) { Q_ASSERT(m_target); @@ -225,6 +243,11 @@ RunSettingsWidget::RunSettingsWidget(Target *target) m_ui->addToolButton->setText(tr("Add")); m_ui->removeToolButton->setText(tr("Remove")); m_ui->runConfigurationCombo->setModel(m_runConfigurationsModel); + m_ui->runConfigurationCombo->setCurrentIndex( + m_target->runConfigurations().indexOf(m_target->activeRunConfiguration())); + + m_runConfigurationWidget = m_target->activeRunConfiguration()->configurationWidget(); + layout()->addWidget(m_runConfigurationWidget); connect(m_addMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowAddMenu())); @@ -232,25 +255,10 @@ RunSettingsWidget::RunSettingsWidget(Target *target) 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())); - connect(m_target, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration *)), - this, SLOT(initRunConfigurationComboBox())); connect(m_target, SIGNAL(activeRunConfigurationChanged(ProjectExplorer::RunConfiguration*)), this, SLOT(activeRunConfigurationChanged())); - initRunConfigurationComboBox(); - - const QList<RunConfiguration *> runConfigurations = m_target->runConfigurations(); - for (int i=0; i<runConfigurations.size(); ++i) { - connect(runConfigurations.at(i), SIGNAL(displayNameChanged()), - this, SLOT(displayNameChanged())); - } - // TODO: Add support for custom runner configuration widgets once we have some /* QList<IRunControlFactory *> runners = PluginManager::instance()->getObjects<IRunControlFactory>(); @@ -287,15 +295,6 @@ 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()); @@ -306,68 +305,47 @@ void RunSettingsWidget::addRunConfiguration() if (!newRC) return; m_target->addRunConfiguration(newRC); - initRunConfigurationComboBox(); - m_ui->runConfigurationCombo->setCurrentIndex( - m_runConfigurationsModel->runConfigurations().indexOf(newRC)); - connect(newRC, SIGNAL(displayNameChanged()), this, SLOT(displayNameChanged())); + m_target->setActiveRunConfiguration(newRC); } void RunSettingsWidget::removeRunConfiguration() { - RunConfiguration *rc = currentRunConfiguration(); - disconnect(rc, SIGNAL(displayNameChanged()), this, SLOT(displayNameChanged())); + RunConfiguration *rc = m_target->activeRunConfiguration(); 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 = currentRunConfiguration(); - - m_runConfigurationsModel->setRunConfigurations(runConfigurations); - if (runConfigurations.contains(currentSelection)) - m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(currentSelection)); - else - m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration)); - m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1); - activeRunConfigurationChanged(); } void RunSettingsWidget::activeRunConfigurationChanged() { - m_runConfigurationsModel->activeRunConfigurationChanged(m_target->activeRunConfiguration()); - m_ui->makeActiveButton->setEnabled(currentRunConfiguration() - && currentRunConfiguration() != m_target->activeRunConfiguration()); + if (m_ignoreChange) + return; + QModelIndex actRc = m_runConfigurationsModel->indexFor(m_target->activeRunConfiguration()); + m_ignoreChange = true; + m_ui->runConfigurationCombo->setCurrentIndex(actRc.row()); + m_ignoreChange = false; + + delete m_runConfigurationWidget; + m_runConfigurationWidget = m_target->activeRunConfiguration()->configurationWidget(); + layout()->addWidget(m_runConfigurationWidget); } void RunSettingsWidget::currentRunConfigurationChanged(int index) { - m_ui->makeActiveButton->setEnabled(currentRunConfiguration() - && currentRunConfiguration() != m_target->activeRunConfiguration()); - + if (m_ignoreChange) + return; if (index == -1) { delete m_runConfigurationWidget; m_runConfigurationWidget = 0; return; } RunConfiguration *selectedRunConfiguration = - m_runConfigurationsModel->runConfigurations().at(index); + m_runConfigurationsModel->runConfigurationAt(index); + + m_ignoreChange = true; + m_target->setActiveRunConfiguration(selectedRunConfiguration); + m_ignoreChange = false; // Update the run configuration configuration widget delete m_runConfigurationWidget; m_runConfigurationWidget = selectedRunConfiguration->configurationWidget(); layout()->addWidget(m_runConfigurationWidget); } - -void RunSettingsWidget::displayNameChanged() -{ - RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender()); - m_runConfigurationsModel->displayNameChanged(rc); -} diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h index 8293502d2f..033d61e8a9 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.h +++ b/src/plugins/projectexplorer/runsettingspropertiespage.h @@ -33,6 +33,7 @@ #include "iprojectproperties.h" #include <QtGui/QWidget> +#include <QtCore/QAbstractListModel> QT_BEGIN_NAMESPACE class QMenu; @@ -92,20 +93,41 @@ private slots: 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; QWidget *m_runConfigurationWidget; QMenu *m_addMenu; + bool m_ignoreChange; }; +/*! A model to represent the run configurations of a target. */ +class RunConfigurationsModel : public QAbstractListModel +{ + Q_OBJECT +public: + RunConfigurationsModel(Target *target, QObject *parent = 0); + + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + + RunConfiguration *runConfigurationAt(int i); + RunConfiguration *runConfigurationFor(const QModelIndex &idx); + QModelIndex indexFor(RunConfiguration *rc); +private slots: + void addedRunConfiguration(ProjectExplorer::RunConfiguration*); + void removedRunConfiguration(ProjectExplorer::RunConfiguration*); + void displayNameChanged(); +private: + Target *m_target; + QList<RunConfiguration *> m_runConfigurations; +}; + + + } // namespace Internal } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.ui b/src/plugins/projectexplorer/runsettingspropertiespage.ui index 4a3706552e..dbd7386597 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/runsettingspropertiespage.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>442</width> + <width>480</width> <height>32</height> </rect> </property> @@ -25,7 +25,7 @@ </sizepolicy> </property> <property name="text"> - <string>Edit run configuration:</string> + <string>Run configuration:</string> </property> <property name="buddy"> <cstring>runConfigurationCombo</cstring> @@ -63,13 +63,6 @@ </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"> <enum>Qt::Horizontal</enum> |