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
controlruleregistry.h
Go to the documentation of this file.
1
25#ifndef OPENSWMMVIS_CONTROLS_CONTROLRULEREGISTRY_H
26#define OPENSWMMVIS_CONTROLS_CONTROLRULEREGISTRY_H
27
29
30#include <QHash>
31#include <QObject>
32#include <QString>
33#include <QVector>
34
35namespace openswmmvis::controls {
36
37class ControlRuleRegistry : public QObject
38{
39 Q_OBJECT
40
41public:
42 explicit ControlRuleRegistry(QObject *parent = nullptr);
44
45 QVector<ControlRuleProvider *> providers() const { return m_providers; }
46 int providerCount() const noexcept { return m_providers.size(); }
47
48 ControlRuleProvider *findByName(const QString &name) const;
49 bool hasName(const QString &name) const { return findByName(name) != nullptr; }
50
54 ControlRuleProvider *create(const QString &name, const QString &body);
55
59
62 bool rename(ControlRuleProvider *p, const QString &newName);
63
72 int loadFromEngine(void *engineHandle);
73
77 int saveToEngine(void *engineHandle);
78
81 void clear();
82
83signals:
87 const QString &prevName, const QString &newName);
88
89private:
90 QVector<ControlRuleProvider *> m_providers;
91 QHash<QString, ControlRuleProvider *> m_byLowerName;
92};
93
94} // namespace openswmmvis::controls
95
96#endif // OPENSWMMVIS_CONTROLS_CONTROLRULEREGISTRY_H
Definition controlruleprovider.h:45
Definition controlruleregistry.h:38
int saveToEngine(void *engineHandle)
Push every provider back to the engine via swmm_control_clear_rules + a swmm_control_add_rule loop....
Definition controlruleregistry.cpp:126
bool rename(ControlRuleProvider *p, const QString &newName)
Rename a provider with uniqueness check. Returns false on collision (case-insensitive) or empty name.
Definition controlruleregistry.cpp:53
QVector< ControlRuleProvider * > providers() const
Definition controlruleregistry.h:45
ControlRuleProvider * findByName(const QString &name) const
Definition controlruleregistry.cpp:21
bool hasName(const QString &name) const
Definition controlruleregistry.h:49
ControlRuleProvider * create(const QString &name, const QString &body)
Create + own a new provider with the given name + body. Returns the new provider, or nullptr if the n...
Definition controlruleregistry.cpp:26
void providerAboutToBeRemoved(openswmmvis::controls::ControlRuleProvider *provider)
void providerRenamed(openswmmvis::controls::ControlRuleProvider *provider, const QString &prevName, const QString &newName)
void remove(ControlRuleProvider *p)
Remove a provider from the registry (no engine touch — the layer does that via applyControlRuleRemove...
Definition controlruleregistry.cpp:44
void clear()
Drop every provider without touching the engine. Used by loadFromEngine and by project teardown.
Definition controlruleregistry.cpp:66
int loadFromEngine(void *engineHandle)
Reload every provider from a live SWMM engine. Walks swmm_control_count + _get_rule + _get_id....
Definition controlruleregistry.cpp:81
int providerCount() const noexcept
Definition controlruleregistry.h:46
void providerAdded(openswmmvis::controls::ControlRuleProvider *provider)
Slice BR Phase 6.8.1 — MVC model for a single SWMM control rule.
ArrowPlacement p
Definition linesymbollayer.cpp:27
Definition controlruleprovider.h:34
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474