aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/parseissuesdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/parseissuesdialog.cpp')
-rw-r--r--src/plugins/projectexplorer/parseissuesdialog.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/parseissuesdialog.cpp b/src/plugins/projectexplorer/parseissuesdialog.cpp
index 7b0d3758e6..5a53574d93 100644
--- a/src/plugins/projectexplorer/parseissuesdialog.cpp
+++ b/src/plugins/projectexplorer/parseissuesdialog.cpp
@@ -136,13 +136,13 @@ ParseIssuesDialog::~ParseIssuesDialog()
}
static void parse(QFutureInterface<void> &future, const QString &output,
- const std::unique_ptr<IOutputParser> &parser, bool isStderr)
+ const std::unique_ptr<Utils::OutputFormatter> &parser, bool isStderr)
{
const QStringList lines = output.split('\n');
future.setProgressRange(0, lines.count());
- const auto parserFunc = isStderr ? &IOutputParser::stdError : &IOutputParser::stdOutput;
+ const Utils::OutputFormat format = isStderr ? Utils::StdErrFormat : Utils::StdOutFormat;
for (const QString &line : lines) {
- (parser.get()->*parserFunc)(line);
+ parser->appendMessage(line + '\n', format);
future.setProgressValue(future.progressValue() + 1);
if (future.isCanceled())
return;
@@ -151,15 +151,17 @@ static void parse(QFutureInterface<void> &future, const QString &output,
void ParseIssuesDialog::accept()
{
- std::unique_ptr<IOutputParser> parser(d->kitChooser.currentKit()->createOutputParser());
- if (!parser) {
+ const QList<Utils::OutputLineParser *> lineParsers =
+ d->kitChooser.currentKit()->createOutputParsers();
+ if (lineParsers.isEmpty()) {
QMessageBox::critical(this, tr("Cannot Parse"), tr("Cannot parse: The chosen kit does "
"not provide an output parser."));
return;
}
+ std::unique_ptr<Utils::OutputFormatter> parser(new Utils::OutputFormatter);
+ parser->setLineParsers(lineParsers);
if (d->clearTasksCheckBox.isChecked())
TaskHub::clearTasks();
- connect(parser.get(), &IOutputParser::addTask, [](const Task &t) { TaskHub::addTask(t); });
const QFuture<void> f = Utils::runAsync(&parse, d->compileOutputEdit.toPlainText(),
std::move(parser), d->stderrCheckBox.isChecked());
Core::ProgressManager::addTask(f, tr("Parsing build output"),