Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
config.h
1#pragma once
2
3#include <QColor>
4#include <QJsonObject>
5#include <QString>
6#include <QVector>
7
8#include "config_base.h"
9#include "mission_parameter.h"
10#include "types.h"
11#include "typing/type_reference.h"
12
17{
18public:
23
28 PropertyConfig(const QJsonObject& object);
29
30 QString id = "";
31 maki::Value defaultValue;
32 koda::types::TypeReference type = {};
33 Types::ControlTypes control = Types::ControlTypes::AUTO;
34 QString info = "";
35
36 friend QDataStream& operator<<(QDataStream& out, const PropertyConfig& config);
37 friend QDataStream& operator>>(QDataStream& in, PropertyConfig& config);
38};
39
44{
45public:
50
55 TransitionConfig(const QJsonObject& object);
56
57 QString id = "";
58 QString label = "";
59 QString event = "";
60 bool modifiable = true;
61
62 friend QDataStream& operator<<(QDataStream& out, const TransitionConfig& config);
63 friend QDataStream& operator>>(QDataStream& in, TransitionConfig& config);
64};
65
69class FlowConfig : public ConfigBase
70{
71public:
75 FlowConfig();
76
81 FlowConfig(const QJsonObject& object);
82
83 QString name = "";
84 Types::CallType type = Types::CallType::UNKNOWN;
85 koda::types::TypeReference returnType = {};
86 QList<PropertyConfig> arguments = {};
87 bool modifiable = true;
88 QString info = "";
89 int linksTo = INT32_MAX;
90
91 friend QDataStream& operator<<(QDataStream& out, const FlowConfig& config);
92 friend QDataStream& operator>>(QDataStream& in, FlowConfig& config);
93};
94
99{
100public:
105
110 ControlsConfig(const QJsonObject& object);
111
112 QString id = "";
113 Types::ControlTypes type = Types::ControlTypes::AUTO;
114 QString format = "";
115
116 friend QDataStream& operator<<(QDataStream& out, const ControlsConfig& config);
117 friend QDataStream& operator>>(QDataStream& in, ControlsConfig& config);
118};
119
124{
125public:
130
135 BehaviourConfig(const QJsonObject& object);
136
137 QString code = "";
138
139 friend QDataStream& operator<<(QDataStream& out, const BehaviourConfig& config);
140 friend QDataStream& operator>>(QDataStream& in, BehaviourConfig& config);
141};
142
146class HelpConfig : public ConfigBase
147{
148public:
152 HelpConfig();
153
158 HelpConfig(const QJsonObject& object);
159
160 QString message = "";
161
162 friend QDataStream& operator<<(QDataStream& out, const HelpConfig& config);
163 friend QDataStream& operator>>(QDataStream& in, HelpConfig& config);
164};
165
169class BodyConfig : public ConfigBase
170{
171public:
175 BodyConfig();
176
181 BodyConfig(const QJsonObject& object);
182
183 Types::Shape shape = Types::Shape::ROUNDED_RECTANGLE;
184
185 QColor textColor = Qt::black;
186 QColor iconColor = Qt::black;
187 QColor backgroundColor = Qt::lightGray;
188 QColor borderColor = Qt::black;
189
190 int width = 100;
191 int height = 50;
192 int zIndex = 1;
193 int borderRadius = 10;
194
195 QString iconPath = "";
196 qreal iconScale = 1;
197
198 friend QDataStream& operator<<(QDataStream& out, const BodyConfig& config);
199 friend QDataStream& operator>>(QDataStream& in, BodyConfig& config);
200
201private:
202 Types::Shape toShape(const QString& config) const;
203};
204
208class NodeConfig : public ConfigBase
209{
210public:
214 NodeConfig();
215
220 NodeConfig(const QJsonObject& object);
221
222 QString type;
226 QVector<ControlsConfig> controls = {};
227 QVector<PropertyConfig> properties = {};
228 QVector<FlowConfig> events = {};
229 QVector<TransitionConfig> transitions = {};
230
231 Types::LibraryTypes libraryType = Types::LibraryTypes::UNKNOWN;
232
233 friend QDataStream& operator<<(QDataStream& out, const NodeConfig& config);
234 friend QDataStream& operator>>(QDataStream& in, NodeConfig& config);
235};
Configuration for a behaviour associated with a node.
Definition config.h:124
friend QDataStream & operator<<(QDataStream &out, const BehaviourConfig &config)
Code associated with the behaviour.
Definition config.cpp:402
BehaviourConfig()
Default constructor.
Definition config.cpp:169
Configuration for the body of a node.
Definition config.h:170
int width
Border color.
Definition config.h:190
friend QDataStream & operator<<(QDataStream &out, const BodyConfig &config)
Scale factor for the icon.
Definition config.cpp:364
BodyConfig()
Default constructor.
Definition config.cpp:189
QColor backgroundColor
Icon color.
Definition config.h:187
QString iconPath
Border radius for rounded corners.
Definition config.h:195
QColor borderColor
Background color.
Definition config.h:188
QColor textColor
Shape of the body.
Definition config.h:185
int borderRadius
Z-index for stacking order.
Definition config.h:193
int zIndex
Height of the body.
Definition config.h:192
QColor iconColor
Text color.
Definition config.h:186
qreal iconScale
Path to the icon image.
Definition config.h:196
int height
Width of the body.
Definition config.h:191
ConfigBase()
Default constructor.
Definition config_base.cpp:5
QString format
Type of the control.
Definition config.h:114
ControlsConfig()
Default constructor.
Definition config.cpp:145
friend QDataStream & operator<<(QDataStream &out, const ControlsConfig &config)
Format of the control.
Definition config.cpp:416
Types::ControlTypes type
Unique identifier for the control.
Definition config.h:113
koda::types::TypeReference returnType
Type of the call.
Definition config.h:85
QString info
Whether the flow is modifiable.
Definition config.h:88
QList< PropertyConfig > arguments
Return type of the call.
Definition config.h:86
FlowConfig()
Default constructor.
Definition config.cpp:98
Types::CallType type
Name of the flow.
Definition config.h:84
friend QDataStream & operator<<(QDataStream &out, const FlowConfig &config)
Number of links to this flow.
Definition config.cpp:432
int linksTo
Additional information about the flow.
Definition config.h:89
bool modifiable
List of arguments for the call.
Definition config.h:87
Configuration for help information.
Definition config.h:147
friend QDataStream & operator<<(QDataStream &out, const HelpConfig &config)
Message containing help information.
Definition config.cpp:388
HelpConfig()
Default constructor.
Definition config.cpp:179
QVector< PropertyConfig > properties
List of controls within the node.
Definition config.h:227
HelpConfig help
Configuration for the body of the node.
Definition config.h:224
BodyConfig body
Type of the node.
Definition config.h:223
friend QDataStream & operator<<(QDataStream &out, const NodeConfig &config)
Type of the library.
Definition config.cpp:332
BehaviourConfig behaviour
Configuration for help information.
Definition config.h:225
QVector< ControlsConfig > controls
Configuration for the behaviour associated with the node.
Definition config.h:226
QVector< TransitionConfig > transitions
List of events associated with the node.
Definition config.h:229
NodeConfig()
Default constructor.
Definition config.cpp:246
QVector< FlowConfig > events
List of properties associated with the node.
Definition config.h:228
Types::LibraryTypes libraryType
List of transitions associated with the node.
Definition config.h:231
maki::Value defaultValue
Unique identifier for the property.
Definition config.h:31
QString info
Control widget in the property menu.
Definition config.h:34
koda::types::TypeReference type
Default value of the property.
Definition config.h:32
Types::ControlTypes control
Type of the property.
Definition config.h:33
PropertyConfig()
Default constructor.
Definition config.cpp:37
friend QDataStream & operator<<(QDataStream &out, const PropertyConfig &config)
Additional information about the property.
Definition config.cpp:473
bool modifiable
Event that triggers the transition.
Definition config.h:60
TransitionConfig()
Default constructor.
Definition config.cpp:75
friend QDataStream & operator<<(QDataStream &out, const TransitionConfig &config)
Whether the transition is modifiable.
Definition config.cpp:451
QString label
Unique identifier for the transition.
Definition config.h:58