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())
|
if (!NodeHints::fromItemLibraryEntry(itemLibraryEntry).canBeDroppedInNavigator())
|
||||||
return;
|
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;
|
QList<ModelNode> newModelNodeList;
|
||||||
newModelNodeList.append(newQmlItemNode);
|
newModelNodeList.append(newQmlObjectNode);
|
||||||
|
|
||||||
moveNodesInteractive(targetProperty, newModelNodeList, targetRowNumber);
|
moveNodesInteractive(targetProperty, newModelNodeList, targetRowNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newQmlItemNode.isValid())
|
if (newQmlObjectNode.isValid())
|
||||||
m_view->selectModelNode(newQmlItemNode.modelNode());
|
m_view->selectModelNode(newQmlObjectNode.modelNode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -53,10 +53,15 @@ public:
|
|||||||
static bool isItemOrWindow(const ModelNode &modelNode);
|
static bool isItemOrWindow(const ModelNode &modelNode);
|
||||||
|
|
||||||
static QmlItemNode createQmlItemNode(AbstractView *view,
|
static QmlItemNode createQmlItemNode(AbstractView *view,
|
||||||
|
const ItemLibraryEntry &itemLibraryEntry,
|
||||||
|
const QPointF &position,
|
||||||
|
QmlItemNode parentQmlItemNode);
|
||||||
|
|
||||||
|
static QmlObjectNode createQmlObjectNode(AbstractView *view,
|
||||||
const ItemLibraryEntry &itemLibraryEntry,
|
const ItemLibraryEntry &itemLibraryEntry,
|
||||||
const QPointF &position,
|
const QPointF &position,
|
||||||
QmlItemNode parentQmlItemNode);
|
QmlItemNode parentQmlItemNode);
|
||||||
static QmlItemNode createQmlItemNode(AbstractView *view,
|
static QmlObjectNode createQmlObjectNode(AbstractView *view,
|
||||||
const ItemLibraryEntry &itemLibraryEntry,
|
const ItemLibraryEntry &itemLibraryEntry,
|
||||||
const QPointF &position,
|
const QPointF &position,
|
||||||
NodeAbstractProperty parentproperty);
|
NodeAbstractProperty parentproperty);
|
||||||
|
@@ -85,8 +85,15 @@ static QmlItemNode createQmlItemNodeFromSource(AbstractView *view, const QString
|
|||||||
return QmlItemNode();
|
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())
|
if (!parentQmlItemNode.isValid())
|
||||||
parentQmlItemNode = QmlItemNode(view->rootModelNode());
|
parentQmlItemNode = QmlItemNode(view->rootModelNode());
|
||||||
@@ -95,14 +102,14 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
|
|||||||
|
|
||||||
NodeAbstractProperty parentProperty = parentQmlItemNode.defaultNodeAbstractProperty();
|
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());
|
NodeMetaInfo metaInfo = view->model()->metaInfo(itemLibraryEntry.typeName());
|
||||||
|
|
||||||
int minorVersion = metaInfo.minorVersion();
|
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 {
|
} else {
|
||||||
newQmlItemNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
|
newQmlObjectNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parentproperty.isValid())
|
if (parentproperty.isValid())
|
||||||
parentproperty.reparentHere(newQmlItemNode);
|
parentproperty.reparentHere(newQmlObjectNode);
|
||||||
|
|
||||||
if (!newQmlItemNode.isValid())
|
if (!newQmlObjectNode.isValid())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
newQmlItemNode.setId(view->generateNewId(itemLibraryEntry.name()));
|
newQmlObjectNode.setId(view->generateNewId(itemLibraryEntry.name()));
|
||||||
|
|
||||||
for (const auto &propertyBindingEntry : propertyBindingList)
|
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)
|
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)
|
QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QString &imageName, const QPointF &position, QmlItemNode parentQmlItemNode)
|
||||||
|
Reference in New Issue
Block a user