PeriDyno 1.0.0
Loading...
Searching...
No Matches
QtNodeWidget.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QJsonObject>
5#include <QtWidgets/QLabel>
6
7#include "nodes/QNodeDataModel"
8
9#include "Node.h"
10#include "QtNodeData.h"
11#include "QtFieldData.h"
12
13#include <iostream>
14
15
16using dyno::Node;
17
18namespace Qt
19{
21 class QtNodeWidget : public QtNodeDataModel
22 {
23 Q_OBJECT
24
25 public:
26 QtNodeWidget(std::shared_ptr<Node> base = nullptr);
27
28 virtual ~QtNodeWidget();
29
30 public:
31
32 QString caption() const override;
33
34 QString name() const override;
35
36 QString nodeTips() const override;
37
38 QString portCaption(PortType portType, PortIndex portIndex) const override;
39
40 QString portTips(PortType portType, PortIndex portIndex) const override;
41
42 QString validationMessage() const override;
43
44 unsigned int nPorts(PortType portType) const override;
45
46 bool portCaptionVisible(PortType portType, PortIndex portIndex) const override;
47
48 bool allowExported() const override { return true; }
49
50 bool hotKey0Checked() const override { return mNode->isVisible(); }
51
52 bool hotKey1Checked() const override { return mNode->isActive(); }
53
62 bool tryInData(PortIndex portIndex, std::shared_ptr<QtNodeData> nodeData) override;
63
64 void setInData(std::shared_ptr<QtNodeData> data, PortIndex portIndex) override;
65
66 NodeDataType dataType(PortType portType, PortIndex portIndex) const override;
67
68 QWidget* embeddedWidget() override { return nullptr; }
69
70 NodeValidationState validationState() const override;
71
72 QtNodeDataModel::ConnectionPolicy portInConnectionPolicy(PortIndex portIndex) const override;
73
74 std::shared_ptr<Node> getNode();
75
76 std::shared_ptr<QtNodeData> outData(PortIndex port) override;
77
78 std::vector<FBase*>& getOutputFields() const;
79 std::vector<FBase*>& getInputFields() const;
80
84 void enableEditing();
85
89 void disableEditing();
90
91 protected:
92 virtual void updateModule();
93
94 protected:
95 using ExportNodePtr = std::shared_ptr<QtExportNode>;
96 using ImportNodePtr = std::vector<std::shared_ptr<QtImportNode>>;
97
100
101 using OutFieldPtr = std::vector<std::shared_ptr<QtFieldData>>;
102 using InFieldPtr = std::vector<std::shared_ptr<QtFieldData>>;
103
106
107 std::shared_ptr<Node> mNode = nullptr;
108
109 NodeValidationState modelValidationState = NodeValidationState::Valid;
110 QString modelValidationError = QString("Missing or incorrect inputs");
111
112 private:
113 bool mEditingEnabled = true;
114 };
115
116
117}
QString portCaption(PortType portType, PortIndex portIndex) const override
NodeValidationState validationState() const override
bool hotKey0Checked() const override
QtNodeWidget(std::shared_ptr< Node > base=nullptr)
std::vector< FBase * > & getInputFields() const
ExportNodePtr mNodeExport
std::shared_ptr< QtExportNode > ExportNodePtr
bool tryInData(PortIndex portIndex, std::shared_ptr< QtNodeData > nodeData) override
To test whether nodaData can be set as the input data for portIndex.
QtNodeDataModel::ConnectionPolicy portInConnectionPolicy(PortIndex portIndex) const override
QString name() const override
std::vector< std::shared_ptr< QtImportNode > > ImportNodePtr
InFieldPtr mFieldInport
QString modelValidationError
std::vector< std::shared_ptr< QtFieldData > > OutFieldPtr
NodeValidationState modelValidationState
QString validationMessage() const override
unsigned int nPorts(PortType portType) const override
QString portTips(PortType portType, PortIndex portIndex) const override
NodeDataType dataType(PortType portType, PortIndex portIndex) const override
OutFieldPtr mFieldExport
std::shared_ptr< QtNodeData > outData(PortIndex port) override
void disableEditing()
When disabled, the scenegraph can not be affected by the corresponding GUI.
bool hotKey1Checked() const override
void setInData(std::shared_ptr< QtNodeData > data, PortIndex portIndex) override
bool portCaptionVisible(PortType portType, PortIndex portIndex) const override
virtual void updateModule()
virtual ~QtNodeWidget()
std::vector< FBase * > & getOutputFields() const
QWidget * embeddedWidget() override
ImportNodePtr mNodeInport
std::vector< std::shared_ptr< QtFieldData > > InFieldPtr
QString nodeTips() const override
void enableEditing()
When enabled, the scenegraph can be updated as long as the corresponding GUI is updated.
std::shared_ptr< Node > mNode
QString caption() const override
std::shared_ptr< Node > getNode()
bool allowExported() const override