aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2020-09-03 13:48:13 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2020-09-11 08:57:42 +0000
commit0f9010d381d9defb7597f28186b9e10d3dd3eae1 (patch)
tree437e2d0e8774736804bb3fe37f1bc2995ffd1622 /src
parenta535196c418a7054c2fb1524ff1df9afb0961166 (diff)
QmlDesigner: Introduce multiple node instance server
For capturing data we need a atomic mechanism. So in one process multiple node instance server can be started and then a command is send back that a scene is created. It can be used to ensure that captured data of views is up to date. Task-number: QDS-2630 Change-Id: Iea8d0b036b6384c9c1b0f91af401f2b1f1978c12 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorview.cpp8
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorview.h1
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp19
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.h1
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodeinstanceview.h1
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp3
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.qbs1
-rw-r--r--src/tools/qml2puppet/CMakeLists.txt5
-rw-r--r--src/tools/qml2puppet/qml2puppet.qbs9
9 files changed, 39 insertions, 9 deletions
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 1ba8fcd2be..247c564dd4 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -50,11 +50,12 @@
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
+#include <memory>
#include <QDebug>
#include <QPair>
+#include <QPicture>
#include <QString>
#include <QTimer>
-#include <memory>
namespace QmlDesigner {
@@ -770,6 +771,11 @@ void FormEditorView::exportAsImage()
m_formEditorWidget->exportAsImage(m_scene->rootFormEditorItem()->boundingRect());
}
+QPicture FormEditorView::renderToPicture() const
+{
+ return m_formEditorWidget->renderToPicture();
+}
+
QmlItemNode findRecursiveQmlItemNode(const QmlObjectNode &firstQmlObjectNode)
{
QmlObjectNode qmlObjectNode = firstQmlObjectNode;
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
index 64c1f2a435..8aa156fa45 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
@@ -128,6 +128,7 @@ public:
void setGotoErrorCallback(std::function<void(int, int)> gotoErrorCallback);
void exportAsImage();
+ QPicture renderToPicture() const;
protected:
void reset();
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index c09516cbf8..c8c54f6a53 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -53,6 +53,7 @@
#include <QActionGroup>
#include <QFileDialog>
#include <QPainter>
+#include <QPicture>
#include <QVBoxLayout>
#include <QWheelEvent>
@@ -487,6 +488,19 @@ void FormEditorWidget::exportAsImage(const QRectF &boundingRect)
}
}
+QPicture FormEditorWidget::renderToPicture() const
+{
+ QPicture picture;
+ QPainter painter{&picture};
+
+ const QTransform viewportTransform = m_graphicsView->viewportTransform();
+ const QRectF boundingRect = rootItemRect();
+
+ m_graphicsView->render(&painter, boundingRect, viewportTransform.mapRect(boundingRect.toRect()));
+
+ return picture;
+}
+
FormEditorGraphicsView *FormEditorWidget::graphicsView() const
{
return m_graphicsView;
@@ -504,7 +518,4 @@ DocumentWarningWidget *FormEditorWidget::errorWidget()
return m_documentErrorWidget;
}
-
-}
-
-
+} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
index b32c95916a..1f6b559a38 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
@@ -83,6 +83,7 @@ public:
void showWarningMessageBox(const QList<DocumentMessage> &warnings);
void exportAsImage(const QRectF &boundingRect);
+ QPicture renderToPicture() const;
FormEditorGraphicsView *graphicsView() const;
diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
index 7ab1fc9808..eaf4fc08e2 100644
--- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
+++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
@@ -99,6 +99,7 @@ public:
void nodeSourceChanged(const ModelNode &modelNode, const QString &newNodeSource) override;
void capturedData(const CapturedDataCommand &capturedData) override;
void currentStateChanged(const ModelNode &node) override;
+ void sceneCreated(const SceneCreatedCommand &command) override;
QList<NodeInstance> instances() const;
NodeInstance instanceForModelNode(const ModelNode &node) const ;
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index ece4fa35b9..dc379bd312 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -64,6 +64,7 @@
#include "removepropertiescommand.h"
#include "removesharedmemorycommand.h"
#include "reparentinstancescommand.h"
+#include "scenecreatedcommand.h"
#include "statepreviewimagechangedcommand.h"
#include "tokencommand.h"
#include "update3dviewstatecommand.h"
@@ -585,10 +586,10 @@ void NodeInstanceView::currentStateChanged(const ModelNode &node)
nodeInstanceView()->activateBaseState();
}
+void NodeInstanceView::sceneCreated(const SceneCreatedCommand &) {}
//\}
-
void NodeInstanceView::removeAllInstanceNodeRelationships()
{
m_nodeInstanceHash.clear();
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs
index 40a26e7392..17c6b4282a 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.qbs
+++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs
@@ -135,6 +135,7 @@ Project {
"commands/changevaluescommand.cpp",
"commands/changevaluescommand.h",
"commands/captureddatacommand.h",
+ "commands/scenecreatedcommand.h",
"commands/childrenchangedcommand.cpp",
"commands/childrenchangedcommand.h",
"commands/clearscenecommand.cpp",
diff --git a/src/tools/qml2puppet/CMakeLists.txt b/src/tools/qml2puppet/CMakeLists.txt
index 2b80c8ca29..f3f6a66303 100644
--- a/src/tools/qml2puppet/CMakeLists.txt
+++ b/src/tools/qml2puppet/CMakeLists.txt
@@ -53,6 +53,7 @@ extend_qtc_executable(qml2puppet
view3dactioncommand.cpp view3dactioncommand.h
valueschangedcommand.cpp
captureddatacommand.h
+ scenecreatedcommand.h
)
extend_qtc_executable(qml2puppet
@@ -156,7 +157,9 @@ extend_qtc_executable(qml2puppet
quick3dtexturenodeinstance.cpp quick3dtexturenodeinstance.h
quickitemnodeinstance.cpp quickitemnodeinstance.h
servernodeinstance.cpp servernodeinstance.h
- qt5capturenodeinstanceserver.cpp qt5capturenodeinstanceserver.h
+ qt5capturepreviewnodeinstanceserver.cpp qt5capturepreviewnodeinstanceserver.h
+ nodeinstanceserverdispatcher.cpp nodeinstanceserverdispatcher.h
+ capturenodeinstanceserverdispatcher.cpp capturenodeinstanceserverdispatcher.h
)
extend_qtc_executable(qml2puppet
diff --git a/src/tools/qml2puppet/qml2puppet.qbs b/src/tools/qml2puppet/qml2puppet.qbs
index 3aab61eb9c..4d135b0cde 100644
--- a/src/tools/qml2puppet/qml2puppet.qbs
+++ b/src/tools/qml2puppet/qml2puppet.qbs
@@ -117,6 +117,7 @@ QtcTool {
"commands/view3dactioncommand.cpp",
"commands/view3dactioncommand.h",
"commands/captureddatacommand.h",
+ "commands/scenecreatedcommand.h",
"container/addimportcontainer.cpp",
"container/addimportcontainer.h",
"container/idcontainer.cpp",
@@ -219,8 +220,12 @@ QtcTool {
"instances/qt5testnodeinstanceserver.h",
"instances/servernodeinstance.cpp",
"instances/servernodeinstance.h",
- "instances/qt5capturenodeinstanceserver.cpp",
- "instances/qt5capturenodeinstanceserver.h",
+ "instances/qt5capturepreviewnodeinstanceserver.cpp",
+ "instances/qt5capturepreviewnodeinstanceserver.h",
+ "instances/nodeinstanceserverdispatcher.cpp",
+ "instances/nodeinstanceserverdispatcher.h",
+ "instances/capturenodeinstanceserverdispatcher.cpp",
+ "instances/capturenodeinstanceserverdispatcher.h",
"editor3d/generalhelper.cpp",
"editor3d/mousearea3d.cpp",
"editor3d/camerageometry.cpp",