QmlDesigner: Add createQmlVisualNode()

Change-Id: I7e1a739a58b740c2b5fc171e66ce7b6950bb1a26
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Thomas Hartmann
2019-11-08 15:43:01 +01:00
parent d10ce822ca
commit c6115771f9
2 changed files with 35 additions and 0 deletions

View File

@@ -101,6 +101,13 @@ public:
const ItemLibraryEntry &itemLibraryEntry,
const Position &position,
NodeAbstractProperty parentproperty);
static QmlVisualNode createQmlVisualNode(AbstractView *view,
const ItemLibraryEntry &itemLibraryEntry,
const QVector3D &position);
static NodeListProperty findSceneNodeProperty(AbstractView *view);
private:
void setDoubleProperty(const PropertyName &name, double value);
};

View File

@@ -39,6 +39,8 @@
#include "modelmerger.h"
#include "rewritingexception.h"
#include <utils/qtcassert.h>
#include <QUrl>
#include <QPlainTextEdit>
#include <QFileInfo>
@@ -289,6 +291,32 @@ QmlObjectNode QmlVisualNode::createQmlObjectNode(AbstractView *view,
return newQmlObjectNode;
}
QmlVisualNode QmlVisualNode::createQmlVisualNode(AbstractView *view,
const ItemLibraryEntry &itemLibraryEntry,
const QVector3D &position)
{
NodeAbstractProperty sceneNodeProperty = findSceneNodeProperty(view);
QTC_ASSERT(sceneNodeProperty.isValid(), return {});
ModelNode node = createQmlObjectNode(view, itemLibraryEntry, position, sceneNodeProperty).modelNode();
return node;
}
NodeListProperty QmlVisualNode::findSceneNodeProperty(AbstractView *view)
{
QTC_ASSERT(view, return {});
QList<ModelNode> quickViews = view->allModelNodesOfType("QtQuick3D.View3D");
QTC_ASSERT(!quickViews.isEmpty(), return {});
const ModelNode quickView = quickViews.first();
QList<ModelNode> nodes = quickView.directSubModelNodesOfType("QtQuick3D.Node");
QTC_ASSERT(!nodes.isEmpty(), return {});
const ModelNode node = nodes.first();
return node.defaultNodeListProperty();
}
QList<ModelNode> toModelNodeList(const QList<QmlVisualNode> &qmlVisualNodeList)
{
QList<ModelNode> modelNodeList;