ProjectExplorer: Allow users to remove all run configurations

Change-Id: Ib70bb1a658edcd6996e98e391b9b938618747ed3
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2023-06-28 16:11:16 +02:00
parent 176ada90a8
commit 0406f543eb
4 changed files with 52 additions and 13 deletions

View File

@@ -53,6 +53,7 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
m_addRunToolButton = new QPushButton(Tr::tr("Add..."), this);
m_removeRunToolButton = new QPushButton(Tr::tr("Remove"), this);
m_removeAllRunConfigsButton = new QPushButton(Tr::tr("Remove All"), this);
m_renameRunButton = new QPushButton(Tr::tr("Rename..."), this);
m_cloneRunButton = new QPushButton(Tr::tr("Clone..."), this);
@@ -92,9 +93,10 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
m_gridLayout->addWidget(m_runConfigurationCombo, 4, 1, 1, 1);
m_gridLayout->addWidget(m_addRunToolButton, 4, 2, 1, 1);
m_gridLayout->addWidget(m_removeRunToolButton, 4, 3, 1, 1);
m_gridLayout->addWidget(m_renameRunButton, 4, 4, 1, 1);
m_gridLayout->addWidget(m_cloneRunButton, 4, 5, 1, 1);
m_gridLayout->addItem(spacer1, 4, 6, 1, 1);
m_gridLayout->addWidget(m_removeAllRunConfigsButton, 4, 4, 1, 1);
m_gridLayout->addWidget(m_renameRunButton, 4, 5, 1, 1);
m_gridLayout->addWidget(m_cloneRunButton, 4, 6, 1, 1);
m_gridLayout->addItem(spacer1, 4, 7, 1, 1);
m_gridLayout->addWidget(runWidget, 5, 0, 1, -1);
m_gridLayout->addItem(spacer2, 6, 0, 1, 1);
@@ -144,7 +146,7 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
m_runConfigurationCombo->setModel(model);
m_runConfigurationCombo->setCurrentIndex(model->indexFor(rc));
updateRemoveToolButton();
updateRemoveToolButtons();
m_renameRunButton->setEnabled(rc);
m_cloneRunButton->setEnabled(rc);
@@ -156,20 +158,22 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
this, &RunSettingsWidget::currentRunConfigurationChanged);
connect(m_removeRunToolButton, &QAbstractButton::clicked,
this, &RunSettingsWidget::removeRunConfiguration);
connect(m_removeAllRunConfigsButton, &QAbstractButton::clicked,
this, &RunSettingsWidget::removeAllRunConfigurations);
connect(m_renameRunButton, &QAbstractButton::clicked,
this, &RunSettingsWidget::renameRunConfiguration);
connect(m_cloneRunButton, &QAbstractButton::clicked,
this, &RunSettingsWidget::cloneRunConfiguration);
connect(m_target, &Target::addedRunConfiguration,
this, &RunSettingsWidget::updateRemoveToolButton);
this, &RunSettingsWidget::updateRemoveToolButtons);
connect(m_target, &Target::removedRunConfiguration,
this, &RunSettingsWidget::updateRemoveToolButton);
this, &RunSettingsWidget::updateRemoveToolButtons);
connect(m_target, &Target::addedDeployConfiguration,
this, &RunSettingsWidget::updateRemoveToolButton);
this, &RunSettingsWidget::updateRemoveToolButtons);
connect(m_target, &Target::removedDeployConfiguration,
this, &RunSettingsWidget::updateRemoveToolButton);
this, &RunSettingsWidget::updateRemoveToolButtons);
connect(m_target, &Target::activeRunConfigurationChanged,
this, &RunSettingsWidget::activeRunConfigurationChanged);
@@ -188,7 +192,7 @@ void RunSettingsWidget::showAddRunConfigDialog()
QTC_CHECK(newRC->id() == rci.factory->runConfigurationId());
m_target->addRunConfiguration(newRC);
m_target->setActiveRunConfiguration(newRC);
updateRemoveToolButton();
updateRemoveToolButtons();
}
void RunSettingsWidget::cloneRunConfiguration()
@@ -226,11 +230,27 @@ void RunSettingsWidget::removeRunConfiguration()
return;
m_target->removeRunConfiguration(rc);
updateRemoveToolButton();
updateRemoveToolButtons();
m_renameRunButton->setEnabled(m_target->activeRunConfiguration());
m_cloneRunButton->setEnabled(m_target->activeRunConfiguration());
}
void RunSettingsWidget::removeAllRunConfigurations()
{
QMessageBox msgBox(QMessageBox::Question, Tr::tr("Remove Run Configurations?"),
Tr::tr("Do you really want to delete all run configurations?"),
QMessageBox::Yes|QMessageBox::No, this);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setEscapeButton(QMessageBox::No);
if (msgBox.exec() == QMessageBox::No)
return;
m_target->removeAllRunConfigurations();
updateRemoveToolButtons();
m_renameRunButton->setEnabled(false);
m_cloneRunButton->setEnabled(false);
}
void RunSettingsWidget::activeRunConfigurationChanged()
{
if (m_ignoreChanges.isLocked())
@@ -367,10 +387,12 @@ void RunSettingsWidget::renameDeployConfiguration()
m_target->activeDeployConfiguration()->setDisplayName(name);
}
void RunSettingsWidget::updateRemoveToolButton()
void RunSettingsWidget::updateRemoveToolButtons()
{
m_removeDeployToolButton->setEnabled(m_target->deployConfigurations().count() > 1);
m_removeRunToolButton->setEnabled(!m_target->runConfigurations().isEmpty());
const bool hasRunConfigs = !m_target->runConfigurations().isEmpty();
m_removeRunToolButton->setEnabled(hasRunConfigs);
m_removeAllRunConfigsButton->setEnabled(hasRunConfigs);
}
void RunSettingsWidget::updateDeployConfiguration(DeployConfiguration *dc)

