From ba69c69a88266ad50b001c090e7c5963336c4659 Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@digia.com> Date: Thu, 7 Mar 2013 16:57:59 +0100 Subject: [PATCH] QmlDesigner: Add interface to add custom form editor tools Change-Id: Iae3d4b5db84c4a5f59ff8b4b1208b02b895df00f Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com> --- .../qmldesigner/components/formeditor/formeditorview.cpp | 6 ++++++ .../qmldesigner/components/formeditor/formeditorview.h | 3 +++ src/plugins/qmldesigner/designercore/include/viewmanager.h | 1 + src/plugins/qmldesigner/designercore/model/viewmanager.cpp | 5 +++++ 4 files changed, 15 insertions(+) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index db051d203a4..b5316e35522 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -90,6 +90,7 @@ FormEditorView::~FormEditorView() delete m_dragTool; m_dragTool = 0; + qDeleteAll(m_toolList); // delete scene after tools to prevent double deletion // of items @@ -406,6 +407,11 @@ void FormEditorView::changeToTransformTools() changeToSelectionTool(); } +void FormEditorView::registerTool(AbstractFormEditorTool *tool) +{ + m_toolList.append(tool); +} + void FormEditorView::nodeSlidedToIndex(const NodeListProperty &listProperty, int /*newIndex*/, int /*oldIndex*/) { QList<ModelNode> newOrderModelNodeList = listProperty.toModelNodeList(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h index 09b7f6c7898..63853dcef51 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h @@ -98,6 +98,8 @@ public: void changeToResizeTool(); void changeToTransformTools(); + void registerTool(AbstractFormEditorTool *tool); + void nodeSlidedToIndex(const NodeListProperty &listProperty, int newIndex, int oldIndex); void auxiliaryDataChanged(const ModelNode &node, const PropertyName &name, const QVariant &data); @@ -136,6 +138,7 @@ private: //functions private: //variables QWeakPointer<FormEditorWidget> m_formEditorWidget; QWeakPointer<FormEditorScene> m_scene; + QList<AbstractFormEditorTool*> m_toolList; MoveTool *m_moveTool; SelectionTool *m_selectionTool; ResizeTool *m_resizeTool; diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h index b38b964ea4b..405e9a23861 100644 --- a/src/plugins/qmldesigner/designercore/include/viewmanager.h +++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h @@ -69,6 +69,7 @@ public: void setNodeInstanceViewQtPath(const QString & qtPath); void resetPropertyEditorView(); + void resisterFormEditorTool(AbstractFormEditorTool *tool); // takes ownership QWidget *formEditorWidget(); QWidget *propertyEditorWidget(); diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp index c65292dbf6f..d309ea79dea 100644 --- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp @@ -82,6 +82,11 @@ void ViewManager::resetPropertyEditorView() m_propertyEditorView.resetView(); } +void ViewManager::resisterFormEditorTool(AbstractFormEditorTool *tool) +{ + m_formEditorView.registerTool(tool); +} + void ViewManager::detachViewsExceptRewriterAndComponetView() { switchStateEditorViewToBaseState(); -- GitLab