PeriDyno 1.2.1
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 "QtNodeData.h"
11
12#include "Module.h"
13
14#include <iostream>
15
16using dyno::Module;
17using dyno::FBase;
18
19namespace Qt
20{
21
24 class QtModuleWidget : public QtNodeDataModel
25 {
26 Q_OBJECT
27
28 public:
29 QtModuleWidget(std::shared_ptr<Module> base = nullptr);
30
31 virtual ~QtModuleWidget() {}
32
33 public:
34
35 QString caption() const override;
36
38 bool captionVisible() const override;
39
40 QString name() const override;
41 void setName(QString name) { m_name = name; }
42
43 QString portCaption(PortType portType, PortIndex portIndex) const override;
44
45 QString nodeTips() const override;
46
47 QString portTips(PortType portType, PortIndex portIndex) const override;
48
49 QString validationMessage() const override;
50
51
52 unsigned int nPorts(PortType portType) const override;
53
54 bool hotkeyEnabled() const override { return false; }
55
56 bool allowImported() const override { return mModule->allowImported(); }
57 bool allowExported() const override { return mModule->allowExported(); }
58
59 bool portCaptionVisible(PortType portType, PortIndex portIndex) const override;
60
61 std::shared_ptr<QtNodeData> outData(PortIndex port) override;
62 //std::shared_ptr<QtNodeData> inData(PortIndex port);
63
64 void setInData(std::shared_ptr<QtNodeData> data, PortIndex portIndex) override;
65
66 bool tryInData(PortIndex portIndex, std::shared_ptr<QtNodeData> nodeData) override;
67
68 NodeDataType dataType(PortType portType, PortIndex portIndex) const override;
69
70
71 QWidget* embeddedWidget() override { return nullptr; }
72
73 NodeValidationState validationState() const override;
74
75 QtNodeDataModel::ConnectionPolicy
76 portInConnectionPolicy(PortIndex portIndex) const override;
77
78 std::shared_ptr<Module> getModule();
79
83 void enableEditing();
84
88 void disableEditing();
89
90 protected:
91 virtual void updateModule();
92
93 protected:
94 using ImportModulePtr = std::vector<std::shared_ptr<QtImportModule>>;
95 using ExportModulePtr = std::shared_ptr<QtExportModule>;
96
99
100 using OutFieldPtr = std::vector<std::shared_ptr<QtFieldData>>;
101 //TODO: why weak_ptr?
102 // using InFieldPtr = std::vector<std::weak_ptr<FieldData>>;
103
104 using InFieldPtr = std::vector<std::shared_ptr<QtFieldData>>;
107
108 QString m_name;
109
110 std::shared_ptr<Module> mModule = nullptr;
111
113 QString modelValidationError = QString("Missing or incorrect inputs");
114
115 private:
116
117 FBase* getField(PortType portType, PortIndex portIndex) const;
118
119 std::vector<FBase*>& getOutputFields();
120 std::vector<FBase*>& getInputFields();
121
122 private:
123 bool mEditingEnabled = true;
124 };
125}
int PortIndex
PortType
NodeValidationState
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()
QString portTips(PortType portType, PortIndex portIndex) const override
std::shared_ptr< QtNodeData > outData(PortIndex port) override
QString name() const override
std::vector< std::shared_ptr< QtImportModule > > ImportModulePtr
bool captionVisible() const override
whether to hide caption in GUI
NodeValidationState modelValidationState
ExportModulePtr mModuleExport
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::shared_ptr< QtExportModule > ExportModulePtr
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
QtNodeDataModel::ConnectionPolicy portInConnectionPolicy(PortIndex portIndex) const override
bool hotkeyEnabled() const override
QString validationMessage() const override
void setInData(std::shared_ptr< QtNodeData > data, PortIndex portIndex) override
bool allowImported() const override
ImportModulePtr mModuleImports
QString caption() const override
bool tryInData(PortIndex portIndex, std::shared_ptr< QtNodeData > nodeData) override