AssetExport: Improve json generating class names

Change-Id: Id9abcf1122ee4c2c53f886438958e38cc84a835d
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Vikas Pachdha
2021-01-05 18:26:52 +01:00
parent da147880e8
commit 4618018c4b
14 changed files with 87 additions and 87 deletions

View File

@@ -53,10 +53,10 @@ add_qtc_plugin(assetexporterplugin
assetexporterplugin/componentexporter.h assetexporterplugin/componentexporter.cpp
assetexporterplugin/exportnotification.h assetexporterplugin/exportnotification.cpp
assetexporterplugin/filepathmodel.h assetexporterplugin/filepathmodel.cpp
assetexporterplugin/parsers/assetnodeparser.h assetexporterplugin/parsers/assetnodeparser.cpp
assetexporterplugin/parsers/modelitemnodeparser.h assetexporterplugin/parsers/modelitemnodeparser.cpp
assetexporterplugin/parsers/modelnodeparser.h assetexporterplugin/parsers/modelnodeparser.cpp
assetexporterplugin/parsers/textnodeparser.h assetexporterplugin/parsers/textnodeparser.cpp
assetexporterplugin/dumpers/assetnodedumper.h assetexporterplugin/dumpers/assetnodedumper.cpp
assetexporterplugin/dumpers/itemnodedumper.h assetexporterplugin/dumpers/itemnodedumper.cpp
assetexporterplugin/dumpers/nodedumper.h assetexporterplugin/dumpers/nodedumper.cpp
assetexporterplugin/dumpers/textnodedumper.h assetexporterplugin/dumpers/textnodedumper.cpp
assetexporterplugin/assetexporterplugin.qrc
PLUGIN_PATH ${QmlDesignerPluginInstallPrefix}
SKIP_DEBUG_CMAKE_FILE_CHECK

View File

@@ -32,9 +32,9 @@
#include "filepathmodel.h"
#include "componentexporter.h"
#include "parsers/modelitemnodeparser.h"
#include "parsers/textnodeparser.h"
#include "parsers/assetnodeparser.h"
#include "dumpers/itemnodedumper.h"
#include "dumpers/textnodedumper.h"
#include "dumpers/assetnodedumper.h"
#include "coreplugin/actionmanager/actionmanager.h"
#include "coreplugin/actionmanager/actioncontainer.h"
@@ -68,10 +68,10 @@ AssetExporterPlugin::AssetExporterPlugin() :
auto &viewManager = designerPlugin->viewManager();
viewManager.registerViewTakingOwnership(m_view);
// Add parsers templates for factory instantiation.
Component::addNodeParser<ItemNodeParser>();
Component::addNodeParser<TextNodeParser>();
Component::addNodeParser<AssetNodeParser>();
// Add dumper templates for factory instantiation.
Component::addNodeDumper<ItemNodeDumper>();
Component::addNodeDumper<TextNodeDumper>();
Component::addNodeDumper<AssetNodeDumper>();
// Instantiate actions created by the plugin.
addActions();

View File

@@ -16,10 +16,10 @@ HEADERS += \
componentexporter.h \
exportnotification.h \
filepathmodel.h \
parsers/assetnodeparser.h \
parsers/modelitemnodeparser.h \
parsers/modelnodeparser.h \
parsers/textnodeparser.h
dumpers/assetnodedumper.h \
dumpers/itemnodedumper.h \
dumpers/nodedumper.h \
dumpers/textnodedumper.h
SOURCES += \
assetexportdialog.cpp \
@@ -29,10 +29,10 @@ SOURCES += \
componentexporter.cpp \
exportnotification.cpp \
filepathmodel.cpp \
parsers/assetnodeparser.cpp \
parsers/modelitemnodeparser.cpp \
parsers/modelnodeparser.cpp \
parsers/textnodeparser.cpp
dumpers/assetnodedumper.cpp \
dumpers/itemnodedumper.cpp \
dumpers/nodedumper.cpp \
dumpers/textnodedumper.cpp
FORMS += \
assetexportdialog.ui

View File

@@ -53,13 +53,13 @@ QtcProduct {
"exportnotification.h",
"filepathmodel.cpp",
"filepathmodel.h",
"parsers/assetnodeparser.cpp",
"parsers/assetnodeparser.h",
"parsers/modelitemnodeparser.cpp",
"parsers/modelitemnodeparser.h",
"parsers/modelnodeparser.cpp",
"parsers/modelnodeparser.h",
"parsers/textnodeparser.cpp",
"parsers/textnodeparser.h"
"dumpers/assetnodedumper.cpp",
"dumpers/assetnodedumper.h",
"dumpers/itemnodedumper.cpp",
"dumpers/itemnodedumper.h",
"dumpers/nodedumper.cpp",
"dumpers/nodedumper.h",
"dumpers/textnodedumper.cpp",
"dumpers/textnodedumper.h"
]
}

