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
terraintoolbar.h
Go to the documentation of this file.
1
7#ifndef TERRAINTOOLBAR_H
8#define TERRAINTOOLBAR_H
9
10#include <QPointer>
11#include <QToolBar>
12
13class GISRasterLayer;
14class MapCanvas;
16class QAction;
17class QComboBox;
18class QDoubleSpinBox;
19class QLabel;
20
34class TerrainToolbar : public QToolBar
35{
36 Q_OBJECT
37
38public:
39 explicit TerrainToolbar(const QString &title, QWidget *parent = nullptr);
40
42 [[nodiscard]] GISRasterLayer *activeTerrain() const;
43
45 [[nodiscard]] double nodeOffset() const;
46
48 [[nodiscard]] double linkOffset() const;
49
54 [[nodiscard]] QString verticalUnit() const;
55
68 [[nodiscard]] double verticalToModelFactor() const;
69
76 void rebindCanvas(MapCanvas *canvas);
77
85 void restoreState(const QString &terrainLayerPath,
86 double nodeOff,
87 double linkOff,
88 const QString &vertUnit = QString());
89
93 void addProfileAction(QAction *action);
94
95signals:
99
101 void nodeOffsetChanged(double offset);
102
104 void linkOffsetChanged(double offset);
105
107 void verticalUnitChanged(const QString &unit);
108
109private slots:
110 void onLayerAdded(OpenSWMMVisLayer *layer);
111 void onLayerRemoved(OpenSWMMVisLayer *layer);
112 void onComboIndexChanged(int index);
113
114private:
115 void rebuildCombo();
116 void updateUnitLabels();
117 void autoDetectVerticalUnit();
118
119 QComboBox *m_terrainCombo = nullptr;
120 QComboBox *m_verticalUnitCombo = nullptr;
121 QLabel *m_conversionLabel = nullptr; // "m → ft" unit arrow
122 QDoubleSpinBox *m_factorSpin = nullptr; // user-editable conversion factor
123 QDoubleSpinBox *m_nodeOffsetSpin = nullptr;
124 QDoubleSpinBox *m_linkOffsetSpin = nullptr;
125 QLabel *m_nodeUnitLabel = nullptr;
126 QLabel *m_linkUnitLabel = nullptr;
127 QToolBar *m_profileBar = nullptr; // mini bar in the Profile group
128 QPointer<MapCanvas> m_canvas; // canvas dies with its project window; we outlive it
129 bool m_userChoseNone = false; // deliberate "(none)" pick
130};
131
132#endif // TERRAINTOOLBAR_H
Unit unit
Definition aquifereditordialog.cpp:57
A map layer backed by a GDAL raster dataset.
Definition gisrasterlayer.h:61
The central map display widget — QGIS-style hybrid rendering.
Definition mapcanvas.h:63
Abstract base class for all layers displayed in the MapCanvas.
Definition openswmmvislayer.h:116
Toolbar for selecting an active DTM raster and setting node/link invert offsets used during interacti...
Definition terraintoolbar.h:35
void activeTerrainChanged(GISRasterLayer *layer)
void restoreState(const QString &terrainLayerPath, double nodeOff, double linkOff, const QString &vertUnit=QString())
Restores the toolbar controls from per-project saved state.
Definition terraintoolbar.cpp:267
double nodeOffset() const
Definition terraintoolbar.cpp:212
double verticalToModelFactor() const
Conversion factor to transform raw raster Z values into model vertical units (determined by UnitSyste...
Definition terraintoolbar.cpp:228
double linkOffset() const
Definition terraintoolbar.cpp:217
GISRasterLayer * activeTerrain() const
Definition terraintoolbar.cpp:204
void rebindCanvas(MapCanvas *canvas)
Rebinds the toolbar to a new project canvas.
Definition terraintoolbar.cpp:237
void verticalUnitChanged(const QString &unit)
void linkOffsetChanged(double offset)
void addProfileAction(QAction *action)
Add the terrain profile-plot action to the toolbar's own "Profile" ribbon group (iteration 4 — before...
Definition terraintoolbar.cpp:386
QString verticalUnit() const
The user-selected or auto-detected vertical unit of the active terrain.
Definition terraintoolbar.cpp:222
void nodeOffsetChanged(double offset)
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
const char * title
Definition snowpackeditordialog.cpp:71