Skip to content

Commit 82c4e75

Browse files
committed
Refactor everything to use central Graph Model
1 parent 8f9d655 commit 82c4e75

114 files changed

Lines changed: 5113 additions & 4452 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CMakeLists.txt‎

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ project(NodeEditor CXX)
55
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
66
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
77
set(OpenGL_GL_PREFERENCE LEGACY)
8+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
89

910
get_directory_property(_has_parent PARENT_DIRECTORY)
1011
if(_has_parent)
@@ -72,43 +73,46 @@ endif()
7273
set(CMAKE_AUTOMOC ON)
7374

7475
set(CPP_SOURCE_FILES
75-
src/Connection.cpp
76+
src/BasicGraphicsScene.cpp
7677
src/ConnectionBlurEffect.cpp
77-
src/ConnectionGeometry.cpp
7878
src/ConnectionGraphicsObject.cpp
7979
src/ConnectionPainter.cpp
8080
src/ConnectionState.cpp
8181
src/ConnectionStyle.cpp
82+
src/DataFlowGraphModel.cpp
83+
src/DataFlowGraphicsScene.cpp
8284
src/DataModelRegistry.cpp
83-
src/FlowScene.cpp
84-
src/FlowView.cpp
85-
src/FlowViewStyle.cpp
86-
src/Node.cpp
85+
src/GraphModel.cpp
86+
src/GraphicsView.cpp
87+
src/GraphicsViewStyle.cpp
8788
src/NodeConnectionInteraction.cpp
8889
src/NodeDataModel.cpp
8990
src/NodeGeometry.cpp
9091
src/NodeGraphicsObject.cpp
9192
src/NodePainter.cpp
9293
src/NodeState.cpp
9394
src/NodeStyle.cpp
94-
src/Properties.cpp
9595
src/StyleCollection.cpp
96+
src/locateNode.cpp
9697
)
9798

9899
set(HPP_HEADER_FILES
100+
include/nodes/internal/BasicGraphicsScene.hpp
99101
include/nodes/internal/Compiler.hpp
100-
include/nodes/internal/Connection.hpp
101-
include/nodes/internal/ConnectionGeometry.hpp
102102
include/nodes/internal/ConnectionGraphicsObject.hpp
103+
include/nodes/internal/ConnectionIdHash.hpp
104+
include/nodes/internal/ConnectionIdUtils.hpp
103105
include/nodes/internal/ConnectionState.hpp
104106
include/nodes/internal/ConnectionStyle.hpp
107+
include/nodes/internal/DataFlowGraphicsScene.hpp
108+
include/nodes/internal/DataFlowGraphModel.hpp
105109
include/nodes/internal/DataModelRegistry.hpp
110+
include/nodes/internal/Definitions.hpp
106111
include/nodes/internal/Export.hpp
107-
include/nodes/internal/FlowScene.hpp
108-
include/nodes/internal/FlowView.hpp
109-
include/nodes/internal/FlowViewStyle.hpp
110-
include/nodes/internal/memory.hpp
111-
include/nodes/internal/Node.hpp
112+
include/nodes/internal/GraphicsView.hpp
113+
include/nodes/internal/GraphicsViewStyle.hpp
114+
include/nodes/internal/GraphModel.hpp
115+
include/nodes/internal/locateNode.hpp
112116
include/nodes/internal/NodeData.hpp
113117
include/nodes/internal/NodeDataModel.hpp
114118
include/nodes/internal/NodeGeometry.hpp
@@ -123,7 +127,9 @@ set(HPP_HEADER_FILES
123127
include/nodes/internal/Serializable.hpp
124128
include/nodes/internal/Style.hpp
125129
include/nodes/internal/StyleCollection.hpp
126-
include/nodes/internal/TypeConverter.hpp
130+
src/ConnectionPainter.hpp
131+
src/NodeConnectionInteraction.hpp
132+
src/NodePainter.hpp
127133
)
128134

129135
# If we want to give the option to build a static library,
@@ -133,8 +139,10 @@ add_library(nodes
133139
${HPP_HEADER_FILES}
134140
${RESOURCES}
135141
)
142+
136143
add_library(NodeEditor::nodes ALIAS nodes)
137144

145+
138146
target_include_directories(nodes
139147
PUBLIC
140148
$<INSTALL_INTERFACE:include>
@@ -221,7 +229,7 @@ endif()
221229
##
222230

223231
if(BUILD_TESTING)
224-
add_subdirectory(test)
232+
#add_subdirectory(test)
225233
endif()
226234

227235
###############

‎examples/CMakeLists.txt‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
add_subdirectory(connection_colors)
2-
3-
add_subdirectory(example2)
1+
add_subdirectory(graph)
42

53
add_subdirectory(calculator)
64

5+
add_subdirectory(text)
6+
77
add_subdirectory(images)
88

99
add_subdirectory(styles)
10+
11+
add_subdirectory(connection_colors)
12+

‎examples/calculator/AdditionModel.hpp‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ class AdditionModel : public MathOperationDataModel
1515
{
1616
public:
1717

18-
virtual
19-
~AdditionModel() {}
18+
~AdditionModel() = default;
2019

2120
public:
2221

@@ -40,18 +39,16 @@ class AdditionModel : public MathOperationDataModel
4039

4140
if (n1 && n2)
4241
{
43-
modelValidationState = NodeValidationState::Valid;
44-
modelValidationError = QString();
4542
_result = std::make_shared<DecimalData>(n1->number() +
4643
n2->number());
4744
}
4845
else
4946
{
50-
modelValidationState = NodeValidationState::Warning;
51-
modelValidationError = QStringLiteral("Missing or incorrect inputs");
5247
_result.reset();
5348
}
5449

5550
Q_EMIT dataUpdated(outPortIndex);
5651
}
52+
53+
5754
};

‎examples/calculator/Converters.cpp‎

Lines changed: 0 additions & 46 deletions
This file was deleted.

‎examples/calculator/Converters.hpp‎

Lines changed: 0 additions & 41 deletions
This file was deleted.

‎examples/calculator/DivisionModel.hpp‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,24 +68,25 @@ class DivisionModel : public MathOperationDataModel
6868

6969
if (n2 && (n2->number() == 0.0))
7070
{
71-
modelValidationState = NodeValidationState::Error;
72-
modelValidationError = QStringLiteral("Division by zero error");
71+
//modelValidationState = NodeValidationState::Error;
72+
//modelValidationError = QStringLiteral("Division by zero error");
7373
_result.reset();
7474
}
7575
else if (n1 && n2)
7676
{
77-
modelValidationState = NodeValidationState::Valid;
78-
modelValidationError = QString();
77+
//modelValidationState = NodeValidationState::Valid;
78+
//modelValidationError = QString();
7979
_result = std::make_shared<DecimalData>(n1->number() /
8080
n2->number());
8181
}
8282
else
8383
{
84-
modelValidationState = NodeValidationState::Warning;
85-
modelValidationError = QStringLiteral("Missing or incorrect inputs");
84+
//modelValidationState = NodeValidationState::Warning;
85+
//modelValidationError = QStringLiteral("Missing or incorrect inputs");
8686
_result.reset();
8787
}
8888

8989
Q_EMIT dataUpdated(outPortIndex);
9090
}
91+
9192
};