View File

@@ -41,6 +41,7 @@ private:
void showAddRunConfigDialog();
void cloneRunConfiguration();
void removeRunConfiguration();
void removeAllRunConfigurations();
void activeRunConfigurationChanged();
void renameRunConfiguration();
void currentDeployConfigurationChanged(int index);
@@ -49,7 +50,7 @@ private:
void activeDeployConfigurationChanged();
void renameDeployConfiguration();
void updateRemoveToolButton();
void updateRemoveToolButtons();
QString uniqueDCName(const QString &name);
QString uniqueRCName(const QString &name);
@@ -82,6 +83,7 @@ private:
QPushButton *m_removeDeployToolButton;
QPushButton *m_addRunToolButton;
QPushButton *m_removeRunToolButton;
QPushButton *m_removeAllRunConfigsButton;
QPushButton *m_renameRunButton;
QPushButton *m_cloneRunButton;
QPushButton *m_renameDeployButton;

View File

@@ -525,6 +525,20 @@ void Target::removeRunConfiguration(RunConfiguration *rc)
delete rc;
}
void Target::removeAllRunConfigurations()
{
QList<RunConfiguration *> runConfigs = d->m_runConfigurations;
d->m_runConfigurations.clear();
setActiveRunConfiguration(nullptr);
while (!runConfigs.isEmpty()) {
RunConfiguration * const rc = runConfigs.takeFirst();
emit removedRunConfiguration(rc);
ProjectExplorerPlugin::targetSelector()->removedRunConfiguration(rc);
d->m_runConfigurationModel.removeProjectConfiguration(rc);
delete rc;
}
}
RunConfiguration *Target::activeRunConfiguration() const
{
return d->m_activeRunConfiguration;

View File

@@ -77,6 +77,7 @@ public:
const QList<RunConfiguration *> runConfigurations() const;
void addRunConfiguration(RunConfiguration *rc);
void removeRunConfiguration(RunConfiguration *rc);
void removeAllRunConfigurations();
RunConfiguration *activeRunConfiguration() const;
void setActiveRunConfiguration(RunConfiguration *rc);