diff --git a/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp b/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp index 80d8182d5dc..61768f674aa 100644 --- a/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp +++ b/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp @@ -71,6 +71,7 @@ ExternalToolConfig::ExternalToolConfig(QWidget *parent) : ui->revertButton->setIcon(QIcon(QLatin1String(Constants::ICON_RESET))); connect(ui->revertButton, SIGNAL(clicked()), this, SLOT(revertCurrentItem())); connect(ui->addButton, SIGNAL(clicked()), this, SLOT(addTool())); + connect(ui->removeButton, SIGNAL(clicked()), this, SLOT(removeTool())); showInfoForItem(0); updateButtons(ui->toolTree->currentItem()); @@ -302,6 +303,7 @@ void ExternalToolConfig::revertCurrentItem() int index = items.indexOf(tool); if (index != -1) { items[index] = resetTool; + break; } } delete tool; @@ -336,3 +338,26 @@ void ExternalToolConfig::addTool() ui->toolTree->setCurrentItem(item); ui->toolTree->editItem(item); } + +void ExternalToolConfig::removeTool() +{ + QTreeWidgetItem *currentItem = ui->toolTree->currentItem(); + QTC_ASSERT(currentItem, return); + ExternalTool *tool = currentItem->data(0, Qt::UserRole).value(); + QTC_ASSERT(tool, return); + QTC_ASSERT(!tool->preset(), return); + // remove the tool and the tree item + QMutableMapIterator > it(m_tools); + while (it.hasNext()) { + it.next(); + QList &items = it.value(); + int index = items.indexOf(tool); + if (index != -1) { + items.removeAt(index); + break; + } + } + ui->toolTree->setCurrentItem(0); + delete currentItem; + delete tool; +} diff --git a/src/plugins/coreplugin/dialogs/externaltoolconfig.h b/src/plugins/coreplugin/dialogs/externaltoolconfig.h index 77fbd153d3a..d9db9c80b1b 100644 --- a/src/plugins/coreplugin/dialogs/externaltoolconfig.h +++ b/src/plugins/coreplugin/dialogs/externaltoolconfig.h @@ -69,6 +69,7 @@ private slots: void updateButtons(QTreeWidgetItem *item); void updateCurrentItem(); void addTool(); + void removeTool(); private: Ui::ExternalToolConfig *ui;