SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
userflagsmodel.h
Go to the documentation of this file.
1
20#ifndef OPENSWMMVIS_UI_MODELS_USERFLAGSMODEL_H
21#define OPENSWMMVIS_UI_MODELS_USERFLAGSMODEL_H
22
23#include <QObject>
24#include <QString>
25#include <QVector>
26
27#include <openswmm/engine/openswmm_engine.h> // SWMM_Engine
28
29namespace openswmmvis::ui {
30
31class UserFlagsModel : public QObject
32{
33 Q_OBJECT
34public:
36 enum class FlagType : int {
37 Boolean = 0,
38 Integer = 1,
39 Real = 2,
40 String = 3
41 };
42 Q_ENUM(FlagType)
43
44
46 struct Def {
47 QString name;
48 FlagType type = FlagType::String;
49 QString description;
50 };
51
52 explicit UserFlagsModel(SWMM_Engine engine, QObject *parent = nullptr);
53
54 [[nodiscard]] SWMM_Engine engine() const noexcept { return m_engine; }
55
56 // ----- Schema definitions ([USER_FLAGS]) ------------------------------
57
60 [[nodiscard]] const QVector<Def> &defs() const;
61
62 [[nodiscard]] bool isDefined(const QString &name) const;
63
66 bool define(const QString &name, FlagType type,
67 const QString &description, QString *outError = nullptr);
68
71 bool undefine(const QString &name, QString *outError = nullptr);
72
73 // ----- Per-object values ([USER_FLAG_VALUES]) -------------------------
74
79 [[nodiscard]] QString value(const QString &objType, const QString &objName,
80 const QString &flagName,
81 bool *found = nullptr) const;
82
86 bool setValue(const QString &objType, const QString &objName,
87 const QString &flagName, const QString &value,
88 QString *outError = nullptr);
89
92 bool clearValue(const QString &objType, const QString &objName,
93 const QString &flagName);
94
96 static QString typeLabel(FlagType type);
97
98signals:
102
104 void valueChanged(const QString &objType, const QString &objName,
105 const QString &flagName);
106
107private:
108 SWMM_Engine m_engine = nullptr;
109 mutable QVector<Def> m_defsCache;
110 mutable bool m_defsCacheValid = false;
111};
112
113} // namespace openswmmvis::ui
114
115#endif // OPENSWMMVIS_UI_MODELS_USERFLAGSMODEL_H
Definition userflagsmodel.h:32
bool clearValue(const QString &objType, const QString &objName, const QString &flagName)
Definition userflagsmodel.cpp:147
bool define(const QString &name, FlagType type, const QString &description, QString *outError=nullptr)
Definition userflagsmodel.cpp:64
QString value(const QString &objType, const QString &objName, const QString &flagName, bool *found=nullptr) const
Definition userflagsmodel.cpp:103
const QVector< Def > & defs() const
Definition userflagsmodel.cpp:26
void valueChanged(const QString &objType, const QString &objName, const QString &flagName)
bool setValue(const QString &objType, const QString &objName, const QString &flagName, const QString &value, QString *outError=nullptr)
Definition userflagsmodel.cpp:122
FlagType
Definition userflagsmodel.h:36
SWMM_Engine engine() const noexcept
Definition userflagsmodel.h:54
bool undefine(const QString &name, QString *outError=nullptr)
Definition userflagsmodel.cpp:86
bool isDefined(const QString &name) const
Definition userflagsmodel.cpp:55
static QString typeLabel(FlagType type)
Definition userflagsmodel.cpp:162
enum OpenSWMM::Render::@788::Value::Type type
Definition openswmmvislayer.h:43
void * SWMM_Engine
Definition objectdefaultsapplier.h:19
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474
Definition userflagsmodel.h:46
QString description
Definition userflagsmodel.h:49
QString name
Definition userflagsmodel.h:47
UserFlagsModel::FlagType FlagType
Definition userflagsdialog.cpp:22