From d103bb7a60e488c816cb5618d4e763d50251385f Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Thu, 9 Jun 2011 15:50:48 +0200 Subject: [PATCH] QmlDesigner.NodeInstances: Support for Qt five scene graph QmlPuppet only supported GraphicsView. There is now Qml2Puppet which is supporting the new Qt Scene Graph. Change-Id: Ia0a06639cf6852192e84f7bfc2bea60532890b08 Reviewed-on: http://codereview.qt.nokia.com/433 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com> --- .../components/formeditor/formeditoritem.cpp | 1 - .../propertyeditor/propertyeditor.cpp | 1 - .../qmldesigner/designercore/designercore.pri | 91 +-- .../exceptions/invalidnodestateexception.cpp | 68 -- .../noanchoringpossibleexception.cpp | 49 -- .../include/invalidnodeinstanceexception.h | 51 -- .../include/invalidnodestateexception.h | 53 -- .../include/noanchoringpossibleexception.h | 53 -- .../designercore/include/nodeinstanceview.h | 2 - .../instances/addimportcommand.cpp | 66 -- .../designercore/instances/addimportcommand.h | 60 -- ...larativedesignercommunicationinterface.cpp | 38 - ...eclarativedesignercommunicationinterface.h | 50 -- .../designercore/instances/instances.pri | 111 +-- .../instances/nodeinstanceserverproxy.cpp | 124 ++-- .../instances/nodeinstanceserverproxy.h | 1 - .../instances/nodeinstanceview.cpp | 6 - .../commands}/changeauxiliarycommand.cpp | 0 .../commands}/changeauxiliarycommand.h | 0 .../commands}/changebindingscommand.cpp | 0 .../commands}/changebindingscommand.h | 0 .../commands}/changefileurlcommand.cpp | 0 .../commands}/changefileurlcommand.h | 0 .../qmlpuppet/commands}/changeidscommand.cpp | 29 +- .../qmlpuppet/commands}/changeidscommand.h | 29 +- .../commands}/changenodesourcecommand.cpp | 0 .../commands}/changenodesourcecommand.h | 0 .../commands}/changestatecommand.cpp | 0 .../qmlpuppet/commands}/changestatecommand.h | 0 .../commands}/changevaluescommand.cpp | 0 .../qmlpuppet/commands}/changevaluescommand.h | 0 .../commands}/childrenchangedcommand.cpp | 0 .../commands}/childrenchangedcommand.h | 0 .../qmlpuppet/commands}/clearscenecommand.cpp | 0 .../qmlpuppet/commands}/clearscenecommand.h | 0 src/tools/qmlpuppet/commands/commands.pri | 46 ++ .../commands}/completecomponentcommand.cpp | 0 .../commands}/completecomponentcommand.h | 0 .../commands}/componentcompletedcommand.cpp | 0 .../commands}/componentcompletedcommand.h | 0 .../commands}/createinstancescommand.cpp | 0 .../commands}/createinstancescommand.h | 0 .../commands}/createscenecommand.cpp | 0 .../qmlpuppet/commands}/createscenecommand.h | 0 .../commands}/informationchangedcommand.cpp | 0 .../commands}/informationchangedcommand.h | 0 .../commands}/pixmapchangedcommand.cpp | 0 .../commands}/pixmapchangedcommand.h | 0 .../commands}/removeinstancescommand.cpp | 0 .../commands}/removeinstancescommand.h | 0 .../commands}/removepropertiescommand.cpp | 0 .../commands}/removepropertiescommand.h | 0 .../commands}/reparentinstancescommand.cpp | 0 .../commands}/reparentinstancescommand.h | 0 .../statepreviewimagechangedcommand.cpp | 0 .../statepreviewimagechangedcommand.h | 0 .../commands}/synchronizecommand.cpp | 0 .../qmlpuppet/commands}/synchronizecommand.h | 0 .../commands}/valueschangedcommand.cpp | 0 .../commands}/valueschangedcommand.h | 0 .../container}/addimportcontainer.cpp | 0 .../qmlpuppet/container}/addimportcontainer.h | 0 src/tools/qmlpuppet/container/container.pri | 21 + .../qmlpuppet/container}/idcontainer.cpp | 0 .../qmlpuppet/container}/idcontainer.h | 0 .../qmlpuppet/container}/imagecontainer.cpp | 0 .../qmlpuppet/container}/imagecontainer.h | 0 .../container}/informationcontainer.cpp | 0 .../container}/informationcontainer.h | 0 .../container}/instancecontainer.cpp | 0 .../qmlpuppet/container}/instancecontainer.h | 0 .../container}/propertyabstractcontainer.cpp | 0 .../container}/propertyabstractcontainer.h | 0 .../container}/propertybindingcontainer.cpp | 0 .../container}/propertybindingcontainer.h | 0 .../container}/propertyvaluecontainer.cpp | 0 .../container}/propertyvaluecontainer.h | 2 - .../container}/reparentcontainer.cpp | 0 .../qmlpuppet/container}/reparentcontainer.h | 0 .../instances/behaviornodeinstance.cpp | 5 +- .../instances/behaviornodeinstance.h | 0 .../instances/childrenchangeeventfilter.cpp | 0 .../instances/childrenchangeeventfilter.h | 0 .../instances/componentnodeinstance.cpp | 6 +- .../instances/componentnodeinstance.h | 0 .../instances/dummycontextobject.cpp | 0 .../qmlpuppet}/instances/dummycontextobject.h | 0 .../instances/dummynodeinstance.cpp | 4 - .../qmlpuppet}/instances/dummynodeinstance.h | 0 src/tools/qmlpuppet/instances/instances.pri | 34 + .../instances/nodeinstanceclientproxy.cpp | 28 +- .../instances/nodeinstanceclientproxy.h | 5 +- .../instances/nodeinstancemetaobject.cpp | 0 .../instances/nodeinstancemetaobject.h | 0 .../instances/nodeinstanceserver.cpp | 274 +++----- .../qmlpuppet}/instances/nodeinstanceserver.h | 31 +- .../instances/nodeinstancesignalspy.cpp | 0 .../instances/nodeinstancesignalspy.h | 0 .../instances/objectnodeinstance.cpp | 22 +- .../qmlpuppet}/instances/objectnodeinstance.h | 3 +- .../qmlpropertychangesnodeinstance.cpp | 5 +- .../qmlpropertychangesnodeinstance.h | 0 .../instances/qmlstatenodeinstance.cpp | 6 +- .../instances/qmlstatenodeinstance.h | 0 .../instances/qmltransitionnodeinstance.cpp | 6 +- .../instances/qmltransitionnodeinstance.h | 0 .../instances/servernodeinstance.cpp | 24 +- .../qmlpuppet}/instances/servernodeinstance.h | 32 +- .../qmlpuppet/interfaces}/commondefines.h | 0 src/tools/qmlpuppet/interfaces/interfaces.pri | 7 + .../interfaces}/nodeinstanceclientinterface.h | 0 .../nodeinstanceserverinterface.cpp | 4 - .../interfaces}/nodeinstanceserverinterface.h | 2 - src/tools/qmlpuppet/qml2puppet/Info.plist.in | 29 + .../qml2puppet/instances/instances.pri | 15 + .../qt5informationnodeinstanceserver.cpp | 185 +++++ .../qt5informationnodeinstanceserver.h | 94 +++ .../instances/qt5nodeinstanceclientproxy.cpp | 89 +++ .../instances/qt5nodeinstanceclientproxy.h | 81 +++ .../instances/qt5nodeinstanceserver.cpp | 195 ++++++ .../instances/qt5nodeinstanceserver.h | 114 +++ .../qt5previewnodeinstanceserver.cpp | 132 ++++ .../instances/qt5previewnodeinstanceserver.h | 93 +++ .../instances/qt5rendernodeinstanceserver.cpp | 144 ++++ .../instances/qt5rendernodeinstanceserver.h | 91 +++ .../instances/sgitemnodeinstance.cpp | 658 ++++++++++++++++++ .../qml2puppet/instances/sgitemnodeinstance.h | 170 +++++ .../qmlpuppet/qml2puppet/main.cpp} | 57 +- src/tools/qmlpuppet/qml2puppet/qml2puppet.pro | 38 + src/tools/qmlpuppet/qmlpuppet.pro | 35 +- .../qmlpuppet/{ => qmlpuppet}/Info.plist.in | 0 .../instances/graphicsobjectnodeinstance.cpp | 2 - .../instances/graphicsobjectnodeinstance.h | 0 .../qmlpuppet/instances/instances.pri | 19 + .../instances/positionernodeinstance.cpp | 4 +- .../instances/positionernodeinstance.h | 0 .../instances/qmlgraphicsitemnodeinstance.cpp | 10 +- .../instances/qmlgraphicsitemnodeinstance.h | 0 .../qt4informationnodeinstanceserver.cpp} | 28 +- .../qt4informationnodeinstanceserver.h} | 6 +- .../instances/qt4nodeinstanceclientproxy.cpp | 90 +++ .../instances/qt4nodeinstanceclientproxy.h | 81 +++ .../instances/qt4nodeinstanceserver.cpp | 179 +++++ .../instances/qt4nodeinstanceserver.h | 100 +++ .../qt4previewnodeinstanceserver.cpp} | 43 +- .../instances/qt4previewnodeinstanceserver.h} | 16 +- .../qt4rendernodeinstanceserver.cpp} | 23 +- .../instances/qt4rendernodeinstanceserver.h} | 6 +- src/tools/qmlpuppet/{ => qmlpuppet}/main.cpp | 6 +- src/tools/qmlpuppet/qmlpuppet/qmlpuppet.pro | 42 ++ src/tools/tools.pro | 8 +- 151 files changed, 3157 insertions(+), 1176 deletions(-) delete mode 100644 src/plugins/qmldesigner/designercore/exceptions/invalidnodestateexception.cpp delete mode 100644 src/plugins/qmldesigner/designercore/exceptions/noanchoringpossibleexception.cpp delete mode 100644 src/plugins/qmldesigner/designercore/include/invalidnodeinstanceexception.h delete mode 100644 src/plugins/qmldesigner/designercore/include/invalidnodestateexception.h delete mode 100644 src/plugins/qmldesigner/designercore/include/noanchoringpossibleexception.h delete mode 100644 src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp delete mode 100644 src/plugins/qmldesigner/designercore/instances/addimportcommand.h delete mode 100644 src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.cpp delete mode 100644 src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.h rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changeauxiliarycommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changeauxiliarycommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changebindingscommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changebindingscommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changefileurlcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changefileurlcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changeidscommand.cpp (57%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changeidscommand.h (59%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changenodesourcecommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changenodesourcecommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changestatecommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changestatecommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changevaluescommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/changevaluescommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/childrenchangedcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/childrenchangedcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/clearscenecommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/clearscenecommand.h (100%) create mode 100644 src/tools/qmlpuppet/commands/commands.pri rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/completecomponentcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/completecomponentcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/componentcompletedcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/componentcompletedcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/createinstancescommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/createinstancescommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/createscenecommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/createscenecommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/informationchangedcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/informationchangedcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/pixmapchangedcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/pixmapchangedcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/removeinstancescommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/removeinstancescommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/removepropertiescommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/removepropertiescommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/reparentinstancescommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/reparentinstancescommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/statepreviewimagechangedcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/statepreviewimagechangedcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/synchronizecommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/synchronizecommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/valueschangedcommand.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/commands}/valueschangedcommand.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/addimportcontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/addimportcontainer.h (100%) create mode 100644 src/tools/qmlpuppet/container/container.pri rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/idcontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/idcontainer.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/imagecontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/imagecontainer.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/informationcontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/informationcontainer.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/instancecontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/instancecontainer.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/propertyabstractcontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/include => tools/qmlpuppet/container}/propertyabstractcontainer.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/propertybindingcontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/include => tools/qmlpuppet/container}/propertybindingcontainer.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/propertyvaluecontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/include => tools/qmlpuppet/container}/propertyvaluecontainer.h (98%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/reparentcontainer.cpp (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/container}/reparentcontainer.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/behaviornodeinstance.cpp (94%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/behaviornodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/childrenchangeeventfilter.cpp (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/childrenchangeeventfilter.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/componentnodeinstance.cpp (95%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/componentnodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/dummycontextobject.cpp (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/dummycontextobject.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/dummynodeinstance.cpp (97%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/dummynodeinstance.h (100%) create mode 100644 src/tools/qmlpuppet/instances/instances.pri rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstanceclientproxy.cpp (92%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstanceclientproxy.h (97%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstancemetaobject.cpp (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstancemetaobject.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstanceserver.cpp (85%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstanceserver.h (90%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstancesignalspy.cpp (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/nodeinstancesignalspy.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/objectnodeinstance.cpp (98%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/objectnodeinstance.h (98%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/qmlpropertychangesnodeinstance.cpp (99%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/qmlpropertychangesnodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/qmlstatenodeinstance.cpp (96%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/qmlstatenodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/qmltransitionnodeinstance.cpp (93%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/qmltransitionnodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/servernodeinstance.cpp (98%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet}/instances/servernodeinstance.h (87%) rename src/{plugins/qmldesigner/designercore/include => tools/qmlpuppet/interfaces}/commondefines.h (100%) create mode 100644 src/tools/qmlpuppet/interfaces/interfaces.pri rename src/{plugins/qmldesigner/designercore/include => tools/qmlpuppet/interfaces}/nodeinstanceclientinterface.h (100%) rename src/{plugins/qmldesigner/designercore/instances => tools/qmlpuppet/interfaces}/nodeinstanceserverinterface.cpp (97%) rename src/{plugins/qmldesigner/designercore/include => tools/qmlpuppet/interfaces}/nodeinstanceserverinterface.h (97%) create mode 100644 src/tools/qmlpuppet/qml2puppet/Info.plist.in create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/instances.pri create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.h create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.h create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.h create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp create mode 100644 src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h rename src/{plugins/qmldesigner/designercore/exceptions/invalidnodeinstanceexception.cpp => tools/qmlpuppet/qml2puppet/main.cpp} (58%) create mode 100644 src/tools/qmlpuppet/qml2puppet/qml2puppet.pro rename src/tools/qmlpuppet/{ => qmlpuppet}/Info.plist.in (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet/qmlpuppet}/instances/graphicsobjectnodeinstance.cpp (99%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet/qmlpuppet}/instances/graphicsobjectnodeinstance.h (100%) create mode 100644 src/tools/qmlpuppet/qmlpuppet/instances/instances.pri rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet/qmlpuppet}/instances/positionernodeinstance.cpp (94%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet/qmlpuppet}/instances/positionernodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet/qmlpuppet}/instances/qmlgraphicsitemnodeinstance.cpp (98%) rename src/{plugins/qmldesigner/designercore => tools/qmlpuppet/qmlpuppet}/instances/qmlgraphicsitemnodeinstance.h (100%) rename src/{plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.cpp => tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp} (89%) rename src/{plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.h => tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.h} (91%) create mode 100644 src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.cpp create mode 100644 src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.h create mode 100644 src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp create mode 100644 src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h rename src/{plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp => tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.cpp} (62%) rename src/{plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h => tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.h} (82%) rename src/{plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp => tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.cpp} (88%) rename src/{plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.h => tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.h} (90%) rename src/tools/qmlpuppet/{ => qmlpuppet}/main.cpp (92%) create mode 100644 src/tools/qmlpuppet/qmlpuppet/qmlpuppet.pro diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp index e619d627ac3..8ea38a21b09 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp @@ -50,7 +50,6 @@ #include <cmath> #include <invalidmodelnodeexception.h> -#include <invalidnodestateexception.h> namespace QmlDesigner { diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index bff196f50b2..8d5e2a8a227 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -37,7 +37,6 @@ #include <invalididexception.h> #include <rewritingexception.h> -#include <invalidnodestateexception.h> #include <variantproperty.h> #include <bindingproperty.h> diff --git a/src/plugins/qmldesigner/designercore/designercore.pri b/src/plugins/qmldesigner/designercore/designercore.pri index 6996f2ef4c3..ae350b06f26 100644 --- a/src/plugins/qmldesigner/designercore/designercore.pri +++ b/src/plugins/qmldesigner/designercore/designercore.pri @@ -7,8 +7,13 @@ QT += script \ DEFINES += TEST_EXPORTS INCLUDEPATH += $$PWD \ $$PWD/include + +include (instances/instances.pri) +include (../../../tools/qmlpuppet/interfaces/interfaces.pri) +include (../../../tools/qmlpuppet/commands/commands.pri) +include (../../../tools/qmlpuppet/container/container.pri) + SOURCES += $$PWD/model/abstractview.cpp \ - $$PWD/instances/nodeinstanceview.cpp \ $$PWD/model/rewriterview.cpp \ $$PWD/metainfo/metainfo.cpp \ $$PWD/metainfo/metainfoparser.cpp \ @@ -25,15 +30,12 @@ SOURCES += $$PWD/model/abstractview.cpp \ $$PWD/pluginmanager/widgetpluginmanager.cpp \ $$PWD/pluginmanager/widgetpluginpath.cpp \ $$PWD/exceptions/exception.cpp \ - $$PWD/exceptions/invalidnodeinstanceexception.cpp \ $$PWD/exceptions/invalidpropertyexception.cpp \ $$PWD/exceptions/invalidmodelnodeexception.cpp \ $$PWD/exceptions/invalidreparentingexception.cpp \ $$PWD/exceptions/invalidmetainfoexception.cpp \ $$PWD/exceptions/invalidargumentexception.cpp \ - $$PWD/exceptions/noanchoringpossibleexception.cpp \ $$PWD/exceptions/notimplementedexception.cpp \ - $$PWD/exceptions/invalidnodestateexception.cpp \ $$PWD/model/variantparser.cpp \ $$PWD/exceptions/invalidmodelstateexception.cpp \ $$PWD/exceptions/removebasestateexception.cpp \ @@ -73,43 +75,7 @@ SOURCES += $$PWD/model/abstractview.cpp \ $$PWD/model/rewriteactioncompressor.cpp \ $$PWD/model/qmltextgenerator.cpp \ $$PWD/model/modelmerger.cpp \ - $$PWD/exceptions/rewritingexception.cpp \ - $$PWD/instances/declarativedesignercommunicationinterface.cpp \ - $$PWD/instances/createinstancescommand.cpp \ - $$PWD/instances/nodeinstanceserverinterface.cpp \ - $$PWD/instances/nodeinstance.cpp \ - $$PWD/instances/propertyvaluecontainer.cpp \ - $$PWD/instances/childrenchangeeventfilter.cpp \ - $$PWD/instances/propertybindingcontainer.cpp \ - $$PWD/instances/propertyabstractcontainer.cpp \ - $$PWD/instances/createscenecommand.cpp \ - $$PWD/instances/instancecontainer.cpp \ - $$PWD/instances/changefileurlcommand.cpp \ - $$PWD/instances/clearscenecommand.cpp \ - $$PWD/instances/reparentcontainer.cpp \ - $$PWD/instances/reparentinstancescommand.cpp \ - $$PWD/instances/changevaluescommand.cpp \ - $$PWD/instances/changebindingscommand.cpp \ - $$PWD/instances/changeidscommand.cpp \ - $$PWD/instances/idcontainer.cpp \ - $$PWD/instances/synchronizecommand.cpp \ - $$PWD/instances/removeinstancescommand.cpp \ - $$PWD/instances/removepropertiescommand.cpp \ - $$PWD/instances/valueschangedcommand.cpp \ - $$PWD/instances/pixmapchangedcommand.cpp \ - $$PWD/instances/informationchangedcommand.cpp \ - $$PWD/instances/informationcontainer.cpp \ - $$PWD/instances/changestatecommand.cpp \ - $$PWD/instances/nodeinstanceserverproxy.cpp \ - $$PWD/instances/addimportcommand.cpp \ - $$PWD/instances/childrenchangedcommand.cpp \ - $$PWD/instances/statepreviewimagechangedcommand.cpp \ - $$PWD/instances/imagecontainer.cpp \ - $$PWD/instances/completecomponentcommand.cpp \ - $$PWD/instances/componentcompletedcommand.cpp \ - $$PWD/instances/changenodesourcecommand.cpp \ - $$PWD/instances/changeauxiliarycommand.cpp \ - $$PWD/instances/addimportcontainer.cpp + $$PWD/exceptions/rewritingexception.cpp HEADERS += $$PWD/include/corelib_global.h \ $$PWD/include/abstractview.h \ @@ -132,8 +98,6 @@ HEADERS += $$PWD/include/corelib_global.h \ $$PWD/pluginmanager/widgetpluginmanager.h \ $$PWD/pluginmanager/widgetpluginpath.h \ $$PWD/include/exception.h \ - $$PWD/include/invalidnodeinstanceexception.h \ - $$PWD/include/invalidmodelnodeexception.h \ $$PWD/include/invalidreparentingexception.h \ $$PWD/include/invalidmetainfoexception.h \ $$PWD/include/invalidargumentexception.h \ @@ -181,45 +145,8 @@ HEADERS += $$PWD/include/corelib_global.h \ $$PWD/include/modelmerger.h \ $$PWD/include/mathutils.h \ $$PWD/include/customnotifications.h \ - $$PWD/include/rewritingexception.h \ - $$PWD/instances/declarativedesignercommunicationinterface.h \ - $$PWD/instances/createinstancescommand.h \ - $$PWD/include/nodeinstanceserverinterface.h \ - $$PWD/include/nodeinstance.h \ - $$PWD/include/propertyvaluecontainer.h \ - $$PWD/instances/childrenchangeeventfilter.h \ - $$PWD/include/propertybindingcontainer.h \ - $$PWD/include/propertyabstractcontainer.h \ - $$PWD/instances/createscenecommand.h \ - $$PWD/instances/instancecontainer.h \ - $$PWD/instances/changefileurlcommand.h \ - $$PWD/instances/clearscenecommand.h \ - $$PWD/instances/reparentcontainer.h \ - $$PWD/instances/reparentinstancescommand.h \ - $$PWD/instances/synchronizecommand.h \ - $$PWD/instances/changevaluescommand.h \ - $$PWD/instances/changebindingscommand.h \ - $$PWD/instances/changeidscommand.h \ - $$PWD/instances/idcontainer.h \ - $$PWD/instances/removeinstancescommand.h \ - $$PWD/instances/removepropertiescommand.h \ - $$PWD/include/nodeinstanceclientinterface.h \ - $$PWD/instances/valueschangedcommand.h \ - $$PWD/instances/pixmapchangedcommand.h \ - $$PWD/instances/informationchangedcommand.h \ - $$PWD/instances/informationcontainer.h \ - $$PWD/include/commondefines.h \ - $$PWD/instances/changestatecommand.h \ - $$PWD/instances/nodeinstanceserverproxy.h \ - $$PWD/instances/addimportcommand.h \ - $$PWD/instances/childrenchangedcommand.h \ - $$PWD/instances/statepreviewimagechangedcommand.h \ - $$PWD/instances/imagecontainer.h \ - $$PWD/instances/completecomponentcommand.h \ - $$PWD/instances/componentcompletedcommand.h \ - $$PWD/instances/changenodesourcecommand.h \ - $$PWD/instances/changeauxiliarycommand.h \ - $$PWD/instances/addimportcontainer.h + $$PWD/include/rewritingexception.h + contains(CONFIG, plugin) { # If core.pri has been included in the qmldesigner plugin SOURCES += $$PWD/model/basetexteditmodifier.cpp diff --git a/src/plugins/qmldesigner/designercore/exceptions/invalidnodestateexception.cpp b/src/plugins/qmldesigner/designercore/exceptions/invalidnodestateexception.cpp deleted file mode 100644 index e3b8abdadf7..00000000000 --- a/src/plugins/qmldesigner/designercore/exceptions/invalidnodestateexception.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 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 info@qt.nokia.com. -** -**************************************************************************/ - -#include "invalidnodestateexception.h" - -/*! -\class QmlDesigner::InvalidNodeStateException -\ingroup CoreExceptions -\brief Exception for a invalid node states - - -/see NodeState -*/ -namespace QmlDesigner { -/*! -\brief Constructor - -\param line use the __LINE__ macro -\param function use the __FUNCTION__ or the Q_FUNC_INFO macro -\param file use the __FILE__ macro -*/ -InvalidNodeStateException::InvalidNodeStateException(int line, - const QString &function, - const QString &file) - : Exception(line, function, file) -{ -} - -/*! -\brief Returns the type of this exception - -\returns the type as a string -*/ -QString InvalidNodeStateException::type() const -{ - return "InvalidNodeStateException"; -} - -} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/exceptions/noanchoringpossibleexception.cpp b/src/plugins/qmldesigner/designercore/exceptions/noanchoringpossibleexception.cpp deleted file mode 100644 index fbe1be20842..00000000000 --- a/src/plugins/qmldesigner/designercore/exceptions/noanchoringpossibleexception.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 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 info@qt.nokia.com. -** -**************************************************************************/ - -#include "noanchoringpossibleexception.h" - -namespace QmlDesigner { - -NoAnchoringPossibleException::NoAnchoringPossibleException(int line, - const QString &function, - const QString &file) - : Exception(line,function, file) -{ -} - - -QString NoAnchoringPossibleException::type() const -{ - return "NoAnchoringPossibleException"; -} -} // namespace QKinecticDesigner diff --git a/src/plugins/qmldesigner/designercore/include/invalidnodeinstanceexception.h b/src/plugins/qmldesigner/designercore/include/invalidnodeinstanceexception.h deleted file mode 100644 index aac8540de88..00000000000 --- a/src/plugins/qmldesigner/designercore/include/invalidnodeinstanceexception.h +++ /dev/null @@ -1,51 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 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 info@qt.nokia.com. -** -**************************************************************************/ - -#ifndef INVALIDNODEINSTANCEEXCEPTION_H -#define INVALIDNODEINSTANCEEXCEPTION_H - -#include "exception.h" - -namespace QmlDesigner { - -class CORESHARED_EXPORT InvalidNodeInstanceException : public Exception -{ -public: - InvalidNodeInstanceException(int line, - const QString &function, - const QString &file); - QString type() const; -}; - -} - -#endif // INVALIDNODEINSTANCEEXCEPTION_H diff --git a/src/plugins/qmldesigner/designercore/include/invalidnodestateexception.h b/src/plugins/qmldesigner/designercore/include/invalidnodestateexception.h deleted file mode 100644 index 06033a1b74c..00000000000 --- a/src/plugins/qmldesigner/designercore/include/invalidnodestateexception.h +++ /dev/null @@ -1,53 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 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 INVALIDNODESTATEEXCEPTION_H -#define INVALIDNODESTATEEXCEPTION_H - -#include <exception.h> - -namespace QmlDesigner { - -class CORESHARED_EXPORT InvalidNodeStateException : public Exception -{ -public: - InvalidNodeStateException(int line, - const QString &function, - const QString &file); - - QString type() const; - -}; - -} // namespace QmlDesigner - -#endif // INVALIDNODESTATEEXCEPTION_H diff --git a/src/plugins/qmldesigner/designercore/include/noanchoringpossibleexception.h b/src/plugins/qmldesigner/designercore/include/noanchoringpossibleexception.h deleted file mode 100644 index 78b1b8204a1..00000000000 --- a/src/plugins/qmldesigner/designercore/include/noanchoringpossibleexception.h +++ /dev/null @@ -1,53 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 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 NOANCHORINGPOSSIBLEEXCEPTION_H -#define NOANCHORINGPOSSIBLEEXCEPTION_H - -#include "exception.h" - -namespace QmlDesigner { - -class CORESHARED_EXPORT NoAnchoringPossibleException : public Exception -{ -public: - NoAnchoringPossibleException(int line, - const QString &function, - const QString &file); - - QString type() const; - -}; - -} // namespace QKinecticDesigner - -#endif // NOANCHORINGPOSSIBLEEXCEPTION_H diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index 4eb21e81b41..d006705fc40 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -68,7 +68,6 @@ class ChangeBindingsCommand; class ChangeIdsCommand; class RemoveInstancesCommand; class RemovePropertiesCommand; -class AddImportCommand; class CompleteComponentCommand; class CORESHARED_EXPORT NodeInstanceView : public AbstractView, public NodeInstanceClientInterface @@ -175,7 +174,6 @@ private: // functions RemoveInstancesCommand createRemoveInstancesCommand(const QList<ModelNode> &nodeList) const; RemoveInstancesCommand createRemoveInstancesCommand(const ModelNode &node) const; RemovePropertiesCommand createRemovePropertiesCommand(const QList<AbstractProperty> &propertyList) const; - AddImportCommand createImportCommand(const Import &import); void resetHorizontalAnchors(const ModelNode &node); void resetVerticalAnchors(const ModelNode &node); diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp b/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp deleted file mode 100644 index 94edfcc4648..00000000000 --- a/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/************************************************************************** -** -** 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 info@qt.nokia.com. -** -**************************************************************************/ - -#include "addimportcommand.h" - -namespace QmlDesigner { - -AddImportCommand::AddImportCommand() -{ -} - -AddImportCommand::AddImportCommand(const AddImportContainer &container) - : m_importContainer(container) -{ -} - -AddImportContainer AddImportCommand::import() const -{ - return m_importContainer; -} - - -QDataStream &operator<<(QDataStream &out, const AddImportCommand &command) -{ - out << command.import(); - - return out; -} - -QDataStream &operator>>(QDataStream &in, AddImportCommand &command) -{ - in >> command.m_importContainer; - - return in; -} - -} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcommand.h b/src/plugins/qmldesigner/designercore/instances/addimportcommand.h deleted file mode 100644 index 6f8aadc51a7..00000000000 --- a/src/plugins/qmldesigner/designercore/instances/addimportcommand.h +++ /dev/null @@ -1,60 +0,0 @@ -/************************************************************************** -** -** 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 info@qt.nokia.com. -** -**************************************************************************/ - -#ifndef ADDIMPORTCOMMAND_H -#define ADDIMPORTCOMMAND_H - -#include "addimportcontainer.h" - -namespace QmlDesigner { - -class AddImportCommand -{ - friend QDataStream &operator>>(QDataStream &in, AddImportCommand &command); -public: - AddImportCommand(); - AddImportCommand(const AddImportContainer &container); - - AddImportContainer import() const; - -private: - AddImportContainer m_importContainer; -}; - -QDataStream &operator<<(QDataStream &out, const AddImportCommand &command); -QDataStream &operator>>(QDataStream &in, AddImportCommand &command); - -} // namespace QmlDesigner - -Q_DECLARE_METATYPE(QmlDesigner::AddImportCommand) - -#endif // ADDIMPORTCOMMAND_H diff --git a/src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.cpp b/src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.cpp deleted file mode 100644 index d681dfe1054..00000000000 --- a/src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/************************************************************************** -** -** 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 info@qt.nokia.com. -** -**************************************************************************/ - -#include "declarativedesignercommunicationinterface.h" - -DeclarativeDesignerCommunicationInterface::DeclarativeDesignerCommunicationInterface(QObject *parent) : - QObject(parent) -{ -} diff --git a/src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.h b/src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.h deleted file mode 100644 index d565300bce9..00000000000 --- a/src/plugins/qmldesigner/designercore/instances/declarativedesignercommunicationinterface.h +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************************************** -** -** 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 info@qt.nokia.com. -** -**************************************************************************/ - -#ifndef DECLARATIVEDESIGNERCOMMUNICATIONINTERFACE_H -#define DECLARATIVEDESIGNERCOMMUNICATIONINTERFACE_H - -#include <QObject> - -class DeclarativeDesignerCommunicationInterface : public QObject -{ - Q_OBJECT -public: - explicit DeclarativeDesignerCommunicationInterface(QObject *parent = 0); - -signals: - -public slots: - -}; - -#endif // DECLARATIVEDESIGNERCOMMUNICATIONINTERFACE_H diff --git a/src/plugins/qmldesigner/designercore/instances/instances.pri b/src/plugins/qmldesigner/designercore/instances/instances.pri index f3b0b6f2a2c..d4cc725778a 100644 --- a/src/plugins/qmldesigner/designercore/instances/instances.pri +++ b/src/plugins/qmldesigner/designercore/instances/instances.pri @@ -1,109 +1,8 @@ INCLUDEPATH += $$PWD/ -INCLUDEPATH += $$PWD/../include +HEADERS += $$PWD/../include/nodeinstance.h +HEADERS += $$PWD/nodeinstanceserverproxy.h -HEADERS += $$PWD/behaviornodeinstance.h -HEADERS += $$PWD/changeauxiliarycommand.h -HEADERS += $$PWD/informationnodeinstanceserver.h -HEADERS += $$PWD/dummycontextobject.h -HEADERS += $$PWD/rendernodeinstanceserver.h -HEADERS += $$PWD/synchronizecommand.h -HEADERS += $$PWD/addimportcontainer.h -HEADERS += $$PWD/previewnodeinstanceserver.h -HEADERS += $$PWD/componentcompletedcommand.h -HEADERS += $$PWD//completecomponentcommand.h -HEADERS += $$PWDstatepreviewimagechangedcommand.h -HEADERS += $$PWD//imagecontainer.h -HEADERS += $$PWD/childrenchangedcommand.h -HEADERS += $$PWD/addimportcommand.h -HEADERS += $$PWD/changebindingscommand.h -HEADERS += $$PWD/changefileurlcommand.h -HEADERS += $$PWD/changeidscommand.h -HEADERS += $$PWD/changenodesourcecommand.h -HEADERS += $$PWD/changestatecommand.h -HEADERS += $$PWD/changevaluescommand.h -HEADERS += $$PWD/childrenchangeeventfilter.h -HEADERS += $$PWD/clearscenecommand.h -HEADERS += $$PWD/componentnodeinstance.h -HEADERS += $$PWD/createinstancescommand.h -HEADERS += $$PWD/createscenecommand.h -HEADERS += $$PWD/declarativedesignercommunicationinterface.h -HEADERS += $$PWD/dummynodeinstance.h -HEADERS += $$PWD/graphicsobjectnodeinstance.h -HEADERS += $$PWD/idcontainer.h -HEADERS += $$PWD/informationchangedcommand.h -HEADERS += $$PWD/informationcontainer.h -HEADERS += $$PWD/instancecontainer.h -HEADERS += $$PWD/nodeinstanceclientproxy.h -HEADERS += $$PWD/nodeinstancemetaobject.h -HEADERS += $$PWD/nodeinstanceserver.h -HEADERS += $$PWD/nodeinstancesignalspy.h -HEADERS += $$PWD/objectnodeinstance.h -HEADERS += $$PWD/pixmapchangedcommand.h -HEADERS += $$PWD/positionernodeinstance.h -HEADERS += $$PWD/qmlgraphicsitemnodeinstance.h -HEADERS += $$PWD/qmlpropertychangesnodeinstance.h -HEADERS += $$PWD/qmlstatenodeinstance.h -HEADERS += $$PWD/qmltransitionnodeinstance.h -HEADERS += $$PWD/removeinstancescommand.h -HEADERS += $$PWD/removepropertiescommand.h -HEADERS += $$PWD/reparentcontainer.h -HEADERS += $$PWD/reparentinstancescommand.h -HEADERS += $$PWD/servernodeinstance.h -HEADERS += $$PWD/valueschangedcommand.h -HEADERS += $$PWD/../include/nodeinstanceserverinterface.h - - -SOURCES += $$PWD/behaviornodeinstance.cpp -SOURCES += $$PWD/changeauxiliarycommand.cpp -SOURCES += $$PWD/informationnodeinstanceserver.cpp -SOURCES += $$PWD/dummycontextobject.cpp -SOURCES += $$PWD/rendernodeinstanceserver.cpp -SOURCES += $$PWD/synchronizecommand.cpp -SOURCES += $$PWD/addimportcontainer.cpp -SOURCES += $$PWD/previewnodeinstanceserver.cpp -SOURCES += $$PWD/componentcompletedcommand.cpp -SOURCES += $$PWD/completecomponentcommand.cpp -SOURCES += $$PWD/statepreviewimagechangedcommand.cpp -SOURCES += $$PWD/imagecontainer.cpp -SOURCES += $$PWD/childrenchangedcommand.cpp -SOURCES += $$PWD/addimportcommand.cpp -SOURCES += $$PWD/changebindingscommand.cpp -SOURCES += $$PWD/changefileurlcommand.cpp -SOURCES += $$PWD/changeidscommand.cpp -SOURCES += $$PWD/changenodesourcecommand.cpp -SOURCES += $$PWD/changestatecommand.cpp -SOURCES += $$PWD/changevaluescommand.cpp -SOURCES += $$PWD/childrenchangeeventfilter.cpp -SOURCES += $$PWD/clearscenecommand.cpp -SOURCES += $$PWD/componentnodeinstance.cpp -SOURCES += $$PWD/createinstancescommand.cpp -SOURCES += $$PWD/createscenecommand.cpp -SOURCES += $$PWD/declarativedesignercommunicationinterface.cpp -SOURCES += $$PWD/dummynodeinstance.cpp -SOURCES += $$PWD/graphicsobjectnodeinstance.cpp -SOURCES += $$PWD/idcontainer.cpp -SOURCES += $$PWD/informationchangedcommand.cpp -SOURCES += $$PWD/informationcontainer.cpp -SOURCES += $$PWD/instancecontainer.cpp -SOURCES += $$PWD/nodeinstanceclientproxy.cpp -SOURCES += $$PWD/nodeinstancemetaobject.cpp -SOURCES += $$PWD/nodeinstanceserver.cpp -SOURCES += $$PWD/nodeinstanceserverinterface.cpp -SOURCES += $$PWD/nodeinstancesignalspy.cpp -SOURCES += $$PWD/objectnodeinstance.cpp -SOURCES += $$PWD/pixmapchangedcommand.cpp -SOURCES += $$PWD/positionernodeinstance.cpp -SOURCES += $$PWD/propertyabstractcontainer.cpp -SOURCES += $$PWD/propertybindingcontainer.cpp -SOURCES += $$PWD/propertyvaluecontainer.cpp -SOURCES += $$PWD/qmlgraphicsitemnodeinstance.cpp -SOURCES += $$PWD/qmlpropertychangesnodeinstance.cpp -SOURCES += $$PWD/qmlstatenodeinstance.cpp -SOURCES += $$PWD/qmltransitionnodeinstance.cpp -SOURCES += $$PWD/removeinstancescommand.cpp -SOURCES += $$PWD/removepropertiescommand.cpp -SOURCES += $$PWD/reparentcontainer.cpp -SOURCES += $$PWD/reparentinstancescommand.cpp -SOURCES += $$PWD/servernodeinstance.cpp -SOURCES += $$PWD/valueschangedcommand.cpp +SOURCES += $$PWD/nodeinstanceserverproxy.cpp +SOURCES += $$PWD/nodeinstance.cpp +SOURCES += $$PWD/nodeinstanceview.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index ad41ccd34a1..5cfd01be5cc 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -37,6 +37,7 @@ #include <QProcess> #include <QCoreApplication> #include <QUuid> +#include <QFileInfo> #include "propertyabstractcontainer.h" #include "propertyvaluecontainer.h" @@ -54,7 +55,6 @@ #include "reparentinstancescommand.h" #include "changeidscommand.h" #include "changestatecommand.h" -#include "addimportcommand.h" #include "completecomponentcommand.h" #include "changenodesourcecommand.h" @@ -69,10 +69,25 @@ #include "synchronizecommand.h" #include "nodeinstanceview.h" -#include "nodeinstanceclientproxy.h" + +#include "import.h" +#include <QMessageBox> + namespace QmlDesigner { +static bool hasQtQuick1(NodeInstanceView *nodeInstanceView) +{ + if (nodeInstanceView && nodeInstanceView->model()) { + foreach (const Import &import ,nodeInstanceView->model()->imports()) { + if (import.url() == "QtQuick" && import.version().toDouble() < 2.0) + return true; + } + } + + return false; +} + NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus) : NodeInstanceServerInterface(nodeInstanceView), m_localServer(new QLocalServer(this)), @@ -98,74 +113,84 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV #ifdef Q_OS_MACX applicationPath += "/qmlpuppet.app/Contents/MacOS"; #endif - applicationPath += "/qmlpuppet"; + + if (hasQtQuick1(nodeInstanceView)) { + applicationPath += "/qmlpuppet"; + } else { + applicationPath += "/qml2puppet"; + } QByteArray envImportPath = qgetenv("QTCREATOR_QMLPUPPET_PATH"); if (!envImportPath.isEmpty()) { applicationPath = envImportPath; } - m_qmlPuppetEditorProcess = new QProcess; - connect(m_qmlPuppetEditorProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); - connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), m_qmlPuppetEditorProcess.data(), SLOT(kill())); - bool fowardQmlpuppetOutput = !qgetenv("FORWARD_QMLPUPPET_OUTPUT").isEmpty(); - if (fowardQmlpuppetOutput) - m_qmlPuppetEditorProcess->setProcessChannelMode(QProcess::ForwardedChannels); - m_qmlPuppetEditorProcess->start(applicationPath, QStringList() << socketToken << "editormode" << "-graphicssystem raster"); - - if (runModus == NormalModus) { - m_qmlPuppetPreviewProcess = new QProcess; - connect(m_qmlPuppetPreviewProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); - connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), m_qmlPuppetPreviewProcess.data(), SLOT(kill())); + if (QFileInfo(applicationPath).exists()) { + m_qmlPuppetEditorProcess = new QProcess; + connect(m_qmlPuppetEditorProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); + connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), m_qmlPuppetEditorProcess.data(), SLOT(kill())); + bool fowardQmlpuppetOutput = !qgetenv("FORWARD_QMLPUPPET_OUTPUT").isEmpty(); if (fowardQmlpuppetOutput) - m_qmlPuppetPreviewProcess->setProcessChannelMode(QProcess::ForwardedChannels); - m_qmlPuppetPreviewProcess->start(applicationPath, QStringList() << socketToken << "previewmode" << "-graphicssystem raster"); + m_qmlPuppetEditorProcess->setProcessChannelMode(QProcess::ForwardedChannels); + m_qmlPuppetEditorProcess->start(applicationPath, QStringList() << socketToken << "editormode" << "-graphicssystem raster"); - m_qmlPuppetRenderProcess = new QProcess; - connect(m_qmlPuppetRenderProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); - connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), m_qmlPuppetRenderProcess.data(), SLOT(kill())); - if (fowardQmlpuppetOutput) - m_qmlPuppetRenderProcess->setProcessChannelMode(QProcess::ForwardedChannels); - m_qmlPuppetRenderProcess->start(applicationPath, QStringList() << socketToken << "rendermode" << "-graphicssystem raster"); + if (runModus == NormalModus) { + m_qmlPuppetPreviewProcess = new QProcess; + connect(m_qmlPuppetPreviewProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); + connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), m_qmlPuppetPreviewProcess.data(), SLOT(kill())); + if (fowardQmlpuppetOutput) + m_qmlPuppetPreviewProcess->setProcessChannelMode(QProcess::ForwardedChannels); + m_qmlPuppetPreviewProcess->start(applicationPath, QStringList() << socketToken << "previewmode" << "-graphicssystem raster"); - } + m_qmlPuppetRenderProcess = new QProcess; + connect(m_qmlPuppetRenderProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); + connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), m_qmlPuppetRenderProcess.data(), SLOT(kill())); + if (fowardQmlpuppetOutput) + m_qmlPuppetRenderProcess->setProcessChannelMode(QProcess::ForwardedChannels); + m_qmlPuppetRenderProcess->start(applicationPath, QStringList() << socketToken << "rendermode" << "-graphicssystem raster"); - connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater())); + } - m_qmlPuppetEditorProcess->waitForStarted(); + connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater())); - connect(m_qmlPuppetEditorProcess.data(), SIGNAL(finished(int)), m_qmlPuppetEditorProcess.data(),SLOT(deleteLater())); + m_qmlPuppetEditorProcess->waitForStarted(); - if (runModus == NormalModus) { - m_qmlPuppetPreviewProcess->waitForStarted(); - connect(m_qmlPuppetPreviewProcess.data(), SIGNAL(finished(int)), m_qmlPuppetPreviewProcess.data(),SLOT(deleteLater())); + connect(m_qmlPuppetEditorProcess.data(), SIGNAL(finished(int)), m_qmlPuppetEditorProcess.data(),SLOT(deleteLater())); - m_qmlPuppetRenderProcess->waitForStarted(); - connect(m_qmlPuppetRenderProcess.data(), SIGNAL(finished(int)), m_qmlPuppetRenderProcess.data(),SLOT(deleteLater())); - } + if (runModus == NormalModus) { + m_qmlPuppetPreviewProcess->waitForStarted(); + connect(m_qmlPuppetPreviewProcess.data(), SIGNAL(finished(int)), m_qmlPuppetPreviewProcess.data(),SLOT(deleteLater())); - if (!m_localServer->hasPendingConnections()) - m_localServer->waitForNewConnection(-1); + m_qmlPuppetRenderProcess->waitForStarted(); + connect(m_qmlPuppetRenderProcess.data(), SIGNAL(finished(int)), m_qmlPuppetRenderProcess.data(),SLOT(deleteLater())); + } - m_firstSocket = m_localServer->nextPendingConnection(); - connect(m_firstSocket.data(), SIGNAL(readyRead()), this, SLOT(readFirstDataStream())); - - if (runModus == NormalModus) { if (!m_localServer->hasPendingConnections()) m_localServer->waitForNewConnection(-1); - m_secondSocket = m_localServer->nextPendingConnection(); - connect(m_secondSocket.data(), SIGNAL(readyRead()), this, SLOT(readSecondDataStream())); + m_firstSocket = m_localServer->nextPendingConnection(); + connect(m_firstSocket.data(), SIGNAL(readyRead()), this, SLOT(readFirstDataStream())); - if (!m_localServer->hasPendingConnections()) - m_localServer->waitForNewConnection(-1); + if (runModus == NormalModus) { + if (!m_localServer->hasPendingConnections()) + m_localServer->waitForNewConnection(-1); - m_thirdSocket = m_localServer->nextPendingConnection(); - connect(m_thirdSocket.data(), SIGNAL(readyRead()), this, SLOT(readThirdDataStream())); + m_secondSocket = m_localServer->nextPendingConnection(); + connect(m_secondSocket.data(), SIGNAL(readyRead()), this, SLOT(readSecondDataStream())); - } + if (!m_localServer->hasPendingConnections()) + m_localServer->waitForNewConnection(-1); + + m_thirdSocket = m_localServer->nextPendingConnection(); + connect(m_thirdSocket.data(), SIGNAL(readyRead()), this, SLOT(readThirdDataStream())); + + } - m_localServer->close(); + m_localServer->close(); + + } else { + QMessageBox::warning(0, tr("Cannot find qml puppet"), tr("Qml Puppet is a process which runs in the backgound to render the the items. If QtCreator cannot find the puppet something with the installation is wrong.")); + } } NodeInstanceServerProxy::~NodeInstanceServerProxy() @@ -449,11 +474,6 @@ void NodeInstanceServerProxy::changeState(const ChangeStateCommand &command) writeCommand(QVariant::fromValue(command)); } -void NodeInstanceServerProxy::addImport(const AddImportCommand &command) -{ - writeCommand(QVariant::fromValue(command)); -} - void NodeInstanceServerProxy::completeComponent(const CompleteComponentCommand &command) { writeCommand(QVariant::fromValue(command)); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h index 0a65d3d3f0c..42b29db73e8 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h @@ -69,7 +69,6 @@ public: void reparentInstances(const ReparentInstancesCommand &command); void changeIds(const ChangeIdsCommand &command); void changeState(const ChangeStateCommand &command); - void addImport(const AddImportCommand &command); void completeComponent(const CompleteComponentCommand &command); void changeNodeSource(const ChangeNodeSourceCommand &command); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 90fd26ecce2..472a179c947 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -74,7 +74,6 @@ #include "pixmapchangedcommand.h" #include "informationchangedcommand.h" #include "changestatecommand.h" -#include "addimportcommand.h" #include "childrenchangedcommand.h" #include "imagecontainer.h" #include "statepreviewimagechangedcommand.h" @@ -1005,11 +1004,6 @@ RemovePropertiesCommand NodeInstanceView::createRemovePropertiesCommand(const QL return RemovePropertiesCommand(containerList); } -AddImportCommand NodeInstanceView::createImportCommand(const Import &import) -{ - return AddImportCommand(AddImportContainer(import.url(), import.file(), import.version(), import.alias(), import.importPaths())); -} - void NodeInstanceView::valuesChanged(const ValuesChangedCommand &command) { if (!model()) diff --git a/src/plugins/qmldesigner/designercore/instances/changeauxiliarycommand.cpp b/src/tools/qmlpuppet/commands/changeauxiliarycommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changeauxiliarycommand.cpp rename to src/tools/qmlpuppet/commands/changeauxiliarycommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/changeauxiliarycommand.h b/src/tools/qmlpuppet/commands/changeauxiliarycommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changeauxiliarycommand.h rename to src/tools/qmlpuppet/commands/changeauxiliarycommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/changebindingscommand.cpp b/src/tools/qmlpuppet/commands/changebindingscommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changebindingscommand.cpp rename to src/tools/qmlpuppet/commands/changebindingscommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/changebindingscommand.h b/src/tools/qmlpuppet/commands/changebindingscommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changebindingscommand.h rename to src/tools/qmlpuppet/commands/changebindingscommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/changefileurlcommand.cpp b/src/tools/qmlpuppet/commands/changefileurlcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changefileurlcommand.cpp rename to src/tools/qmlpuppet/commands/changefileurlcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/changefileurlcommand.h b/src/tools/qmlpuppet/commands/changefileurlcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changefileurlcommand.h rename to src/tools/qmlpuppet/commands/changefileurlcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/changeidscommand.cpp b/src/tools/qmlpuppet/commands/changeidscommand.cpp similarity index 57% rename from src/plugins/qmldesigner/designercore/instances/changeidscommand.cpp rename to src/tools/qmlpuppet/commands/changeidscommand.cpp index 04c49637b3f..c6c4658e34d 100644 --- a/src/plugins/qmldesigner/designercore/instances/changeidscommand.cpp +++ b/src/tools/qmlpuppet/commands/changeidscommand.cpp @@ -4,29 +4,30 @@ ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** -** Contact: Nokia Corporation (info@qt.nokia.com) +** Contact: Nokia Corporation (qt-info@nokia.com) ** +** No Commercial Usage +** +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** 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. +** Alternatively, 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 +** 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 info@qt.nokia.com. +** Nokia at qt-info@nokia.com. ** **************************************************************************/ diff --git a/src/plugins/qmldesigner/designercore/instances/changeidscommand.h b/src/tools/qmlpuppet/commands/changeidscommand.h similarity index 59% rename from src/plugins/qmldesigner/designercore/instances/changeidscommand.h rename to src/tools/qmlpuppet/commands/changeidscommand.h index fc1612b12ec..47e6f927f6e 100644 --- a/src/plugins/qmldesigner/designercore/instances/changeidscommand.h +++ b/src/tools/qmlpuppet/commands/changeidscommand.h @@ -4,29 +4,30 @@ ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** -** Contact: Nokia Corporation (info@qt.nokia.com) +** Contact: Nokia Corporation (qt-info@nokia.com) ** +** No Commercial Usage +** +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** 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. +** Alternatively, 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 +** 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 info@qt.nokia.com. +** Nokia at qt-info@nokia.com. ** **************************************************************************/ diff --git a/src/plugins/qmldesigner/designercore/instances/changenodesourcecommand.cpp b/src/tools/qmlpuppet/commands/changenodesourcecommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changenodesourcecommand.cpp rename to src/tools/qmlpuppet/commands/changenodesourcecommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/changenodesourcecommand.h b/src/tools/qmlpuppet/commands/changenodesourcecommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changenodesourcecommand.h rename to src/tools/qmlpuppet/commands/changenodesourcecommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/changestatecommand.cpp b/src/tools/qmlpuppet/commands/changestatecommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changestatecommand.cpp rename to src/tools/qmlpuppet/commands/changestatecommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/changestatecommand.h b/src/tools/qmlpuppet/commands/changestatecommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changestatecommand.h rename to src/tools/qmlpuppet/commands/changestatecommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/changevaluescommand.cpp b/src/tools/qmlpuppet/commands/changevaluescommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changevaluescommand.cpp rename to src/tools/qmlpuppet/commands/changevaluescommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/changevaluescommand.h b/src/tools/qmlpuppet/commands/changevaluescommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/changevaluescommand.h rename to src/tools/qmlpuppet/commands/changevaluescommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/childrenchangedcommand.cpp b/src/tools/qmlpuppet/commands/childrenchangedcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/childrenchangedcommand.cpp rename to src/tools/qmlpuppet/commands/childrenchangedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/childrenchangedcommand.h b/src/tools/qmlpuppet/commands/childrenchangedcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/childrenchangedcommand.h rename to src/tools/qmlpuppet/commands/childrenchangedcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/clearscenecommand.cpp b/src/tools/qmlpuppet/commands/clearscenecommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/clearscenecommand.cpp rename to src/tools/qmlpuppet/commands/clearscenecommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/clearscenecommand.h b/src/tools/qmlpuppet/commands/clearscenecommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/clearscenecommand.h rename to src/tools/qmlpuppet/commands/clearscenecommand.h diff --git a/src/tools/qmlpuppet/commands/commands.pri b/src/tools/qmlpuppet/commands/commands.pri new file mode 100644 index 00000000000..c6c9282d1b8 --- /dev/null +++ b/src/tools/qmlpuppet/commands/commands.pri @@ -0,0 +1,46 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/synchronizecommand.h +HEADERS += $$PWD/componentcompletedcommand.h +HEADERS += $$PWD/completecomponentcommand.h +HEADERS += $$PWD/statepreviewimagechangedcommand.h +HEADERS += $$PWD/childrenchangedcommand.h +HEADERS += $$PWD/changebindingscommand.h +HEADERS += $$PWD/changefileurlcommand.h +HEADERS += $$PWD/changeidscommand.h +HEADERS += $$PWD/changenodesourcecommand.h +HEADERS += $$PWD/changestatecommand.h +HEADERS += $$PWD/changevaluescommand.h +HEADERS += $$PWD/createscenecommand.h +HEADERS += $$PWD/clearscenecommand.h +HEADERS += $$PWD/createinstancescommand.h +HEADERS += $$PWD/informationchangedcommand.h +HEADERS += $$PWD/pixmapchangedcommand.h +HEADERS += $$PWD/removeinstancescommand.h +HEADERS += $$PWD/removepropertiescommand.h +HEADERS += $$PWD/reparentinstancescommand.h +HEADERS += $$PWD/valueschangedcommand.h +HEADERS += $$PWD/changeauxiliarycommand.h + + +SOURCES += $$PWD/synchronizecommand.cpp +SOURCES += $$PWD/componentcompletedcommand.cpp +SOURCES += $$PWD/completecomponentcommand.cpp +SOURCES += $$PWD/statepreviewimagechangedcommand.cpp +SOURCES += $$PWD/childrenchangedcommand.cpp +SOURCES += $$PWD/changebindingscommand.cpp +SOURCES += $$PWD/changefileurlcommand.cpp +SOURCES += $$PWD/changeidscommand.cpp +SOURCES += $$PWD/changenodesourcecommand.cpp +SOURCES += $$PWD/changestatecommand.cpp +SOURCES += $$PWD/changevaluescommand.cpp +SOURCES += $$PWD/informationchangedcommand.cpp +SOURCES += $$PWD/removeinstancescommand.cpp +SOURCES += $$PWD/removepropertiescommand.cpp +SOURCES += $$PWD/reparentinstancescommand.cpp +SOURCES += $$PWD/valueschangedcommand.cpp +SOURCES += $$PWD/clearscenecommand.cpp +SOURCES += $$PWD/createinstancescommand.cpp +SOURCES += $$PWD/createscenecommand.cpp +SOURCES += $$PWD/pixmapchangedcommand.cpp +SOURCES += $$PWD/changeauxiliarycommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/completecomponentcommand.cpp b/src/tools/qmlpuppet/commands/completecomponentcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/completecomponentcommand.cpp rename to src/tools/qmlpuppet/commands/completecomponentcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/completecomponentcommand.h b/src/tools/qmlpuppet/commands/completecomponentcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/completecomponentcommand.h rename to src/tools/qmlpuppet/commands/completecomponentcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/componentcompletedcommand.cpp b/src/tools/qmlpuppet/commands/componentcompletedcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/componentcompletedcommand.cpp rename to src/tools/qmlpuppet/commands/componentcompletedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/componentcompletedcommand.h b/src/tools/qmlpuppet/commands/componentcompletedcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/componentcompletedcommand.h rename to src/tools/qmlpuppet/commands/componentcompletedcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/createinstancescommand.cpp b/src/tools/qmlpuppet/commands/createinstancescommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/createinstancescommand.cpp rename to src/tools/qmlpuppet/commands/createinstancescommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/createinstancescommand.h b/src/tools/qmlpuppet/commands/createinstancescommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/createinstancescommand.h rename to src/tools/qmlpuppet/commands/createinstancescommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/createscenecommand.cpp b/src/tools/qmlpuppet/commands/createscenecommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/createscenecommand.cpp rename to src/tools/qmlpuppet/commands/createscenecommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/createscenecommand.h b/src/tools/qmlpuppet/commands/createscenecommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/createscenecommand.h rename to src/tools/qmlpuppet/commands/createscenecommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/informationchangedcommand.cpp b/src/tools/qmlpuppet/commands/informationchangedcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/informationchangedcommand.cpp rename to src/tools/qmlpuppet/commands/informationchangedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/informationchangedcommand.h b/src/tools/qmlpuppet/commands/informationchangedcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/informationchangedcommand.h rename to src/tools/qmlpuppet/commands/informationchangedcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/pixmapchangedcommand.cpp b/src/tools/qmlpuppet/commands/pixmapchangedcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/pixmapchangedcommand.cpp rename to src/tools/qmlpuppet/commands/pixmapchangedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/pixmapchangedcommand.h b/src/tools/qmlpuppet/commands/pixmapchangedcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/pixmapchangedcommand.h rename to src/tools/qmlpuppet/commands/pixmapchangedcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/removeinstancescommand.cpp b/src/tools/qmlpuppet/commands/removeinstancescommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/removeinstancescommand.cpp rename to src/tools/qmlpuppet/commands/removeinstancescommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/removeinstancescommand.h b/src/tools/qmlpuppet/commands/removeinstancescommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/removeinstancescommand.h rename to src/tools/qmlpuppet/commands/removeinstancescommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/removepropertiescommand.cpp b/src/tools/qmlpuppet/commands/removepropertiescommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/removepropertiescommand.cpp rename to src/tools/qmlpuppet/commands/removepropertiescommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/removepropertiescommand.h b/src/tools/qmlpuppet/commands/removepropertiescommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/removepropertiescommand.h rename to src/tools/qmlpuppet/commands/removepropertiescommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/reparentinstancescommand.cpp b/src/tools/qmlpuppet/commands/reparentinstancescommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/reparentinstancescommand.cpp rename to src/tools/qmlpuppet/commands/reparentinstancescommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/reparentinstancescommand.h b/src/tools/qmlpuppet/commands/reparentinstancescommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/reparentinstancescommand.h rename to src/tools/qmlpuppet/commands/reparentinstancescommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/statepreviewimagechangedcommand.cpp b/src/tools/qmlpuppet/commands/statepreviewimagechangedcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/statepreviewimagechangedcommand.cpp rename to src/tools/qmlpuppet/commands/statepreviewimagechangedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/statepreviewimagechangedcommand.h b/src/tools/qmlpuppet/commands/statepreviewimagechangedcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/statepreviewimagechangedcommand.h rename to src/tools/qmlpuppet/commands/statepreviewimagechangedcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/synchronizecommand.cpp b/src/tools/qmlpuppet/commands/synchronizecommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/synchronizecommand.cpp rename to src/tools/qmlpuppet/commands/synchronizecommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/synchronizecommand.h b/src/tools/qmlpuppet/commands/synchronizecommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/synchronizecommand.h rename to src/tools/qmlpuppet/commands/synchronizecommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/valueschangedcommand.cpp b/src/tools/qmlpuppet/commands/valueschangedcommand.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/valueschangedcommand.cpp rename to src/tools/qmlpuppet/commands/valueschangedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/valueschangedcommand.h b/src/tools/qmlpuppet/commands/valueschangedcommand.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/valueschangedcommand.h rename to src/tools/qmlpuppet/commands/valueschangedcommand.h diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcontainer.cpp b/src/tools/qmlpuppet/container/addimportcontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/addimportcontainer.cpp rename to src/tools/qmlpuppet/container/addimportcontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcontainer.h b/src/tools/qmlpuppet/container/addimportcontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/addimportcontainer.h rename to src/tools/qmlpuppet/container/addimportcontainer.h diff --git a/src/tools/qmlpuppet/container/container.pri b/src/tools/qmlpuppet/container/container.pri new file mode 100644 index 00000000000..88891967087 --- /dev/null +++ b/src/tools/qmlpuppet/container/container.pri @@ -0,0 +1,21 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/addimportcontainer.h +HEADERS += $$PWD/imagecontainer.h +HEADERS += $$PWD/idcontainer.h +HEADERS += $$PWD/informationcontainer.h +HEADERS += $$PWD/instancecontainer.h +HEADERS += $$PWD/reparentcontainer.h +HEADERS += $$PWD/propertyabstractcontainer.h +HEADERS += $$PWD/propertybindingcontainer.h +HEADERS += $$PWD/propertyvaluecontainer.h + +SOURCES += $$PWD/addimportcontainer.cpp +SOURCES += $$PWD/imagecontainer.cpp +SOURCES += $$PWD/idcontainer.cpp +SOURCES += $$PWD/informationcontainer.cpp +SOURCES += $$PWD/instancecontainer.cpp +SOURCES += $$PWD/reparentcontainer.cpp +SOURCES += $$PWD/propertyabstractcontainer.cpp +SOURCES += $$PWD/propertybindingcontainer.cpp +SOURCES += $$PWD/propertyvaluecontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/idcontainer.cpp b/src/tools/qmlpuppet/container/idcontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/idcontainer.cpp rename to src/tools/qmlpuppet/container/idcontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/idcontainer.h b/src/tools/qmlpuppet/container/idcontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/idcontainer.h rename to src/tools/qmlpuppet/container/idcontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/imagecontainer.cpp b/src/tools/qmlpuppet/container/imagecontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/imagecontainer.cpp rename to src/tools/qmlpuppet/container/imagecontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/imagecontainer.h b/src/tools/qmlpuppet/container/imagecontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/imagecontainer.h rename to src/tools/qmlpuppet/container/imagecontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/informationcontainer.cpp b/src/tools/qmlpuppet/container/informationcontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/informationcontainer.cpp rename to src/tools/qmlpuppet/container/informationcontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/informationcontainer.h b/src/tools/qmlpuppet/container/informationcontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/informationcontainer.h rename to src/tools/qmlpuppet/container/informationcontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/instancecontainer.cpp b/src/tools/qmlpuppet/container/instancecontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/instancecontainer.cpp rename to src/tools/qmlpuppet/container/instancecontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/instancecontainer.h b/src/tools/qmlpuppet/container/instancecontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/instancecontainer.h rename to src/tools/qmlpuppet/container/instancecontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/propertyabstractcontainer.cpp b/src/tools/qmlpuppet/container/propertyabstractcontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/propertyabstractcontainer.cpp rename to src/tools/qmlpuppet/container/propertyabstractcontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/include/propertyabstractcontainer.h b/src/tools/qmlpuppet/container/propertyabstractcontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/include/propertyabstractcontainer.h rename to src/tools/qmlpuppet/container/propertyabstractcontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/propertybindingcontainer.cpp b/src/tools/qmlpuppet/container/propertybindingcontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/propertybindingcontainer.cpp rename to src/tools/qmlpuppet/container/propertybindingcontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/include/propertybindingcontainer.h b/src/tools/qmlpuppet/container/propertybindingcontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/include/propertybindingcontainer.h rename to src/tools/qmlpuppet/container/propertybindingcontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/propertyvaluecontainer.cpp b/src/tools/qmlpuppet/container/propertyvaluecontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/propertyvaluecontainer.cpp rename to src/tools/qmlpuppet/container/propertyvaluecontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/include/propertyvaluecontainer.h b/src/tools/qmlpuppet/container/propertyvaluecontainer.h similarity index 98% rename from src/plugins/qmldesigner/designercore/include/propertyvaluecontainer.h rename to src/tools/qmlpuppet/container/propertyvaluecontainer.h index 904ea42dcf8..1a1ec3d395c 100644 --- a/src/plugins/qmldesigner/designercore/include/propertyvaluecontainer.h +++ b/src/tools/qmlpuppet/container/propertyvaluecontainer.h @@ -38,8 +38,6 @@ #include <QVariant> #include <QString> -#include "commondefines.h" - namespace QmlDesigner { diff --git a/src/plugins/qmldesigner/designercore/instances/reparentcontainer.cpp b/src/tools/qmlpuppet/container/reparentcontainer.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/reparentcontainer.cpp rename to src/tools/qmlpuppet/container/reparentcontainer.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/reparentcontainer.h b/src/tools/qmlpuppet/container/reparentcontainer.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/reparentcontainer.h rename to src/tools/qmlpuppet/container/reparentcontainer.h diff --git a/src/plugins/qmldesigner/designercore/instances/behaviornodeinstance.cpp b/src/tools/qmlpuppet/instances/behaviornodeinstance.cpp similarity index 94% rename from src/plugins/qmldesigner/designercore/instances/behaviornodeinstance.cpp rename to src/tools/qmlpuppet/instances/behaviornodeinstance.cpp index 63b87a84183..a89da2510bd 100644 --- a/src/plugins/qmldesigner/designercore/instances/behaviornodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/behaviornodeinstance.cpp @@ -34,8 +34,6 @@ #include <private/qdeclarativebehavior_p.h> -#include "invalidnodeinstanceexception.h" - namespace QmlDesigner { namespace Internal { @@ -49,8 +47,7 @@ BehaviorNodeInstance::Pointer BehaviorNodeInstance::create(QObject *object) { QDeclarativeBehavior* behavior = qobject_cast<QDeclarativeBehavior*>(object); - if (behavior == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + Q_ASSERT(behavior); Pointer instance(new BehaviorNodeInstance(behavior)); diff --git a/src/plugins/qmldesigner/designercore/instances/behaviornodeinstance.h b/src/tools/qmlpuppet/instances/behaviornodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/behaviornodeinstance.h rename to src/tools/qmlpuppet/instances/behaviornodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/childrenchangeeventfilter.cpp b/src/tools/qmlpuppet/instances/childrenchangeeventfilter.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/childrenchangeeventfilter.cpp rename to src/tools/qmlpuppet/instances/childrenchangeeventfilter.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/childrenchangeeventfilter.h b/src/tools/qmlpuppet/instances/childrenchangeeventfilter.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/childrenchangeeventfilter.h rename to src/tools/qmlpuppet/instances/childrenchangeeventfilter.h diff --git a/src/plugins/qmldesigner/designercore/instances/componentnodeinstance.cpp b/src/tools/qmlpuppet/instances/componentnodeinstance.cpp similarity index 95% rename from src/plugins/qmldesigner/designercore/instances/componentnodeinstance.cpp rename to src/tools/qmlpuppet/instances/componentnodeinstance.cpp index 2ca11bf573a..6fae496a172 100644 --- a/src/plugins/qmldesigner/designercore/instances/componentnodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/componentnodeinstance.cpp @@ -32,10 +32,11 @@ #include "componentnodeinstance.h" -#include <invalidnodeinstanceexception.h> #include <QDeclarativeComponent> #include <QDeclarativeContext> +#include <QtDebug> + namespace QmlDesigner { namespace Internal { @@ -55,8 +56,7 @@ ComponentNodeInstance::Pointer ComponentNodeInstance::create(QObject *object) { QDeclarativeComponent *component = qobject_cast<QDeclarativeComponent *>(object); - if (component == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + Q_ASSERT(component); Pointer instance(new ComponentNodeInstance(component)); diff --git a/src/plugins/qmldesigner/designercore/instances/componentnodeinstance.h b/src/tools/qmlpuppet/instances/componentnodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/componentnodeinstance.h rename to src/tools/qmlpuppet/instances/componentnodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/dummycontextobject.cpp b/src/tools/qmlpuppet/instances/dummycontextobject.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/dummycontextobject.cpp rename to src/tools/qmlpuppet/instances/dummycontextobject.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/dummycontextobject.h b/src/tools/qmlpuppet/instances/dummycontextobject.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/dummycontextobject.h rename to src/tools/qmlpuppet/instances/dummycontextobject.h diff --git a/src/plugins/qmldesigner/designercore/instances/dummynodeinstance.cpp b/src/tools/qmlpuppet/instances/dummynodeinstance.cpp similarity index 97% rename from src/plugins/qmldesigner/designercore/instances/dummynodeinstance.cpp rename to src/tools/qmlpuppet/instances/dummynodeinstance.cpp index 5f487470a39..cf17278c256 100644 --- a/src/plugins/qmldesigner/designercore/instances/dummynodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/dummynodeinstance.cpp @@ -32,10 +32,6 @@ #include "dummynodeinstance.h" -#include <nodemetainfo.h> - -#include <invalidnodeinstanceexception.h> - namespace QmlDesigner { namespace Internal { diff --git a/src/plugins/qmldesigner/designercore/instances/dummynodeinstance.h b/src/tools/qmlpuppet/instances/dummynodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/dummynodeinstance.h rename to src/tools/qmlpuppet/instances/dummynodeinstance.h diff --git a/src/tools/qmlpuppet/instances/instances.pri b/src/tools/qmlpuppet/instances/instances.pri new file mode 100644 index 00000000000..af88d6bd738 --- /dev/null +++ b/src/tools/qmlpuppet/instances/instances.pri @@ -0,0 +1,34 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/behaviornodeinstance.h + +HEADERS += $$PWD/dummycontextobject.h + +HEADERS += $$PWD/childrenchangeeventfilter.h +HEADERS += $$PWD/componentnodeinstance.h +HEADERS += $$PWD/dummynodeinstance.h +HEADERS += $$PWD/nodeinstanceclientproxy.h +HEADERS += $$PWD/nodeinstancemetaobject.h +HEADERS += $$PWD/nodeinstanceserver.h +HEADERS += $$PWD/nodeinstancesignalspy.h +HEADERS += $$PWD/objectnodeinstance.h +HEADERS += $$PWD/qmlpropertychangesnodeinstance.h +HEADERS += $$PWD/qmlstatenodeinstance.h +HEADERS += $$PWD/qmltransitionnodeinstance.h +HEADERS += $$PWD/servernodeinstance.h + + +SOURCES += $$PWD/behaviornodeinstance.cpp +SOURCES += $$PWD/dummycontextobject.cpp +SOURCES += $$PWD/childrenchangeeventfilter.cpp +SOURCES += $$PWD/componentnodeinstance.cpp +SOURCES += $$PWD/dummynodeinstance.cpp +SOURCES += $$PWD/nodeinstanceclientproxy.cpp +SOURCES += $$PWD/nodeinstancemetaobject.cpp +SOURCES += $$PWD/nodeinstanceserver.cpp +SOURCES += $$PWD/nodeinstancesignalspy.cpp +SOURCES += $$PWD/objectnodeinstance.cpp +SOURCES += $$PWD/qmlpropertychangesnodeinstance.cpp +SOURCES += $$PWD/qmlstatenodeinstance.cpp +SOURCES += $$PWD/qmltransitionnodeinstance.cpp +SOURCES += $$PWD/servernodeinstance.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp b/src/tools/qmlpuppet/instances/nodeinstanceclientproxy.cpp similarity index 92% rename from src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp rename to src/tools/qmlpuppet/instances/nodeinstanceclientproxy.cpp index 700161c8406..ad10cdc57ca 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp +++ b/src/tools/qmlpuppet/instances/nodeinstanceclientproxy.cpp @@ -37,9 +37,7 @@ #include <QCoreApplication> #include <QStringList> -#include "informationnodeinstanceserver.h" -#include "previewnodeinstanceserver.h" -#include "rendernodeinstanceserver.h" +#include "nodeinstanceserverinterface.h" #include "propertyabstractcontainer.h" #include "propertyvaluecontainer.h" @@ -57,7 +55,6 @@ #include "reparentinstancescommand.h" #include "changeidscommand.h" #include "changestatecommand.h" -#include "addimportcommand.h" #include "completecomponentcommand.h" #include "synchronizecommand.h" @@ -80,14 +77,10 @@ NodeInstanceClientProxy::NodeInstanceClientProxy(QObject *parent) m_lastReadCommandCounter(0), m_synchronizeId(-1) { - if (QCoreApplication::arguments().at(2) == QLatin1String("previewmode")) { - m_nodeInstanceServer = new PreviewNodeInstanceServer(this); - } else if (QCoreApplication::arguments().at(2) == QLatin1String("editormode")) { - m_nodeInstanceServer = new InformationNodeInstanceServer(this); - } else if (QCoreApplication::arguments().at(2) == QLatin1String("rendermode")) { - m_nodeInstanceServer = new RenderNodeInstanceServer(this); - } +} +void NodeInstanceClientProxy::initializeSocket() +{ m_socket = new QLocalSocket(this); connect(m_socket, SIGNAL(readyRead()), this, SLOT(readDataStream())); connect(m_socket, SIGNAL(error(QLocalSocket::LocalSocketError)), QCoreApplication::instance(), SLOT(quit())); @@ -200,6 +193,11 @@ NodeInstanceServerInterface *NodeInstanceClientProxy::nodeInstanceServer() const return m_nodeInstanceServer; } +void NodeInstanceClientProxy::setNodeInstanceServer(NodeInstanceServerInterface *nodeInstanceServer) +{ + m_nodeInstanceServer = nodeInstanceServer; +} + void NodeInstanceClientProxy::createInstances(const CreateInstancesCommand &command) { nodeInstanceServer()->createInstances(command); @@ -260,11 +258,6 @@ void NodeInstanceClientProxy::changeState(const ChangeStateCommand &command) nodeInstanceServer()->changeState(command); } -void NodeInstanceClientProxy::addImport(const AddImportCommand &command) -{ - nodeInstanceServer()->addImport(command); -} - void NodeInstanceClientProxy::completeComponent(const CompleteComponentCommand &command) { nodeInstanceServer()->completeComponent(command); @@ -289,7 +282,6 @@ void NodeInstanceClientProxy::dispatchCommand(const QVariant &command) static const int reparentInstancesCommandType = QMetaType::type("ReparentInstancesCommand"); static const int changeIdsCommandType = QMetaType::type("ChangeIdsCommand"); static const int changeStateCommandType = QMetaType::type("ChangeStateCommand"); - static const int addImportCommandType = QMetaType::type("AddImportCommand"); static const int completeComponentCommandType = QMetaType::type("CompleteComponentCommand"); static const int synchronizeCommandType = QMetaType::type("SynchronizeCommand"); static const int changeNodeSourceCommandType = QMetaType::type("ChangeNodeSourceCommand"); @@ -318,8 +310,6 @@ void NodeInstanceClientProxy::dispatchCommand(const QVariant &command) changeIds(command.value<ChangeIdsCommand>()); else if (command.userType() == changeStateCommandType) changeState(command.value<ChangeStateCommand>()); - else if (command.userType() == addImportCommandType) - addImport(command.value<AddImportCommand>()); else if (command.userType() == completeComponentCommandType) completeComponent(command.value<CompleteComponentCommand>()); else if (command.userType() == changeNodeSourceCommandType) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h b/src/tools/qmlpuppet/instances/nodeinstanceclientproxy.h similarity index 97% rename from src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h rename to src/tools/qmlpuppet/instances/nodeinstanceclientproxy.h index 1fe067d39bb..0ee07bf354a 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h +++ b/src/tools/qmlpuppet/instances/nodeinstanceclientproxy.h @@ -57,11 +57,11 @@ class ChangeBindingsCommand; class ChangeIdsCommand; class RemoveInstancesCommand; class RemovePropertiesCommand; -class AddImportCommand; class CompleteComponentCommand; class ChangeStateCommand; class ChangeNodeSourceCommand; + class NodeInstanceClientProxy : public QObject, public NodeInstanceClientInterface { Q_OBJECT @@ -81,9 +81,11 @@ public: qint64 bytesToWrite() const; protected: + void initializeSocket(); void writeCommand(const QVariant &command); void dispatchCommand(const QVariant &command); NodeInstanceServerInterface *nodeInstanceServer() const; + void setNodeInstanceServer(NodeInstanceServerInterface *nodeInstanceServer); void createInstances(const CreateInstancesCommand &command); void changeFileUrl(const ChangeFileUrlCommand &command); @@ -97,7 +99,6 @@ protected: void reparentInstances(const ReparentInstancesCommand &command); void changeIds(const ChangeIdsCommand &command); void changeState(const ChangeStateCommand &command); - void addImport(const AddImportCommand &command); void completeComponent(const CompleteComponentCommand &command); void changeNodeSource(const ChangeNodeSourceCommand &command); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstancemetaobject.cpp b/src/tools/qmlpuppet/instances/nodeinstancemetaobject.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/nodeinstancemetaobject.cpp rename to src/tools/qmlpuppet/instances/nodeinstancemetaobject.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstancemetaobject.h b/src/tools/qmlpuppet/instances/nodeinstancemetaobject.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/nodeinstancemetaobject.h rename to src/tools/qmlpuppet/instances/nodeinstancemetaobject.h diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/tools/qmlpuppet/instances/nodeinstanceserver.cpp similarity index 85% rename from src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp rename to src/tools/qmlpuppet/instances/nodeinstanceserver.cpp index 92d284be7a7..57c9f7612ad 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/tools/qmlpuppet/instances/nodeinstanceserver.cpp @@ -32,11 +32,7 @@ #include "nodeinstanceserver.h" -#include <QGraphicsItem> -#include <private/qgraphicsitem_p.h> -#include <private/qgraphicsscene_p.h> #include <QDeclarativeEngine> -#include <QDeclarativeView> #include <QFileSystemWatcher> #include <QUrl> #include <QSet> @@ -73,7 +69,6 @@ #include "commondefines.h" #include "childrenchangeeventfilter.h" #include "changestatecommand.h" -#include "addimportcommand.h" #include "childrenchangedcommand.h" #include "completecomponentcommand.h" #include "componentcompletedcommand.h" @@ -96,20 +91,18 @@ NodeInstanceServer::NodeInstanceServer(NodeInstanceClientInterface *nodeInstance { qmlRegisterType<DummyContextObject>("QmlDesigner", 1, 0, "DummyContextObject"); - m_importList.append("import QtQuick 1.0\n"); connect(m_childrenChangeEventFilter.data(), SIGNAL(childrenChanged(QObject*)), this, SLOT(emitParentChanged(QObject*))); } NodeInstanceServer::~NodeInstanceServer() { - delete m_declarativeView.data(); } QList<ServerNodeInstance> NodeInstanceServer::createInstances(const QVector<InstanceContainer> &containerVector) { - Q_ASSERT(m_declarativeView); + Q_ASSERT(declarativeView() || sgView()); QList<ServerNodeInstance> instanceList; - foreach(const InstanceContainer &instanceContainer, containerVector) { + foreach (const InstanceContainer &instanceContainer, containerVector) { ServerNodeInstance instance; if (instanceContainer.nodeSourceType() == InstanceContainer::ComponentSource) { instance = ServerNodeInstance::create(this, instanceContainer, ServerNodeInstance::WrapAsComponent); @@ -121,11 +114,7 @@ QList<ServerNodeInstance> NodeInstanceServer::createInstances(const QVector<Ins instance.internalObject()->installEventFilter(childrenChangeEventFilter()); if (instanceContainer.instanceId() == 0) { m_rootNodeInstance = instance; - QGraphicsObject *rootGraphicsObject = qobject_cast<QGraphicsObject*>(instance.internalObject()); - if (rootGraphicsObject) { - m_declarativeView->scene()->addItem(rootGraphicsObject); - m_declarativeView->setSceneRect(rootGraphicsObject->boundingRect()); - } + resizeCanvasSizeToRootItemSize(); } foreach (QDeclarativeContext* context, allSubContextsForObject(instance.internalObject())) @@ -235,7 +224,10 @@ void NodeInstanceServer::stopRenderTimer() void NodeInstanceServer::createScene(const CreateSceneCommand &command) { - initializeDeclarativeView(); + initializeView(command.imports()); + QUnifiedTimer::instance()->setSlowdownFactor(0.00001); + QUnifiedTimer::instance()->setSlowModeEnabled(true); + QList<ServerNodeInstance> instanceList = setupScene(command); refreshBindings(); @@ -252,8 +244,6 @@ void NodeInstanceServer::clearScene(const ClearSceneCommand &/*command*/) m_rootNodeInstance.makeInvalid(); m_changedPropertyList.clear(); m_fileUrl.clear(); - - delete m_declarativeView.data(); } void NodeInstanceServer::removeInstances(const RemoveInstancesCommand &command) @@ -262,7 +252,7 @@ void NodeInstanceServer::removeInstances(const RemoveInstancesCommand &command) if (activeStateInstance().isValid()) activeStateInstance().deactivateState(); - foreach(qint32 instanceId, command.instanceIds()) { + foreach (qint32 instanceId, command.instanceIds()) { removeInstanceRelationsip(instanceId); } @@ -276,7 +266,7 @@ void NodeInstanceServer::removeInstances(const RemoveInstancesCommand &command) void NodeInstanceServer::removeProperties(const RemovePropertiesCommand &command) { bool hasDynamicProperties = false; - foreach(const PropertyAbstractContainer &container, command.properties()) { + foreach (const PropertyAbstractContainer &container, command.properties()) { hasDynamicProperties |= container.isDynamic(); resetInstanceProperty(container); } @@ -289,7 +279,7 @@ void NodeInstanceServer::removeProperties(const RemovePropertiesCommand &command void NodeInstanceServer::reparentInstances(const QVector<ReparentContainer> &containerVector) { - foreach(const ReparentContainer &container, containerVector) { + foreach (const ReparentContainer &container, containerVector) { ServerNodeInstance instance = instanceForId(container.instanceId()); if (instance.isValid()) { instance.reparent(instanceForId(container.oldParentInstanceId()), container.oldParentProperty(), instanceForId(container.newParentInstanceId()), container.newParentProperty()); @@ -324,7 +314,7 @@ void NodeInstanceServer::completeComponent(const CompleteComponentCommand &comma { QList<ServerNodeInstance> instanceList; - foreach(qint32 instanceId, command.instances()) { + foreach (qint32 instanceId, command.instances()) { if (hasInstanceForId(instanceId)) { ServerNodeInstance instance = instanceForId(instanceId); instance.doComponentComplete(); @@ -348,7 +338,7 @@ void NodeInstanceServer::changeNodeSource(const ChangeNodeSourceCommand &command startRenderTimer(); } -void NodeInstanceServer::addImports(const QVector<AddImportContainer> &containerVector) +void NodeInstanceServer::setupImports(const QVector<AddImportContainer> &containerVector) { foreach (const AddImportContainer &container, containerVector) { QString importStatement = QString("import "); @@ -375,7 +365,7 @@ void NodeInstanceServer::addImports(const QVector<AddImportContainer> &container m_importComponent = new QDeclarativeComponent(engine(), 0); QString componentString; - foreach(const QString &importStatement, m_importList) + foreach (const QString &importStatement, m_importList) componentString += QString("%1").arg(importStatement); componentString += QString("Item {}\n"); @@ -387,9 +377,61 @@ void NodeInstanceServer::addImports(const QVector<AddImportContainer> &container qDebug() << "QmlDesigner.NodeInstances: import wrong: " << m_importComponent->errorString(); } -void NodeInstanceServer::addImport(const AddImportCommand &command) +void NodeInstanceServer::setupFileUrl(const QUrl &fileUrl) +{ + if (fileUrl.isEmpty()) { + engine()->setBaseUrl(fileUrl); + m_fileUrl = fileUrl; + } +} + +void NodeInstanceServer::setupDummyData(const QUrl &fileUrl) { - addImports(QVector<AddImportContainer>() << command.import()); + if (!fileUrl.isEmpty()) { + QStringList dummyDataDirectoryList = dummyDataDirectories(QFileInfo(fileUrl.toLocalFile()).path()); + foreach (const QString &dummyDataDirectory, dummyDataDirectoryList) + loadDummyDataFiles(dummyDataDirectory); + } +} + +QList<ServerNodeInstance> NodeInstanceServer::setupInstances(const CreateSceneCommand &command) +{ + QList<ServerNodeInstance> instanceList = createInstances(command.instances()); + reparentInstances(command.reparentInstances()); + + foreach (const IdContainer &container, command.ids()) { + if (hasInstanceForId(container.instanceId())) + instanceForId(container.instanceId()).setId(container.id()); + } + + foreach (const PropertyValueContainer &container, command.valueChanges()) { + if (container.isDynamic()) + setInstancePropertyVariant(container); + } + + foreach (const PropertyValueContainer &container, command.valueChanges()) { + if (!container.isDynamic()) + setInstancePropertyVariant(container); + } + + foreach (const PropertyBindingContainer &container, command.bindingChanges()) { + if (container.isDynamic()) + setInstancePropertyBinding(container); + } + + foreach (const PropertyBindingContainer &container, command.bindingChanges()) { + if (!container.isDynamic()) + setInstancePropertyBinding(container); + } + + foreach (const PropertyValueContainer &container, command.auxiliaryChanges()) { + setInstanceAuxiliaryData(container); + } + + foreach (ServerNodeInstance instance, instanceList) + instance.doComponentComplete(); + + return instanceList; } void NodeInstanceServer::changeFileUrl(const ChangeFileUrlCommand &command) @@ -406,7 +448,7 @@ void NodeInstanceServer::changeFileUrl(const ChangeFileUrlCommand &command) void NodeInstanceServer::changePropertyValues(const ChangeValuesCommand &command) { bool hasDynamicProperties = false; - foreach(const PropertyValueContainer &container, command.valueChanges()) { + foreach (const PropertyValueContainer &container, command.valueChanges()) { hasDynamicProperties |= container.isDynamic(); setInstancePropertyVariant(container); } @@ -429,7 +471,7 @@ void NodeInstanceServer::changeAuxiliaryValues(const ChangeAuxiliaryCommand &com void NodeInstanceServer::changePropertyBindings(const ChangeBindingsCommand &command) { bool hasDynamicProperties = false; - foreach(const PropertyBindingContainer &container, command.bindingChanges()) { + foreach (const PropertyBindingContainer &container, command.bindingChanges()) { hasDynamicProperties |= container.isDynamic(); setInstancePropertyBinding(container); } @@ -442,7 +484,7 @@ void NodeInstanceServer::changePropertyBindings(const ChangeBindingsCommand &com void NodeInstanceServer::changeIds(const ChangeIdsCommand &command) { - foreach(const IdContainer &container, command.ids()) { + foreach (const IdContainer &container, command.ids()) { if (hasInstanceForId(container.instanceId())) instanceForId(container.instanceId()).setId(container.id()); } @@ -451,14 +493,6 @@ void NodeInstanceServer::changeIds(const ChangeIdsCommand &command) startRenderTimer(); } -QDeclarativeEngine *NodeInstanceServer::engine() const -{ - if (m_declarativeView) - return m_declarativeView->engine(); - - return 0; -} - QDeclarativeContext *NodeInstanceServer::context() const { if (m_importComponentObject) { @@ -468,14 +502,14 @@ QDeclarativeContext *NodeInstanceServer::context() const } if (engine()) - return engine()->rootContext(); + return rootContext(); return 0; } -QDeclarativeView *NodeInstanceServer::delcarativeView() const +QDeclarativeContext *NodeInstanceServer::rootContext() const { - return m_declarativeView.data(); + return engine()->rootContext(); } const QVector<NodeInstanceServer::InstancePropertyPair> NodeInstanceServer::changedPropertyList() const @@ -525,12 +559,6 @@ QList<QObject*> NodeInstanceServer::allSubObjectsForObject(QObject *object) return subChildren; } -void NodeInstanceServer::refreshBindings() -{ - static int counter = 0; - engine()->rootContext()->setContextProperty(QString("__%1").arg(counter++), 0); // refreshing bindings -} - void NodeInstanceServer::removeAllInstanceRelationships() { // prevent destroyed() signals calling back @@ -601,7 +629,7 @@ void NodeInstanceServer::removeFilePropertyFromFileSystemWatcher(QObject *object void NodeInstanceServer::refreshLocalFileProperty(const QString &path) { if (m_fileSystemWatcherHash.contains(path)) { - foreach(const ObjectPropertyPair &objectPropertyPair, m_fileSystemWatcherHash) { + foreach (const ObjectPropertyPair &objectPropertyPair, m_fileSystemWatcherHash) { QObject *object = objectPropertyPair.first.data(); QString propertyName = objectPropertyPair.second; @@ -666,7 +694,7 @@ void NodeInstanceServer::resetInstanceProperty(const PropertyAbstractContainer & } if (propertyContainer.isDynamic() && propertyContainer.instanceId() == 0 && engine()) - engine()->rootContext()->setContextProperty(name, QVariant()); + rootContext()->setContextProperty(name, QVariant()); } } @@ -730,7 +758,7 @@ void NodeInstanceServer::setInstancePropertyVariant(const PropertyValueContainer } if (valueContainer.isDynamic() && valueContainer.instanceId() == 0 && engine()) - engine()->rootContext()->setContextProperty(name, value); + rootContext()->setContextProperty(name, value); } } @@ -788,7 +816,7 @@ ChildrenChangedCommand NodeInstanceServer::createChildrenChangedCommand(const Se { QVector<qint32> instanceVector; - foreach(const ServerNodeInstance &instance, instanceList) + foreach (const ServerNodeInstance &instance, instanceList) instanceVector.append(instance.instanceId()); return ChildrenChangedCommand(parentInstance.instanceId(), instanceVector); @@ -798,7 +826,7 @@ InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand { QVector<InformationContainer> informationVector; - foreach(const ServerNodeInstance &instance, instanceList) { + foreach (const ServerNodeInstance &instance, instanceList) { informationVector.append(InformationContainer(instance.instanceId(), Position, instance.position())); informationVector.append(InformationContainer(instance.instanceId(), Transform, instance.transform())); informationVector.append(InformationContainer(instance.instanceId(), SceneTransform, instance.sceneTransform())); @@ -878,8 +906,8 @@ ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList< { QVector<PropertyValueContainer> valueVector; - foreach(const ServerNodeInstance &instance, instanceList) { - foreach(const QString &propertyName, instance.propertyNames()) { + foreach (const ServerNodeInstance &instance, instanceList) { + foreach (const QString &propertyName, instance.propertyNames()) { QVariant propertyValue = instance.property(propertyName); if (supportedVariantType(propertyValue.type())) valueVector.append(PropertyValueContainer(instance.instanceId(), propertyName, propertyValue, QString())); @@ -908,7 +936,7 @@ ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QVecto const QString propertyName = property.second; const ServerNodeInstance instance = property.first; - if( instance.isValid()) { + if ( instance.isValid()) { QVariant propertyValue = instance.property(propertyName); if (supportedVariantType(propertyValue.type())) valueVector.append(PropertyValueContainer(instance.instanceId(), propertyName, propertyValue, QString())); @@ -923,6 +951,11 @@ QStringList NodeInstanceServer::imports() const return m_importList; } +void NodeInstanceServer::addImportString(const QString &import) +{ + m_importList.append(import); +} + QObject *NodeInstanceServer::dummyContextObject() const { return m_dummyContextObject.data(); @@ -967,89 +1000,22 @@ PixmapChangedCommand NodeInstanceServer::createPixmapChangedCommand(const QList< return PixmapChangedCommand(imageVector); } -bool NodeInstanceServer::nonInstanceChildIsDirty(QGraphicsObject *graphicsObject) const -{ - QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(graphicsObject); - if (d->dirtyChildren) { - foreach(QGraphicsItem *child, graphicsObject->childItems()) { - QGraphicsObject *childGraphicsObject = child->toGraphicsObject(); - if (hasInstanceForObject(childGraphicsObject)) - continue; - - QGraphicsItemPrivate *childPrivate = QGraphicsItemPrivate::get(child); - if (childPrivate->dirty || nonInstanceChildIsDirty(childGraphicsObject)) - return true; - } - } - - return false; -} - -void NodeInstanceServer::resetAllItems() -{ -// m_declarativeView->scene()->update(); -// m_declarativeView->viewport()->repaint(); - static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(m_declarativeView->scene()))->processDirtyItemsEmitted = true; - - foreach (QGraphicsItem *item, m_declarativeView->items()) - static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(m_declarativeView->scene()))->resetDirtyItem(item); -} - -void NodeInstanceServer::initializeDeclarativeView() -{ - Q_ASSERT(!m_declarativeView.data()); - - m_declarativeView = new QDeclarativeView; -#ifndef Q_WS_MAC - m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); -#endif - m_declarativeView->setViewportUpdateMode(QGraphicsView::NoViewportUpdate); - m_declarativeView->show(); -#ifdef Q_WS_MAC - m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); -#endif - QUnifiedTimer::instance()->setSlowdownFactor(0.00001); - QUnifiedTimer::instance()->setSlowModeEnabled(true); -} - -QImage NodeInstanceServer::renderPreviewImage() -{ - QSize size = rootNodeInstance().boundingRect().size().toSize(); - size.scale(100, 100, Qt::KeepAspectRatio); - - QImage image(size, QImage::Format_ARGB32); - image.fill(0xFFFFFFFF); - - if (m_declarativeView) { - QPainter painter(&image); - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setRenderHint(QPainter::TextAntialiasing, true); - painter.setRenderHint(QPainter::SmoothPixmapTransform, true); - painter.setRenderHint(QPainter::HighQualityAntialiasing, true); - painter.setRenderHint(QPainter::NonCosmeticDefaultPen, true); - - m_declarativeView->scene()->render(&painter, image.rect(), rootNodeInstance().boundingRect().toRect(), Qt::IgnoreAspectRatio); - } - - return image; -} - void NodeInstanceServer::loadDummyDataFile(const QFileInfo& qmlFileInfo) { QDeclarativeComponent component(engine(), qmlFileInfo.filePath()); QObject *dummyData = component.create(); - if(component.isError()) { + if (component.isError()) { QList<QDeclarativeError> errors = component.errors(); foreach (const QDeclarativeError &error, errors) { qWarning() << error; } } - QVariant oldDummyDataObject = m_declarativeView->rootContext()->contextProperty(qmlFileInfo.completeBaseName()); + QVariant oldDummyDataObject = rootContext()->contextProperty(qmlFileInfo.completeBaseName()); if (dummyData) { qWarning() << "Loaded dummy data:" << qmlFileInfo.filePath(); - m_declarativeView->rootContext()->setContextProperty(qmlFileInfo.completeBaseName(), dummyData); + rootContext()->setContextProperty(qmlFileInfo.completeBaseName(), dummyData); dummyData->setParent(this); m_dummyObjectList.append(DummyPair(qmlFileInfo.completeBaseName(), dummyData)); } @@ -1073,7 +1039,7 @@ void NodeInstanceServer::loadDummyContextObjectFile(const QFileInfo& qmlFileInfo QDeclarativeComponent component(engine(), qmlFileInfo.filePath()); m_dummyContextObject = component.create(); - if(component.isError()) { + if (component.isError()) { QList<QDeclarativeError> errors = component.errors(); foreach (const QDeclarativeError &error, errors) { qWarning() << error; @@ -1105,7 +1071,7 @@ void NodeInstanceServer::loadDummyDataFiles(const QString& directory) } } -QStringList dummyDataDirectories(const QString& directoryPath) +QStringList NodeInstanceServer::dummyDataDirectories(const QString& directoryPath) { QStringList dummyDataDirectoryList; QDir directory(directoryPath); @@ -1120,64 +1086,6 @@ QStringList dummyDataDirectories(const QString& directoryPath) } } -QList<ServerNodeInstance> NodeInstanceServer::setupScene(const CreateSceneCommand &command) -{ - if (!command.fileUrl().isEmpty()) { - engine()->setBaseUrl(command.fileUrl()); - m_fileUrl = command.fileUrl(); - } - - addImports(command.imports()); - - if (!command.fileUrl().isEmpty()) { - QStringList dummyDataDirectoryList = dummyDataDirectories(QFileInfo(command.fileUrl().toLocalFile()).path()); - foreach(const QString &dummyDataDirectory, dummyDataDirectoryList) - loadDummyDataFiles(dummyDataDirectory); - } - - static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(m_declarativeView->scene()))->processDirtyItemsEmitted = true; - - QList<ServerNodeInstance> instanceList = createInstances(command.instances()); - reparentInstances(command.reparentInstances()); - - foreach (const IdContainer &container, command.ids()) { - if (hasInstanceForId(container.instanceId())) - instanceForId(container.instanceId()).setId(container.id()); - } - - foreach (const PropertyValueContainer &container, command.valueChanges()) { - if (container.isDynamic()) - setInstancePropertyVariant(container); - } - - foreach (const PropertyValueContainer &container, command.valueChanges()) { - if (!container.isDynamic()) - setInstancePropertyVariant(container); - } - - foreach (const PropertyBindingContainer &container, command.bindingChanges()) { - if (container.isDynamic()) - setInstancePropertyBinding(container); - } - - foreach (const PropertyBindingContainer &container, command.bindingChanges()) { - if (!container.isDynamic()) - setInstancePropertyBinding(container); - } - - foreach (const PropertyValueContainer &container, command.auxiliaryChanges()) { - setInstanceAuxiliaryData(container); - } - - foreach (ServerNodeInstance instance, instanceList) - instance.doComponentComplete(); - - m_declarativeView->scene()->setSceneRect(rootNodeInstance().boundingRect()); - - return instanceList; -} - - } diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h b/src/tools/qmlpuppet/instances/nodeinstanceserver.h similarity index 90% rename from src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h rename to src/tools/qmlpuppet/instances/nodeinstanceserver.h index 24f275c800d..cb49bd50f23 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h +++ b/src/tools/qmlpuppet/instances/nodeinstanceserver.h @@ -44,6 +44,7 @@ QT_BEGIN_NAMESPACE class QFileSystemWatcher; class QDeclarativeView; +class QSGView; class QDeclarativeEngine; class QGraphicsObject; class QFileInfo; @@ -89,7 +90,6 @@ public: void removeProperties(const RemovePropertiesCommand &command); void reparentInstances(const ReparentInstancesCommand &command); void changeState(const ChangeStateCommand &command); - void addImport(const AddImportCommand &command); void completeComponent(const CompleteComponentCommand &command); void changeNodeSource(const ChangeNodeSourceCommand &command); @@ -99,7 +99,7 @@ public: ServerNodeInstance instanceForObject(QObject *object) const; bool hasInstanceForObject(QObject *object) const; - QDeclarativeEngine *engine() const; + virtual QDeclarativeEngine *engine() const = 0; QDeclarativeContext *context() const; void removeAllInstanceRelationships(); @@ -131,7 +131,7 @@ public slots: protected: QList<ServerNodeInstance> createInstances(const QVector<InstanceContainer> &container); void reparentInstances(const QVector<ReparentContainer> &containerVector); - void addImports(const QVector<AddImportContainer> &container); + void addImportString(const QString &import); Internal::ChildrenChangeEventFilter *childrenChangeEventFilter(); void resetInstanceProperty(const PropertyAbstractContainer &propertyContainer); @@ -147,9 +147,8 @@ protected: void timerEvent(QTimerEvent *); - bool nonInstanceChildIsDirty(QGraphicsObject *graphicsObject) const; virtual void collectItemChangesAndSendChangeCommands() = 0; - void resetAllItems(); + ValuesChangedCommand createValuesChangedCommand(const QList<ServerNodeInstance> &instanceList) const; ValuesChangedCommand createValuesChangedCommand(const QVector<InstancePropertyPair> &propertyList) const; @@ -167,27 +166,38 @@ protected: int renderTimerInterval() const; void setSlowRenderTimerInterval(int timerInterval); - void initializeDeclarativeView(); - QList<ServerNodeInstance> setupScene(const CreateSceneCommand &command); + virtual void initializeView(const QVector<AddImportContainer> &importVector) = 0; + virtual QList<ServerNodeInstance> setupScene(const CreateSceneCommand &command) = 0; void loadDummyDataFiles(const QString& directory); void loadDummyDataFile(const QFileInfo& fileInfo); void loadDummyContextObjectFile(const QFileInfo& fileInfo); - QImage renderPreviewImage(); + static QStringList dummyDataDirectories(const QString& directoryPath); void setTimerId(int timerId); int timerId() const; - QDeclarativeView *delcarativeView() const; + virtual QDeclarativeView *declarativeView() const = 0; + virtual QSGView *sgView() const = 0; + QDeclarativeContext *rootContext() const; + + const QVector<InstancePropertyPair> changedPropertyList() const; void clearChangedPropertyList(); - void refreshBindings(); + virtual void refreshBindings() = 0; void setupDummysForContext(QDeclarativeContext *context); + void setupFileUrl(const QUrl &fileUrl); + void setupImports(const QVector<AddImportContainer> &container); + void setupDummyData(const QUrl &fileUrl); + QList<ServerNodeInstance> setupInstances(const CreateSceneCommand &command); + QList<QDeclarativeContext*> allSubContextsForObject(QObject *object); static QList<QObject*> allSubObjectsForObject(QObject *object); + virtual void resizeCanvasSizeToRootItemSize() = 0; + private: ServerNodeInstance m_rootNodeInstance; ServerNodeInstance m_activeStateInstance; @@ -197,7 +207,6 @@ private: QList<QPair<QString, QWeakPointer<QObject> > > m_dummyObjectList; QWeakPointer<QFileSystemWatcher> m_fileSystemWatcher; QWeakPointer<QFileSystemWatcher> m_dummdataFileSystemWatcher; - QWeakPointer<QDeclarativeView> m_declarativeView; QWeakPointer<Internal::ChildrenChangeEventFilter> m_childrenChangeEventFilter; QUrl m_fileUrl; NodeInstanceClientInterface *m_nodeInstanceClient; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstancesignalspy.cpp b/src/tools/qmlpuppet/instances/nodeinstancesignalspy.cpp similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/nodeinstancesignalspy.cpp rename to src/tools/qmlpuppet/instances/nodeinstancesignalspy.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstancesignalspy.h b/src/tools/qmlpuppet/instances/nodeinstancesignalspy.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/nodeinstancesignalspy.h rename to src/tools/qmlpuppet/instances/nodeinstancesignalspy.h diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp b/src/tools/qmlpuppet/instances/objectnodeinstance.cpp similarity index 98% rename from src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp rename to src/tools/qmlpuppet/instances/objectnodeinstance.cpp index 49f0830e584..d4d6204c7b8 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/objectnodeinstance.cpp @@ -32,17 +32,7 @@ #include "objectnodeinstance.h" -#include "qmlgraphicsitemnodeinstance.h" -#include "graphicsobjectnodeinstance.h" -#include <invalidreparentingexception.h> -#include <invalidnodeinstanceexception.h> -#include <notimplementedexception.h> -#include <noanchoringpossibleexception.h> - -#include <variantproperty.h> -#include <nodelistproperty.h> -#include <metainfo.h> #include <QEvent> #include <QGraphicsScene> @@ -158,6 +148,11 @@ void ObjectNodeInstance::initializePropertyWatcher(const ObjectNodeInstance::Poi m_signalSpy.setObjectNodeInstance(objectNodeInstance); } +void ObjectNodeInstance::initialize(const ObjectNodeInstance::Pointer &objectNodeInstance) +{ + initializePropertyWatcher(objectNodeInstance); +} + void ObjectNodeInstance::setId(const QString &id) { if (!m_id.isEmpty() && context()) { @@ -197,6 +192,11 @@ bool ObjectNodeInstance::isPositioner() const return false; } +bool ObjectNodeInstance::isSGItem() const +{ + return false; +} + bool ObjectNodeInstance::equalGraphicsItem(QGraphicsItem * /*item*/) const { return false; @@ -620,7 +620,7 @@ QList<ServerNodeInstance> ObjectNodeInstance::stateInstances() const return QList<ServerNodeInstance>(); } -void ObjectNodeInstance::setNodeSource(const QString &source) +void ObjectNodeInstance::setNodeSource(const QString & /*source*/) { } diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h b/src/tools/qmlpuppet/instances/objectnodeinstance.h similarity index 98% rename from src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h rename to src/tools/qmlpuppet/instances/objectnodeinstance.h index 69d2f1a26fc..4cc3fd155f8 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h +++ b/src/tools/qmlpuppet/instances/objectnodeinstance.h @@ -88,6 +88,7 @@ public: NodeInstanceServer *nodeInstanceServer() const; void setNodeInstanceServer(NodeInstanceServer *server); virtual void initializePropertyWatcher(const Pointer &objectNodeInstance); + virtual void initialize(const Pointer &objectNodeInstance); virtual void paint(QPainter *painter); virtual QImage renderImage() const; @@ -104,7 +105,7 @@ public: virtual bool isGraphicsObject() const; virtual bool isTransition() const; virtual bool isPositioner() const; - + virtual bool isSGItem() const; virtual bool equalGraphicsItem(QGraphicsItem *item) const; diff --git a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp b/src/tools/qmlpuppet/instances/qmlpropertychangesnodeinstance.cpp similarity index 99% rename from src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp rename to src/tools/qmlpuppet/instances/qmlpropertychangesnodeinstance.cpp index cacf77809b6..4f706e4c7c6 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/qmlpropertychangesnodeinstance.cpp @@ -36,10 +36,8 @@ #include <QDeclarativeContext> #include <QDeclarativeExpression> #include <private/qdeclarativebinding_p.h> -#include <metainfo.h> #include <QMutableListIterator> -#include "invalidnodeinstanceexception.h" #include <private/qdeclarativestate_p_p.h> #include <private/qdeclarativepropertychanges_p.h> @@ -185,8 +183,7 @@ QmlPropertyChangesNodeInstance::Pointer QmlPropertyChangesNodeInstance::create(Q { QDeclarativePropertyChanges *propertyChange = qobject_cast<QDeclarativePropertyChanges*>(object); - if (propertyChange == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + Q_ASSERT(propertyChange); Pointer instance(new QmlPropertyChangesNodeInstance(propertyChange)); diff --git a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.h b/src/tools/qmlpuppet/instances/qmlpropertychangesnodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.h rename to src/tools/qmlpuppet/instances/qmlpropertychangesnodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp b/src/tools/qmlpuppet/instances/qmlstatenodeinstance.cpp similarity index 96% rename from src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp rename to src/tools/qmlpuppet/instances/qmlstatenodeinstance.cpp index 63ce0d5c974..7ee19733c6a 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/qmlstatenodeinstance.cpp @@ -31,15 +31,12 @@ **************************************************************************/ #include "qmlstatenodeinstance.h" -#include "nodeabstractproperty.h" #include <private/qdeclarativestategroup_p.h> #include "qmlpropertychangesnodeinstance.h" #include <private/qdeclarativestateoperations_p.h> -#include <invalidnodeinstanceexception.h> - namespace QmlDesigner { namespace Internal { @@ -59,8 +56,7 @@ QmlStateNodeInstance::Pointer { QDeclarativeState *stateObject = qobject_cast<QDeclarativeState*>(object); - if (stateObject == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + Q_ASSERT(stateObject); Pointer instance(new QmlStateNodeInstance(stateObject)); diff --git a/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.h b/src/tools/qmlpuppet/instances/qmlstatenodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.h rename to src/tools/qmlpuppet/instances/qmlstatenodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/qmltransitionnodeinstance.cpp b/src/tools/qmlpuppet/instances/qmltransitionnodeinstance.cpp similarity index 93% rename from src/plugins/qmldesigner/designercore/instances/qmltransitionnodeinstance.cpp rename to src/tools/qmlpuppet/instances/qmltransitionnodeinstance.cpp index e84866bee6a..0694d0d3993 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmltransitionnodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/qmltransitionnodeinstance.cpp @@ -32,8 +32,6 @@ #include "qmltransitionnodeinstance.h" #include <private/qdeclarativetransition_p.h> -#include <nodemetainfo.h> -#include "invalidnodeinstanceexception.h" namespace QmlDesigner { namespace Internal { @@ -46,8 +44,8 @@ QmlTransitionNodeInstance::QmlTransitionNodeInstance(QDeclarativeTransition *tra QmlTransitionNodeInstance::Pointer QmlTransitionNodeInstance::create(QObject *object) { QDeclarativeTransition *transition = qobject_cast<QDeclarativeTransition*>(object); - if (transition == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + + Q_ASSERT(transition); Pointer instance(new QmlTransitionNodeInstance(transition)); diff --git a/src/plugins/qmldesigner/designercore/instances/qmltransitionnodeinstance.h b/src/tools/qmlpuppet/instances/qmltransitionnodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/qmltransitionnodeinstance.h rename to src/tools/qmlpuppet/instances/qmltransitionnodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/servernodeinstance.cpp b/src/tools/qmlpuppet/instances/servernodeinstance.cpp similarity index 98% rename from src/plugins/qmldesigner/designercore/instances/servernodeinstance.cpp rename to src/tools/qmlpuppet/instances/servernodeinstance.cpp index 1436a357d67..63434ad2ffb 100644 --- a/src/plugins/qmldesigner/designercore/instances/servernodeinstance.cpp +++ b/src/tools/qmlpuppet/instances/servernodeinstance.cpp @@ -32,20 +32,23 @@ #include "servernodeinstance.h" #include "objectnodeinstance.h" -#include "qmlgraphicsitemnodeinstance.h" #include "dummynodeinstance.h" #include "componentnodeinstance.h" #include "qmltransitionnodeinstance.h" #include "qmlpropertychangesnodeinstance.h" -#include "positionernodeinstance.h" #include "behaviornodeinstance.h" #include "qmlstatenodeinstance.h" +#if QT_VERSION >= 0x050000 +#include "sgitemnodeinstance.h" +#else +#include "qmlgraphicsitemnodeinstance.h" +#include "positionernodeinstance.h" +#endif + #include "nodeinstanceserver.h" #include "instancecontainer.h" -#include <invalidnodeinstanceexception.h> - #include <QHash> #include <QSet> @@ -171,10 +174,15 @@ Internal::ObjectNodeInstance::Pointer ServerNodeInstance::createInstance(QObject if (objectToBeWrapped == 0) instance = Internal::DummyNodeInstance::create(); +#if QT_VERSION >= 0x050000 + else if (isSubclassOf(objectToBeWrapped, "QSGItem")) + instance = Internal::SGItemNodeInstance::create(objectToBeWrapped); +#else else if (isSubclassOf(objectToBeWrapped, "QDeclarativeBasePositioner")) instance = Internal::PositionerNodeInstance::create(objectToBeWrapped); else if (isSubclassOf(objectToBeWrapped, "QDeclarativeItem")) instance = Internal::QmlGraphicsItemNodeInstance::create(objectToBeWrapped); +#endif else if (isSubclassOf(objectToBeWrapped, "QDeclarativeComponent")) instance = Internal::ComponentNodeInstance::create(objectToBeWrapped); else if (isSubclassOf(objectToBeWrapped, "QDeclarativePropertyChanges")) @@ -216,7 +224,7 @@ ServerNodeInstance ServerNodeInstance::create(NodeInstanceServer *nodeInstanceSe instance.internalInstance()->setInstanceId(instanceContainer.instanceId()); - instance.internalInstance()->initializePropertyWatcher(instance.m_nodeInstance); + instance.internalInstance()->initialize(instance.m_nodeInstance); //QObject::connect(instance.internalObject(), SIGNAL(destroyed(QObject*)), nodeInstanceView, SLOT(removeIdFromContext(QObject*))); @@ -521,12 +529,6 @@ void ServerNodeInstance::paintUpdate() m_nodeInstance->paintUpdate(); } - -Internal::QmlGraphicsItemNodeInstance::Pointer ServerNodeInstance::qmlGraphicsItemNodeInstance() const -{ - return m_nodeInstance.dynamicCast<Internal::QmlGraphicsItemNodeInstance>(); -} - QObject *ServerNodeInstance::internalObject() const { if (m_nodeInstance.isNull()) diff --git a/src/plugins/qmldesigner/designercore/instances/servernodeinstance.h b/src/tools/qmlpuppet/instances/servernodeinstance.h similarity index 87% rename from src/plugins/qmldesigner/designercore/instances/servernodeinstance.h rename to src/tools/qmlpuppet/instances/servernodeinstance.h index eb0f04d0b59..4e722ee7fe5 100644 --- a/src/plugins/qmldesigner/designercore/instances/servernodeinstance.h +++ b/src/tools/qmlpuppet/instances/servernodeinstance.h @@ -33,7 +33,6 @@ #ifndef SERVERNODEINSTANCE_H #define SERVERNODEINSTANCE_H -#include "corelib_global.h" #include <QSharedPointer> #include <QHash> #include <QRectF> @@ -52,7 +51,10 @@ QT_END_NAMESPACE namespace QmlDesigner { class NodeInstanceServer; -class PreviewNodeInstanceServer; +class Qt4NodeInstanceServer; +class Qt4PreviewNodeInstanceServer; +class Qt5NodeInstanceServer; +class Qt5PreviewNodeInstanceServer; class InstanceContainer; namespace Internal { @@ -61,18 +63,23 @@ namespace Internal { class QmlPropertyChangesNodeInstance; class GraphicsObjectNodeInstance; class QmlStateNodeInstance; + class SGItemNodeInstance; } -class CORESHARED_EXPORT ServerNodeInstance +class ServerNodeInstance { - friend CORESHARED_EXPORT class NodeInstanceServer; - friend CORESHARED_EXPORT class PreviewNodeInstanceServer; + friend class NodeInstanceServer; + friend class Qt4NodeInstanceServer; + friend class Qt4PreviewNodeInstanceServer; + friend class Qt5NodeInstanceServer; + friend class Qt5PreviewNodeInstanceServer; friend class QHash<qint32, ServerNodeInstance>; - friend CORESHARED_EXPORT uint qHash(const ServerNodeInstance &instance); - friend CORESHARED_EXPORT bool operator==(const ServerNodeInstance &first, const ServerNodeInstance &second); - friend CORESHARED_EXPORT QDebug operator<<(QDebug debug, const ServerNodeInstance &instance); - friend CORESHARED_EXPORT class NodeMetaInfo; + friend uint qHash(const ServerNodeInstance &instance); + friend bool operator==(const ServerNodeInstance &first, const ServerNodeInstance &second); + friend QDebug operator<<(QDebug debug, const ServerNodeInstance &instance); + friend class NodeMetaInfo; friend class QmlDesigner::Internal::QmlGraphicsItemNodeInstance; + friend class QmlDesigner::Internal::SGItemNodeInstance; friend class QmlDesigner::Internal::GraphicsObjectNodeInstance; friend class QmlDesigner::Internal::ObjectNodeInstance; friend class QmlDesigner::Internal::QmlPropertyChangesNodeInstance; @@ -182,7 +189,6 @@ private: // functions void setId(const QString &id); static QSharedPointer<Internal::ObjectNodeInstance> createInstance(QObject *objectToBeWrapped); - QSharedPointer<Internal::QmlGraphicsItemNodeInstance> qmlGraphicsItemNodeInstance() const; void paintUpdate(); @@ -197,9 +203,9 @@ private: // variables QSharedPointer<Internal::ObjectNodeInstance> m_nodeInstance; }; -CORESHARED_EXPORT uint qHash(const ServerNodeInstance &instance); -CORESHARED_EXPORT bool operator==(const ServerNodeInstance &first, const ServerNodeInstance &second); -CORESHARED_EXPORT QDebug operator<<(QDebug debug, const ServerNodeInstance &instance); +uint qHash(const ServerNodeInstance &instance); +bool operator==(const ServerNodeInstance &first, const ServerNodeInstance &second); +QDebug operator<<(QDebug debug, const ServerNodeInstance &instance); } Q_DECLARE_METATYPE(QmlDesigner::ServerNodeInstance) diff --git a/src/plugins/qmldesigner/designercore/include/commondefines.h b/src/tools/qmlpuppet/interfaces/commondefines.h similarity index 100% rename from src/plugins/qmldesigner/designercore/include/commondefines.h rename to src/tools/qmlpuppet/interfaces/commondefines.h diff --git a/src/tools/qmlpuppet/interfaces/interfaces.pri b/src/tools/qmlpuppet/interfaces/interfaces.pri new file mode 100644 index 00000000000..4e642000295 --- /dev/null +++ b/src/tools/qmlpuppet/interfaces/interfaces.pri @@ -0,0 +1,7 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/nodeinstanceclientinterface.h +HEADERS += $$PWD/nodeinstanceserverinterface.h +HEADERS += $$PWD/commondefines.h + +SOURCES += $$PWD/nodeinstanceserverinterface.cpp diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceclientinterface.h b/src/tools/qmlpuppet/interfaces/nodeinstanceclientinterface.h similarity index 100% rename from src/plugins/qmldesigner/designercore/include/nodeinstanceclientinterface.h rename to src/tools/qmlpuppet/interfaces/nodeinstanceclientinterface.h diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp b/src/tools/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp similarity index 97% rename from src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp rename to src/tools/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp index 166860ee32f..ce2bb010427 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp +++ b/src/tools/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp @@ -56,7 +56,6 @@ #include "informationchangedcommand.h" #include "pixmapchangedcommand.h" #include "valueschangedcommand.h" -#include "addimportcommand.h" #include "childrenchangedcommand.h" #include "imagecontainer.h" #include "statepreviewimagechangedcommand.h" @@ -144,9 +143,6 @@ void NodeInstanceServerInterface::registerCommands() qRegisterMetaType<IdContainer>("IdContainer"); qRegisterMetaTypeStreamOperators<IdContainer>("IdContainer"); - qRegisterMetaType<AddImportCommand>("AddImportCommand"); - qRegisterMetaTypeStreamOperators<AddImportCommand>("AddImportCommand"); - qRegisterMetaType<ChildrenChangedCommand>("ChildrenChangedCommand"); qRegisterMetaTypeStreamOperators<ChildrenChangedCommand>("ChildrenChangedCommand"); diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceserverinterface.h b/src/tools/qmlpuppet/interfaces/nodeinstanceserverinterface.h similarity index 97% rename from src/plugins/qmldesigner/designercore/include/nodeinstanceserverinterface.h rename to src/tools/qmlpuppet/interfaces/nodeinstanceserverinterface.h index 677d4189a6f..98d1fe38656 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceserverinterface.h +++ b/src/tools/qmlpuppet/interfaces/nodeinstanceserverinterface.h @@ -53,7 +53,6 @@ class ChangeIdsCommand; class RemoveInstancesCommand; class RemovePropertiesCommand; class ChangeStateCommand; -class AddImportCommand; class CompleteComponentCommand; class ChangeNodeSourceCommand; @@ -80,7 +79,6 @@ public: virtual void reparentInstances(const ReparentInstancesCommand &command) = 0; virtual void changeIds(const ChangeIdsCommand &command) = 0; virtual void changeState(const ChangeStateCommand &command) = 0; - virtual void addImport(const AddImportCommand &command) = 0; virtual void completeComponent(const CompleteComponentCommand &command) = 0; virtual void changeNodeSource(const ChangeNodeSourceCommand &command) = 0; diff --git a/src/tools/qmlpuppet/qml2puppet/Info.plist.in b/src/tools/qmlpuppet/qml2puppet/Info.plist.in new file mode 100644 index 00000000000..b0406b78792 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/Info.plist.in @@ -0,0 +1,29 @@ +<?xml version=\"1.0\" encoding=\"UTF-8\"?> +<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"> +<plist version=\"1.0\"> +<dict> + <key>NSHumanReadableCopyright</key> + <string>(C) 2008-2011 Nokia Corporation +Commercial Usage + +Licensees holding valid Qt Commercial licenses may use this file in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Nokia. + +GNU Lesser General Public License Usage + +Alternatively, this plugin 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.</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleSignature</key> + <string>@TYPEINFO@</string> + <key>CFBundleExecutable</key> + <string>@EXECUTABLE@</string> + <key>CFBundleIdentifier</key> + <string>com.nokia.qtcreator.qml2puppet</string> + <key>CFBundleVersion</key> + <string>$$QTCREATOR_VERSION</string> + <key>CFBundleShortVersionString</key> + <string>$$QTCREATOR_VERSION</string> + <key>LSUIElement</key> + <string>1</string> +</dict> +</plist> diff --git a/src/tools/qmlpuppet/qml2puppet/instances/instances.pri b/src/tools/qmlpuppet/qml2puppet/instances/instances.pri new file mode 100644 index 00000000000..1eeb3d40b59 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/instances.pri @@ -0,0 +1,15 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/qt5nodeinstanceserver.h \ + instances/qt5informationnodeinstanceserver.h \ + instances/qt5rendernodeinstanceserver.h \ + instances/qt5previewnodeinstanceserver.h +HEADERS += $$PWD/qt5nodeinstanceclientproxy.h +HEADERS += $$PWD/sgitemnodeinstance.h + +SOURCES += $$PWD/qt5nodeinstanceserver.cpp \ + instances/qt5informationnodeinstanceserver.cpp \ + instances/qt5rendernodeinstanceserver.cpp \ + instances/qt5previewnodeinstanceserver.cpp +SOURCES += $$PWD/qt5nodeinstanceclientproxy.cpp +SOURCES += $$PWD/sgitemnodeinstance.cpp diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp new file mode 100644 index 00000000000..057c8212386 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -0,0 +1,185 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt5informationnodeinstanceserver.h" + +#include "servernodeinstance.h" +#include "childrenchangeeventfilter.h" +#include "propertyabstractcontainer.h" +#include "propertybindingcontainer.h" +#include "propertyvaluecontainer.h" +#include "instancecontainer.h" +#include "createinstancescommand.h" +#include "changefileurlcommand.h" +#include "clearscenecommand.h" +#include "reparentinstancescommand.h" +#include "changevaluescommand.h" +#include "changebindingscommand.h" +#include "changeidscommand.h" +#include "removeinstancescommand.h" +#include "nodeinstanceclientinterface.h" +#include "removepropertiescommand.h" +#include "valueschangedcommand.h" +#include "informationchangedcommand.h" +#include "pixmapchangedcommand.h" +#include "commondefines.h" +#include "childrenchangeeventfilter.h" +#include "changestatecommand.h" +#include "childrenchangedcommand.h" +#include "completecomponentcommand.h" +#include "componentcompletedcommand.h" +#include "createscenecommand.h" + +#include "dummycontextobject.h" + +namespace QmlDesigner { + +Qt5InformationNodeInstanceServer::Qt5InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + Qt5NodeInstanceServer(nodeInstanceClient) +{ +} + +void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() +{ +} + +void Qt5InformationNodeInstanceServer::reparentInstances(const ReparentInstancesCommand &command) +{ + foreach (const ReparentContainer &container, command.reparentInstances()) { + ServerNodeInstance instance = instanceForId(container.instanceId()); + if (instance.isValid()) { + m_parentChangedSet.insert(instance); + } + } + + NodeInstanceServer::reparentInstances(command); +} + +void Qt5InformationNodeInstanceServer::clearScene(const ClearSceneCommand &command) +{ + NodeInstanceServer::clearScene(command); + + m_parentChangedSet.clear(); + m_completedComponentList.clear(); +} + +void Qt5InformationNodeInstanceServer::createScene(const CreateSceneCommand &command) +{ + NodeInstanceServer::createScene(command); + + QList<ServerNodeInstance> instanceList; + foreach (const InstanceContainer &container, command.instances()) { + ServerNodeInstance instance = instanceForId(container.instanceId()); + if (instance.isValid()) { + instanceList.append(instance); + } + } + + nodeInstanceClient()->informationChanged(createAllInformationChangedCommand(instanceList, true)); + nodeInstanceClient()->valuesChanged(createValuesChangedCommand(instanceList)); + sendChildrenChangedCommand(instanceList); + nodeInstanceClient()->componentCompleted(createComponentCompletedCommand(instanceList)); + +} + +void Qt5InformationNodeInstanceServer::sendChildrenChangedCommand(const QList<ServerNodeInstance> childList) +{ + QSet<ServerNodeInstance> parentSet; + QList<ServerNodeInstance> noParentList; + + foreach (const ServerNodeInstance &child, childList) { + if (!child.hasParent()) + noParentList.append(child); + else + parentSet.insert(child.parent()); + } + + + foreach (const ServerNodeInstance &parent, parentSet) + nodeInstanceClient()->childrenChanged(createChildrenChangedCommand(parent, parent.childItems())); + + if (!noParentList.isEmpty()) + nodeInstanceClient()->childrenChanged(createChildrenChangedCommand(ServerNodeInstance(), noParentList)); + +} + +void Qt5InformationNodeInstanceServer::completeComponent(const CompleteComponentCommand &command) +{ + NodeInstanceServer::completeComponent(command); + + QList<ServerNodeInstance> instanceList; + foreach (qint32 instanceId, command.instances()) { + ServerNodeInstance instance = instanceForId(instanceId); + if (instance.isValid()) { + instanceList.append(instance); + } + } + + m_completedComponentList.append(instanceList); + + nodeInstanceClient()->valuesChanged(createValuesChangedCommand(instanceList)); + nodeInstanceClient()->informationChanged(createAllInformationChangedCommand(instanceList, true)); +} + +} // namespace QmlDesigner diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h b/src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h new file mode 100644 index 00000000000..c0c078fc475 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h @@ -0,0 +1,94 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QMLDESIGNER_QT5INFORMATIONNODEINSTANCESERVER_H +#define QMLDESIGNER_QT5INFORMATIONNODEINSTANCESERVER_H + +#include "qt5nodeinstanceserver.h" + +namespace QmlDesigner { + +class Qt5InformationNodeInstanceServer : public Qt5NodeInstanceServer +{ + Q_OBJECT +public: + explicit Qt5InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + + void reparentInstances(const ReparentInstancesCommand &command); + void clearScene(const ClearSceneCommand &command); + void createScene(const CreateSceneCommand &command); + void completeComponent(const CompleteComponentCommand &command); + +protected: + void collectItemChangesAndSendChangeCommands(); + void sendChildrenChangedCommand(const QList<ServerNodeInstance> childList); + +private: + QSet<ServerNodeInstance> m_parentChangedSet; + QList<ServerNodeInstance> m_completedComponentList; +}; + +} // namespace QmlDesigner + +#endif // QMLDESIGNER_QT5INFORMATIONNODEINSTANCESERVER_H diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp new file mode 100644 index 00000000000..b66784a9a53 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp @@ -0,0 +1,89 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt5nodeinstanceclientproxy.h" + +#include <QCoreApplication> + +#include "qt5informationnodeinstanceserver.h" +#include "qt5previewnodeinstanceserver.h" +#include "qt5rendernodeinstanceserver.h" + +namespace QmlDesigner { + +Qt5NodeInstanceClientProxy::Qt5NodeInstanceClientProxy(QObject *parent) : + NodeInstanceClientProxy(parent) +{ + if (QCoreApplication::arguments().at(2) == QLatin1String("previewmode")) { + setNodeInstanceServer(new Qt5PreviewNodeInstanceServer(this)); + } else if (QCoreApplication::arguments().at(2) == QLatin1String("editormode")) { + setNodeInstanceServer(new Qt5InformationNodeInstanceServer(this)); + } else if (QCoreApplication::arguments().at(2) == QLatin1String("rendermode")) { + setNodeInstanceServer(new Qt5RenderNodeInstanceServer(this)); + } + + initializeSocket(); +} + +} // namespace QmlDesigner diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.h b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.h new file mode 100644 index 00000000000..2739bddbc92 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.h @@ -0,0 +1,81 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QMLDESIGNER_QT5NODEINSTANCECLIENTPROXY_H +#define QMLDESIGNER_QT5NODEINSTANCECLIENTPROXY_H + +#include "nodeinstanceclientproxy.h" + +namespace QmlDesigner { + +class Qt5NodeInstanceClientProxy : public NodeInstanceClientProxy +{ + Q_OBJECT +public: + explicit Qt5NodeInstanceClientProxy(QObject *parent = 0); +}; + +} // namespace QmlDesigner + +#endif // QMLDESIGNER_QT5NODEINSTANCECLIENTPROXY_H diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp new file mode 100644 index 00000000000..342962670cf --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp @@ -0,0 +1,195 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt5nodeinstanceserver.h" + +#if QT_VERSION >= 0x050000 + +#include <QSGItem> +#include <QSGView> + +#include <designersupportfunctions.h> +#include <addimportcontainer.h> +#include <createscenecommand.h> + +namespace QmlDesigner { + +Qt5NodeInstanceServer::Qt5NodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) + : NodeInstanceServer(nodeInstanceClient), + m_designerSupport(new DesignerSupport) +{ + addImportString("import QtQuick 2.0\n"); +} + +Qt5NodeInstanceServer::~Qt5NodeInstanceServer() +{ + delete sgView(); + delete m_designerSupport; + m_designerSupport = 0; +} + +QSGView *Qt5NodeInstanceServer::sgView() const +{ + return m_sgView.data(); +} + +void Qt5NodeInstanceServer::initializeView(const QVector<AddImportContainer> &/*importVector*/) +{ + Q_ASSERT(!sgView()); + + m_sgView = new QSGView; +#ifndef Q_WS_MAC + sgView()->setAttribute(Qt::WA_DontShowOnScreen, true); +#endif + sgView()->show(); +#ifdef Q_WS_MAC + sgView()->setAttribute(Qt::WA_DontShowOnScreen, true); +#endif +} + +QDeclarativeView *Qt5NodeInstanceServer::declarativeView() const +{ + return 0; +} + +QDeclarativeEngine *Qt5NodeInstanceServer::engine() const +{ + if (sgView()) + return sgView()->engine(); + + return 0; +} + +void Qt5NodeInstanceServer::resizeCanvasSizeToRootItemSize() +{ + if (sgView()) + sgView()->resize(rootNodeInstance().size().toSize()); +} + +void Qt5NodeInstanceServer::resetAllItems() +{ + +} + +QList<ServerNodeInstance> Qt5NodeInstanceServer::setupScene(const CreateSceneCommand &command) +{ + setupFileUrl(command.fileUrl()); + setupImports(command.imports()); + + QList<ServerNodeInstance> instanceList = setupInstances(command); + + sgView()->resize(rootNodeInstance().boundingRect().size().toSize()); + + return instanceList; +} + +QList<QSGItem*> subItems(QSGItem *parentItem) +{ + QList<QSGItem*> itemList; + itemList.append(parentItem->childItems()); + + foreach (QSGItem *childItem, parentItem->childItems()) + itemList.append(subItems(childItem)); + + return itemList; +} + +QList<QSGItem*> Qt5NodeInstanceServer::allItems() const +{ + QList<QSGItem*> itemList; + + if (sgView()) { + itemList.append(sgView()->rootItem()); + itemList.append(subItems(sgView()->rootItem())); + } + + return itemList; +} + +void Qt5NodeInstanceServer::refreshBindings() +{ + DesignerSupport::refreshExpressions(context()); +} + +DesignerSupport *Qt5NodeInstanceServer::designerSupport() const +{ + return m_designerSupport; +} + +void Qt5NodeInstanceServer::createScene(const CreateSceneCommand &command) +{ + m_designerSupport = new DesignerSupport; + NodeInstanceServer::createScene(command); +} + +void Qt5NodeInstanceServer::clearScene(const ClearSceneCommand &command) +{ + NodeInstanceServer::clearScene(command); + delete m_designerSupport; + m_designerSupport = 0; +} + +} // QmlDesigner + +#endif // QT_VERSION diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h new file mode 100644 index 00000000000..4faa447eee6 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h @@ -0,0 +1,114 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QT5NODEINSTANCESERVER_H +#define QT5NODEINSTANCESERVER_H + +#include <QtGlobal> + +#include "nodeinstanceserver.h" + +#if QT_VERSION >= 0x050000 + +QT_BEGIN_NAMESPACE +class QSGItem; +class DesignerSupport; +QT_END_NAMESPACE + +namespace QmlDesigner { + +class Qt5NodeInstanceServer : public NodeInstanceServer +{ + Q_OBJECT +public: + Qt5NodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + ~Qt5NodeInstanceServer(); + + QSGView *sgView() const; + QDeclarativeView *declarativeView() const; + QDeclarativeEngine *engine() const; + void refreshBindings(); + + DesignerSupport *designerSupport() const; + + void createScene(const CreateSceneCommand &command); + void clearScene(const ClearSceneCommand &command); + +protected: + void initializeView(const QVector<AddImportContainer> &importVector); + void resizeCanvasSizeToRootItemSize(); + void resetAllItems(); + QList<ServerNodeInstance> setupScene(const CreateSceneCommand &command); + QList<QSGItem*> allItems() const; + +private: + QWeakPointer<QSGView> m_sgView; + DesignerSupport *m_designerSupport; +}; + +} // QmlDesigner + +#endif // QT_VERSION + +#endif // QT5NODEINSTANCESERVER_H diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp b/src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp new file mode 100644 index 00000000000..e432ba32faa --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp @@ -0,0 +1,132 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt5previewnodeinstanceserver.h" + +#include "nodeinstanceclientinterface.h" +#include "statepreviewimagechangedcommand.h" +#include "createscenecommand.h" + +namespace QmlDesigner { + +Qt5PreviewNodeInstanceServer::Qt5PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + Qt5NodeInstanceServer(nodeInstanceClient) +{ +} + +void Qt5PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command) +{ + initializeView(command.imports()); + setupScene(command); + + startRenderTimer(); +} +void Qt5PreviewNodeInstanceServer::startRenderTimer() +{ + if (timerId() != 0) + killTimer(timerId()); + + int timerId = startTimer(renderTimerInterval()); + + setTimerId(timerId); +} + +void Qt5PreviewNodeInstanceServer::collectItemChangesAndSendChangeCommands() +{ + static bool inFunction = false; + + if (!inFunction && nodeInstanceClient()->bytesToWrite() < 10000) { + inFunction = true; + QVector<ImageContainer> imageContainerVector; + imageContainerVector.append(ImageContainer(0, renderPreviewImage())); + + foreach (ServerNodeInstance instance, rootNodeInstance().stateInstances()) { + instance.activateState(); + imageContainerVector.append(ImageContainer(instance.instanceId(), renderPreviewImage())); + instance.deactivateState(); + } + + nodeInstanceClient()->statePreviewImagesChanged(StatePreviewImageChangedCommand(imageContainerVector)); + + slowDownRenderTimer(); + inFunction = false; + } +} + +void Qt5PreviewNodeInstanceServer::changeState(const ChangeStateCommand &/*command*/) +{ + +} + +QImage Qt5PreviewNodeInstanceServer::renderPreviewImage() +{ + QSize size = rootNodeInstance().boundingRect().size().toSize(); + size.scale(100, 100, Qt::KeepAspectRatio); + + QImage image(size, QImage::Format_ARGB32); + + return image; +} + +} // namespace QmlDesigner diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.h b/src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.h new file mode 100644 index 00000000000..bf607212743 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.h @@ -0,0 +1,93 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QMLDESIGNER_QT5PREVIEWNODEINSTANCESERVER_H +#define QMLDESIGNER_QT5PREVIEWNODEINSTANCESERVER_H + +#include "qt5nodeinstanceserver.h" + +namespace QmlDesigner { + +class Qt5PreviewNodeInstanceServer : public Qt5NodeInstanceServer +{ + Q_OBJECT +public: + explicit Qt5PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + + void createScene(const CreateSceneCommand &command); + void changeState(const ChangeStateCommand &command); + + QImage renderPreviewImage(); + +protected: + void collectItemChangesAndSendChangeCommands(); + void startRenderTimer(); + +private: + ServerNodeInstance m_actualState; +}; + +} // namespace QmlDesigner + +#endif // QMLDESIGNER_QT5PREVIEWNODEINSTANCESERVER_H diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp b/src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp new file mode 100644 index 00000000000..debf543334e --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp @@ -0,0 +1,144 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt5rendernodeinstanceserver.h" + +#include "servernodeinstance.h" +#include "childrenchangeeventfilter.h" +#include "propertyabstractcontainer.h" +#include "propertybindingcontainer.h" +#include "propertyvaluecontainer.h" +#include "instancecontainer.h" +#include "createinstancescommand.h" +#include "changefileurlcommand.h" +#include "clearscenecommand.h" +#include "reparentinstancescommand.h" +#include "changevaluescommand.h" +#include "changebindingscommand.h" +#include "changeidscommand.h" +#include "removeinstancescommand.h" +#include "nodeinstanceclientinterface.h" +#include "removepropertiescommand.h" +#include "valueschangedcommand.h" +#include "informationchangedcommand.h" +#include "pixmapchangedcommand.h" +#include "commondefines.h" +#include "childrenchangeeventfilter.h" +#include "changestatecommand.h" +#include "childrenchangedcommand.h" +#include "completecomponentcommand.h" +#include "componentcompletedcommand.h" +#include "createscenecommand.h" + +#include "dummycontextobject.h" + +namespace QmlDesigner { + +Qt5RenderNodeInstanceServer::Qt5RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + Qt5NodeInstanceServer(nodeInstanceClient) +{ +} + +void Qt5RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() +{ +} + +void Qt5RenderNodeInstanceServer::createScene(const CreateSceneCommand &command) +{ + NodeInstanceServer::createScene(command); + + QList<ServerNodeInstance> instanceList; + foreach (const InstanceContainer &container, command.instances()) { + ServerNodeInstance instance = instanceForId(container.instanceId()); + if (instance.isValid()) { + instanceList.append(instance); + } + } + + nodeInstanceClient()->pixmapChanged(createPixmapChangedCommand(instanceList)); +} + +void Qt5RenderNodeInstanceServer::clearScene(const ClearSceneCommand &command) +{ + NodeInstanceServer::clearScene(command); + + m_dirtyInstanceSet.clear(); +} + +void Qt5RenderNodeInstanceServer::completeComponent(const CompleteComponentCommand &command) +{ + NodeInstanceServer::completeComponent(command); + + QList<ServerNodeInstance> instanceList; + foreach (qint32 instanceId, command.instances()) { + ServerNodeInstance instance = instanceForId(instanceId); + if (instance.isValid()) { + instanceList.append(instance); + } + } + + nodeInstanceClient()->pixmapChanged(createPixmapChangedCommand(instanceList)); +} + +} // namespace QmlDesigner diff --git a/src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.h b/src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.h new file mode 100644 index 00000000000..78aae47692b --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.h @@ -0,0 +1,91 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QMLDESIGNER_QT5RENDERNODEINSTANCESERVER_H +#define QMLDESIGNER_QT5RENDERNODEINSTANCESERVER_H + +#include "qt5nodeinstanceserver.h" + +namespace QmlDesigner { + +class Qt5RenderNodeInstanceServer : public Qt5NodeInstanceServer +{ + Q_OBJECT +public: + explicit Qt5RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + + void createScene(const CreateSceneCommand &command); + void clearScene(const ClearSceneCommand &command); + void completeComponent(const CompleteComponentCommand &command); + +protected: + void collectItemChangesAndSendChangeCommands(); + +private: + QSet<ServerNodeInstance> m_dirtyInstanceSet; +}; + +} // namespace QmlDesigner + +#endif // QMLDESIGNER_QT5RENDERNODEINSTANCESERVER_H diff --git a/src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp b/src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp new file mode 100644 index 00000000000..c341c52a347 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp @@ -0,0 +1,658 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "sgitemnodeinstance.h" + +#if QT_VERSION >= 0x050000 + +#include "qt5nodeinstanceserver.h" + +#include <QDeclarativeExpression> + +#include <cmath> + +#include <QHash> + +namespace QmlDesigner { +namespace Internal { + +SGItemNodeInstance::SGItemNodeInstance(QSGItem *item) + : ObjectNodeInstance(item), + m_hasHeight(false), + m_hasWidth(false), + m_isResizable(true), + m_hasContent(true), + m_isMovable(true), + m_x(0.0), + m_y(0.0), + m_width(0.0), + m_height(0.0) +{ +} + +SGItemNodeInstance::~SGItemNodeInstance() +{ + if (sgItem()) + designerSupport()->derefFromEffectItem(sgItem()); +} + +bool SGItemNodeInstance::hasContent() const +{ + return m_hasContent; +} + +QList<ServerNodeInstance> SGItemNodeInstance::childItems() const +{ + QList<ServerNodeInstance> instanceList; + + foreach (QSGItem *childItem, sgItem()->childItems()) + { + if (childItem && nodeInstanceServer()->hasInstanceForObject(childItem)) { + instanceList.append(nodeInstanceServer()->instanceForObject(childItem)); + } else { //there might be an item in between the parent instance + //and the child instance. + //Popular example is flickable which has a viewport item between + //the flickable item and the flickable children + instanceList.append(childItemsForChild(childItem)); //In such a case we go deeper inside the item and + //search for child items with instances. + } + } + + return instanceList; +} + +QList<ServerNodeInstance> SGItemNodeInstance::childItemsForChild(QSGItem *childItem) const +{ + QList<ServerNodeInstance> instanceList; + + if (childItem) { + foreach (QSGItem *childItem, childItem->childItems()) + { + if (childItem && nodeInstanceServer()->hasInstanceForObject(childItem)) { + instanceList.append(nodeInstanceServer()->instanceForObject(childItem)); + } else { + instanceList.append(childItemsForChild(childItem)); + } + } + } + return instanceList; +} + +void SGItemNodeInstance::setHasContent(bool hasContent) +{ + m_hasContent = hasContent; +} + + +bool anyItemHasContent(QSGItem *graphicsItem) +{ + if (graphicsItem->flags().testFlag(QSGItem::ItemHasContents)) + return true; + + foreach (QSGItem *childItem, graphicsItem->childItems()) { + if (anyItemHasContent(childItem)) + return true; + } + + return false; +} + +QPointF SGItemNodeInstance::position() const +{ + return sgItem()->pos(); +} + +QTransform SGItemNodeInstance::transform() const +{ + return DesignerSupport::parentTransform(sgItem()); +} + +QTransform SGItemNodeInstance::customTransform() const +{ + return QTransform(); +} + +QTransform SGItemNodeInstance::sceneTransform() const +{ + return DesignerSupport::canvasTransform(sgItem()); +} + +double SGItemNodeInstance::rotation() const +{ + return sgItem()->rotation(); +} + +double SGItemNodeInstance::scale() const +{ + return sgItem()->scale(); +} + +QPointF SGItemNodeInstance::transformOriginPoint() const +{ + return sgItem()->transformOriginPoint(); +} + +double SGItemNodeInstance::zValue() const +{ + return sgItem()->z(); +} + +double SGItemNodeInstance::opacity() const +{ + return sgItem()->opacity(); +} + +QObject *SGItemNodeInstance::parent() const +{ + if (!sgItem() || !sgItem()->parentItem()) + return 0; + + return sgItem()->parentItem(); +} + +bool SGItemNodeInstance::equalSGItem(QSGItem *item) const +{ + return item == sgItem(); +} + +QImage SGItemNodeInstance::renderImage() const +{ + return designerSupport()->renderImageForItem(sgItem()); +} + +bool SGItemNodeInstance::isMovable() const +{ + return m_isMovable && sgItem() && sgItem()->parentItem(); +} + +void SGItemNodeInstance::setMovable(bool movable) +{ + m_isMovable = movable; +} + +SGItemNodeInstance::Pointer SGItemNodeInstance::create(QObject *object) +{ + QSGItem *sgItem = dynamic_cast<QSGItem*>(object); + + Q_ASSERT(sgItem); + + Pointer instance(new SGItemNodeInstance(sgItem)); + + instance->setHasContent(anyItemHasContent(sgItem)); + sgItem->setFlag(QSGItem::ItemHasContents, true); + + if (sgItem->inherits("QSGText")) + instance->setResizable(false); + + static_cast<QDeclarativeParserStatus*>(sgItem)->classBegin(); + + instance->populateResetValueHash(); + + return instance; +} + +void SGItemNodeInstance::initialize(const Pointer &objectNodeInstance) +{ + designerSupport()->refFromEffectItem(sgItem()); + ObjectNodeInstance::initialize(objectNodeInstance); +} + +bool SGItemNodeInstance::isSGItem() const +{ + return true; +} + +QSizeF SGItemNodeInstance::size() const +{ + if (isValid()) { + double implicitWidth = sgItem()->implicitWidth(); + if (!m_hasWidth + && implicitWidth // WORKAROUND + && sgItem()->width() <= 0 + && implicitWidth != sgItem()->width() + && !hasBindingForProperty("width")) { + sgItem()->blockSignals(true); + sgItem()->setWidth(implicitWidth); + sgItem()->blockSignals(false); + } + + double implicitHeight = sgItem()->implicitHeight(); + if (!m_hasHeight + && implicitWidth // WORKAROUND + && sgItem()->height() <= 0 + && implicitHeight != sgItem()->height() + && !hasBindingForProperty("height")) { + sgItem()->blockSignals(true); + sgItem()->setHeight(implicitHeight); + sgItem()->blockSignals(false); + } + + } + + if (isRootNodeInstance()) { + if (!m_hasWidth) { + sgItem()->blockSignals(true); + if (sgItem()->width() < 10.) + sgItem()->setWidth(100.); + sgItem()->blockSignals(false); + } + + if (!m_hasHeight) { + sgItem()->blockSignals(true); + if (sgItem()->height() < 10.) + sgItem()->setHeight(100.); + sgItem()->blockSignals(false); + } + } + + return QSizeF(sgItem()->width(), sgItem()->height()); +} + +QRectF SGItemNodeInstance::boundingRect() const +{ + if (isValid()) { + double implicitWidth = sgItem()->implicitWidth(); + if (!m_hasWidth + && implicitWidth // WORKAROUND + && sgItem()->width() <= 0 + && implicitWidth != sgItem()->width() + && !hasBindingForProperty("width")) { + sgItem()->blockSignals(true); + sgItem()->setWidth(implicitWidth); + sgItem()->blockSignals(false); + } + + double implicitHeight = sgItem()->implicitHeight(); + if (!m_hasHeight + && implicitWidth // WORKAROUND + && sgItem()->height() <= 0 + && implicitHeight != sgItem()->height() + && !hasBindingForProperty("height")) { + sgItem()->blockSignals(true); + sgItem()->setHeight(implicitHeight); + sgItem()->blockSignals(false); + } + + } + + if (isRootNodeInstance()) { + if (!m_hasWidth) { + sgItem()->blockSignals(true); + if (sgItem()->width() < 10.) + sgItem()->setWidth(100.); + sgItem()->blockSignals(false); + } + + if (!m_hasHeight) { + sgItem()->blockSignals(true); + if (sgItem()->height() < 10.) + sgItem()->setHeight(100.); + sgItem()->blockSignals(false); + } + } + + if (sgItem()) + return sgItem()->boundingRect(); + + return QRectF(); +} + +void SGItemNodeInstance::setPropertyVariant(const QString &name, const QVariant &value) +{ + if (name == "state") + return; // states are only set by us + + if (name == "height") { + m_height = value.toDouble(); + if (value.isValid()) + m_hasHeight = true; + else + m_hasHeight = false; + } + + if (name == "width") { + m_width = value.toDouble(); + if (value.isValid()) + m_hasWidth = true; + else + m_hasWidth = false; + } + + if (name == "x") + m_x = value.toDouble(); + + if (name == "y") + m_y = value.toDouble(); + + ObjectNodeInstance::setPropertyVariant(name, value); + + refresh(); +} + +void SGItemNodeInstance::setPropertyBinding(const QString &name, const QString &expression) +{ + if (name == "state") + return; // states are only set by us + + ObjectNodeInstance::setPropertyBinding(name, expression); +} + +QVariant SGItemNodeInstance::property(const QString &name) const +{ + if (name == "width" && !hasBindingForProperty("width")) { + double implicitWidth = sgItem()->implicitWidth(); + if (!m_hasWidth + && implicitWidth // WORKAROUND + && sgItem()->width() <= 0 + && implicitWidth != sgItem()->width()) { + sgItem()->blockSignals(true); + sgItem()->setWidth(implicitWidth); + sgItem()->blockSignals(false); + } + } + + if (name == "height" && !hasBindingForProperty("height")) { + double implicitHeight = sgItem()->implicitHeight(); + if (!m_hasHeight + && implicitHeight // WORKAROUND + && sgItem()->width() <= 0 + && implicitHeight != sgItem()->height()) { + sgItem()->blockSignals(true); + sgItem()->setHeight(implicitHeight); + sgItem()->blockSignals(false); + } + } + + return ObjectNodeInstance::property(name); +} + +void SGItemNodeInstance::resetHorizontal() + { + setPropertyVariant("x", m_x); + if (m_width > 0.0) { + setPropertyVariant("width", m_width); + } else { + setPropertyVariant("width", sgItem()->implicitWidth()); + } +} + +void SGItemNodeInstance::resetVertical() + { + setPropertyVariant("y", m_y); + if (m_height > 0.0) { + setPropertyVariant("height", m_height); + } else { + setPropertyVariant("height", sgItem()->implicitWidth()); + } +} + +static void repositioning(QSGItem *item) +{ + if (!item) + return; + +// QDeclarativeBasePositioner *positioner = qobject_cast<QDeclarativeBasePositioner*>(item); +// if (positioner) +// positioner->rePositioning(); + + if (item->parentItem()) + repositioning(item->parentItem()); +} + +void SGItemNodeInstance::refresh() +{ + repositioning(sgItem()); +} + +void SGItemNodeInstance::doComponentComplete() +{ + if (sgItem()) { + if (DesignerSupport::isComponentComplete(sgItem())) + return; + static_cast<QDeclarativeParserStatus*>(sgItem())->componentComplete(); + } + + sgItem()->update(); +} + +bool SGItemNodeInstance::isResizable() const +{ + return m_isResizable && sgItem() && sgItem()->parentItem(); +} + +void SGItemNodeInstance::setResizable(bool resizeable) +{ + m_isResizable = resizeable; +} + +int SGItemNodeInstance::penWidth() const +{ + return DesignerSupport::borderWidth(sgItem()); +} + +void SGItemNodeInstance::resetProperty(const QString &name) +{ + if (name == "height") { + m_hasHeight = false; + m_height = 0.0; + } + + if (name == "width") { + m_hasWidth = false; + m_width = 0.0; + } + + if (name == "x") + m_x = 0.0; + + if (name == "y") + m_y = 0.0; + + DesignerSupport::resetAnchor(sgItem(), name); + + if (name == "anchors.fill") { + resetHorizontal(); + resetVertical(); + } else if (name == "anchors.centerIn") { + resetHorizontal(); + resetVertical(); + } else if (name == "anchors.top") { + resetVertical(); + } else if (name == "anchors.left") { + resetHorizontal(); + } else if (name == "anchors.right") { + resetHorizontal(); + } else if (name == "anchors.bottom") { + resetVertical(); + } else if (name == "anchors.horizontalCenter") { + resetHorizontal(); + } else if (name == "anchors.verticalCenter") { + resetVertical(); + } else if (name == "anchors.baseline") { + resetVertical(); + } + + ObjectNodeInstance::resetProperty(name); +} + +void SGItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParentInstance, const QString &oldParentProperty, const ObjectNodeInstance::Pointer &newParentInstance, const QString &newParentProperty) +{ + if (oldParentInstance && oldParentInstance->isPositioner()) { + setInPositioner(false); + setMovable(true); + } + + ObjectNodeInstance::reparent(oldParentInstance, oldParentProperty, newParentInstance, newParentProperty); + + if (newParentInstance && newParentInstance->isPositioner()) { + setInPositioner(true); + setMovable(false); + } + + if (oldParentInstance && oldParentInstance->isPositioner() && !(newParentInstance && newParentInstance->isPositioner())) { + if (!hasBindingForProperty("x")) + setPropertyVariant("x", m_x); + + if (!hasBindingForProperty("y")) + setPropertyVariant("y", m_y); + } + + refresh(); +} + +static bool isValidAnchorName(const QString &name) +{ + static QStringList anchorNameList(QStringList() << "anchors.top" + << "anchors.left" + << "anchors.right" + << "anchors.bottom" + << "anchors.verticalCenter" + << "anchors.horizontalCenter" + << "anchors.fill" + << "anchors.centerIn" + << "anchors.baseline"); + + return anchorNameList.contains(name); +} + +bool SGItemNodeInstance::hasAnchor(const QString &name) const +{ + return DesignerSupport::hasAnchor(sgItem(), name); +} + +QPair<QString, ServerNodeInstance> SGItemNodeInstance::anchor(const QString &name) const +{ + if (!isValidAnchorName(name) || !DesignerSupport::hasAnchor(sgItem(), name)) + return ObjectNodeInstance::anchor(name); + + QPair<QString, QObject*> nameObjectPair = DesignerSupport::anchorLineTarget(sgItem(), name, context()); + + QObject *targetObject = nameObjectPair.second; + QString targetName = nameObjectPair.first; + + if (targetObject && nodeInstanceServer()->hasInstanceForObject(targetObject)) { + return qMakePair(targetName, nodeInstanceServer()->instanceForObject(targetObject)); + } else { + return ObjectNodeInstance::anchor(name); + } +} + +QList<ServerNodeInstance> SGItemNodeInstance::stateInstances() const +{ + QList<ServerNodeInstance> instanceList; + QList<QObject*> stateList = DesignerSupport::statesForItem(sgItem()); + foreach (QObject *state, stateList) + { + if (state && nodeInstanceServer()->hasInstanceForObject(state)) + instanceList.append(nodeInstanceServer()->instanceForObject(state)); + } + + return instanceList; +} + +bool SGItemNodeInstance::isAnchoredBySibling() const +{ + if (sgItem()->parentItem()) { + foreach (QSGItem *siblingItem, sgItem()->parentItem()->childItems()) { // search in siblings for a anchor to this item + if (siblingItem) { + if (DesignerSupport::isAnchoredTo(siblingItem, sgItem())) + return true; + } + } + } + + return false; +} + +bool SGItemNodeInstance::isAnchoredByChildren() const +{ + if (DesignerSupport::areChildrenAnchoredTo(sgItem(), sgItem())) // search in children for a anchor to this item + return true; + + return false; +} + +QSGItem *SGItemNodeInstance::sgItem() const +{ + if (object() == 0) + return 0; + + Q_ASSERT(qobject_cast<QSGItem*>(object())); + return static_cast<QSGItem*>(object()); +} + +DesignerSupport *SGItemNodeInstance::designerSupport() const +{ + return qt5NodeInstanceServer()->designerSupport(); +} + +Qt5NodeInstanceServer *SGItemNodeInstance::qt5NodeInstanceServer() const +{ + return qobject_cast<Qt5NodeInstanceServer*>(nodeInstanceServer()); +} + +} // namespace Internal +} // namespace QmlDesigner + +#endif //QT_VERSION diff --git a/src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h b/src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h new file mode 100644 index 00000000000..b3f35e0ca03 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h @@ -0,0 +1,170 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef SGITEMNODEINSTANCE_H +#define SGITEMNODEINSTANCE_H + +#include <QtGlobal> + +#if QT_VERSION >= 0x050000 + +#include "objectnodeinstance.h" + +#include <QSGItem> +#include <designersupportfunctions.h> + +namespace QmlDesigner { +namespace Internal { + +class SGItemNodeInstance : public ObjectNodeInstance +{ +public: + typedef QSharedPointer<SGItemNodeInstance> Pointer; + typedef QWeakPointer<SGItemNodeInstance> WeakPointer; + + ~SGItemNodeInstance(); + + static Pointer create(QObject *objectToBeWrapped); + void initialize(const Pointer &objectNodeInstance); + + bool isSGItem() const; + + QRectF boundingRect() const; + QPointF position() const; + QSizeF size() const; + QTransform transform() const; + QTransform customTransform() const; + QTransform sceneTransform() const; + double opacity() const; + + QObject *parent() const; + + double rotation() const; + double scale() const; + QPointF transformOriginPoint() const; + double zValue() const; + + bool equalSGItem(QSGItem *item) const; + + bool hasContent() const; + + QList<ServerNodeInstance> childItems() const; + QList<ServerNodeInstance> childItemsForChild(QSGItem *childItem) const; + + bool isMovable() const; + void setMovable(bool movable); + + void setPropertyVariant(const QString &name, const QVariant &value); + void setPropertyBinding(const QString &name, const QString &expression); + + QVariant property(const QString &name) const; + void resetProperty(const QString &name); + + void reparent(const ObjectNodeInstance::Pointer &oldParentInstance, const QString &oldParentProperty, const ObjectNodeInstance::Pointer &newParentInstance, const QString &newParentProperty); + + int penWidth() const; + + bool hasAnchor(const QString &name) const; + QPair<QString, ServerNodeInstance> anchor(const QString &name) const; + bool isAnchoredBySibling() const; + bool isAnchoredByChildren() const; + void doComponentComplete(); + + bool isResizable() const; + void setResizable(bool resizeable); + + void setHasContent(bool hasContent); + + QList<ServerNodeInstance> stateInstances() const; + + QImage renderImage() const; + + DesignerSupport *designerSupport() const; + Qt5NodeInstanceServer *qt5NodeInstanceServer() const; + +protected: + SGItemNodeInstance(QSGItem*); + QSGItem *sgItem() const; + void resetHorizontal(); + void resetVertical(); + void refresh(); + +private: //variables + bool m_hasHeight; + bool m_hasWidth; + bool m_isResizable; + bool m_hasContent; + bool m_isMovable; + double m_x; + double m_y; + double m_width; + double m_height; +}; + +} // namespace Internal +} // namespace QmlDesigner + +#endif // QT_VERSION +#endif // SGITEMNODEINSTANCE_H + diff --git a/src/plugins/qmldesigner/designercore/exceptions/invalidnodeinstanceexception.cpp b/src/tools/qmlpuppet/qml2puppet/main.cpp similarity index 58% rename from src/plugins/qmldesigner/designercore/exceptions/invalidnodeinstanceexception.cpp rename to src/tools/qmlpuppet/qml2puppet/main.cpp index 938e4971012..f1b1c6b90e5 100644 --- a/src/plugins/qmldesigner/designercore/exceptions/invalidnodeinstanceexception.cpp +++ b/src/tools/qmlpuppet/qml2puppet/main.cpp @@ -30,39 +30,42 @@ ** **************************************************************************/ -#include "invalidnodeinstanceexception.h" +#include <QtDebug> -/*! -\class QmlDesigner::InvalidNodeInstanceException -\ingroup CoreExceptions -\brief Exception for a invalid ndoe instance +#include <QApplication> +#include <QStringList> +#include <qt5nodeinstanceclientproxy.h> -\see NodeInstance -*/ -namespace QmlDesigner { -/*! -\brief Constructor +#ifdef ENABLE_QT_BREAKPAD +#include <qtsystemexceptionhandler.h> +#endif -\param line use the __LINE__ macro -\param function use the __FUNCTION__ or the Q_FUNC_INFO macro -\param file use the __FILE__ macro -*/ -InvalidNodeInstanceException::InvalidNodeInstanceException(int line, - const QString &function, - const QString &file) - : Exception(line, function, file) +#ifdef Q_OS_WIN +#include <windows.h> +#endif + +int main(int argc, char *argv[]) { -} + QApplication application(argc, argv); -/*! -\brief Returns the type of this exception + if (application.arguments().count() != 4) + return -1; -\returns the type as a string -*/ -QString InvalidNodeInstanceException::type() const -{ - return "InvalidNodeInstanceException"; -} + QCoreApplication::setOrganizationName("Nokia"); + QCoreApplication::setOrganizationDomain("nokia.com"); + QCoreApplication::setApplicationName("Qml2Puppet"); + QCoreApplication::setApplicationVersion("1.0.0"); + +#ifdef ENABLE_QT_BREAKPAD + QtSystemExceptionHandler systemExceptionHandler; +#endif + + new QmlDesigner::Qt5NodeInstanceClientProxy(&application); + +#if defined(Q_OS_WIN) && defined(QT_NO_DEBUG) + SetErrorMode(SEM_NOGPFAULTERRORBOX); //We do not want to see any message boxes +#endif + return application.exec(); } diff --git a/src/tools/qmlpuppet/qml2puppet/qml2puppet.pro b/src/tools/qmlpuppet/qml2puppet/qml2puppet.pro new file mode 100644 index 00000000000..00c9b72eb07 --- /dev/null +++ b/src/tools/qmlpuppet/qml2puppet/qml2puppet.pro @@ -0,0 +1,38 @@ +TARGET = qml2puppet + +TEMPLATE = app + +QT += core gui declarative network + +contains (QT_CONFIG, webkit) { + QT += webkit +} + +QT += core-private declarative-private gui-private script-private + +DEFINES += QWEAKPOINTER_ENABLE_ARROW + +include(../../../../qtcreator.pri) +DESTDIR = $$IDE_BIN_PATH +include(../../../rpath.pri) + +include (instances/instances.pri) +include (../instances/instances.pri) +include (../commands/commands.pri) +include (../container/container.pri) +include (../interfaces/interfaces.pri) + +QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) +!isEmpty(QT_BREAKPAD_ROOT_PATH) { + include($$QT_BREAKPAD_ROOT_PATH/qtbreakpad.pri) +} + +SOURCES += main.cpp +RESOURCES += ../qmlpuppet.qrc + +OTHER_FILES += Info.plist.in +macx { + info.input = Info.plist.in + info.output = $$IDE_BIN_PATH/$${TARGET}.app/Contents/Info.plist + QMAKE_SUBSTITUTES += info +} diff --git a/src/tools/qmlpuppet/qmlpuppet.pro b/src/tools/qmlpuppet/qmlpuppet.pro index 7772d9dc292..2ef506f68eb 100644 --- a/src/tools/qmlpuppet/qmlpuppet.pro +++ b/src/tools/qmlpuppet/qmlpuppet.pro @@ -1,35 +1,14 @@ -TARGET = qmlpuppet - -TEMPLATE = app - -QT += core gui declarative network - -contains (QT_CONFIG, webkit) { - QT += webkit -} - -DEFINES += QWEAKPOINTER_ENABLE_ARROW +TEMPLATE = subdirs include(../../../qtcreator.pri) include(../../private_headers.pri) -DESTDIR = $$IDE_BIN_PATH -include(../../rpath.pri) - -include (../../plugins/qmldesigner/designercore/instances/instances.pri) -include (../../plugins/qmldesigner/designercore/exceptions/exceptions.pri) - -QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) -!isEmpty(QT_BREAKPAD_ROOT_PATH) { - include($$QT_BREAKPAD_ROOT_PATH/qtbreakpad.pri) +minQtVersion(5, 0, 0) { + SUBDIRS += qml2puppet } -SOURCES += main.cpp -RESOURCES += qmlpuppet.qrc - -OTHER_FILES += Info.plist.in -macx { - info.input = Info.plist.in - info.output = $$IDE_BIN_PATH/$${TARGET}.app/Contents/Info.plist - QMAKE_SUBSTITUTES += info +exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) { + minQtVersion(4, 7, 1) { + SUBDIRS += qmlpuppet + } } diff --git a/src/tools/qmlpuppet/Info.plist.in b/src/tools/qmlpuppet/qmlpuppet/Info.plist.in similarity index 100% rename from src/tools/qmlpuppet/Info.plist.in rename to src/tools/qmlpuppet/qmlpuppet/Info.plist.in diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp similarity index 99% rename from src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp rename to src/tools/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp index 7ab71462c6d..306165709fc 100644 --- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.cpp @@ -32,11 +32,9 @@ #include "graphicsobjectnodeinstance.h" -#include "invalidnodeinstanceexception.h" #include <QGraphicsObject> #include "private/qgraphicsitem_p.h" #include <QStyleOptionGraphicsItem> -#include "nodemetainfo.h" #include <QPixmap> #include <QSizeF> diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h b/src/tools/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h rename to src/tools/qmlpuppet/qmlpuppet/instances/graphicsobjectnodeinstance.h diff --git a/src/tools/qmlpuppet/qmlpuppet/instances/instances.pri b/src/tools/qmlpuppet/qmlpuppet/instances/instances.pri new file mode 100644 index 00000000000..890faf94aec --- /dev/null +++ b/src/tools/qmlpuppet/qmlpuppet/instances/instances.pri @@ -0,0 +1,19 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/qt4nodeinstanceserver.h +HEADERS += $$PWD/qt4nodeinstanceclientproxy.h +HEADERS += $$PWD/qt4informationnodeinstanceserver.h +HEADERS += $$PWD/qt4rendernodeinstanceserver.h +HEADERS += $$PWD/qt4previewnodeinstanceserver.h +HEADERS += $$PWD/graphicsobjectnodeinstance.h +HEADERS += $$PWD/positionernodeinstance.h +HEADERS += $$PWD/qmlgraphicsitemnodeinstance.h + +SOURCES += $$PWD/qt4nodeinstanceserver.cpp +SOURCES += $$PWD/qt4nodeinstanceclientproxy.cpp +SOURCES += $$PWD/qt4informationnodeinstanceserver.cpp +SOURCES += $$PWD/qt4rendernodeinstanceserver.cpp +SOURCES += $$PWD/qt4previewnodeinstanceserver.cpp +SOURCES += $$PWD/graphicsobjectnodeinstance.cpp +SOURCES += $$PWD/qmlgraphicsitemnodeinstance.cpp +SOURCES += $$PWD/positionernodeinstance.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp similarity index 94% rename from src/plugins/qmldesigner/designercore/instances/positionernodeinstance.cpp rename to src/tools/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp index e611f85c425..718f8a3f061 100644 --- a/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp @@ -32,7 +32,6 @@ #include "positionernodeinstance.h" #include <private/qdeclarativepositioners_p.h> -#include <invalidnodeinstanceexception.h> namespace QmlDesigner { namespace Internal { @@ -72,8 +71,7 @@ PositionerNodeInstance::Pointer PositionerNodeInstance::create(QObject *object) { QDeclarativeBasePositioner *positioner = qobject_cast<QDeclarativeBasePositioner*>(object); - if (positioner == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + Q_ASSERT(positioner); Pointer instance(new PositionerNodeInstance(positioner)); diff --git a/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.h b/src/tools/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/positionernodeinstance.h rename to src/tools/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp similarity index 98% rename from src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp rename to src/tools/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp index 222b4a2a106..13c8a105f52 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp @@ -32,11 +32,6 @@ #include "qmlgraphicsitemnodeinstance.h" -#include <invalidnodeinstanceexception.h> - -#include "bindingproperty.h" -#include "variantproperty.h" - #include <QDeclarativeExpression> #include <private/qdeclarativeanchors_p.h> @@ -88,8 +83,7 @@ QmlGraphicsItemNodeInstance::Pointer QmlGraphicsItemNodeInstance::create(QObject { QDeclarativeItem *qmlGraphicsItem = dynamic_cast<QDeclarativeItem*>(object); - if (qmlGraphicsItem == 0) - throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + Q_ASSERT(qmlGraphicsItem); Pointer instance(new QmlGraphicsItemNodeInstance(qmlGraphicsItem)); @@ -465,7 +459,7 @@ QString propertyNameForAnchorLine(const QDeclarativeAnchorLine::AnchorLine &anch } } -bool isValidAnchorName(const QString &name) +static bool isValidAnchorName(const QString &name) { static QStringList anchorNameList(QStringList() << "anchors.top" << "anchors.left" diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h b/src/tools/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.h similarity index 100% rename from src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h rename to src/tools/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.h diff --git a/src/plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp similarity index 89% rename from src/plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.cpp rename to src/tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp index d7c3743951d..7a25e1e72e9 100644 --- a/src/plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp @@ -62,7 +62,7 @@ **************************************************************************/ -#include "informationnodeinstanceserver.h" +#include "qt4informationnodeinstanceserver.h" #include <QGraphicsItem> #include <private/qgraphicsitem_p.h> @@ -103,7 +103,6 @@ #include "commondefines.h" #include "childrenchangeeventfilter.h" #include "changestatecommand.h" -#include "addimportcommand.h" #include "childrenchangedcommand.h" #include "completecomponentcommand.h" #include "componentcompletedcommand.h" @@ -113,12 +112,12 @@ namespace QmlDesigner { -InformationNodeInstanceServer::InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : - NodeInstanceServer(nodeInstanceClient) +Qt4InformationNodeInstanceServer::Qt4InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + Qt4NodeInstanceServer(nodeInstanceClient) { } -void InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() +void Qt4InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() { static bool inFunction = false; if (!inFunction) { @@ -128,8 +127,8 @@ void InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() QVector<InstancePropertyPair> propertyChangedList; bool adjustSceneRect = false; - if (delcarativeView()) { - foreach (QGraphicsItem *item, delcarativeView()->items()) { + if (declarativeView()) { + foreach (QGraphicsItem *item, declarativeView()->items()) { QGraphicsObject *graphicsObject = item->toGraphicsObject(); if (graphicsObject && hasInstanceForObject(graphicsObject)) { ServerNodeInstance instance = instanceForObject(graphicsObject); @@ -140,7 +139,7 @@ void InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() if (d->geometryChanged) { if (instance.isRootNodeInstance()) - delcarativeView()->scene()->setSceneRect(item->boundingRect()); + declarativeView()->scene()->setSceneRect(item->boundingRect()); } } @@ -183,7 +182,7 @@ void InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() if (adjustSceneRect) { QRectF boundingRect = rootNodeInstance().boundingRect(); if (boundingRect.isValid()) { - delcarativeView()->setSceneRect(boundingRect); + declarativeView()->setSceneRect(boundingRect); } } @@ -202,7 +201,7 @@ void InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() } -void InformationNodeInstanceServer::reparentInstances(const ReparentInstancesCommand &command) +void Qt4InformationNodeInstanceServer::reparentInstances(const ReparentInstancesCommand &command) { foreach(const ReparentContainer &container, command.reparentInstances()) { ServerNodeInstance instance = instanceForId(container.instanceId()); @@ -214,7 +213,7 @@ void InformationNodeInstanceServer::reparentInstances(const ReparentInstancesCom NodeInstanceServer::reparentInstances(command); } -void InformationNodeInstanceServer::clearScene(const ClearSceneCommand &command) +void Qt4InformationNodeInstanceServer::clearScene(const ClearSceneCommand &command) { NodeInstanceServer::clearScene(command); @@ -222,7 +221,7 @@ void InformationNodeInstanceServer::clearScene(const ClearSceneCommand &command) m_completedComponentList.clear(); } -void InformationNodeInstanceServer::createScene(const CreateSceneCommand &command) +void Qt4InformationNodeInstanceServer::createScene(const CreateSceneCommand &command) { NodeInstanceServer::createScene(command); @@ -241,7 +240,7 @@ void InformationNodeInstanceServer::createScene(const CreateSceneCommand &comman } -void InformationNodeInstanceServer::sendChildrenChangedCommand(const QList<ServerNodeInstance> childList) +void Qt4InformationNodeInstanceServer::sendChildrenChangedCommand(const QList<ServerNodeInstance> childList) { QSet<ServerNodeInstance> parentSet; QList<ServerNodeInstance> noParentList; @@ -262,7 +261,7 @@ void InformationNodeInstanceServer::sendChildrenChangedCommand(const QList<Serve } -void InformationNodeInstanceServer::completeComponent(const CompleteComponentCommand &command) +void Qt4InformationNodeInstanceServer::completeComponent(const CompleteComponentCommand &command) { NodeInstanceServer::completeComponent(command); @@ -280,5 +279,4 @@ void InformationNodeInstanceServer::completeComponent(const CompleteComponentCom nodeInstanceClient()->informationChanged(createAllInformationChangedCommand(instanceList, true)); } - } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.h b/src/tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.h similarity index 91% rename from src/plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.h rename to src/tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.h index ca7ba792efe..ea5aa990e9e 100644 --- a/src/plugins/qmldesigner/designercore/instances/informationnodeinstanceserver.h +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.h @@ -65,15 +65,15 @@ #ifndef INFORMATIONNODEINSTANCESERVER_H #define INFORMATIONNODEINSTANCESERVER_H -#include "nodeinstanceserver.h" +#include "qt4nodeinstanceserver.h" namespace QmlDesigner { -class InformationNodeInstanceServer : public NodeInstanceServer +class Qt4InformationNodeInstanceServer : public Qt4NodeInstanceServer { Q_OBJECT public: - explicit InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + explicit Qt4InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); void reparentInstances(const ReparentInstancesCommand &command); void clearScene(const ClearSceneCommand &command); diff --git a/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.cpp new file mode 100644 index 00000000000..91fe2417c0e --- /dev/null +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.cpp @@ -0,0 +1,90 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt4nodeinstanceclientproxy.h" + +#include <QCoreApplication> + +#include "qt4informationnodeinstanceserver.h" +#include "qt4previewnodeinstanceserver.h" +#include "qt4rendernodeinstanceserver.h" + +namespace QmlDesigner { + +Qt4NodeInstanceClientProxy::Qt4NodeInstanceClientProxy(QObject *parent) : + NodeInstanceClientProxy(parent) +{ + if (QCoreApplication::arguments().at(2) == QLatin1String("previewmode")) { + setNodeInstanceServer(new Qt4PreviewNodeInstanceServer(this)); + } else if (QCoreApplication::arguments().at(2) == QLatin1String("editormode")) { + setNodeInstanceServer(new Qt4InformationNodeInstanceServer(this)); + } else if (QCoreApplication::arguments().at(2) == QLatin1String("rendermode")) { + setNodeInstanceServer(new Qt4RenderNodeInstanceServer(this)); + } + + initializeSocket(); +} + +} // namespace QmlDesigner + diff --git a/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.h b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.h new file mode 100644 index 00000000000..4722a2df230 --- /dev/null +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceclientproxy.h @@ -0,0 +1,81 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QMLDESIGNER_QT4NODEINSTANCECLIENTPROXY_H +#define QMLDESIGNER_QT4NODEINSTANCECLIENTPROXY_H + +#include "nodeinstanceclientproxy.h" + +namespace QmlDesigner { + +class Qt4NodeInstanceClientProxy : public NodeInstanceClientProxy +{ + Q_OBJECT +public: + explicit Qt4NodeInstanceClientProxy(QObject *parent = 0); +}; + +} // namespace QmlDesigner + +#endif // QMLDESIGNER_QT4NODEINSTANCECLIENTPROXY_H diff --git a/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp new file mode 100644 index 00000000000..75cc69993ac --- /dev/null +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp @@ -0,0 +1,179 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#include "qt4nodeinstanceserver.h" + +#include "createscenecommand.h" + +#include <QDeclarativeView> +#include <QDeclarativeEngine> +#include <QFileInfo> +#include <QGraphicsObject> +#include <private/qgraphicsitem_p.h> +#include <private/qgraphicsscene_p.h> +#include <QDeclarativeContext> + +namespace QmlDesigner { + +Qt4NodeInstanceServer::Qt4NodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) + : NodeInstanceServer(nodeInstanceClient) +{ + addImportString("import QtQuick 1.0\n"); +} + +Qt4NodeInstanceServer::~Qt4NodeInstanceServer() +{ + delete declarativeView(); +} + +QSGView *Qt4NodeInstanceServer::sgView() const +{ + return 0; +} + +QDeclarativeView *Qt4NodeInstanceServer::declarativeView() const +{ + return m_declarativeView.data(); +} + +QDeclarativeEngine *Qt4NodeInstanceServer::engine() const +{ + if (declarativeView()) + return declarativeView()->engine(); + + return 0; +} + +void Qt4NodeInstanceServer::initializeView(const QVector<AddImportContainer> &/*importVector*/) +{ + Q_ASSERT(!declarativeView()); + + m_declarativeView = new QDeclarativeView; +#ifndef Q_WS_MAC + declarativeView()->setAttribute(Qt::WA_DontShowOnScreen, true); +#endif + declarativeView()->setViewportUpdateMode(QGraphicsView::NoViewportUpdate); + declarativeView()->show(); +#ifdef Q_WS_MAC + declarativeView()->setAttribute(Qt::WA_DontShowOnScreen, true); +#endif +} + +void Qt4NodeInstanceServer::resizeCanvasSizeToRootItemSize() +{ + QGraphicsObject *rootGraphicsObject = qobject_cast<QGraphicsObject*>(rootNodeInstance().internalObject()); + if (rootGraphicsObject) { + declarativeView()->scene()->addItem(rootGraphicsObject); + declarativeView()->setSceneRect(rootGraphicsObject->boundingRect()); + } +} + +void Qt4NodeInstanceServer::resetAllItems() +{ + static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(declarativeView()->scene()))->processDirtyItemsEmitted = true; + + foreach (QGraphicsItem *item, declarativeView()->items()) + static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(declarativeView()->scene()))->resetDirtyItem(item); +} + +bool Qt4NodeInstanceServer::nonInstanceChildIsDirty(QGraphicsObject *graphicsObject) const +{ + QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(graphicsObject); + if (d->dirtyChildren) { + foreach (QGraphicsItem *child, graphicsObject->childItems()) { + QGraphicsObject *childGraphicsObject = child->toGraphicsObject(); + if (hasInstanceForObject(childGraphicsObject)) + continue; + + QGraphicsItemPrivate *childPrivate = QGraphicsItemPrivate::get(child); + if (childPrivate->dirty || nonInstanceChildIsDirty(childGraphicsObject)) + return true; + } + } + + return false; +} + +QList<ServerNodeInstance> Qt4NodeInstanceServer::setupScene(const CreateSceneCommand &command) +{ + setupFileUrl(command.fileUrl()); + setupImports(command.imports()); + + static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(declarativeView()->scene()))->processDirtyItemsEmitted = true; + + QList<ServerNodeInstance> instanceList = setupInstances(command); + + declarativeView()->scene()->setSceneRect(rootNodeInstance().boundingRect()); + + return instanceList; +} + +void Qt4NodeInstanceServer::refreshBindings() +{ + static int counter = 0; + + engine()->rootContext()->setContextProperty(QString("__%1").arg(counter++), 0); // refreshing bindings +} + +} // QmlDesigner diff --git a/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h new file mode 100644 index 00000000000..60c41f27807 --- /dev/null +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h @@ -0,0 +1,100 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** Alternatively, 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. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at qt-info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QT4NODEINSTANCESERVER_H +#define QT4NODEINSTANCESERVER_H + +#include "nodeinstanceserver.h" + +QT_BEGIN_NAMESPACE +class DesignerSupport; +QT_END_NAMESPACE + +namespace QmlDesigner { + +class Qt4NodeInstanceServer : public NodeInstanceServer +{ + Q_OBJECT +public: + Qt4NodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + ~Qt4NodeInstanceServer(); + + QSGView *sgView() const; + QDeclarativeView *declarativeView() const; + QDeclarativeEngine *engine() const; + void refreshBindings(); + +protected: + void initializeView(const QVector<AddImportContainer> &importVector); + void resizeCanvasSizeToRootItemSize(); + void resetAllItems(); + bool nonInstanceChildIsDirty(QGraphicsObject *graphicsObject) const; + QList<ServerNodeInstance> setupScene(const CreateSceneCommand &command); + +private: + QWeakPointer<QDeclarativeView> m_declarativeView; +}; + +} // QmlDesigner +#endif // QT4NODEINSTANCESERVER_H diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.cpp similarity index 62% rename from src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp rename to src/tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.cpp index 13cc594349b..fd90a0e1f70 100644 --- a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.cpp @@ -30,27 +30,32 @@ ** **************************************************************************/ -#include "previewnodeinstanceserver.h" +#include "qt4previewnodeinstanceserver.h" + #include "nodeinstanceclientinterface.h" #include "statepreviewimagechangedcommand.h" +#include "createscenecommand.h" + +#include <QPainter> +#include <QDeclarativeView> namespace QmlDesigner { -PreviewNodeInstanceServer::PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : - NodeInstanceServer(nodeInstanceClient) +Qt4PreviewNodeInstanceServer::Qt4PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + Qt4NodeInstanceServer(nodeInstanceClient) { setRenderTimerInterval(200); setSlowRenderTimerInterval(2000); } -void PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command) +void Qt4PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command) { - initializeDeclarativeView(); + initializeView(command.imports()); setupScene(command); startRenderTimer(); } -void PreviewNodeInstanceServer::startRenderTimer() +void Qt4PreviewNodeInstanceServer::startRenderTimer() { if (timerId() != 0) killTimer(timerId()); @@ -60,7 +65,7 @@ void PreviewNodeInstanceServer::startRenderTimer() setTimerId(timerId); } -void PreviewNodeInstanceServer::collectItemChangesAndSendChangeCommands() +void Qt4PreviewNodeInstanceServer::collectItemChangesAndSendChangeCommands() { static bool inFunction = false; @@ -82,8 +87,30 @@ void PreviewNodeInstanceServer::collectItemChangesAndSendChangeCommands() } } -void PreviewNodeInstanceServer::changeState(const ChangeStateCommand &/*command*/) +void Qt4PreviewNodeInstanceServer::changeState(const ChangeStateCommand &/*command*/) +{ + +} + +QImage Qt4PreviewNodeInstanceServer::renderPreviewImage() { + QSize size = rootNodeInstance().boundingRect().size().toSize(); + size.scale(100, 100, Qt::KeepAspectRatio); + + QImage image(size, QImage::Format_ARGB32); + image.fill(0xFFFFFFFF); + + if (declarativeView()) { + QPainter painter(&image); + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setRenderHint(QPainter::TextAntialiasing, true); + painter.setRenderHint(QPainter::SmoothPixmapTransform, true); + painter.setRenderHint(QPainter::HighQualityAntialiasing, true); + painter.setRenderHint(QPainter::NonCosmeticDefaultPen, true); + + declarativeView()->scene()->render(&painter, image.rect(), rootNodeInstance().boundingRect().toRect(), Qt::IgnoreAspectRatio); + } + return image; } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h b/src/tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.h similarity index 82% rename from src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h rename to src/tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.h index 8a8a8b5d4af..1c645198618 100644 --- a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4previewnodeinstanceserver.h @@ -30,30 +30,32 @@ ** **************************************************************************/ -#ifndef PREVIEWNODEINSTANCESERVER_H -#define PREVIEWNODEINSTANCESERVER_H +#ifndef QT4PREVIEWNODEINSTANCESERVER_H +#define QT4PREVIEWNODEINSTANCESERVER_H -#include "nodeinstanceserver.h" +#include "qt4nodeinstanceserver.h" namespace QmlDesigner { -class PreviewNodeInstanceServer : public NodeInstanceServer +class Qt4PreviewNodeInstanceServer : public Qt4NodeInstanceServer { Q_OBJECT public: - explicit PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + explicit Qt4PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + void createScene(const CreateSceneCommand &command); void changeState(const ChangeStateCommand &command); + QImage renderPreviewImage(); + protected: void collectItemChangesAndSendChangeCommands(); void startRenderTimer(); private: ServerNodeInstance m_actualState; - }; } // namespace QmlDesigner -#endif // PREVIEWNODEINSTANCESERVER_H +#endif // QT4PREVIEWNODEINSTANCESERVER_H diff --git a/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp b/src/tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.cpp similarity index 88% rename from src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp rename to src/tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.cpp index d2fd7e321ae..914d65d8085 100644 --- a/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.cpp @@ -30,7 +30,7 @@ ** **************************************************************************/ -#include "rendernodeinstanceserver.h" +#include "qt4rendernodeinstanceserver.h" #include <QGraphicsItem> #include <private/qgraphicsitem_p.h> @@ -71,7 +71,6 @@ #include "commondefines.h" #include "childrenchangeeventfilter.h" #include "changestatecommand.h" -#include "addimportcommand.h" #include "childrenchangedcommand.h" #include "completecomponentcommand.h" #include "componentcompletedcommand.h" @@ -81,12 +80,12 @@ namespace QmlDesigner { -RenderNodeInstanceServer::RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : - NodeInstanceServer(nodeInstanceClient) +Qt4RenderNodeInstanceServer::Qt4RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + Qt4NodeInstanceServer(nodeInstanceClient) { } -void RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() +void Qt4RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() { static bool inFunction = false; if (!inFunction) { @@ -94,8 +93,8 @@ void RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() bool adjustSceneRect = false; - if (delcarativeView()) { - foreach (QGraphicsItem *item, delcarativeView()->items()) { + if (declarativeView()) { + foreach (QGraphicsItem *item, declarativeView()->items()) { QGraphicsObject *graphicsObject = item->toGraphicsObject(); if (graphicsObject && hasInstanceForObject(graphicsObject)) { ServerNodeInstance instance = instanceForObject(graphicsObject); @@ -106,7 +105,7 @@ void RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() if (d->geometryChanged) { if (instance.isRootNodeInstance()) - delcarativeView()->scene()->setSceneRect(item->boundingRect()); + declarativeView()->scene()->setSceneRect(item->boundingRect()); } } @@ -134,7 +133,7 @@ void RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() if (adjustSceneRect) { QRectF boundingRect = rootNodeInstance().boundingRect(); if (boundingRect.isValid()) { - delcarativeView()->setSceneRect(boundingRect); + declarativeView()->setSceneRect(boundingRect); } } @@ -147,7 +146,7 @@ void RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() } } -void RenderNodeInstanceServer::createScene(const CreateSceneCommand &command) +void Qt4RenderNodeInstanceServer::createScene(const CreateSceneCommand &command) { NodeInstanceServer::createScene(command); @@ -162,14 +161,14 @@ void RenderNodeInstanceServer::createScene(const CreateSceneCommand &command) nodeInstanceClient()->pixmapChanged(createPixmapChangedCommand(instanceList)); } -void RenderNodeInstanceServer::clearScene(const ClearSceneCommand &command) +void Qt4RenderNodeInstanceServer::clearScene(const ClearSceneCommand &command) { NodeInstanceServer::clearScene(command); m_dirtyInstanceSet.clear(); } -void RenderNodeInstanceServer::completeComponent(const CompleteComponentCommand &command) +void Qt4RenderNodeInstanceServer::completeComponent(const CompleteComponentCommand &command) { NodeInstanceServer::completeComponent(command); diff --git a/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.h b/src/tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.h similarity index 90% rename from src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.h rename to src/tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.h index 3771a4a09bd..dde4056a65e 100644 --- a/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.h +++ b/src/tools/qmlpuppet/qmlpuppet/instances/qt4rendernodeinstanceserver.h @@ -33,15 +33,15 @@ #ifndef RENDERNODEINSTANCESERVER_H #define RENDERNODEINSTANCESERVER_H -#include "nodeinstanceserver.h" +#include "qt4nodeinstanceserver.h" namespace QmlDesigner { -class RenderNodeInstanceServer : public NodeInstanceServer +class Qt4RenderNodeInstanceServer : public Qt4NodeInstanceServer { Q_OBJECT public: - explicit RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + explicit Qt4RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); void createScene(const CreateSceneCommand &command); void clearScene(const ClearSceneCommand &command); diff --git a/src/tools/qmlpuppet/main.cpp b/src/tools/qmlpuppet/qmlpuppet/main.cpp similarity index 92% rename from src/tools/qmlpuppet/main.cpp rename to src/tools/qmlpuppet/qmlpuppet/main.cpp index c3dba8b3710..bbc168008f1 100644 --- a/src/tools/qmlpuppet/main.cpp +++ b/src/tools/qmlpuppet/qmlpuppet/main.cpp @@ -35,7 +35,7 @@ #include <QApplication> #include <QStringList> -#include <nodeinstanceclientproxy.h> +#include <qt4nodeinstanceclientproxy.h> #ifdef ENABLE_QT_BREAKPAD #include <qtsystemexceptionhandler.h> @@ -55,13 +55,13 @@ int main(int argc, char *argv[]) QCoreApplication::setOrganizationName("Nokia"); QCoreApplication::setOrganizationDomain("nokia.com"); QCoreApplication::setApplicationName("QmlPuppet"); - QCoreApplication::setApplicationVersion("1.0.0"); + QCoreApplication::setApplicationVersion("1.1.0"); #ifdef ENABLE_QT_BREAKPAD QtSystemExceptionHandler systemExceptionHandler; #endif - new QmlDesigner::NodeInstanceClientProxy(&application); + new QmlDesigner::Qt4NodeInstanceClientProxy(&application); #if defined(Q_OS_WIN) && defined(QT_NO_DEBUG) SetErrorMode(SEM_NOGPFAULTERRORBOX); //We do not want to see any message boxes diff --git a/src/tools/qmlpuppet/qmlpuppet/qmlpuppet.pro b/src/tools/qmlpuppet/qmlpuppet/qmlpuppet.pro new file mode 100644 index 00000000000..36d9b7a0aa8 --- /dev/null +++ b/src/tools/qmlpuppet/qmlpuppet/qmlpuppet.pro @@ -0,0 +1,42 @@ +TARGET = qmlpuppet + +TEMPLATE = app + +include(../../../../qtcreator.pri) +include(../../../private_headers.pri) +DESTDIR = $$IDE_BIN_PATH +include(../../../rpath.pri) + +QT += core gui declarative network + +contains (QT_CONFIG, webkit) { + QT += webkit +} +minQtVersion(5, 0, 0) { + QT += core-private declarative-private gui-private script-private +} +DEFINES += QWEAKPOINTER_ENABLE_ARROW + + + + +include (instances/instances.pri) +include (../instances/instances.pri) +include (../commands/commands.pri) +include (../container/container.pri) +include (../interfaces/interfaces.pri) + +QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) +!isEmpty(QT_BREAKPAD_ROOT_PATH) { + include($$QT_BREAKPAD_ROOT_PATH/qtbreakpad.pri) +} + +SOURCES += main.cpp +RESOURCES += ../qmlpuppet.qrc + +OTHER_FILES += Info.plist.in +macx { + info.input = Info.plist.in + info.output = $$IDE_BIN_PATH/$${TARGET}.app/Contents/Info.plist + QMAKE_SUBSTITUTES += info +} diff --git a/src/tools/tools.pro b/src/tools/tools.pro index e63bca5304d..f2e6b0f0b6b 100644 --- a/src/tools/tools.pro +++ b/src/tools/tools.pro @@ -2,6 +2,7 @@ TEMPLATE = subdirs win32:SUBDIRS = qtcdebugger SUBDIRS += qtpromaker +SUBDIRS += qmlpuppet !win32 { SUBDIRS += valgrindfake @@ -12,10 +13,3 @@ QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) SUBDIRS += qtcrashhandler } -include(../../qtcreator.pri) -include(../private_headers.pri) -exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) { - minQtVersion(4, 7, 1) { - SUBDIRS += qmlpuppet - } -} -- GitLab