Add more editing of tools. Doesn't save yet.

This commit is contained in:
con
2011-01-24 15:01:48 +01:00
parent 0c1d21fb5b
commit 4334309ea4
5 changed files with 140 additions and 16 deletions

View File

@@ -47,9 +47,10 @@ ExternalToolConfig::ExternalToolConfig(QWidget *parent) :
ui->setupUi(this);
ui->toolTree->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed);
connect(ui->toolTree, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
this, SLOT(showInfoForItem(QTreeWidgetItem*)));
this, SLOT(handleCurrentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
connect(ui->toolTree, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
this, SLOT(updateItem(QTreeWidgetItem *)));
this, SLOT(updateItemName(QTreeWidgetItem *)));
showInfoForItem(0);
}
@@ -108,6 +109,34 @@ void ExternalToolConfig::setTools(const QMap<QString, QList<ExternalTool *> > &t
ui->toolTree->blockSignals(blocked); // unblock itemChanged
}
void ExternalToolConfig::handleCurrentItemChanged(QTreeWidgetItem *now, QTreeWidgetItem *previous)
{
updateItem(previous);
showInfoForItem(now);
}
void ExternalToolConfig::updateItem(QTreeWidgetItem *item)
{
ExternalTool *tool = 0;
if (item)
tool = item->data(0, Qt::UserRole).value<ExternalTool *>();
if (!tool)
return;
tool->setDescription(ui->description->text());
QStringList executables = tool->executables();
if (executables.size() > 0)
executables[0] = ui->executable->path();
else
executables << ui->executable->path();
tool->setExecutables(executables);
tool->setArguments(ui->arguments->text());
tool->setWorkingDirectory(ui->workingDirectory->path());
tool->setOutputHandling((ExternalTool::OutputHandling)ui->outputBehavior->currentIndex());
tool->setErrorHandling((ExternalTool::OutputHandling)ui->errorOutputBehavior->currentIndex());
tool->setModifiesCurrentDocument(ui->modifiesDocumentCheckbox->checkState());
tool->setInput(ui->inputText->toPlainText());
}
void ExternalToolConfig::showInfoForItem(QTreeWidgetItem *item)
{
ExternalTool *tool = 0;
@@ -135,7 +164,7 @@ void ExternalToolConfig::showInfoForItem(QTreeWidgetItem *item)
ui->arguments->setCursorPosition(0);
}
void ExternalToolConfig::updateItem(QTreeWidgetItem *item)
void ExternalToolConfig::updateItemName(QTreeWidgetItem *item)
{
ExternalTool *tool = 0;
if (item)
@@ -182,3 +211,13 @@ void ExternalToolConfig::updateItem(QTreeWidgetItem *item)
ui->toolTree->blockSignals(blocked); // unblock itemChanged
}
}
QMap<QString, QList<ExternalTool *> > ExternalToolConfig::tools() const
{
return m_tools;
}
void ExternalToolConfig::apply()
{
updateItem(ui->toolTree->currentItem());
}