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
meshattributetablemodel.h
Go to the documentation of this file.
1
32#ifndef OPENSWMMVIS_UI_PANELS_MESHATTRIBUTETABLEMODEL_H
33#define OPENSWMMVIS_UI_PANELS_MESHATTRIBUTETABLEMODEL_H
34
35#include "mesh/meshinfil.h" // mesh::InfilProvenance
37#include "ui/panels/swmmattributetablemodel.h" // openswmmvis::ColumnSpec
38
39#include <QAbstractTableModel>
40#include <QHash>
41#include <QPointer>
42#include <QRectF>
43#include <QVector>
44
45class MapCanvas;
46class SWMM2DMeshLayer;
47class SWMMModelLayer;
48
49class MeshAttributeTableModel : public QAbstractTableModel
50{
51 Q_OBJECT
52public:
54 enum class Kind { Vertex, Edge, Cell };
55
56 explicit MeshAttributeTableModel(QObject *parent = nullptr);
57
61
62 [[nodiscard]] SWMM2DMeshLayer *layer() const { return m_layer.data(); }
63 [[nodiscard]] Kind kind() const { return m_kind; }
64
68 void setCanvas(MapCanvas *canvas);
69
75
78 [[nodiscard]] QList<openswmmvis::ColumnSpec> columnSpecs() const
79 { return m_columnSpecs; }
80
82 [[nodiscard]] SWMMObjectRef refForRow(int row) const;
83
87 [[nodiscard]] int rowForRef(const SWMMObjectRef &ref) const;
88
94 [[nodiscard]] QRectF elementExtent(int row, bool *ok = nullptr) const;
95
96 // QAbstractTableModel ----------------------------------------------------
97 int rowCount(const QModelIndex &parent = {}) const override;
98 int columnCount(const QModelIndex &parent = {}) const override;
99 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
100 bool setData(const QModelIndex &index, const QVariant &value,
101 int role = Qt::EditRole) override;
102 Qt::ItemFlags flags(const QModelIndex &index) const override;
103 QVariant headerData(int section, Qt::Orientation orientation,
104 int role = Qt::DisplayRole) const override;
105
106public slots:
108 void reload();
109
110signals:
115 void objectEdited(const QString &refName);
116
117private:
118 void rebuildColumns();
119 void rebuildEdgeRows();
120 void connectLayer(SWMM2DMeshLayer *layer);
121
122 void onLayerAttributeChanged(const QString &refName);
123
127 [[nodiscard]] bool rowIsBoundaryEdge(int row) const;
128
135 [[nodiscard]] bool cellInfilParamApplies(int row, const QByteArray &key) const;
136
140 [[nodiscard]] mesh::InfilProvenance cellInfilProvenance(int row) const;
141
143 [[nodiscard]] int slotForRow(int row) const;
144
147 [[nodiscard]] bool canPick() const;
148
152 [[nodiscard]] QVariant pickerRef(const QString &key,
153 const QString &current) const;
154
155 QPointer<SWMM2DMeshLayer> m_layer;
156 QPointer<SWMMModelLayer> m_modelLayer;
157 QPointer<MapCanvas> m_canvas;
158 Kind m_kind = Kind::Vertex;
159
160 QList<openswmmvis::ColumnSpec> m_columnSpecs;
161
163 QVector<int> m_edgeSlots;
165 QHash<int,int> m_slotRow;
166
169 int m_firstCellParamCol = -1;
170};
171
172#endif // OPENSWMMVIS_UI_PANELS_MESHATTRIBUTETABLEMODEL_H
The central map display widget — QGIS-style hybrid rendering.
Definition mapcanvas.h:63
Definition meshattributetablemodel.h:50
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition meshattributetablemodel.cpp:874
void objectEdited(const QString &refName)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition meshattributetablemodel.cpp:585
Kind kind() const
Definition meshattributetablemodel.h:63
QRectF elementExtent(int row, bool *ok=nullptr) const
Definition meshattributetablemodel.cpp:499
SWMM2DMeshLayer * layer() const
Definition meshattributetablemodel.h:62
void setCanvas(MapCanvas *canvas)
Definition meshattributetablemodel.cpp:202
QList< openswmmvis::ColumnSpec > columnSpecs() const
Definition meshattributetablemodel.h:78
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition meshattributetablemodel.cpp:750
int rowCount(const QModelIndex &parent={}) const override
Definition meshattributetablemodel.cpp:546
Kind
Definition meshattributetablemodel.h:54
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition meshattributetablemodel.cpp:799
void setSource(SWMM2DMeshLayer *layer, Kind kind)
Definition meshattributetablemodel.cpp:246
SWMMObjectRef refForRow(int row) const
Definition meshattributetablemodel.cpp:454
int columnCount(const QModelIndex &parent={}) const override
Definition meshattributetablemodel.cpp:557
void setModelLayer(SWMMModelLayer *layer)
Definition meshattributetablemodel.cpp:207
int rowForRef(const SWMMObjectRef &ref) const
Definition meshattributetablemodel.cpp:470
void reload()
Definition meshattributetablemodel.cpp:283
Definition swmm2dmeshlayer.h:64
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
bool ok
Definition inpmeshwriter.cpp:575
SWMM_FilePathRole role
Definition ioportabilitynormalizer.cpp:22
const char * key
Definition meshcellparams.cpp:24
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
Per-cell 2D infiltration: value types, tag/override resolution and method↔parameter masks.
InfilProvenance
Definition meshinfil.h:127
EdgeRef ref
Definition pslgminsize.cpp:377
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Identifies a single SWMM object.
Definition selectionmanager.h:32