PeriDyno 1.0.0
Loading...
Searching...
No Matches
QtModuleWidget.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 "QtFieldData.h"
10#include "Module.h"
11
12#include <iostream>
13
14using dyno::Module;
15using dyno::FBase;
16
17namespace Qt
18{
19
22 class QtModuleWidget : public QtNodeDataModel
23 {
24 Q_OBJECT
25
26 public:
27 QtModuleWidget(std::shared_ptr<Module> base = nullptr);
28
29 virtual ~QtModuleWidget() {}
30
31 public:
32
33 QString caption() const override;
34
36 bool captionVisible() const override;
37
38 QString name() const override;
39 void setName(QString name) { m_name = name; }
40
41 QString portCaption(PortType portType, PortIndex portIndex) const override;
42
43 QString nodeTips() const override;
44
45 QString portTips(PortType portType, PortIndex portIndex) const override;
46
47 QString validationMessage() const override;
48
49
50 unsigned int nPorts(PortType portType) const override;
51
52 bool hotkeyEnabled() const override { return false; }
53
54 bool allowExported() const override { return false; }
55
56 bool portCaptionVisible(PortType portType, PortIndex portIndex) const override;
57
58 std::shared_ptr<QtNodeData> outData(PortIndex port) override;
59 //std::shared_ptr<QtNodeData> inData(PortIndex port);
60
61 void setInData(std::shared_ptr<QtNodeData> data, PortIndex portIndex) override;
62
63 bool tryInData(PortIndex portIndex, std::shared_ptr<QtNodeData> nodeData) override;
64
65 NodeDataType dataType(PortType portType, PortIndex portIndex) const override;
66
67
68 QWidget* embeddedWidget() override { return nullptr; }
69
70 NodeValidationState validationState() const override;
71
72 std::shared_ptr<Module> getModule();
73
77 void enableEditing();
78
82 void disableEditing();
83
84 protected:
85 virtual void updateModule();
86
87 protected:
88
89 using OutFieldPtr = std::vector<std::shared_ptr<QtFieldData>>;
90 //TODO: why weak_ptr?
91 // using InFieldPtr = std::vector<std::weak_ptr<FieldData>>;
92
93 using InFieldPtr = std::vector<std::shared_ptr<QtFieldData>>;
96
97 QString m_name;
98
99 std::shared_ptr<Module> mModule = nullptr;
100
101 NodeValidationState modelValidationState = NodeValidationState::Warning;
102 QString modelValidationError = QString("Missing or incorrect inputs");
103
104 private:
105
106 FBase* getField(PortType portType, PortIndex portIndex) const;
107
108 std::vector<FBase*>& getOutputFields();
109 std::vector<FBase*>& getInputFields();
110
111 private:
112 bool mEditingEnabled = true;
113 };
114}
std::shared_ptr< Module > getModule()
std::vector< std::shared_ptr< QtFieldData > > InFieldPtr
FBase * getField(PortType portType, PortIndex portIndex) const
void enableEditing()
When enabled, the scenegraph can be updated as long as the corresponding GUI is updated.
QString portCaption(PortType portType, PortIndex portIndex) const override
std::vector< FBase * > & getOutputFields()
InFieldPtr input_fields
QString portTips(PortType portType, PortIndex portIndex) const override
std::shared_ptr< QtNodeData > outData(PortIndex port) override
QString name() const override
bool captionVisible() const override
whether to hide caption in GUI
NodeValidationState modelValidationState
QtModuleWidget(std::shared_ptr< Module > base=nullptr)
void disableEditing()
When disabled, the scenegraph can not be affected by the corresponding GUI.
NodeDataType dataType(PortType portType, PortIndex portIndex) const override
virtual void updateModule()
QWidget * embeddedWidget() override
std::vector< FBase * > & getInputFields()
bool portCaptionVisible(PortType portType, PortIndex portIndex) const override
virtual ~QtModuleWidget()
OutFieldPtr output_fields
QString nodeTips() const override
std::shared_ptr< Module > mModule
bool allowExported() const override
NodeValidationState validationState() const override
void setName(QString name)
std::vector< std::shared_ptr< QtFieldData > > OutFieldPtr
unsigned int nPorts(PortType portType) const override
bool hotkeyEnabled() const override
QString validationMessage() const override
void setInData(std::shared_ptr< QtNodeData > data, PortIndex portIndex) override
QString caption() const override
bool tryInData(PortIndex portIndex, std::shared_ptr< QtNodeData > nodeData) override