diff options
author | Cristian Adam <cristian.adam@qt.io> | 2023-12-06 14:34:27 +0100 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2023-12-07 12:05:00 +0000 |
commit | 7ea90a11e4b53eaff70dbb85a20ead9aa817bc13 (patch) | |
tree | f39aa08764f8f83535841ec1ecef9a6ec2b5e910 | |
parent | b2086c22a80e27c74364c3b3ed7874967b00bfd2 (diff) |
ProjectExplorer: Make CustomParser creation available outside PE plugin
This would allow usage from other places, like the CMakeProjectManager
plugin.
Change-Id: Idf12b6688c9ac3c71b5614dce37babbeab7f6748
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/plugins/projectexplorer/buildstep.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/customparser.cpp | 18 | ||||
-rw-r--r-- | src/plugins/projectexplorer/customparser.h | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/runcontrol.cpp | 2 |
4 files changed, 14 insertions, 13 deletions
diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index d575d9b7cc..5d63e61b8a 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -212,7 +212,7 @@ void BuildStep::setupOutputFormatter(OutputFormatter *formatter) { if (auto bc = qobject_cast<BuildConfiguration *>(projectConfiguration())) { for (const Id id : bc->customParsers()) { - if (Internal::CustomParser * const parser = Internal::CustomParser::createFromId(id)) + if (auto parser = createCustomParserFromId(id)) formatter->addLineParser(parser); } diff --git a/src/plugins/projectexplorer/customparser.cpp b/src/plugins/projectexplorer/customparser.cpp index e1dc3c7577..70859f278d 100644 --- a/src/plugins/projectexplorer/customparser.cpp +++ b/src/plugins/projectexplorer/customparser.cpp @@ -173,6 +173,15 @@ CustomParsersAspect::CustomParsersAspect(Target *target) }); } +OutputTaskParser *createCustomParserFromId(Utils::Id id) +{ + const CustomParserSettings parser = findOrDefault(ProjectExplorerPlugin::customParsers(), + [id](const CustomParserSettings &p) { return p.id == id; }); + if (parser.id.isValid()) + return new Internal::CustomParser(parser); + return nullptr; +} + void CustomParsersAspect::fromMap(const Store &map) { m_parsers = transform(map.value(settingsKey()).toList(), &Id::fromSetting); @@ -198,15 +207,6 @@ void CustomParser::setSettings(const CustomParserSettings &settings) m_warning = settings.warning; } -CustomParser *CustomParser::createFromId(Utils::Id id) -{ - const CustomParserSettings parser = findOrDefault(ProjectExplorerPlugin::customParsers(), - [id](const CustomParserSettings &p) { return p.id == id; }); - if (parser.id.isValid()) - return new CustomParser(parser); - return nullptr; -} - OutputLineParser::Result CustomParser::handleLine(const QString &line, OutputFormat type) { const CustomParserExpression::CustomParserChannel channel = type == StdErrFormat diff --git a/src/plugins/projectexplorer/customparser.h b/src/plugins/projectexplorer/customparser.h index 2416a6bed1..383bf84eb7 100644 --- a/src/plugins/projectexplorer/customparser.h +++ b/src/plugins/projectexplorer/customparser.h @@ -80,6 +80,7 @@ public: void setParsers(const QList<Utils::Id> &parsers) { m_parsers = parsers; } QList<Utils::Id> parsers() const { return m_parsers; } + struct Data : BaseAspect::Data { QList<Utils::Id> parsers; @@ -92,6 +93,8 @@ private: QList<Utils::Id> m_parsers; }; +PROJECTEXPLORER_EXPORT ProjectExplorer::OutputTaskParser *createCustomParserFromId(Utils::Id id); + namespace Internal { class CustomParser : public ProjectExplorer::OutputTaskParser @@ -101,8 +104,6 @@ public: void setSettings(const CustomParserSettings &settings); - static CustomParser *createFromId(Utils::Id id); - private: Result handleLine(const QString &line, Utils::OutputFormat type) override; diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index a08e260b25..43d3529159 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -822,7 +822,7 @@ void RunControl::setupFormatter(OutputFormatter *formatter) const QList<Utils::OutputLineParser *> parsers = OutputFormatterFactory::createFormatters(target()); if (const auto customParsersAspect = aspect<CustomParsersAspect>()) { for (const Id id : std::as_const(customParsersAspect->parsers)) { - if (CustomParser * const parser = CustomParser::createFromId(id)) + if (auto parser = createCustomParserFromId(id)) parsers << parser; } } |