From aac0500ecf0e5c79321c83c66423a96f8b55f065 Mon Sep 17 00:00:00 2001 From: Nolan Kramer Date: Wed, 17 Sep 2025 13:38:53 -0700 Subject: [PATCH 1/2] Make GraphicView on* methods virtual --- include/QtNodes/internal/GraphicsView.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/QtNodes/internal/GraphicsView.hpp b/include/QtNodes/internal/GraphicsView.hpp index 52068129f..f21c58799 100644 --- a/include/QtNodes/internal/GraphicsView.hpp +++ b/include/QtNodes/internal/GraphicsView.hpp @@ -50,13 +50,13 @@ public Q_SLOTS: void setupScale(double scale); - void onDeleteSelectedObjects(); + virtual void onDeleteSelectedObjects(); - void onDuplicateSelectedObjects(); + virtual void onDuplicateSelectedObjects(); - void onCopySelectedObjects(); + virtual void onCopySelectedObjects(); - void onPasteObjects(); + virtual void onPasteObjects(); Q_SIGNALS: void scaleChanged(double scale); From b7c47616774043e8034812a9fbfffd2fbc6b6076 Mon Sep 17 00:00:00 2001 From: Nolan Kramer Date: Wed, 17 Sep 2025 13:46:04 -0700 Subject: [PATCH 2/2] Increase extensibility --- .../QtNodes/internal/BasicGraphicsScene.hpp | 20 ++++++++++--------- src/BasicGraphicsScene.cpp | 5 +++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/include/QtNodes/internal/BasicGraphicsScene.hpp b/include/QtNodes/internal/BasicGraphicsScene.hpp index 83424c5d8..568835ff7 100644 --- a/include/QtNodes/internal/BasicGraphicsScene.hpp +++ b/include/QtNodes/internal/BasicGraphicsScene.hpp @@ -59,6 +59,8 @@ class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene void setConnectionPainter(std::unique_ptr newPainter); + void setNodeGeometry(std::unique_ptr newGeom); + QUndoStack &undoStack(); public: @@ -139,17 +141,17 @@ class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene public Q_SLOTS: /// Slot called when the `connectionId` is erased form the AbstractGraphModel. - void onConnectionDeleted(ConnectionId const connectionId); + virtual void onConnectionDeleted(ConnectionId const connectionId); /// Slot called when the `connectionId` is created in the AbstractGraphModel. - void onConnectionCreated(ConnectionId const connectionId); - - void onNodeDeleted(NodeId const nodeId); - void onNodeCreated(NodeId const nodeId); - void onNodePositionUpdated(NodeId const nodeId); - void onNodeUpdated(NodeId const nodeId); - void onNodeClicked(NodeId const nodeId); - void onModelReset(); + virtual void onConnectionCreated(ConnectionId const connectionId); + + virtual void onNodeDeleted(NodeId const nodeId); + virtual void onNodeCreated(NodeId const nodeId); + virtual void onNodePositionUpdated(NodeId const nodeId); + virtual void onNodeUpdated(NodeId const nodeId); + virtual void onNodeClicked(NodeId const nodeId); + virtual void onModelReset(); private: AbstractGraphModel &_graphModel; diff --git a/src/BasicGraphicsScene.cpp b/src/BasicGraphicsScene.cpp index 7cec5ec45..84bf9a314 100644 --- a/src/BasicGraphicsScene.cpp +++ b/src/BasicGraphicsScene.cpp @@ -122,6 +122,11 @@ void BasicGraphicsScene::setConnectionPainter(std::unique_ptr newGeom) +{ + _nodeGeometry = std::move(newGeom); +} + QUndoStack &BasicGraphicsScene::undoStack() { return *_undoStack;