forked from qt-creator/qt-creator
QmlDesigner: Add createQmlObjectNode()
The item library can also create pure QtObjects now. This should be reflected in the API. Change-Id: I58f8306232137c9feecf51d0abb938191c0a113a Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -503,17 +503,17 @@ void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, in
|
||||
if (!NodeHints::fromItemLibraryEntry(itemLibraryEntry).canBeDroppedInNavigator())
|
||||
return;
|
||||
|
||||
const QmlItemNode newQmlItemNode = QmlItemNode::createQmlItemNode(m_view, itemLibraryEntry, QPointF(), targetProperty);
|
||||
const QmlObjectNode newQmlObjectNode = QmlItemNode::createQmlObjectNode(m_view, itemLibraryEntry, QPointF(), targetProperty);
|
||||
|
||||
if (newQmlItemNode.isValid() && targetProperty.isNodeListProperty()) {
|
||||
if (newQmlObjectNode.isValid() && targetProperty.isNodeListProperty()) {
|
||||
QList<ModelNode> newModelNodeList;
|
||||
newModelNodeList.append(newQmlItemNode);
|
||||
newModelNodeList.append(newQmlObjectNode);
|
||||
|
||||
moveNodesInteractive(targetProperty, newModelNodeList, targetRowNumber);
|
||||
}
|
||||
|
||||
if (newQmlItemNode.isValid())
|
||||
m_view->selectModelNode(newQmlItemNode.modelNode());
|
||||
if (newQmlObjectNode.isValid())
|
||||
m_view->selectModelNode(newQmlObjectNode.modelNode());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -56,7 +56,12 @@ public:
|
||||
const ItemLibraryEntry &itemLibraryEntry,
|
||||
const QPointF &position,
|
||||
QmlItemNode parentQmlItemNode);
|
||||
static QmlItemNode createQmlItemNode(AbstractView *view,
|
||||
|
||||
static QmlObjectNode createQmlObjectNode(AbstractView *view,
|
||||
const ItemLibraryEntry &itemLibraryEntry,
|
||||
const QPointF &position,
|
||||
QmlItemNode parentQmlItemNode);
|
||||
static QmlObjectNode createQmlObjectNode(AbstractView *view,
|
||||
const ItemLibraryEntry &itemLibraryEntry,
|
||||
const QPointF &position,
|
||||
NodeAbstractProperty parentproperty);
|
||||
|
@@ -85,8 +85,15 @@ static QmlItemNode createQmlItemNodeFromSource(AbstractView *view, const QString
|
||||
return QmlItemNode();
|
||||
}
|
||||
|
||||
QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view,
|
||||
const ItemLibraryEntry &itemLibraryEntry,
|
||||
const QPointF &position,
|
||||
QmlItemNode parentQmlItemNode)
|
||||
{
|
||||
return QmlItemNode(createQmlObjectNode(view, itemLibraryEntry, position, parentQmlItemNode));
|
||||
}
|
||||
|
||||
QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode)
|
||||
QmlObjectNode QmlItemNode::createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode)
|
||||
{
|
||||
if (!parentQmlItemNode.isValid())
|
||||
parentQmlItemNode = QmlItemNode(view->rootModelNode());
|
||||
@@ -95,14 +102,14 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
|
||||
|
||||
NodeAbstractProperty parentProperty = parentQmlItemNode.defaultNodeAbstractProperty();
|
||||
|
||||
return QmlItemNode::createQmlItemNode(view, itemLibraryEntry, position, parentProperty);
|
||||
return QmlItemNode::createQmlObjectNode(view, itemLibraryEntry, position, parentProperty);
|
||||
}
|
||||
|
||||
QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty)
|
||||
QmlObjectNode QmlItemNode::createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty)
|
||||
{
|
||||
QmlItemNode newQmlItemNode;
|
||||
QmlObjectNode newQmlObjectNode;
|
||||
|
||||
view->executeInTransaction("QmlItemNode::createQmlItemNode", [=, &newQmlItemNode, &parentproperty](){
|
||||
view->executeInTransaction("QmlItemNode::createQmlItemNode", [=, &newQmlObjectNode, &parentproperty](){
|
||||
NodeMetaInfo metaInfo = view->model()->metaInfo(itemLibraryEntry.typeName());
|
||||
|
||||
int minorVersion = metaInfo.minorVersion();
|
||||
@@ -128,31 +135,31 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
|
||||
}
|
||||
}
|
||||
|
||||
newQmlItemNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList));
|
||||
newQmlObjectNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList));
|
||||
} else {
|
||||
newQmlItemNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
|
||||
newQmlObjectNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
|
||||
}
|
||||
|
||||
if (parentproperty.isValid())
|
||||
parentproperty.reparentHere(newQmlItemNode);
|
||||
parentproperty.reparentHere(newQmlObjectNode);
|
||||
|
||||
if (!newQmlItemNode.isValid())
|
||||
if (!newQmlObjectNode.isValid())
|
||||
return;
|
||||
|
||||
newQmlItemNode.setId(view->generateNewId(itemLibraryEntry.name()));
|
||||
newQmlObjectNode.setId(view->generateNewId(itemLibraryEntry.name()));
|
||||
|
||||
for (const auto &propertyBindingEntry : propertyBindingList)
|
||||
newQmlItemNode.modelNode().bindingProperty(propertyBindingEntry.first).setExpression(propertyBindingEntry.second);
|
||||
newQmlObjectNode.modelNode().bindingProperty(propertyBindingEntry.first).setExpression(propertyBindingEntry.second);
|
||||
|
||||
for (const auto &propertyBindingEntry : propertyEnumList)
|
||||
newQmlItemNode.modelNode().variantProperty(propertyBindingEntry.first).setEnumeration(propertyBindingEntry.second.toUtf8());
|
||||
newQmlObjectNode.modelNode().variantProperty(propertyBindingEntry.first).setEnumeration(propertyBindingEntry.second.toUtf8());
|
||||
|
||||
Q_ASSERT(newQmlItemNode.isValid());
|
||||
Q_ASSERT(newQmlObjectNode.isValid());
|
||||
});
|
||||
|
||||
Q_ASSERT(newQmlItemNode.isValid());
|
||||
Q_ASSERT(newQmlObjectNode.isValid());
|
||||
|
||||
return newQmlItemNode;
|
||||
return newQmlObjectNode;
|
||||
}
|
||||
|
||||
QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QString &imageName, const QPointF &position, QmlItemNode parentQmlItemNode)
|
||||
|
Reference in New Issue
Block a user