‎examples/calculator/IntegerData.hpp‎

Lines changed: 0 additions & 37 deletions
This file was deleted.

‎examples/calculator/MathOperationDataModel.cpp‎

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ setInData(std::shared_ptr<NodeData> data, PortIndex portIndex)
4040
auto numberData =
4141
std::dynamic_pointer_cast<DecimalData>(data);
4242

43+
if (!data)
44+
{
45+
Q_EMIT dataInvalidated(0);
46+
}
47+
4348
if (portIndex == 0)
4449
{
4550
_number1 = numberData;
@@ -52,18 +57,3 @@ setInData(std::shared_ptr<NodeData> data, PortIndex portIndex)
5257
compute();
5358
}
5459

55-
56-
NodeValidationState
57-
MathOperationDataModel::
58-
validationState() const
59-
{
60-
return modelValidationState;
61-
}
62-
63-
64-
QString
65-
MathOperationDataModel::
66-
validationMessage() const
67-
{
68-
return modelValidationError;
69-
}

‎examples/calculator/MathOperationDataModel.hpp‎

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@
1010

1111
class DecimalData;
1212

13-
using QtNodes::PortType;
14-
using QtNodes::PortIndex;
1513
using QtNodes::NodeData;
16-
using QtNodes::NodeDataType;
1714
using QtNodes::NodeDataModel;
18-
using QtNodes::NodeValidationState;
15+
using QtNodes::NodeDataType;
16+
using QtNodes::PortIndex;
17+
using QtNodes::PortType;
1918

2019
/// The model dictates the number of inputs and outputs for the Node.
2120
/// In this example it has no logic.
@@ -25,8 +24,7 @@ class MathOperationDataModel : public NodeDataModel
2524

2625
public:
2726

28-
virtual
29-
~MathOperationDataModel() {}
27+
~MathOperationDataModel() = default;
3028

3129
public:
3230

@@ -46,12 +44,6 @@ class MathOperationDataModel : public NodeDataModel
4644
QWidget *
4745
embeddedWidget() override { return nullptr; }
4846

49-
NodeValidationState
50-
validationState() const override;
51-
52-
QString
53-
validationMessage() const override;
54-
5547
protected:
5648

5749
virtual void
@@ -63,7 +55,4 @@ class MathOperationDataModel : public NodeDataModel
6355
std::weak_ptr<DecimalData> _number2;
6456

6557
std::shared_ptr<DecimalData> _result;
66-
67-
NodeValidationState modelValidationState = NodeValidationState::Warning;
68-
QString modelValidationError = QString("Missing or incorrect inputs");
6958
};

0 commit comments

Comments
 (0)