aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2023-12-06 14:34:27 +0100
committerCristian Adam <cristian.adam@qt.io>2023-12-07 12:05:00 +0000
commit7ea90a11e4b53eaff70dbb85a20ead9aa817bc13 (patch)
treef39aa08764f8f83535841ec1ecef9a6ec2b5e910
parentb2086c22a80e27c74364c3b3ed7874967b00bfd2 (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.cpp2
-rw-r--r--src/plugins/projectexplorer/customparser.cpp18
-rw-r--r--src/plugins/projectexplorer/customparser.h5
-rw-r--r--src/plugins/projectexplorer/runcontrol.cpp2
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;
}
}