From 818b56ac767e3c68a31e99e8de7b9e238350b88f Mon Sep 17 00:00:00 2001 From: Justin Bassett Date: Mon, 30 Apr 2018 15:14:21 -0700 Subject: [PATCH 01/11] Add DI for FlowViewStyle --- include/nodes/internal/FlowView.hpp | 9 +++++++ src/FlowView.cpp | 42 ++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/include/nodes/internal/FlowView.hpp b/include/nodes/internal/FlowView.hpp index 378ff2e6..edebef87 100644 --- a/include/nodes/internal/FlowView.hpp +++ b/include/nodes/internal/FlowView.hpp @@ -3,6 +3,7 @@ #include #include "Export.hpp" +#include "FlowViewStyle.hpp" namespace QtNodes { @@ -16,7 +17,9 @@ class NODE_EDITOR_PUBLIC FlowView public: FlowView(QWidget *parent = Q_NULLPTR); + FlowView(FlowViewStyle style, QWidget* parent = Q_NULLPTR); FlowView(FlowScene *scene, QWidget *parent = Q_NULLPTR); + FlowView(FlowScene *scene, FlowViewStyle style, QWidget* parent = Q_NULLPTR); FlowView(const FlowView&) = delete; FlowView operator=(const FlowView&) = delete; @@ -27,6 +30,10 @@ class NODE_EDITOR_PUBLIC FlowView void setScene(FlowScene *scene); + void setStyle(FlowViewStyle style); + + static FlowViewStyle const& defaultStyle(); + public slots: void scaleUp(); @@ -65,5 +72,7 @@ public slots: QPointF _clickPos; FlowScene* _scene; + + FlowViewStyle _style = defaultStyle(); }; } diff --git a/src/FlowView.cpp b/src/FlowView.cpp index 4e5e1e9b..81bcbf99 100644 --- a/src/FlowView.cpp +++ b/src/FlowView.cpp @@ -24,6 +24,7 @@ #include "StyleCollection.hpp" using QtNodes::FlowView; +using QtNodes::FlowViewStyle; using QtNodes::FlowScene; FlowView:: @@ -36,9 +37,6 @@ FlowView(QWidget *parent) setDragMode(QGraphicsView::ScrollHandDrag); setRenderHint(QPainter::Antialiasing); - auto const &flowViewStyle = StyleCollection::flowViewStyle(); - - setBackgroundBrush(flowViewStyle.BackgroundColor); //setViewportUpdateMode(QGraphicsView::FullViewportUpdate); //setViewportUpdateMode(QGraphicsView::MinimalViewportUpdate); @@ -53,6 +51,14 @@ FlowView(QWidget *parent) } +FlowView:: +FlowView(FlowViewStyle style, QWidget *parent) + : FlowView(parent) +{ + setStyle(std::move(style)); +} + + FlowView:: FlowView(FlowScene *scene, QWidget *parent) : FlowView(parent) @@ -61,6 +67,14 @@ FlowView(FlowScene *scene, QWidget *parent) } +FlowView:: +FlowView(FlowScene *scene, FlowViewStyle style, QWidget *parent) + : FlowView(scene, parent) +{ + setStyle(std::move(style)); +} + + QAction* FlowView:: clearSelectionAction() const @@ -98,6 +112,22 @@ FlowView::setScene(FlowScene *scene) } +void +FlowView::setStyle(FlowViewStyle style) +{ + _style = std::move(style); + + setBackgroundBrush(_style.BackgroundColor); +} + + +FlowViewStyle const& +FlowView::defaultStyle() +{ + return StyleCollection::flowViewStyle(); +} + + void FlowView:: contextMenuEvent(QContextMenuEvent *event) @@ -375,16 +405,14 @@ drawBackground(QPainter* painter, const QRectF& r) } }; - auto const &flowViewStyle = StyleCollection::flowViewStyle(); - QBrush bBrush = backgroundBrush(); - QPen pfine(flowViewStyle.FineGridColor, 1.0); + QPen pfine(_style.FineGridColor, 1.0); painter->setPen(pfine); drawGrid(15); - QPen p(flowViewStyle.CoarseGridColor, 1.0); + QPen p(_style.CoarseGridColor, 1.0); painter->setPen(p); drawGrid(150); From 2bb3ff0267fc722d81341a3ae81648c62c45fba3 Mon Sep 17 00:00:00 2001 From: Justin Bassett Date: Tue, 1 May 2018 13:21:20 -0700 Subject: [PATCH 02/11] DI styling --- include/nodes/internal/Connection.hpp | 13 ++- include/nodes/internal/ConnectionGeometry.hpp | 7 +- include/nodes/internal/FlowScene.hpp | 12 ++ include/nodes/internal/Node.hpp | 3 +- include/nodes/internal/NodeDataModel.hpp | 8 +- include/nodes/internal/NodeGeometry.hpp | 5 +- src/Connection.cpp | 17 ++- src/ConnectionGeometry.cpp | 10 +- src/ConnectionPainter.cpp | 10 +- src/FlowScene.cpp | 103 ++++++++++++++---- src/Node.cpp | 5 +- src/NodeDataModel.cpp | 1 + src/NodeGeometry.cpp | 22 ++-- src/NodePainter.cpp | 13 +-- src/NodePainter.hpp | 7 +- 15 files changed, 170 insertions(+), 66 deletions(-) diff --git a/include/nodes/internal/Connection.hpp b/include/nodes/internal/Connection.hpp index 902e78a2..4bc3897f 100644 --- a/include/nodes/internal/Connection.hpp +++ b/include/nodes/internal/Connection.hpp @@ -9,6 +9,7 @@ #include "Serializable.hpp" #include "ConnectionState.hpp" +#include "ConnectionStyle.hpp" #include "ConnectionGeometry.hpp" #include "TypeConverter.hpp" #include "QUuidStdHash.hpp" @@ -36,15 +37,17 @@ class NODE_EDITOR_PUBLIC Connection /// New Connection is attached to the port of the given Node. /// The port has parameters (portType, portIndex). - /// The opposite connection end will require anothre port. + /// The opposite connection end will require another port. Connection(PortType portType, Node& node, - PortIndex portIndex); + PortIndex portIndex, + ConnectionStyle const &style); Connection(Node& nodeIn, PortIndex portIndexIn, Node& nodeOut, PortIndex portIndexOut, + ConnectionStyle const &style, TypeConverter const & converter = TypeConverter{}); @@ -118,6 +121,9 @@ class NODE_EDITOR_PUBLIC Connection void setTypeConverter(TypeConverter converter); + ConnectionStyle const & + connectionStyle() const; + public: // data propagation void @@ -139,10 +145,11 @@ class NODE_EDITOR_PUBLIC Connection PortIndex _inPortIndex; private: - ConnectionState _connectionState; ConnectionGeometry _connectionGeometry; + ConnectionStyle const *_connectionStyle; + std::unique_ptr_connectionGraphicsObject; TypeConverter _converter; diff --git a/include/nodes/internal/ConnectionGeometry.hpp b/include/nodes/internal/ConnectionGeometry.hpp index 870c3559..86965c7a 100644 --- a/include/nodes/internal/ConnectionGeometry.hpp +++ b/include/nodes/internal/ConnectionGeometry.hpp @@ -10,11 +10,12 @@ namespace QtNodes { +class ConnectionStyle; + class ConnectionGeometry { public: - - ConnectionGeometry(); + ConnectionGeometry(ConnectionStyle const &style); public: @@ -56,5 +57,7 @@ class ConnectionGeometry double _lineWidth; bool _hovered; + + ConnectionStyle const* _style; }; } diff --git a/include/nodes/internal/FlowScene.hpp b/include/nodes/internal/FlowScene.hpp index 4ea3bfe7..2068aba8 100644 --- a/include/nodes/internal/FlowScene.hpp +++ b/include/nodes/internal/FlowScene.hpp @@ -22,6 +22,8 @@ class Node; class NodeGraphicsObject; class Connection; class ConnectionGraphicsObject; + +class ConnectionStyle; class NodeStyle; /// Scene holds connections and nodes. @@ -97,6 +99,12 @@ class NODE_EDITOR_PUBLIC FlowScene void loadFromMemory(const QByteArray& data); + ConnectionStyle const& connectionStyle() const; + NodeStyle const& defaultNodeStyle() const; + + void setConnectionStyle(ConnectionStyle style); + void setDefaultNodeStyle(NodeStyle style); + signals: void nodeCreated(Node &n); @@ -125,9 +133,13 @@ class NODE_EDITOR_PUBLIC FlowScene using SharedConnection = std::shared_ptr; using UniqueNode = std::unique_ptr; + struct Style; + std::unordered_map _connections; std::unordered_map _nodes; std::shared_ptr _registry; + + std::unique_ptr