forked from qt-creator/qt-creator
QmlDesigner: Fix slowness for many items
The information change notifier provided no hint which infotmation changed. So the property editor has updated the anchors for all information changes. Now there is a hint and the update is only happen for a anchor change. Change-Id: I3b6d7546f43bce4c08757662e7af32604a8db56f Reviewed-on: http://codereview.qt.nokia.com/811 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
This commit is contained in:
committed by
Thomas Hartmann
parent
52f0eae3a4
commit
2d4b5fcb65
@@ -34,12 +34,14 @@
|
|||||||
#define COMMONDEFINES_H
|
#define COMMONDEFINES_H
|
||||||
|
|
||||||
#include <QMetaType>
|
#include <QMetaType>
|
||||||
|
#include <QPair>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
enum InformationName
|
enum InformationName
|
||||||
{
|
{
|
||||||
NoName,
|
NoName,
|
||||||
|
NoInformationChange = NoName,
|
||||||
Size,
|
Size,
|
||||||
BoundingRect,
|
BoundingRect,
|
||||||
Transform,
|
Transform,
|
||||||
|
|||||||
@@ -468,11 +468,11 @@ void FormEditorView::instancesCompleted(const QVector<ModelNode> &completedNodeL
|
|||||||
currentTool()->instancesCompleted(itemNodeList);
|
currentTool()->instancesCompleted(itemNodeList);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormEditorView::instanceInformationsChange(const QVector<ModelNode> &nodeList)
|
void FormEditorView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash)
|
||||||
{
|
{
|
||||||
QList<FormEditorItem*> itemNodeList;
|
QList<FormEditorItem*> itemNodeList;
|
||||||
|
|
||||||
foreach (const ModelNode &node, nodeList) {
|
foreach (const ModelNode &node, informationChangeHash.keys()) {
|
||||||
QmlItemNode qmlItemNode(node);
|
QmlItemNode qmlItemNode(node);
|
||||||
if (qmlItemNode.isValid() && scene()->hasItemForQmlItemNode(qmlItemNode)) {
|
if (qmlItemNode.isValid() && scene()->hasItemForQmlItemNode(qmlItemNode)) {
|
||||||
scene()->synchronizeTransformation(qmlItemNode);
|
scene()->synchronizeTransformation(qmlItemNode);
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public:
|
|||||||
void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data);
|
void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data);
|
||||||
|
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ void ComponentView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVers
|
|||||||
void ComponentView::scriptFunctionsChanged(const ModelNode &/*node*/, const QStringList &/*scriptFunctionList*/) {}
|
void ComponentView::scriptFunctionsChanged(const ModelNode &/*node*/, const QStringList &/*scriptFunctionList*/) {}
|
||||||
void ComponentView::instancePropertyChange(const QList<QPair<ModelNode, QString> > &/*propertyList*/) {}
|
void ComponentView::instancePropertyChange(const QList<QPair<ModelNode, QString> > &/*propertyList*/) {}
|
||||||
void ComponentView::instancesCompleted(const QVector<ModelNode> &/*completedNodeList*/) {}
|
void ComponentView::instancesCompleted(const QVector<ModelNode> &/*completedNodeList*/) {}
|
||||||
void ComponentView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/) {}
|
void ComponentView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/) {}
|
||||||
void ComponentView::instancesRenderImageChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
void ComponentView::instancesRenderImageChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
||||||
void ComponentView::instancesPreviewImageChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
void ComponentView::instancesPreviewImageChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
||||||
void ComponentView::instancesChildrenChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
void ComponentView::instancesChildrenChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public:
|
|||||||
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ void DesignDocumentControllerView::instancesCompleted(const QVector<ModelNode> &
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
void DesignDocumentControllerView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/)
|
void DesignDocumentControllerView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public:
|
|||||||
virtual void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
virtual void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ void ItemLibraryView::instancesCompleted(const QVector<ModelNode> &)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibraryView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/)
|
void ItemLibraryView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public:
|
|||||||
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ void NavigatorView::instancesCompleted(const QVector<ModelNode> &/*completedNode
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/)
|
void NavigatorView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public:
|
|||||||
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -882,13 +882,14 @@ void PropertyEditor::bindingPropertiesChanged(const QList<BindingProperty>& prop
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PropertyEditor::instanceInformationsChange(const QVector<ModelNode> &nodeList)
|
void PropertyEditor::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash)
|
||||||
{
|
{
|
||||||
if (!m_selectedNode.isValid())
|
if (!m_selectedNode.isValid())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_locked = true;
|
m_locked = true;
|
||||||
if (nodeList.contains(m_selectedNode))
|
QList<InformationName> informationNameList = informationChangeHash.values(m_selectedNode);
|
||||||
|
if (informationNameList.contains(Anchor))
|
||||||
m_currentType->m_backendAnchorBinding.setup(QmlItemNode(m_selectedNode));
|
m_currentType->m_backendAnchorBinding.setup(QmlItemNode(m_selectedNode));
|
||||||
m_locked = false;
|
m_locked = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public:
|
|||||||
void variantPropertiesChanged(const QList<VariantProperty>& propertyList, PropertyChangeFlags propertyChange);
|
void variantPropertiesChanged(const QList<VariantProperty>& propertyList, PropertyChangeFlags propertyChange);
|
||||||
void bindingPropertiesChanged(const QList<BindingProperty>& propertyList, PropertyChangeFlags propertyChange);
|
void bindingPropertiesChanged(const QList<BindingProperty>& propertyList, PropertyChangeFlags propertyChange);
|
||||||
|
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
|
|
||||||
void nodeIdChanged(const ModelNode& node, const QString& newId, const QString& oldId);
|
void nodeIdChanged(const ModelNode& node, const QString& newId, const QString& oldId);
|
||||||
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include <modelnode.h>
|
#include <modelnode.h>
|
||||||
#include <abstractproperty.h>
|
#include <abstractproperty.h>
|
||||||
#include <rewritertransaction.h>
|
#include <rewritertransaction.h>
|
||||||
|
#include <commondefines.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
@@ -114,7 +115,7 @@ public:
|
|||||||
|
|
||||||
void emitInstancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void emitInstancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void emitInstancesCompleted(const QVector<ModelNode> &nodeList);
|
void emitInstancesCompleted(const QVector<ModelNode> &nodeList);
|
||||||
void emitInstanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void emitInstanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void emitInstancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void emitInstancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void emitInstancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void emitInstancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void emitInstancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void emitInstancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
@@ -139,7 +140,7 @@ public:
|
|||||||
|
|
||||||
virtual void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList) = 0;
|
virtual void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList) = 0;
|
||||||
virtual void instancesCompleted(const QVector<ModelNode> &completedNodeList) = 0;
|
virtual void instancesCompleted(const QVector<ModelNode> &completedNodeList) = 0;
|
||||||
virtual void instanceInformationsChange(const QVector<ModelNode> &nodeList) = 0;
|
virtual void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash) = 0;
|
||||||
virtual void instancesRenderImageChanged(const QVector<ModelNode> &nodeList) = 0;
|
virtual void instancesRenderImageChanged(const QVector<ModelNode> &nodeList) = 0;
|
||||||
virtual void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList) = 0;
|
virtual void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList) = 0;
|
||||||
virtual void instancesChildrenChanged(const QVector<ModelNode> &nodeList) = 0;
|
virtual void instancesChildrenChanged(const QVector<ModelNode> &nodeList) = 0;
|
||||||
|
|||||||
@@ -85,11 +85,28 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setProperty(const QString &name, const QVariant &value);
|
void setProperty(const QString &name, const QVariant &value);
|
||||||
void setInformation(InformationName name,
|
InformationName setInformation(InformationName name,
|
||||||
const QVariant &information,
|
const QVariant &information,
|
||||||
const QVariant &secondInformation,
|
const QVariant &secondInformation,
|
||||||
const QVariant &thirdInformation);
|
const QVariant &thirdInformation);
|
||||||
|
|
||||||
|
InformationName setInformationSize(const QSizeF &size);
|
||||||
|
InformationName setInformationBoundingRect(const QRectF &rectangle);
|
||||||
|
InformationName setInformationTransform(const QTransform &transform);
|
||||||
|
InformationName setInformationPenWith(int penWidth);
|
||||||
|
InformationName setInformationPosition(const QPointF &position);
|
||||||
|
InformationName setInformationIsInPositioner(bool isInPositioner);
|
||||||
|
InformationName setInformationSceneTransform(const QTransform &sceneTransform);
|
||||||
|
InformationName setInformationIsResizable(bool isResizable);
|
||||||
|
InformationName setInformationIsMovable(bool isMovable);
|
||||||
|
InformationName setInformationIsAnchoredByChildren(bool isAnchoredByChildren);
|
||||||
|
InformationName setInformationIsAnchoredBySibling(bool isAnchoredBySibling);
|
||||||
|
InformationName setInformationHasContent(bool hasContent);
|
||||||
|
InformationName setInformationHasAnchor(const QString &sourceAnchorLine, bool hasAnchor);
|
||||||
|
InformationName setInformationAnchor(const QString &sourceAnchorLine, const QString &targetAnchorLine, qint32 targetInstanceId);
|
||||||
|
InformationName setInformationInstanceTypeForProperty(const QString &property, const QString &type);
|
||||||
|
InformationName setInformationHasBindingForProperty(const QString &property, bool hasProperty);
|
||||||
|
|
||||||
void setParentId(qint32 instanceId);
|
void setParentId(qint32 instanceId);
|
||||||
void setRenderImage(const QImage &image);
|
void setRenderImage(const QImage &image);
|
||||||
NodeInstance(ProxyNodeInstanceData *d);
|
NodeInstance(ProxyNodeInstanceData *d);
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public:
|
|||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ public:
|
|||||||
|
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ public:
|
|||||||
|
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -317,28 +317,191 @@ void NodeInstance::setParentId(qint32 instanceId)
|
|||||||
d->parentInstanceId = instanceId;
|
d->parentInstanceId = instanceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeInstance::setInformation(InformationName name, const QVariant &information, const QVariant &secondInformation, const QVariant &thirdInformation)
|
InformationName NodeInstance::setInformationSize(const QSizeF &size)
|
||||||
|
{
|
||||||
|
if (d->size != size) {
|
||||||
|
d->size = size;
|
||||||
|
return Size;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationBoundingRect(const QRectF &rectangle)
|
||||||
|
{
|
||||||
|
if (d->boundingRect != rectangle) {
|
||||||
|
d->boundingRect = rectangle;
|
||||||
|
return BoundingRect;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationTransform(const QTransform &transform)
|
||||||
|
{
|
||||||
|
if (d->transform != transform) {
|
||||||
|
d->transform = transform;
|
||||||
|
return Transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationPenWith(int penWidth)
|
||||||
|
{
|
||||||
|
if (d->penWidth != penWidth) {
|
||||||
|
d->penWidth = penWidth;
|
||||||
|
return PenWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationPosition(const QPointF &position)
|
||||||
|
{
|
||||||
|
if (d->position != position) {
|
||||||
|
d->position = position;
|
||||||
|
return Position;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationIsInPositioner(bool isInPositioner)
|
||||||
|
{
|
||||||
|
if (d->isInPositioner != isInPositioner) {
|
||||||
|
d->isInPositioner = isInPositioner;
|
||||||
|
return IsInPositioner;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationSceneTransform(const QTransform &sceneTransform)
|
||||||
|
{
|
||||||
|
if (d->sceneTransform != sceneTransform) {
|
||||||
|
d->sceneTransform = sceneTransform;
|
||||||
|
return SceneTransform;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationIsResizable(bool isResizable)
|
||||||
|
{
|
||||||
|
if (d->isResizable != isResizable) {
|
||||||
|
d->isResizable = isResizable;
|
||||||
|
return IsResizable;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationIsMovable(bool isMovable)
|
||||||
|
{
|
||||||
|
if (d->isMovable != isMovable) {
|
||||||
|
d->isMovable = isMovable;
|
||||||
|
return IsMovable;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationIsAnchoredByChildren(bool isAnchoredByChildren)
|
||||||
|
{
|
||||||
|
if (d->isAnchoredByChildren != isAnchoredByChildren) {
|
||||||
|
d->isAnchoredByChildren = isAnchoredByChildren;
|
||||||
|
return IsAnchoredByChildren;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationIsAnchoredBySibling(bool isAnchoredBySibling)
|
||||||
|
{
|
||||||
|
if (d->isAnchoredBySibling != isAnchoredBySibling) {
|
||||||
|
d->isAnchoredBySibling = isAnchoredBySibling;
|
||||||
|
return IsAnchoredBySibling;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationHasContent(bool hasContent)
|
||||||
|
{
|
||||||
|
if (d->hasContent != hasContent) {
|
||||||
|
d->hasContent = hasContent;
|
||||||
|
return HasContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationHasAnchor(const QString &sourceAnchorLine, bool hasAnchor)
|
||||||
|
{
|
||||||
|
if (d->hasAnchors.value(sourceAnchorLine) != hasAnchor) {
|
||||||
|
d->hasAnchors.insert(sourceAnchorLine, hasAnchor);
|
||||||
|
return HasAnchor;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationAnchor(const QString &sourceAnchorLine, const QString &targetAnchorLine, qint32 targetInstanceId)
|
||||||
|
{
|
||||||
|
QPair<QString, qint32> anchorPair = QPair<QString, qint32>(targetAnchorLine, targetInstanceId);
|
||||||
|
if (d->anchors.value(sourceAnchorLine) != anchorPair) {
|
||||||
|
d->anchors.insert(sourceAnchorLine, anchorPair);
|
||||||
|
return Anchor;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationInstanceTypeForProperty(const QString &property, const QString &type)
|
||||||
|
{
|
||||||
|
if (d->instanceTypes.value(property) != type) {
|
||||||
|
d->instanceTypes.insert(property, type);
|
||||||
|
return InstanceTypeForProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformationHasBindingForProperty(const QString &property, bool hasProperty)
|
||||||
|
{
|
||||||
|
if (d->hasBindingForProperty.value(property) != hasProperty) {
|
||||||
|
d->hasBindingForProperty.insert(property, hasProperty);
|
||||||
|
return HasBindingForProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
InformationName NodeInstance::setInformation(InformationName name, const QVariant &information, const QVariant &secondInformation, const QVariant &thirdInformation)
|
||||||
{
|
{
|
||||||
switch (name) {
|
switch (name) {
|
||||||
case Size: d->size = information.toSizeF(); break;
|
case Size: return setInformationSize(information.toSizeF()); break;
|
||||||
case BoundingRect: d->boundingRect = information.toRectF(); break;
|
case BoundingRect: return setInformationBoundingRect(information.toRectF()); break;
|
||||||
case Transform: d->transform = information.value<QTransform>(); break;
|
case Transform: return setInformationTransform(information.value<QTransform>()); break;
|
||||||
case PenWidth: d->penWidth = information.toInt(); break;
|
case PenWidth: return setInformationPenWith(information.toInt()); break;
|
||||||
case Position: d->position = information.toPointF(); break;
|
case Position: return setInformationPosition(information.toPointF()); break;
|
||||||
case IsInPositioner: d->isInPositioner = information.toBool(); break;
|
case IsInPositioner: return setInformationIsInPositioner(information.toBool()); break;
|
||||||
case SceneTransform: d->sceneTransform = information.value<QTransform>(); break;
|
case SceneTransform: return setInformationSceneTransform(information.value<QTransform>()); break;
|
||||||
case IsResizable: d->isResizable = information.toBool(); break;
|
case IsResizable: return setInformationIsResizable(information.toBool()); break;
|
||||||
case IsMovable: d->isMovable = information.toBool(); break;
|
case IsMovable: return setInformationIsMovable(information.toBool()); break;
|
||||||
case IsAnchoredByChildren: d->isAnchoredByChildren = information.toBool(); break;
|
case IsAnchoredByChildren: return setInformationIsAnchoredByChildren(information.toBool()); break;
|
||||||
case IsAnchoredBySibling: d->isAnchoredBySibling = information.toBool(); break;
|
case IsAnchoredBySibling: return setInformationIsAnchoredBySibling(information.toBool()); break;
|
||||||
case HasContent: d->hasContent = information.toBool(); break;
|
case HasContent: return setInformationHasContent(information.toBool()); break;
|
||||||
case HasAnchor: d->hasAnchors.insert(information.toString(), secondInformation.toBool());break;
|
case HasAnchor: return setInformationHasAnchor(information.toString(), secondInformation.toBool());break;
|
||||||
case Anchor: d->anchors.insert(information.toString(), qMakePair(secondInformation.toString(), thirdInformation.value<qint32>())); break;
|
case Anchor: return setInformationAnchor(information.toString(), secondInformation.toString(), thirdInformation.value<qint32>()); break;
|
||||||
case InstanceTypeForProperty: d->instanceTypes.insert(information.toString(), secondInformation.toString()); break;
|
case InstanceTypeForProperty: return setInformationInstanceTypeForProperty(information.toString(), secondInformation.toString()); break;
|
||||||
case HasBindingForProperty: d->hasBindingForProperty.insert(information.toString(), secondInformation.toBool()); break;
|
case HasBindingForProperty: return setInformationHasBindingForProperty(information.toString(), secondInformation.toBool()); break;
|
||||||
case NoName:
|
case NoName:
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return NoInformationChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator ==(const NodeInstance &first, const NodeInstance &second)
|
bool operator ==(const NodeInstance &first, const NodeInstance &second)
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <QGraphicsObject>
|
#include <QGraphicsObject>
|
||||||
#include <QFileSystemWatcher>
|
#include <QFileSystemWatcher>
|
||||||
|
#include <QMultiHash>
|
||||||
|
|
||||||
#include <model.h>
|
#include <model.h>
|
||||||
#include <modelnode.h>
|
#include <modelnode.h>
|
||||||
@@ -462,7 +463,7 @@ void NodeInstanceView::importsChanged(const QList<Import> &/*addedImports*/, con
|
|||||||
restartProcess();
|
restartProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeInstanceView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/)
|
void NodeInstanceView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1062,21 +1063,21 @@ void NodeInstanceView::informationChanged(const InformationChangedCommand &comma
|
|||||||
if (!model())
|
if (!model())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QVector<ModelNode> informationChangedVector;
|
QMultiHash<ModelNode, InformationName> informationChangeHash;
|
||||||
|
|
||||||
foreach(const InformationContainer &container, command.informations()) {
|
foreach(const InformationContainer &container, command.informations()) {
|
||||||
if (hasInstanceForId(container.instanceId())) {
|
if (hasInstanceForId(container.instanceId())) {
|
||||||
NodeInstance instance = instanceForId(container.instanceId());
|
NodeInstance instance = instanceForId(container.instanceId());
|
||||||
if (instance.isValid()) {
|
if (instance.isValid()) {
|
||||||
instance.setInformation(container.name(), container.information(), container.secondInformation(), container.thirdInformation());
|
InformationName informationChange = instance.setInformation(container.name(), container.information(), container.secondInformation(), container.thirdInformation());
|
||||||
if (!informationChangedVector.contains(instance.modelNode()))
|
if (informationChange != NoInformationChange)
|
||||||
informationChangedVector.append(instance.modelNode());
|
informationChangeHash.insert(instance.modelNode(), informationChange);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!informationChangedVector.isEmpty())
|
if (!informationChangeHash.isEmpty())
|
||||||
emitInstanceInformationsChange(informationChangedVector);
|
emitInstanceInformationsChange(informationChangeHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
QImage NodeInstanceView::statePreviewImage(const ModelNode &stateNode) const
|
QImage NodeInstanceView::statePreviewImage(const ModelNode &stateNode) const
|
||||||
|
|||||||
@@ -399,10 +399,10 @@ void AbstractView::emitInstancesCompleted(const QVector<ModelNode> &nodeVector)
|
|||||||
model()->m_d->notifyInstancesCompleted(nodeVector);
|
model()->m_d->notifyInstancesCompleted(nodeVector);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractView::emitInstanceInformationsChange(const QVector<ModelNode> &nodeVector)
|
void AbstractView::emitInstanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash)
|
||||||
{
|
{
|
||||||
if (model() && nodeInstanceView() == this)
|
if (model() && nodeInstanceView() == this)
|
||||||
model()->m_d->notifyInstancesInformationsChange(nodeVector);
|
model()->m_d->notifyInstancesInformationsChange(informationChangeHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractView::emitInstancesRenderImageChanged(const QVector<ModelNode> &nodeVector)
|
void AbstractView::emitInstancesRenderImageChanged(const QVector<ModelNode> &nodeVector)
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
#include <QtXml/QXmlStreamReader>
|
#include <QtXml/QXmlStreamReader>
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
|
#include <QHashIterator>
|
||||||
|
|
||||||
#include "abstractview.h"
|
#include "abstractview.h"
|
||||||
#include "nodeinstanceview.h"
|
#include "nodeinstanceview.h"
|
||||||
@@ -472,16 +473,27 @@ void ModelPrivate::notifyInstancesCompleted(const QVector<ModelNode> &nodeVector
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelPrivate::notifyInstancesInformationsChange(const QVector<ModelNode> &nodeVector)
|
QMultiHash<ModelNode, InformationName> convertModelNodeInformationHash(const QMultiHash<ModelNode, InformationName> &informationChangeHash, AbstractView *view)
|
||||||
|
{
|
||||||
|
QMultiHash<ModelNode, InformationName> convertedModelNodeInformationHash;
|
||||||
|
|
||||||
|
QHashIterator<ModelNode, InformationName> hashIterator(informationChangeHash);
|
||||||
|
while (hashIterator.hasNext()) {
|
||||||
|
hashIterator.next();
|
||||||
|
convertedModelNodeInformationHash.insert(ModelNode(hashIterator.key(), view), hashIterator.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
return convertedModelNodeInformationHash;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelPrivate::notifyInstancesInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash)
|
||||||
{
|
{
|
||||||
bool resetModel = false;
|
bool resetModel = false;
|
||||||
QString description;
|
QString description;
|
||||||
|
|
||||||
QVector<Internal::InternalNode::Pointer> internalVector(toInternalNodeVector(nodeVector));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (rewriterView())
|
if (rewriterView())
|
||||||
rewriterView()->instanceInformationsChange(toModelNodeVector(internalVector, rewriterView()));
|
rewriterView()->instanceInformationsChange(convertModelNodeInformationHash(informationChangeHash, rewriterView()));
|
||||||
} catch (RewritingException &e) {
|
} catch (RewritingException &e) {
|
||||||
description = e.description();
|
description = e.description();
|
||||||
resetModel = true;
|
resetModel = true;
|
||||||
@@ -489,11 +501,11 @@ void ModelPrivate::notifyInstancesInformationsChange(const QVector<ModelNode> &n
|
|||||||
|
|
||||||
foreach (const QWeakPointer<AbstractView> &view, m_viewList) {
|
foreach (const QWeakPointer<AbstractView> &view, m_viewList) {
|
||||||
Q_ASSERT(view != 0);
|
Q_ASSERT(view != 0);
|
||||||
view->instanceInformationsChange(toModelNodeVector(internalVector, view.data()));
|
view->instanceInformationsChange(convertModelNodeInformationHash(informationChangeHash, view.data()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nodeInstanceView()) {
|
if (nodeInstanceView()) {
|
||||||
nodeInstanceView()->instanceInformationsChange(toModelNodeVector(internalVector, nodeInstanceView()));
|
nodeInstanceView()->instanceInformationsChange(convertModelNodeInformationHash(informationChangeHash, nodeInstanceView()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resetModel) {
|
if (resetModel) {
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ public:
|
|||||||
void notifyCustomNotification(const AbstractView *senderView, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> &data);
|
void notifyCustomNotification(const AbstractView *senderView, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> &data);
|
||||||
void notifyInstancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void notifyInstancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void notifyInstancesCompleted(const QVector<ModelNode> &nodeList);
|
void notifyInstancesCompleted(const QVector<ModelNode> &nodeList);
|
||||||
void notifyInstancesInformationsChange(const QVector<ModelNode> &nodeList);
|
void notifyInstancesInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void notifyInstancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void notifyInstancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void notifyInstancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void notifyInstancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void notifyInstancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void notifyInstancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ void QmlModelView::instancesCompleted(const QVector<ModelNode> &/*completedNodeL
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlModelView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/)
|
void QmlModelView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &/*informationChangeHash*/)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ void RewriterView::instancesCompleted(const QVector<ModelNode> &/*completedNodeL
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void RewriterView::instanceInformationsChange(const QVector<ModelNode> &/*nodeList*/)
|
void RewriterView::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -224,12 +224,16 @@ void ViewLogger::instancesCompleted(const QVector<ModelNode> &completedNodeList)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViewLogger::instanceInformationsChange(const QVector<ModelNode> &nodeList)
|
void ViewLogger::instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash)
|
||||||
{
|
{
|
||||||
m_output << time() << indent("instanceInformationsChange:") << endl;
|
m_output << time() << indent("instanceInformationsChange:") << endl;
|
||||||
|
|
||||||
foreach(const ModelNode &node, nodeList)
|
QHashIterator<ModelNode, InformationName> informationChangeHashIterator(informationChangeHash);
|
||||||
m_output << time() << indent("node: ") << node << endl;
|
|
||||||
|
while (informationChangeHashIterator.hasNext()) {
|
||||||
|
informationChangeHashIterator.next();
|
||||||
|
m_output << time() << indent("node: ") << informationChangeHashIterator.key() << "\tinformation: " << informationChangeHashIterator.value() << endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViewLogger::instancesRenderImageChanged(const QVector<ModelNode> &nodeList)
|
void ViewLogger::instancesRenderImageChanged(const QVector<ModelNode> &nodeList)
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public:
|
|||||||
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList);
|
||||||
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
|
||||||
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
void instancesCompleted(const QVector<ModelNode> &completedNodeList);
|
||||||
void instanceInformationsChange(const QVector<ModelNode> &nodeList);
|
void instanceInformationsChange(const QMultiHash<ModelNode, InformationName> &informationChangeHash);
|
||||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||||
|
|||||||
Reference in New Issue
Block a user