diff options
Diffstat (limited to 'src/plugins/projectexplorer/parseissuesdialog.cpp')
-rw-r--r-- | src/plugins/projectexplorer/parseissuesdialog.cpp | 14 |
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"), |