diff options
Diffstat (limited to 'src/plugins/qmldesigner')
7 files changed, 28 insertions, 6 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", |