View File

@@ -26,7 +26,7 @@
#include "assetexporter.h"
#include "assetexportpluginconstants.h"
#include "exportnotification.h"
#include "parsers/modelnodeparser.h"
#include "dumpers/nodedumper.h"
#include "model.h"
#include "nodeabstractproperty.h"
@@ -59,7 +59,7 @@ static QByteArrayList populateLineage(const QmlDesigner::ModelNode &node)
namespace QmlDesigner {
using namespace Constants;
std::vector<std::unique_ptr<Internal::NodeParserCreatorBase>> Component::m_readers;
std::vector<std::unique_ptr<Internal::NodeDumperCreatorBase>> Component::m_readers;
Component::Component(AssetExporter &exporter, const ModelNode &rootNode):
m_exporter(exporter),
m_rootNode(rootNode)
@@ -88,12 +88,12 @@ void Component::exportComponent()
addImports();
}
ModelNodeParser *Component::createNodeParser(const ModelNode &node) const
NodeDumper *Component::createNodeDumper(const ModelNode &node) const
{
QByteArrayList lineage = populateLineage(node);
std::unique_ptr<ModelNodeParser> reader;
for (auto &parserCreator: m_readers) {
std::unique_ptr<ModelNodeParser> r(parserCreator->instance(lineage, node));
std::unique_ptr<NodeDumper> reader;
for (auto &dumperCreator: m_readers) {
std::unique_ptr<NodeDumper> r(dumperCreator->instance(lineage, node));
if (r->isExportable()) {
if (reader) {
if (reader->priority() < r->priority())
@@ -105,7 +105,7 @@ ModelNodeParser *Component::createNodeParser(const ModelNode &node) const
}
if (!reader)
qCDebug(loggerInfo()) << "No parser for node" << node;
qCDebug(loggerInfo()) << "No dumper for node" << node;
return reader.release();
}
@@ -118,15 +118,15 @@ QJsonObject Component::nodeToJson(const ModelNode &node)
if (!node.isSubclassOf("QtQuick.Item"))
return {};
std::unique_ptr<ModelNodeParser> parser(createNodeParser(node));
if (parser) {
if (parser->uuid().isEmpty()) {
std::unique_ptr<NodeDumper> dumper(createNodeDumper(node));
if (dumper) {
if (dumper->uuid().isEmpty()) {
// Assign an unique identifier to the node.
QByteArray uuid = m_exporter.generateUuid(node);
node.setAuxiliaryData(Constants::UuidAuxTag, QString::fromLatin1(uuid));
node.model()->rewriterView()->writeAuxiliaryData();
}
jsonObject = parser->json(*this);
jsonObject = dumper->json(*this);
} else {
ExportNotification::addError(tr("Error exporting node %1. Cannot parse type %2.")
.arg(node.id()).arg(QString::fromUtf8(node.type())));

View File

@@ -41,27 +41,27 @@ namespace QmlDesigner {
class AssetExporter;
class ModelNode;
class Component;
class ModelNodeParser;
class NodeDumper;
namespace Internal {
class NodeParserCreatorBase
class NodeDumperCreatorBase
{
public:
virtual ~NodeParserCreatorBase() {}
virtual ~NodeDumperCreatorBase() {}
protected:
virtual ModelNodeParser *instance(const QByteArrayList &, const ModelNode &) const = 0;
virtual NodeDumper *instance(const QByteArrayList &, const ModelNode &) const = 0;
friend class QmlDesigner::Component;
};
template<class T>
class NodeParserCreator : public NodeParserCreatorBase
class NodeDumperCreator : public NodeDumperCreatorBase
{
public:
NodeParserCreator() = default;
~NodeParserCreator() = default;
NodeDumperCreator() = default;
~NodeDumperCreator() = default;
protected:
ModelNodeParser *instance(const QByteArrayList &lineage, const ModelNode &node) const {
NodeDumper *instance(const QByteArrayList &lineage, const ModelNode &node) const {
return new T(lineage, node);
}
};
@@ -79,13 +79,13 @@ public:
AssetExporter &exporter();
template<typename T> static void addNodeParser()
template<typename T> static void addNodeDumper()
{
QTC_ASSERT((std::is_base_of<ModelNodeParser, T>::value), return);
m_readers.push_back(std::make_unique<Internal::NodeParserCreator<T>>());
QTC_ASSERT((std::is_base_of<NodeDumper, T>::value), return);
m_readers.push_back(std::make_unique<Internal::NodeDumperCreator<T>>());
}
private:
ModelNodeParser* createNodeParser(const ModelNode &node) const;
NodeDumper* createNodeDumper(const ModelNode &node) const;
QJsonObject nodeToJson(const ModelNode &node);
void addImports();
@@ -93,6 +93,6 @@ private:
AssetExporter& m_exporter;
const ModelNode &m_rootNode;
QJsonObject m_json;
static std::vector<std::unique_ptr<Internal::NodeParserCreatorBase>> m_readers;
static std::vector<std::unique_ptr<Internal::NodeDumperCreatorBase>> m_readers;
};
}

View File

@@ -23,7 +23,7 @@
**
****************************************************************************/
#include "assetnodeparser.h"
#include "assetnodedumper.h"
#include "assetexportpluginconstants.h"
#include "assetexporter.h"
@@ -36,13 +36,13 @@
namespace QmlDesigner {
using namespace Constants;
AssetNodeParser::AssetNodeParser(const QByteArrayList &lineage, const ModelNode &node) :
ItemNodeParser(lineage, node)
AssetNodeDumper::AssetNodeDumper(const QByteArrayList &lineage, const ModelNode &node) :
ItemNodeDumper(lineage, node)
{
}
bool AssetNodeParser::isExportable() const
bool AssetNodeDumper::isExportable() const
{
auto hasType = [this](const QByteArray &type) {
return lineage().contains(type);
@@ -50,9 +50,9 @@ bool AssetNodeParser::isExportable() const
return hasType("QtQuick.Image") || hasType("QtQuick.Rectangle");
}
QJsonObject AssetNodeParser::json(Component &component) const
QJsonObject AssetNodeDumper::json(Component &component) const
{
QJsonObject jsonObject = ItemNodeParser::json(component);
QJsonObject jsonObject = ItemNodeDumper::json(component);
Utils::FilePath assetPath = component.exporter().exportAsset(objectNode(), uuid());
QJsonObject assetData;

View File

@@ -24,16 +24,16 @@
****************************************************************************/
#pragma once
#include "modelitemnodeparser.h"
#include "itemnodedumper.h"
namespace QmlDesigner {
class Component;
class AssetNodeParser : public ItemNodeParser
class AssetNodeDumper : public ItemNodeDumper
{
public:
AssetNodeParser(const QByteArrayList &lineage, const ModelNode &node);
~AssetNodeParser() override = default;
AssetNodeDumper(const QByteArrayList &lineage, const ModelNode &node);
~AssetNodeDumper() override = default;
bool isExportable() const override;
int priority() const override { return 200; }

View File

@@ -23,7 +23,7 @@
**
****************************************************************************/
#include "modelitemnodeparser.h"
#include "itemnodedumper.h"
#include "assetexportpluginconstants.h"
#include "qmlitemnode.h"
@@ -41,19 +41,19 @@ static QString capitalize(const QString &str)
namespace QmlDesigner {
using namespace Constants;
ItemNodeParser::ItemNodeParser(const QByteArrayList &lineage,
ItemNodeDumper::ItemNodeDumper(const QByteArrayList &lineage,
const ModelNode &node) :
ModelNodeParser(lineage, node)
NodeDumper(lineage, node)
{
}
bool QmlDesigner::ItemNodeParser::isExportable() const
bool QmlDesigner::ItemNodeDumper::isExportable() const
{
return lineage().contains("QtQuick.Item");
}
QJsonObject QmlDesigner::ItemNodeParser::json(QmlDesigner::Component &component) const
QJsonObject QmlDesigner::ItemNodeDumper::json(QmlDesigner::Component &component) const
{
Q_UNUSED(component);
const QmlObjectNode &qmlObjectNode = objectNode();

View File

@@ -24,18 +24,18 @@
****************************************************************************/
#pragma once
#include "modelnodeparser.h"
#include "nodedumper.h"
namespace QmlDesigner {
class ModelNode;
class Component;
class ItemNodeParser : public ModelNodeParser
class ItemNodeDumper : public NodeDumper
{
public:
ItemNodeParser(const QByteArrayList &lineage, const ModelNode &node);
ItemNodeDumper(const QByteArrayList &lineage, const ModelNode &node);
~ItemNodeParser() override = default;
~ItemNodeDumper() override = default;
int priority() const override { return 100; }
bool isExportable() const override;

View File

@@ -22,11 +22,11 @@
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "modelnodeparser.h"
#include "nodedumper.h"
#include "assetexportpluginconstants.h"
namespace QmlDesigner {
ModelNodeParser::ModelNodeParser(const QByteArrayList &lineage, const ModelNode &node) :
NodeDumper::NodeDumper(const QByteArrayList &lineage, const ModelNode &node) :
m_node(node),
m_objectNode(node),
m_lineage(lineage)
@@ -34,12 +34,12 @@ ModelNodeParser::ModelNodeParser(const QByteArrayList &lineage, const ModelNode
}
QVariant ModelNodeParser::propertyValue(const PropertyName &name) const
QVariant NodeDumper::propertyValue(const PropertyName &name) const
{
return m_objectNode.instanceValue(name);
}
QString ModelNodeParser::uuid() const
QString NodeDumper::uuid() const
{
return m_node.auxiliaryData(Constants::UuidAuxTag).toString();
}

View File

@@ -33,12 +33,12 @@ namespace QmlDesigner {
class Component;
class ModelNode;
class ModelNodeParser
class NodeDumper
{
public:
ModelNodeParser(const QByteArrayList &lineage, const ModelNode &node);
NodeDumper(const QByteArrayList &lineage, const ModelNode &node);
virtual ~ModelNodeParser() = default;
virtual ~NodeDumper() = default;
virtual int priority() const = 0;
virtual bool isExportable() const = 0;

View File

@@ -23,7 +23,7 @@
**
****************************************************************************/
#include "textnodeparser.h"
#include "textnodedumper.h"
#include "assetexportpluginconstants.h"
#include <QColor>
@@ -55,21 +55,21 @@ QString toJsonAlignEnum(QString value) {
namespace QmlDesigner {
using namespace Constants;
TextNodeParser::TextNodeParser(const QByteArrayList &lineage, const ModelNode &node) :
ItemNodeParser(lineage, node)
TextNodeDumper::TextNodeDumper(const QByteArrayList &lineage, const ModelNode &node) :
ItemNodeDumper(lineage, node)
{
}
bool TextNodeParser::isExportable() const
bool TextNodeDumper::isExportable() const
{
return lineage().contains("QtQuick.Text");
}
QJsonObject TextNodeParser::json(Component &component) const
QJsonObject TextNodeDumper::json(Component &component) const
{
Q_UNUSED(component);
QJsonObject jsonObject = ItemNodeParser::json(component);
QJsonObject jsonObject = ItemNodeDumper::json(component);
QJsonObject textDetails;
textDetails.insert(TextContentTag, propertyValue("text").toString());

View File

@@ -24,16 +24,16 @@
****************************************************************************/
#pragma once
#include "modelitemnodeparser.h"
#include "itemnodedumper.h"
namespace QmlDesigner {
class Component;
class TextNodeParser : public ItemNodeParser
class TextNodeDumper : public ItemNodeDumper
{
public:
TextNodeParser(const QByteArrayList &lineage, const ModelNode &node);
~TextNodeParser() override = default;
TextNodeDumper(const QByteArrayList &lineage, const ModelNode &node);
~TextNodeDumper() override = default;
bool isExportable() const override;
int priority() const override { return 200; }