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
hydrographmodels.h
Go to the documentation of this file.
1
29#ifndef HYDROGRAPHMODELS_H
30#define HYDROGRAPHMODELS_H
31
32#include <QAbstractListModel>
33#include <QAbstractTableModel>
34#include <QObject>
35#include <QString>
36
37class SWMMModelLayer;
38
39// ---------------------------------------------------------------------------
40// Group list model — one row per UH group name, in engine first-occurrence
41// order. Editable in place: setData on column 0 routes through
42// SWMMModelLayer::applyHydrographRenameGroup.
43// ---------------------------------------------------------------------------
44
45class HydrographGroupListModel : public QAbstractListModel
46{
47 Q_OBJECT
48public:
50
51 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
52 QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const override;
53 bool setData (const QModelIndex &index, const QVariant &value,
54 int role = Qt::EditRole) override;
55 Qt::ItemFlags flags(const QModelIndex &index) const override;
56 QVariant headerData(int section, Qt::Orientation orientation,
57 int role = Qt::DisplayRole) const override;
58
60 int indexOf(const QString &name) const;
62 QString nameAt(int row) const;
63
64private slots:
65 void onHydrographChanged(const QString &uhName);
66
67private:
68 SWMMModelLayer *m_layer = nullptr;
69};
70
71// ---------------------------------------------------------------------------
72// RTK table model — 3 rows × 4 cols for one (group, month). Column 0 is the
73// non-editable response label (Short-Term / Medium-Term / Long-Term). Columns
74// 1..3 are R, T, K. Blank cells (no engine entry yet for that response)
75// render as empty QVariant — distinct from explicit 0 — so the user can
76// tell which responses have data.
77// ---------------------------------------------------------------------------
78
79class HydrographRtkTableModel : public QAbstractTableModel
80{
81 Q_OBJECT
82public:
83 enum Column { ColResponse = 0, ColR = 1, ColT = 2, ColK = 3, ColCount = 4 };
84
86
87 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
88 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
89 QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const override;
90 bool setData (const QModelIndex &index, const QVariant &value,
91 int role = Qt::EditRole) override;
92 Qt::ItemFlags flags(const QModelIndex &index) const override;
93 QVariant headerData(int section, Qt::Orientation orientation,
94 int role = Qt::DisplayRole) const override;
95
98 void setContext(const QString &name, int month);
99
100 QString currentName() const { return m_name; }
101 int currentMonth() const { return m_month; }
102
103private slots:
104 void onHydrographChanged(const QString &uhName);
105
106private:
107 SWMMModelLayer *m_layer = nullptr;
108 QString m_name;
109 int m_month = -1;
110};
111
112// ---------------------------------------------------------------------------
113// Linear IA table model — 3 rows × 4 cols. Same shape as the RTK model but
114// the editable columns are Dmax / Drec / Do.
115// ---------------------------------------------------------------------------
116
117class HydrographIaTableModel : public QAbstractTableModel
118{
119 Q_OBJECT
120public:
121 enum Column { ColResponse = 0, ColDmax = 1, ColDrec = 2, ColDo = 3, ColCount = 4 };
122
123 explicit HydrographIaTableModel(SWMMModelLayer *layer);
124
125 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
126 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
127 QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const override;
128 bool setData (const QModelIndex &index, const QVariant &value,
129 int role = Qt::EditRole) override;
130 Qt::ItemFlags flags(const QModelIndex &index) const override;
131 QVariant headerData(int section, Qt::Orientation orientation,
132 int role = Qt::DisplayRole) const override;
133
135 void setContext(const QString &name, int month);
136
137 QString currentName() const { return m_name; }
138 int currentMonth() const { return m_month; }
139
140private slots:
141 void onHydrographChanged(const QString &uhName);
142
143private:
144 SWMMModelLayer *m_layer = nullptr;
145 QString m_name;
146 int m_month = -1;
147};
148
149// ---------------------------------------------------------------------------
150// Exponential IA decay table model — 3 rows × 11 cols. Season-agnostic, so
151// setContext() takes only a group name. Active is a Qt::CheckStateRole on
152// column 1; existence of a [RDII_DECAY] row IS the "active" flag in the
153// engine model. Unchecking Active calls applyRdiiDecayRemove(); checking
154// a blank row calls applyRdiiDecaySet() with sane defaults (T_ref=10).
155// Snow (column 8) is a second checkbox enabling the row's degree-day snow
156// model; its two numeric columns (snow_T, snow_ddf) grey out until both
157// Active and Snow are checked.
158// ---------------------------------------------------------------------------
159
160class HydrographDecayTableModel : public QAbstractTableModel
161{
162 Q_OBJECT
163public:
178
180
181 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
182 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
183 QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const override;
184 bool setData (const QModelIndex &index, const QVariant &value,
185 int role = Qt::EditRole) override;
186 Qt::ItemFlags flags(const QModelIndex &index) const override;
187 QVariant headerData(int section, Qt::Orientation orientation,
188 int role = Qt::DisplayRole) const override;
189
191 void setContext(const QString &name);
192
193 QString currentName() const { return m_name; }
194
195private slots:
196 void onHydrographChanged(const QString &uhName);
197
198private:
199 SWMMModelLayer *m_layer = nullptr;
200 QString m_name;
201};
202
203#endif // HYDROGRAPHMODELS_H
Definition hydrographmodels.h:161
Column
Definition hydrographmodels.h:164
@ ColKT
Definition hydrographmodels.h:169
@ ColK0
Definition hydrographmodels.h:168
@ ColCount
Definition hydrographmodels.h:176
@ ColTfreeze
Definition hydrographmodels.h:172
@ ColTref
Definition hydrographmodels.h:170
@ ColResponse
Definition hydrographmodels.h:165
@ ColSnow
Definition hydrographmodels.h:173
@ ColTheta
Definition hydrographmodels.h:171
@ ColSnowDdf
Definition hydrographmodels.h:175
@ ColKdep
Definition hydrographmodels.h:167
@ ColActive
Definition hydrographmodels.h:166
@ ColSnowT
Definition hydrographmodels.h:174
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:405
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:409
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:544
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition hydrographmodels.cpp:458
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition hydrographmodels.cpp:514
QString currentName() const
Definition hydrographmodels.h:193
void setContext(const QString &name)
Definition hydrographmodels.cpp:565
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:401
Definition hydrographmodels.h:46
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:135
QString nameAt(int row) const
Definition hydrographmodels.cpp:150
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:105
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition hydrographmodels.cpp:121
int indexOf(const QString &name) const
Definition hydrographmodels.cpp:142
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:111
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition hydrographmodels.cpp:130
Definition hydrographmodels.h:118
Column
Definition hydrographmodels.h:121
@ ColDo
Definition hydrographmodels.h:121
@ ColResponse
Definition hydrographmodels.h:121
@ ColDmax
Definition hydrographmodels.h:121
@ ColDrec
Definition hydrographmodels.h:121
@ ColCount
Definition hydrographmodels.h:121
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition hydrographmodels.cpp:327
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:298
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition hydrographmodels.cpp:353
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:290
QString currentName() const
Definition hydrographmodels.h:137
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:294
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:360
int currentMonth() const
Definition hydrographmodels.h:138
void setContext(const QString &name, int month)
Definition hydrographmodels.cpp:374
Definition hydrographmodels.h:80
void setContext(const QString &name, int month)
Definition hydrographmodels.cpp:263
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition hydrographmodels.cpp:213
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:180
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition hydrographmodels.cpp:176
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:249
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition hydrographmodels.cpp:242
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition hydrographmodels.cpp:184
int currentMonth() const
Definition hydrographmodels.h:101
Column
Definition hydrographmodels.h:83
@ ColResponse
Definition hydrographmodels.h:83
@ ColT
Definition hydrographmodels.h:83
@ ColR
Definition hydrographmodels.h:83
@ ColCount
Definition hydrographmodels.h:83
@ ColK
Definition hydrographmodels.h:83
QString currentName() const
Definition hydrographmodels.h:100
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
SWMM_FilePathRole role
Definition ioportabilitynormalizer.cpp:22
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474