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
rainfallvisualizationdialog.h
Go to the documentation of this file.
1
27#ifndef OPENSWMMVIS_UI_RAINFALLVISUALIZATIONDIALOG_H
28#define OPENSWMMVIS_UI_RAINFALLVISUALIZATIONDIALOG_H
29
31
32#include <QDialog>
33#include <QPointer>
34#include <QSet>
35#include <QVector>
36
37class QChart;
38class QComboBox;
39namespace openswmmvis::plot { class UtcTimeAxis; }
40class QLabel;
41class QSplitter;
42class QTableWidget;
43class QTableWidgetItem;
44class QTabWidget;
45class QTimer;
46class QToolBar;
47class QValueAxis;
48
49class SWMMModelLayer;
50
51namespace openswmmvis::ui {
52
53class InteractiveChartView;
54class ChartAxisFormatController;
55
56class RainfallVisualizationDialog : public QDialog
57{
58 Q_OBJECT
59
60public:
62 QWidget *parent = nullptr);
64
67 void setLayer(SWMMModelLayer *layer);
68
72 void setFocusGage(const QString &gageId);
73
75 QSet<QString> visibleGages() const { return m_visibleGages; }
76
79
82
85 QChart *overlayChart() const { return m_overlay.chart; }
86
88 QVector<QChart *> panelCharts() const
89 {
90 QVector<QChart *> out;
91 for (const auto &p : m_panels) out.push_back(p.chart);
92 return out;
93 }
94
96 QVector<openswmmvis::plot::UtcTimeAxis *> panelTimeAxes() const
97 {
98 QVector<openswmmvis::plot::UtcTimeAxis *> out;
99 for (const auto &p : m_panels) out.push_back(p.axisX);
100 return out;
101 }
102
103public slots:
106 void refresh();
107
108private slots:
109 void onBasisChanged_(int index);
110 void onAutoRefresh_();
111 void onStatsItemChanged_(QTableWidgetItem *item);
112
113private:
114 void buildUi_();
115 void rebuildCharts_();
116 void rebuildStatsTable_();
117 void applyMode_();
118 QString rainUnitLabel_() const;
119 QString basisAxisTitle_() const;
120
121 struct GagePanel {
122 QChart *chart = nullptr;
123 openswmmvis::plot::UtcTimeAxis *axisX = nullptr;
124 QValueAxis *axisY = nullptr;
125 InteractiveChartView *view = nullptr;
126 ChartAxisFormatController *fmt = nullptr;
127 };
128
129 QPointer<SWMMModelLayer> m_layer;
131
132 QToolBar *m_toolbar = nullptr;
133 QComboBox *m_basisCombo = nullptr;
134 QTabWidget *m_tabs = nullptr;
135 QSplitter *m_mainSplit = nullptr;
136 QTableWidget *m_statsTable = nullptr;
137 QLabel *m_emptyLabel = nullptr;
138
139 // Overlay tab.
140 GagePanel m_overlay;
141
142 // Per-gage tab (rebuilt per refresh).
143 QWidget *m_panelsHost = nullptr;
144 QVector<GagePanel> m_panels;
145 bool m_syncingX = false;
146
149 QSet<QString> m_visibleGages;
150
151 QTimer *m_refreshDebounce = nullptr;
152
153 QAction *m_actSelect = nullptr, *m_actPan = nullptr,
154 *m_actZoomIn = nullptr, *m_actZoomOut = nullptr;
155};
156
157} // namespace openswmmvis::ui
158
159#endif // OPENSWMMVIS_UI_RAINFALLVISUALIZATIONDIALOG_H
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
Definition rainfallseriesmodel.h:71
Basis
Display basis for chart series built from a gage.
Definition rainfallseriesmodel.h:76
Definition utctimeaxis.h:57
Definition chartaxisformatcontroller.h:37
Definition interactivechartview.h:43
Definition rainfallvisualizationdialog.h:57
openswmmvis::plot::RainfallSeriesModel::Basis basis() const
Current display basis (exposed for tests).
Definition rainfallvisualizationdialog.cpp:116
openswmmvis::plot::RainfallSeriesModel * model()
The data model (exposed for tests).
Definition rainfallvisualizationdialog.h:81
QSet< QString > visibleGages() const
Gage ids currently plotted (exposed for tests).
Definition rainfallvisualizationdialog.h:75
QChart * overlayChart() const
Overlay chart (exposed for tests — charts live in the QGraphicsScene, outside the widget findChild tr...
Definition rainfallvisualizationdialog.h:85
QVector< openswmmvis::plot::UtcTimeAxis * > panelTimeAxes() const
Per-gage panel X axes, in gage order (tests).
Definition rainfallvisualizationdialog.h:96
void setLayer(SWMMModelLayer *layer)
Re-bind to a different project's model layer (project-window switch on the singleton instance) and re...
Definition rainfallvisualizationdialog.cpp:99
void refresh()
Reload gage data from the engine (re-reading FILE gages when the engine state allows) and rebuild eve...
Definition rainfallvisualizationdialog.cpp:297
QVector< QChart * > panelCharts() const
Per-gage panel charts, in gage order (tests).
Definition rainfallvisualizationdialog.h:88
void setFocusGage(const QString &gageId)
Make gageId the only visible gage (context-menu / property panel launches). The rest stay listed in t...
Definition rainfallvisualizationdialog.cpp:517
ArrowPlacement p
Definition linesymbollayer.cpp:27
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
Definition chartproperties.h:34
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Data model for the Rainfall Visualization dialog.