forked from qt-creator/qt-creator
QmlDesigner.Model: add support for custom parser types
This patch enables us to create objects with custom parsers like ListModel and XmlListModel.
This commit is contained in:
@@ -169,6 +169,7 @@ void ComponentView::instanceInformationsChange(const QVector<ModelNode> &/*nodeL
|
||||
void ComponentView::instancesRenderImageChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
||||
void ComponentView::instancesPreviewImageChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
||||
void ComponentView::instancesChildrenChanged(const QVector<ModelNode> &/*nodeList*/) {}
|
||||
void ComponentView::customParserSourceChanged(const ModelNode &, const QString & /*newCustomParserSource*/) {}
|
||||
|
||||
void ComponentView::rewriterBeginTransaction() {}
|
||||
void ComponentView::rewriterEndTransaction() {}
|
||||
|
||||
@@ -77,6 +77,7 @@ public:
|
||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
@@ -92,6 +92,10 @@ void DesignDocumentControllerView::instancesChildrenChanged(const QVector<ModelN
|
||||
|
||||
}
|
||||
|
||||
void DesignDocumentControllerView::customParserSourceChanged(const ModelNode &, const QString & /*newCustomParserSource*/)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DesignDocumentControllerView::rewriterBeginTransaction()
|
||||
{
|
||||
|
||||
@@ -68,6 +68,7 @@ public:
|
||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
@@ -172,6 +172,11 @@ void ItemLibraryView::instancesChildrenChanged(const QVector<ModelNode> &/*nodeL
|
||||
|
||||
}
|
||||
|
||||
void ItemLibraryView::customParserSourceChanged(const ModelNode &, const QString & /*newCustomParserSource*/)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ItemLibraryView::rewriterBeginTransaction()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -84,6 +84,7 @@ public:
|
||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
@@ -235,6 +235,11 @@ void NavigatorView::instancesChildrenChanged(const QVector<ModelNode> &/*nodeLis
|
||||
|
||||
}
|
||||
|
||||
void NavigatorView::customParserSourceChanged(const ModelNode &, const QString & /*newCustomParserSource*/)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void NavigatorView::rewriterBeginTransaction()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -92,6 +92,7 @@ public:
|
||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
@@ -107,6 +107,7 @@ SOURCES += $$PWD/model/abstractview.cpp \
|
||||
$$PWD/instances/imagecontainer.cpp \
|
||||
$$PWD/instances/completecomponentcommand.cpp \
|
||||
$$PWD/instances/componentcompletedcommand.cpp \
|
||||
$$PWD/instances/changecustomparsersourcecommand.cpp \
|
||||
$$PWD/instances/addimportcontainer.cpp
|
||||
|
||||
HEADERS += $$PWD/include/corelib_global.h \
|
||||
@@ -215,6 +216,7 @@ HEADERS += $$PWD/include/corelib_global.h \
|
||||
$$PWD/instances/imagecontainer.h \
|
||||
$$PWD/instances/completecomponentcommand.h \
|
||||
$$PWD/instances/componentcompletedcommand.h \
|
||||
$$PWD/instances/changecustomparsersourcecommand.h \
|
||||
$$PWD/instances/addimportcontainer.h
|
||||
contains(CONFIG, plugin) {
|
||||
# If core.pri has been included in the qmldesigner plugin
|
||||
|
||||
@@ -85,7 +85,8 @@ public:
|
||||
ModelNode createModelNode(const QString &typeString,
|
||||
int majorVersion,
|
||||
int minorVersion,
|
||||
const PropertyListType &propertyList = PropertyListType());
|
||||
const PropertyListType &propertyList = PropertyListType(),
|
||||
const QString &customParserSource = QString());
|
||||
|
||||
const ModelNode rootModelNode() const;
|
||||
ModelNode rootModelNode();
|
||||
@@ -140,6 +141,7 @@ public:
|
||||
virtual void instancesRenderImageChanged(const QVector<ModelNode> &nodeList) = 0;
|
||||
virtual void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList) = 0;
|
||||
virtual void instancesChildrenChanged(const QVector<ModelNode> &nodeList) = 0;
|
||||
virtual void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource) = 0;
|
||||
|
||||
virtual void rewriterBeginTransaction() = 0;
|
||||
virtual void rewriterEndTransaction() = 0;
|
||||
|
||||
@@ -170,6 +170,9 @@ public:
|
||||
|
||||
qint32 internalId() const;
|
||||
|
||||
void setCustomParserSource(const QString&);
|
||||
QString customParserSource() const;
|
||||
|
||||
private: // functions
|
||||
Internal::InternalNodePointer internalNode() const;
|
||||
QString generateNewId() const;
|
||||
|
||||
@@ -54,6 +54,7 @@ class RemovePropertiesCommand;
|
||||
class ChangeStateCommand;
|
||||
class AddImportCommand;
|
||||
class CompleteComponentCommand;
|
||||
class ChangeCustomParserSourceCommand;
|
||||
|
||||
class NodeInstanceServerInterface : public QObject
|
||||
{
|
||||
@@ -79,6 +80,7 @@ public:
|
||||
virtual void changeState(const ChangeStateCommand &command) = 0;
|
||||
virtual void addImport(const AddImportCommand &command) = 0;
|
||||
virtual void completeComponent(const CompleteComponentCommand &command) = 0;
|
||||
virtual void changeCustomParserSource(ChangeCustomParserSourceCommand &command) = 0;
|
||||
|
||||
static void registerCommands();
|
||||
};
|
||||
|
||||
@@ -109,6 +109,7 @@ public:
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data);
|
||||
void customNotification(const AbstractView *view, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> &data);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
@@ -95,6 +95,8 @@ public:
|
||||
QString componentSource() const;
|
||||
QString componentFileName() const;
|
||||
|
||||
bool hasCustomParser() const;
|
||||
|
||||
bool availableInVersion(int majorVersion, int minorVersion) const;
|
||||
bool isSubclassOf(const QString& type, int majorVersion, int minorVersio) const;
|
||||
|
||||
|
||||
@@ -119,6 +119,7 @@ public:
|
||||
void selectedNodesChanged(const QList<ModelNode> &selectedNodeList, const QList<ModelNode> &lastSelectedNodeList);
|
||||
|
||||
void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
protected:
|
||||
NodeInstance instanceForModelNode(const ModelNode &modelNode);
|
||||
|
||||
@@ -143,6 +143,7 @@ public:
|
||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (info@qt.nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "changecustomparsersourcecommand.h"
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
ChangeCustomParserSourceCommand::ChangeCustomParserSourceCommand()
|
||||
{
|
||||
}
|
||||
|
||||
ChangeCustomParserSourceCommand::ChangeCustomParserSourceCommand(qint32 newInstanceId, const QString &newCustomParserSource)
|
||||
: m_instanceId(newInstanceId), m_customParserSource(newCustomParserSource)
|
||||
{
|
||||
}
|
||||
|
||||
qint32 ChangeCustomParserSourceCommand::instanceId() const
|
||||
{
|
||||
return m_instanceId;
|
||||
}
|
||||
|
||||
QString ChangeCustomParserSourceCommand::customParserSource() const
|
||||
{
|
||||
return m_customParserSource;
|
||||
}
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const ChangeCustomParserSourceCommand &command)
|
||||
{
|
||||
out << command.instanceId();
|
||||
out << command.customParserSource();
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
QDataStream &operator>>(QDataStream &in, ChangeCustomParserSourceCommand &command)
|
||||
{
|
||||
in >> command.m_instanceId;
|
||||
in >> command.m_customParserSource;
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
@@ -0,0 +1,61 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (info@qt.nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
|
||||
** Please review the following information to ensure the GNU Lesser General
|
||||
** Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** Other Usage
|
||||
**
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at qt-info@nokia.com.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CHANGECUSTOMPARSERSOURCECOMMAND_H
|
||||
#define CHANGECUSTOMPARSERSOURCECOMMAND_H
|
||||
|
||||
#include <QMetaType>
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
class ChangeCustomParserSourceCommand
|
||||
{
|
||||
friend QDataStream &operator>>(QDataStream &in, ChangeCustomParserSourceCommand &command);
|
||||
public:
|
||||
ChangeCustomParserSourceCommand();
|
||||
ChangeCustomParserSourceCommand(qint32 instanceId, const QString &customParserSource);
|
||||
qint32 instanceId() const;
|
||||
QString customParserSource() const;
|
||||
|
||||
private:
|
||||
qint32 m_instanceId;
|
||||
QString m_customParserSource;
|
||||
};
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const ChangeCustomParserSourceCommand &command);
|
||||
QDataStream &operator>>(QDataStream &in, ChangeCustomParserSourceCommand &command);
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
||||
Q_DECLARE_METATYPE(QmlDesigner::ChangeCustomParserSourceCommand)
|
||||
|
||||
#endif // CHANGECUSTOMPARSERSOURCECOMMAND_H
|
||||
@@ -73,17 +73,19 @@ bool ComponentNodeInstance::hasContent() const
|
||||
void ComponentNodeInstance::setPropertyVariant(const QString &name, const QVariant &value)
|
||||
{
|
||||
if (name == "__component_data") {
|
||||
QByteArray data(value.toByteArray());
|
||||
|
||||
QByteArray importArray;
|
||||
foreach(const QString &import, nodeInstanceServer()->imports()) {
|
||||
importArray.append(import.toUtf8());
|
||||
}
|
||||
|
||||
QByteArray data(value.toByteArray());
|
||||
|
||||
data.prepend(importArray);
|
||||
data.append("\n");
|
||||
|
||||
component()->setData(data, nodeInstanceServer()->fileUrl());
|
||||
component()->setData(data, QUrl(nodeInstanceServer()->fileUrl().toString() + "_"+ id()));
|
||||
setId(id());
|
||||
|
||||
}
|
||||
|
||||
if (component()->isError()) {
|
||||
|
||||
@@ -39,8 +39,9 @@ InstanceContainer::InstanceContainer()
|
||||
{
|
||||
}
|
||||
|
||||
InstanceContainer::InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath)
|
||||
: m_instanceId(instanceId), m_type(type), m_majorNumber(majorNumber), m_minorNumber(minorNumber), m_componentPath(componentPath)
|
||||
InstanceContainer::InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath, const QString &customParserSource)
|
||||
: m_instanceId(instanceId), m_type(type), m_majorNumber(majorNumber), m_minorNumber(minorNumber), m_componentPath(componentPath),
|
||||
m_customParserSource(customParserSource)
|
||||
{
|
||||
m_type.replace(QLatin1Char('.'), QLatin1Char('/'));
|
||||
}
|
||||
@@ -70,6 +71,11 @@ QString InstanceContainer::componentPath() const
|
||||
return m_componentPath;
|
||||
}
|
||||
|
||||
QString InstanceContainer::customParserSource() const
|
||||
{
|
||||
return m_customParserSource;
|
||||
}
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const InstanceContainer &container)
|
||||
{
|
||||
out << container.instanceId();
|
||||
@@ -77,6 +83,7 @@ QDataStream &operator<<(QDataStream &out, const InstanceContainer &container)
|
||||
out << container.majorNumber();
|
||||
out << container.minorNumber();
|
||||
out << container.componentPath();
|
||||
out << container.customParserSource();
|
||||
|
||||
return out;
|
||||
}
|
||||
@@ -89,6 +96,7 @@ QDataStream &operator>>(QDataStream &in, InstanceContainer &container)
|
||||
in >> container.m_majorNumber;
|
||||
in >> container.m_minorNumber;
|
||||
in >> container.m_componentPath;
|
||||
in >> container.m_customParserSource;
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
@@ -49,13 +49,14 @@ class InstanceContainer
|
||||
|
||||
public:
|
||||
InstanceContainer();
|
||||
InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath);
|
||||
InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath, const QString &customParserSource);
|
||||
|
||||
qint32 instanceId() const;
|
||||
QString type() const;
|
||||
int majorNumber() const;
|
||||
int minorNumber() const;
|
||||
QString componentPath() const;
|
||||
QString customParserSource() const;
|
||||
|
||||
private:
|
||||
qint32 m_instanceId;
|
||||
@@ -63,6 +64,7 @@ private:
|
||||
int m_majorNumber;
|
||||
int m_minorNumber;
|
||||
QString m_componentPath;
|
||||
QString m_customParserSource;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
||||
@@ -17,6 +17,7 @@ HEADERS += $$PWD/addimportcommand.h
|
||||
HEADERS += $$PWD/changebindingscommand.h
|
||||
HEADERS += $$PWD/changefileurlcommand.h
|
||||
HEADERS += $$PWD/changeidscommand.h
|
||||
HEADERS += $$PWD/changecustomparsersourcecommand.h
|
||||
HEADERS += $$PWD/changestatecommand.h
|
||||
HEADERS += $$PWD/changevaluescommand.h
|
||||
HEADERS += $$PWD/childrenchangeeventfilter.h
|
||||
@@ -66,6 +67,7 @@ SOURCES += $$PWD/addimportcommand.cpp
|
||||
SOURCES += $$PWD/changebindingscommand.cpp
|
||||
SOURCES += $$PWD/changefileurlcommand.cpp
|
||||
SOURCES += $$PWD/changeidscommand.cpp
|
||||
SOURCES += $$PWD/changecustomparsersourcecommand.cpp
|
||||
SOURCES += $$PWD/changestatecommand.cpp
|
||||
SOURCES += $$PWD/changevaluescommand.cpp
|
||||
SOURCES += $$PWD/childrenchangeeventfilter.cpp
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "imagecontainer.h"
|
||||
#include "statepreviewimagechangedcommand.h"
|
||||
#include "componentcompletedcommand.h"
|
||||
#include "changecustomparsersourcecommand.h"
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
@@ -263,6 +264,11 @@ void NodeInstanceClientProxy::completeComponent(const CompleteComponentCommand &
|
||||
nodeInstanceServer()->completeComponent(command);
|
||||
}
|
||||
|
||||
void NodeInstanceClientProxy::changeCustomParserSource(ChangeCustomParserSourceCommand &command)
|
||||
{
|
||||
nodeInstanceServer()->changeCustomParserSource(command);
|
||||
}
|
||||
|
||||
void NodeInstanceClientProxy::dispatchCommand(const QVariant &command)
|
||||
{
|
||||
static const int createInstancesCommandType = QMetaType::type("CreateInstancesCommand");
|
||||
@@ -279,6 +285,7 @@ void NodeInstanceClientProxy::dispatchCommand(const QVariant &command)
|
||||
static const int addImportCommandType = QMetaType::type("AddImportCommand");
|
||||
static const int completeComponentCommandType = QMetaType::type("CompleteComponentCommand");
|
||||
static const int synchronizeCommandType = QMetaType::type("SynchronizeCommand");
|
||||
static const int changeCustomParserSourceCommandType = QMetaType::type("ChangeCustomParserSourceCommand");
|
||||
|
||||
if (command.userType() == createInstancesCommandType) {
|
||||
createInstances(command.value<CreateInstancesCommand>());
|
||||
@@ -306,6 +313,8 @@ void NodeInstanceClientProxy::dispatchCommand(const QVariant &command)
|
||||
addImport(command.value<AddImportCommand>());
|
||||
else if (command.userType() == completeComponentCommandType)
|
||||
completeComponent(command.value<CompleteComponentCommand>());
|
||||
else if (command.userType() == changeCustomParserSourceCommandType)
|
||||
changeCustomParserSource(command.value<ChangeCustomParserSourceCommand>());
|
||||
else if (command.userType() == synchronizeCommandType) {
|
||||
SynchronizeCommand synchronizeCommand = command.value<SynchronizeCommand>();
|
||||
m_synchronizeId = synchronizeCommand.synchronizeId();
|
||||
|
||||
@@ -59,6 +59,7 @@ class RemovePropertiesCommand;
|
||||
class AddImportCommand;
|
||||
class CompleteComponentCommand;
|
||||
class ChangeStateCommand;
|
||||
class ChangeCustomParserSourceCommand;
|
||||
|
||||
class NodeInstanceClientProxy : public QObject, public NodeInstanceClientInterface
|
||||
{
|
||||
@@ -96,6 +97,7 @@ protected:
|
||||
void changeState(const ChangeStateCommand &command);
|
||||
void addImport(const AddImportCommand &command);
|
||||
void completeComponent(const CompleteComponentCommand &command);
|
||||
void changeCustomParserSource(ChangeCustomParserSourceCommand &command);
|
||||
|
||||
private slots:
|
||||
void readDataStream();
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
#include "completecomponentcommand.h"
|
||||
#include "componentcompletedcommand.h"
|
||||
#include "createscenecommand.h"
|
||||
#include "changecustomparsersourcecommand.h"
|
||||
|
||||
#include "dummycontextobject.h"
|
||||
|
||||
@@ -345,6 +346,16 @@ void NodeInstanceServer::completeComponent(const CompleteComponentCommand &comma
|
||||
startRenderTimer();
|
||||
}
|
||||
|
||||
void NodeInstanceServer::changeCustomParserSource(ChangeCustomParserSourceCommand &command)
|
||||
{
|
||||
if (hasInstanceForId(command.instanceId())) {
|
||||
ServerNodeInstance instance = instanceForId(command.instanceId());
|
||||
;
|
||||
}
|
||||
|
||||
startRenderTimer();
|
||||
}
|
||||
|
||||
void NodeInstanceServer::addImports(const QVector<AddImportContainer> &containerVector)
|
||||
{
|
||||
foreach (const AddImportContainer &container, containerVector) {
|
||||
|
||||
@@ -90,6 +90,7 @@ public:
|
||||
void changeState(const ChangeStateCommand &command);
|
||||
void addImport(const AddImportCommand &command);
|
||||
void completeComponent(const CompleteComponentCommand &command);
|
||||
void changeCustomParserSource(ChangeCustomParserSourceCommand &command);
|
||||
|
||||
ServerNodeInstance instanceForId(qint32 id) const;
|
||||
bool hasInstanceForId(qint32 id) const;
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "changestatecommand.h"
|
||||
#include "completecomponentcommand.h"
|
||||
#include "addimportcontainer.h"
|
||||
#include "changecustomparsersourcecommand.h"
|
||||
|
||||
#include "informationchangedcommand.h"
|
||||
#include "pixmapchangedcommand.h"
|
||||
@@ -165,6 +166,10 @@ void NodeInstanceServerInterface::registerCommands()
|
||||
|
||||
qRegisterMetaType<SynchronizeCommand>("SynchronizeCommand");
|
||||
qRegisterMetaTypeStreamOperators<SynchronizeCommand>("SynchronizeCommand");
|
||||
|
||||
qRegisterMetaType<ChangeCustomParserSourceCommand>("ChangeCustomParserSourceCommand");
|
||||
qRegisterMetaTypeStreamOperators<ChangeCustomParserSourceCommand>("ChangeCustomParserSourceCommand");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "changestatecommand.h"
|
||||
#include "addimportcommand.h"
|
||||
#include "completecomponentcommand.h"
|
||||
#include "changecustomparsersourcecommand.h"
|
||||
|
||||
#include "informationchangedcommand.h"
|
||||
#include "pixmapchangedcommand.h"
|
||||
@@ -451,4 +452,10 @@ void NodeInstanceServerProxy::completeComponent(const CompleteComponentCommand &
|
||||
{
|
||||
writeCommand(QVariant::fromValue(command));
|
||||
}
|
||||
|
||||
void NodeInstanceServerProxy::changeCustomParserSource(ChangeCustomParserSourceCommand &command)
|
||||
{
|
||||
writeCommand(QVariant::fromValue(command));
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
||||
@@ -70,6 +70,7 @@ public:
|
||||
void changeState(const ChangeStateCommand &command);
|
||||
void addImport(const AddImportCommand &command);
|
||||
void completeComponent(const CompleteComponentCommand &command);
|
||||
void changeCustomParserSource(ChangeCustomParserSourceCommand &command);
|
||||
|
||||
protected:
|
||||
void writeCommand(const QVariant &command);
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
#include "changevaluescommand.h"
|
||||
#include "changebindingscommand.h"
|
||||
#include "changeidscommand.h"
|
||||
#include "changecustomparsersourcecommand.h"
|
||||
#include "removeinstancescommand.h"
|
||||
#include "removepropertiescommand.h"
|
||||
#include "valueschangedcommand.h"
|
||||
@@ -515,6 +516,15 @@ void NodeInstanceView::customNotification(const AbstractView *view, const QStrin
|
||||
restartProcess();
|
||||
}
|
||||
|
||||
void NodeInstanceView::customParserSourceChanged(const ModelNode &node, const QString & newCustomParserSource)
|
||||
{
|
||||
if (hasInstanceForNode(node)) {
|
||||
NodeInstance instance = instanceForNode(node);
|
||||
ChangeCustomParserSourceCommand changeCustomParserSourceCommand(instance.instanceId(), newCustomParserSource);
|
||||
nodeInstanceServer()->changeCustomParserSource(changeCustomParserSourceCommand);
|
||||
}
|
||||
}
|
||||
|
||||
void NodeInstanceView::rewriterBeginTransaction()
|
||||
{
|
||||
|
||||
@@ -747,7 +757,9 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand()
|
||||
|
||||
QVector<InstanceContainer> instanceContainerList;
|
||||
foreach(const NodeInstance &instance, instanceList) {
|
||||
InstanceContainer container(instance.instanceId(), instance.modelNode().type(), instance.modelNode().majorVersion(), instance.modelNode().minorVersion(), instance.modelNode().metaInfo().componentFileName());
|
||||
InstanceContainer container(instance.instanceId(), instance.modelNode().type(), instance.modelNode().majorVersion(),
|
||||
instance.modelNode().minorVersion(), instance.modelNode().metaInfo().componentFileName(),
|
||||
instance.modelNode().customParserSource());
|
||||
instanceContainerList.append(container);
|
||||
}
|
||||
|
||||
@@ -858,7 +870,8 @@ CreateInstancesCommand NodeInstanceView::createCreateInstancesCommand(const QLis
|
||||
{
|
||||
QVector<InstanceContainer> containerList;
|
||||
foreach(const NodeInstance &instance, instanceList) {
|
||||
InstanceContainer container(instance.instanceId(), instance.modelNode().type(), instance.modelNode().majorVersion(), instance.modelNode().minorVersion(), instance.modelNode().metaInfo().componentFileName());
|
||||
InstanceContainer container(instance.instanceId(), instance.modelNode().type(), instance.modelNode().majorVersion(), instance.modelNode().minorVersion(),
|
||||
instance.modelNode().metaInfo().componentFileName(), instance.modelNode().customParserSource());
|
||||
containerList.append(container);
|
||||
}
|
||||
|
||||
|
||||
@@ -736,17 +736,46 @@ void tweakObjects(QObject *object)
|
||||
}
|
||||
|
||||
|
||||
QObject *createComponent(const QString &componentPath, QDeclarativeContext *context)
|
||||
static QObject *createComponent(const QString &componentPath, QDeclarativeContext *context)
|
||||
{
|
||||
QDeclarativeComponent component(context->engine(), QUrl::fromLocalFile(componentPath));
|
||||
QObject *object = component.beginCreate(context);
|
||||
tweakObjects(object);
|
||||
component.completeCreate();
|
||||
|
||||
if (component.isError()) {
|
||||
qDebug() << componentPath;
|
||||
foreach(const QDeclarativeError &error, component.errors())
|
||||
qDebug() << error;
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
QObject *createPrimitive(const QString &typeName, int majorNumber, int minorNumber, QDeclarativeContext *context)
|
||||
static QObject *createCustomParserObject(const QString &customParserSource, QStringList imports, QDeclarativeContext *context)
|
||||
{
|
||||
QDeclarativeComponent component(context->engine());
|
||||
|
||||
QByteArray importArray;
|
||||
foreach(const QString &import, imports) {
|
||||
importArray.append(import.toUtf8());
|
||||
}
|
||||
|
||||
QByteArray data(customParserSource.toUtf8());
|
||||
|
||||
data.prepend(importArray);
|
||||
|
||||
component.setData(data, context->baseUrl().resolved(QUrl("createCustomParserObject.qml")));
|
||||
|
||||
QObject *object = component.beginCreate(context);
|
||||
tweakObjects(object);
|
||||
component.completeCreate();
|
||||
|
||||
return object;
|
||||
|
||||
}
|
||||
|
||||
static QObject *createPrimitive(const QString &typeName, int majorNumber, int minorNumber, QDeclarativeContext *context)
|
||||
{
|
||||
QObject *object = 0;
|
||||
QDeclarativeType *type = QDeclarativeMetaType::qmlType(typeName.toUtf8(), majorNumber, minorNumber);
|
||||
@@ -770,11 +799,13 @@ QObject *createPrimitive(const QString &typeName, int majorNumber, int minorNumb
|
||||
return object;
|
||||
}
|
||||
|
||||
QObject* ObjectNodeInstance::createObject(const QString &typeName, int majorNumber, int minorNumber, const QString &componentPath, QDeclarativeContext *context)
|
||||
QObject* ObjectNodeInstance::createObject(const QString &typeName, int majorNumber, int minorNumber, const QString &componentPath, const QString &customParserSource, NodeInstanceServer* nodeInstanceServer, QDeclarativeContext *context)
|
||||
{
|
||||
QObject *object = 0;
|
||||
if (componentPath.isEmpty()) {
|
||||
if (componentPath.isEmpty() && customParserSource.isEmpty()) {
|
||||
object = createPrimitive(typeName, majorNumber, minorNumber, context);
|
||||
} else if (componentPath.isEmpty()) {
|
||||
object = createCustomParserObject(customParserSource, nodeInstanceServer->imports(), context);
|
||||
} else {
|
||||
object = createComponent(componentPath, context);
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
//void setModelNode(const ModelNode &node);
|
||||
|
||||
static Pointer create(QObject *objectToBeWrapped);
|
||||
static QObject* createObject(const QString &typeName, int majorNumber, int minorNumber, const QString &componentPath, QDeclarativeContext *context);
|
||||
static QObject* createObject(const QString &typeName, int majorNumber, int minorNumber, const QString &componentPath, const QString &customParserSource, NodeInstanceServer* nodeInstanceServer, QDeclarativeContext *context);
|
||||
|
||||
void setInstanceId(qint32 id);
|
||||
qint32 instanceId() const;
|
||||
|
||||
@@ -196,7 +196,9 @@ ServerNodeInstance ServerNodeInstance::create(NodeInstanceServer *nodeInstanceSe
|
||||
|
||||
QDeclarativeContext *context = nodeInstanceServer->context();
|
||||
|
||||
QObject *object = Internal::ObjectNodeInstance::createObject(instanceContainer.type(), instanceContainer.majorNumber(), instanceContainer.minorNumber(), instanceContainer.componentPath(), context);
|
||||
QObject *object = Internal::ObjectNodeInstance::createObject(instanceContainer.type(), instanceContainer.majorNumber(),
|
||||
instanceContainer.minorNumber(), instanceContainer.componentPath(),
|
||||
instanceContainer.customParserSource(), nodeInstanceServer, context);
|
||||
|
||||
ServerNodeInstance instance(createInstance(object));
|
||||
|
||||
|
||||
@@ -999,6 +999,11 @@ QString NodeMetaInfo::componentFileName() const
|
||||
return NodeMetaInfo::m_privateData->componentFileName();
|
||||
}
|
||||
|
||||
bool NodeMetaInfo::hasCustomParser() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool NodeMetaInfo::availableInVersion(int majorVersion, int minorVersion) const
|
||||
{
|
||||
if (majorVersion == -1 && minorVersion == -1)
|
||||
|
||||
@@ -80,9 +80,10 @@ RewriterTransaction AbstractView::beginRewriterTransaction()
|
||||
ModelNode AbstractView::createModelNode(const QString &typeString,
|
||||
int majorVersion,
|
||||
int minorVersion,
|
||||
const QList<QPair<QString, QVariant> > &propertyList)
|
||||
const QList<QPair<QString, QVariant> > &propertyList,
|
||||
const QString &customParserSource)
|
||||
{
|
||||
return ModelNode(model()->m_d->createNode(typeString, majorVersion, minorVersion, propertyList), model(), this);
|
||||
return ModelNode(model()->m_d->createNode(typeString, majorVersion, minorVersion, propertyList, customParserSource), model(), this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -342,5 +342,15 @@ qint32 InternalNode::internalId() const
|
||||
return m_internalId;
|
||||
}
|
||||
|
||||
void InternalNode::setCustomParserSource(const QString &customParserSource)
|
||||
{
|
||||
m_customParserSource = customParserSource;
|
||||
}
|
||||
|
||||
QString InternalNode::customParserSource() const
|
||||
{
|
||||
return m_customParserSource;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +121,9 @@ public:
|
||||
|
||||
qint32 internalId() const;
|
||||
|
||||
void setCustomParserSource(const QString&);
|
||||
QString customParserSource() const;
|
||||
|
||||
protected:
|
||||
Pointer internalPointer() const;
|
||||
void setInternalWeakPointer(const Pointer &pointer);
|
||||
@@ -144,6 +147,8 @@ private:
|
||||
|
||||
QHash<QString, InternalPropertyPointer> m_namePropertyHash;
|
||||
QStringList m_scriptFunctionList;
|
||||
|
||||
QString m_customParserSource;
|
||||
};
|
||||
|
||||
uint qHash(const InternalNodePointer& node);
|
||||
|
||||
@@ -94,7 +94,7 @@ ModelPrivate::ModelPrivate(Model *model) :
|
||||
m_writeLock(false),
|
||||
m_internalIdCounter(1)
|
||||
{
|
||||
m_rootInternalNode = createNode("QtQuick/Item", 1, 0, PropertyListType(), true);
|
||||
m_rootInternalNode = createNode("QtQuick/Item", 1, 0, PropertyListType(), QString(), true);
|
||||
}
|
||||
|
||||
ModelPrivate::~ModelPrivate()
|
||||
@@ -202,6 +202,7 @@ InternalNode::Pointer ModelPrivate::createNode(const QString &typeString,
|
||||
int majorVersion,
|
||||
int minorVersion,
|
||||
const QList<QPair<QString, QVariant> > &propertyList,
|
||||
const QString &customParserSource,
|
||||
bool isRootNode)
|
||||
{
|
||||
if (typeString.isEmpty())
|
||||
@@ -224,6 +225,9 @@ InternalNode::Pointer ModelPrivate::createNode(const QString &typeString,
|
||||
m_nodeSet.insert(newInternalNodePointer);
|
||||
m_internalIdNodeHash.insert(newInternalNodePointer->internalId(), newInternalNodePointer);
|
||||
|
||||
if (!customParserSource.isNull())
|
||||
newInternalNodePointer->setCustomParserSource(customParserSource);
|
||||
|
||||
notifyNodeCreated(newInternalNodePointer);
|
||||
|
||||
return newInternalNodePointer;
|
||||
@@ -355,6 +359,38 @@ void ModelPrivate::notifyAuxiliaryDataChanged(const InternalNodePointer &interna
|
||||
}
|
||||
}
|
||||
|
||||
void ModelPrivate::notifyCustomParserSourceChanged(const InternalNodePointer &internalNode, const QString &newCustomParserSource)
|
||||
{
|
||||
bool resetModel = false;
|
||||
QString description;
|
||||
|
||||
try {
|
||||
if (rewriterView()) {
|
||||
ModelNode node(internalNode, model(), rewriterView());
|
||||
rewriterView()->customParserSourceChanged(node, newCustomParserSource);
|
||||
}
|
||||
} catch (RewritingException &e) {
|
||||
description = e.description();
|
||||
resetModel = true;
|
||||
}
|
||||
|
||||
foreach (const QWeakPointer<AbstractView> &view, m_viewList) {
|
||||
Q_ASSERT(view != 0);
|
||||
ModelNode node(internalNode, model(), view.data());
|
||||
view->customParserSourceChanged(node, newCustomParserSource);
|
||||
|
||||
}
|
||||
|
||||
if (nodeInstanceView()) {
|
||||
ModelNode node(internalNode, model(), nodeInstanceView());
|
||||
nodeInstanceView()->customParserSourceChanged(node, newCustomParserSource);
|
||||
}
|
||||
|
||||
if (resetModel) {
|
||||
resetModelByRewriter(description);
|
||||
}
|
||||
}
|
||||
|
||||
void ModelPrivate::notifyRootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion)
|
||||
{
|
||||
bool resetModel = false;
|
||||
@@ -1456,6 +1492,12 @@ void ModelPrivate::setScriptFunctions(const InternalNode::Pointer &internalNode,
|
||||
notifyScriptFunctionsChanged(internalNode, scriptFunctionList);
|
||||
}
|
||||
|
||||
void ModelPrivate::setCustomParserSource(const InternalNodePointer &internalNode, const QString &customParserSource)
|
||||
{
|
||||
internalNode->setCustomParserSource(customParserSource);
|
||||
notifyCustomParserSourceChanged(internalNode, customParserSource);
|
||||
}
|
||||
|
||||
void ModelPrivate::changeNodeOrder(const InternalNode::Pointer &internalParentNode, const QString &listPropertyName, int from, int to)
|
||||
{
|
||||
InternalNodeListProperty::Pointer nodeList(internalParentNode->nodeListProperty(listPropertyName));
|
||||
|
||||
@@ -105,6 +105,7 @@ public:
|
||||
int majorVersion,
|
||||
int minorVersion,
|
||||
const QList<QPair<QString, QVariant> > &propertyList,
|
||||
const QString &customParserSource,
|
||||
bool isRootNode = false);
|
||||
|
||||
|
||||
@@ -142,6 +143,7 @@ public:
|
||||
|
||||
void notifyNodeOrderChanged(const InternalNodeListPropertyPointer &internalListPropertyPointer, const InternalNodePointer &internalNodePointer, int oldIndex);
|
||||
void notifyAuxiliaryDataChanged(const InternalNodePointer &internalNode, const QString &name, const QVariant &data);
|
||||
void notifyCustomParserSourceChanged(const InternalNodePointer &internalNode, const QString &newCustomParserSource);
|
||||
|
||||
void notifyRootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion);
|
||||
|
||||
@@ -194,6 +196,7 @@ public:
|
||||
void clearParent(const InternalNodePointer &internalNode);
|
||||
void changeRootNodeType(const QString &type, int majorVersion, int minorVersion);
|
||||
void setScriptFunctions(const InternalNodePointer &internalNode, const QStringList &scriptFunctionList);
|
||||
void setCustomParserSource(const InternalNodePointer &internalNode, const QString &customParserSource);
|
||||
|
||||
InternalNodePointer nodeForId(const QString &id) const;
|
||||
bool hasId(const QString &id) const;
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "nodeabstractproperty.h"
|
||||
#include "nodelistproperty.h"
|
||||
#include "nodeproperty.h"
|
||||
#include <rewriterview.h>
|
||||
|
||||
namespace QmlDesigner {
|
||||
using namespace QmlDesigner::Internal;
|
||||
@@ -935,4 +936,28 @@ qint32 ModelNode::internalId() const
|
||||
return m_internalNode->internalId();
|
||||
}
|
||||
|
||||
void ModelNode::setCustomParserSource(const QString &newCustomParserSource)
|
||||
{
|
||||
Internal::WriteLocker locker(m_model.data());
|
||||
|
||||
if (!isValid()) {
|
||||
Q_ASSERT_X(isValid(), Q_FUNC_INFO, "model node is invalid");
|
||||
throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
||||
}
|
||||
|
||||
if (internalNode()->customParserSource() == newCustomParserSource)
|
||||
return;
|
||||
|
||||
m_model.data()->m_d->setCustomParserSource(internalNode(), newCustomParserSource);
|
||||
}
|
||||
|
||||
QString ModelNode::customParserSource() const
|
||||
{
|
||||
if (!isValid()) {
|
||||
throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
||||
}
|
||||
|
||||
return internalNode()->customParserSource();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -380,6 +380,11 @@ void QmlModelView::importsChanged(const QList<Import> &/*addedImports*/, const Q
|
||||
|
||||
}
|
||||
|
||||
void QmlModelView::customParserSourceChanged(const ModelNode &, const QString & /*newCustomParserSource*/)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void QmlModelView::rewriterBeginTransaction()
|
||||
{
|
||||
|
||||
|
||||
@@ -407,6 +407,11 @@ void RewriterView::instancesChildrenChanged(const QVector<ModelNode> &/*nodeList
|
||||
|
||||
}
|
||||
|
||||
void RewriterView::customParserSourceChanged(const ModelNode &, const QString & /*newCustomParserSource*/)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void RewriterView::rewriterBeginTransaction()
|
||||
{
|
||||
transactionLevel++;
|
||||
|
||||
@@ -264,7 +264,7 @@ static bool isComponentType(const QString &type)
|
||||
return type == QLatin1String("Component") || type == QLatin1String("Qt.Component") || type == QLatin1String("QtQuick.Component");
|
||||
}
|
||||
|
||||
static bool isModelType(const QString &type)
|
||||
static bool isCustomParserType(const QString &type)
|
||||
{
|
||||
return type == "QtQuick.VisualItemModel" || type == "Qt.VisualItemModel" ||
|
||||
type == "QtQuick.VisualDataModel" || type == "Qt.VisualDataModel" ||
|
||||
@@ -762,8 +762,8 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
|
||||
if (isComponentType(typeNameFixedForImplicitComponents))
|
||||
setupComponent(modelNode);
|
||||
|
||||
if (isModelType(typeName))
|
||||
setupModel(modelNode);
|
||||
if (isCustomParserType(typeName))
|
||||
setupCustomParserNode(modelNode);
|
||||
|
||||
if (modelNode.parentProperty().isValid() && modelNode.type() != typeNameFixedForImplicitComponents //If there is no valid parentProperty
|
||||
//the node has just been created. The type is correct then.
|
||||
@@ -1102,9 +1102,18 @@ ModelNode TextToModelMerger::createModelNode(const QString &typeName,
|
||||
ReadingContext *context,
|
||||
DifferenceHandler &differenceHandler)
|
||||
{
|
||||
QString customParserSource;
|
||||
|
||||
if (isCustomParserType(typeName))
|
||||
customParserSource = textAt(context->doc(),
|
||||
astNode->firstSourceLocation(),
|
||||
astNode->lastSourceLocation());
|
||||
|
||||
ModelNode newNode = m_rewriterView->createModelNode(typeName,
|
||||
majorVersion,
|
||||
minorVersion);
|
||||
minorVersion,
|
||||
PropertyListType(),
|
||||
customParserSource);
|
||||
syncNode(newNode, astNode, context, differenceHandler);
|
||||
return newNode;
|
||||
}
|
||||
@@ -1469,20 +1478,16 @@ void TextToModelMerger::setupComponent(const ModelNode &node)
|
||||
node.setAuxiliaryData("__component_data", result);
|
||||
}
|
||||
|
||||
void TextToModelMerger::setupModel(const ModelNode &node)
|
||||
void TextToModelMerger::setupCustomParserNode(const ModelNode &node)
|
||||
{
|
||||
Q_ASSERT(isModelType(node.type()));
|
||||
Q_ASSERT(isCustomParserType(node.type()));
|
||||
|
||||
QString modelText = m_rewriterView->extractText(QList<ModelNode>() << node).value(node);
|
||||
|
||||
if (modelText.isEmpty())
|
||||
return;
|
||||
|
||||
if (node.hasAuxiliaryData("__model_data")
|
||||
&& node.auxiliaryData("__model_data").toString() == modelText)
|
||||
return;
|
||||
|
||||
node.setAuxiliaryData("__model_data", modelText);
|
||||
ModelNode(node).setCustomParserSource(modelText);
|
||||
}
|
||||
|
||||
QString TextToModelMerger::textAt(const Document::Ptr &doc,
|
||||
|
||||
@@ -122,7 +122,7 @@ public:
|
||||
DifferenceHandler &differenceHandler);
|
||||
|
||||
void setupComponent(const ModelNode &node);
|
||||
void setupModel(const ModelNode &node);
|
||||
void setupCustomParserNode(const ModelNode &node);
|
||||
|
||||
private:
|
||||
static QString textAt(const QmlJS::Document::Ptr &doc,
|
||||
|
||||
@@ -256,6 +256,12 @@ void ViewLogger::instancesChildrenChanged(const QVector<ModelNode> &nodeList)
|
||||
m_output << time() << indent("node: ") << node << endl;
|
||||
}
|
||||
|
||||
void ViewLogger::customParserSourceChanged(const ModelNode &node, const QString & /*newCustomParserSource*/)
|
||||
{
|
||||
m_output << time() << indent("customParserSourceChanged:") << endl;
|
||||
m_output << time() << indent("node: ") << node << endl;
|
||||
}
|
||||
|
||||
void ViewLogger::rewriterBeginTransaction()
|
||||
{
|
||||
m_output << time() << indent("rewriterBeginTransaction:") << endl;
|
||||
|
||||
@@ -81,6 +81,7 @@ public:
|
||||
void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
|
||||
void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
|
||||
void customParserSourceChanged(const ModelNode &modelNode, const QString &newCustomParserSource);
|
||||
|
||||
void rewriterBeginTransaction();
|
||||
void rewriterEndTransaction();
|
||||
|
||||
Reference in New Issue
Block a user