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
swmmvisprojectwindow.h
Go to the documentation of this file.
1
10#ifndef SWMMVISPROJECTWINDOW_H
11#define SWMMVISPROJECTWINDOW_H
12
13#include <QHash>
14#include <QJsonArray>
15#include <QMdiSubWindow>
16#include <QList>
17#include <QPointF>
18#include <QPointer>
19#include <QString>
20#include <QVector>
21
22#include "plot/plotattribute.h" // PlotAttribute (edge flow vs flux relay)
23#include "layers/swmmmodellayer.h" // SWMMModelLayer::NewProjectSpec (nested)
24
26class MapCanvas;
27class SWMMModelLayer;
31class UnitSystem;
45class GISRasterLayer;
46class QComboBox;
47class QLabel;
48class QFrame;
49
50namespace openswmmvis { class OutputStatsRegistry; } // Slice QA.2
51
57class SWMMVisProjectWindow : public QMdiSubWindow
58{
59 Q_OBJECT
60
61public:
62 explicit SWMMVisProjectWindow(
63 OpenSWMMVisWorkspace *workspace,
64 const QString &filePath = QString(),
65 QWidget *parent = nullptr
66 );
67
69
70 MapCanvas *canvas() const;
72 UnitSystem *unitSystem() const;
74
76 bool isElevationOffsetMode() const { return mElevationOffsetMode; }
77 void setElevationOffsetMode(bool elevation);
78
83 void convertLinkOffsets(bool toElevation, bool convertValues);
84
90
91 bool loadModel(QList<QString> &warnings, QList<QString> &errors);
92
109 void attachMeshLayer(class SWMM2DMeshLayer *meshLayer, bool pristine = false);
110
130 void importMeshFileAsync(const QString &srcPath);
131
145 void loadModelAsync(class OpenProgressModel *progress = nullptr);
146
154 QList<QString> &warnings,
155 QList<QString> &errors);
156
161 bool save(QString *errorOut = nullptr);
162 bool saveAs(const QString &newPath, QString *errorOut = nullptr);
163
170 QStringList lastSaveWarnings() const { return mLastSaveWarnings; }
171
173 bool hasChanges() const { return mHasChanges; }
174
176 void setHasChanges(bool dirty);
177
179 bool isEditSessionActive() const { return mEditSessionActive; }
180 void setEditSessionActive(bool active);
181
187 bool isUntitled() const { return mUntitled; }
188
193 bool isClosing() const { return mClosing; }
194 void markUntitled();
195
196 void activatePanTool();
197 void activateZoomInTool();
198 void activateZoomOutTool();
199 void activateSelectTool();
201 void activateMeasureTool();
203
208
217
224
231
234 [[nodiscard]] bool hasModelLayer() const;
235 [[nodiscard]] bool hasMeshLayer() const;
236
240
244
248 class OpenSWMMVisMapToolSelect *selectTool() const { return mSelectTool; }
249
254 { return mSelectProfileTool; }
255
259 { return mAddVirtualJunctionTool; }
260
264 QList<OpenSWMMVisMapToolAddNode *> addNodeTools() const
265 { return { mAddJunctionTool, mAddOutfallTool, mAddStorageTool, mAddDividerTool }; }
266
270 { return mAddInletJunctionTool; }
271
275 class MapToolPick2DCells *pick2DCellsTool() const { return mPick2DCellsTool; }
276
278 class MapToolMeshProfile *meshProfileTool() const { return mMeshProfileTool; }
279
288 { return mStatsRegistry; }
289
290 // ── Active analysis layers (results-analysis demarcation) ────────────────
291 //
292 // A single model can have several loaded result sets. The "active" 1D and
293 // 2D results layers are the ones every analysis/visualization tool targets
294 // (Comparison plot, Profile plot, Tabular results, color-by-result, the
295 // animation transport, 2D cell picking) instead of the old "first results
296 // layer found on the canvas" guess. The user chooses them from the two
297 // analysis-toolbar combos or the layer-tree "Set as Active Results Layer"
298 // context action. State is per-project so each tab keeps its own choice.
299
304 [[nodiscard]] SWMMResultsLayer *activeResultsLayer() const;
305
307 [[nodiscard]] SWMM2DResultsLayer *active2DResultsLayer() const;
308
314
317
322 void setPending2DResultsRestore(const QJsonArray &entries)
323 { mPending2DResultsRestore = entries; }
324 [[nodiscard]] QJsonArray pending2DResultsRestore() const
325 { return mPending2DResultsRestore; }
326 void clearPending2DResultsRestore() { mPending2DResultsRestore = {}; }
327
330 QHash<class OpenSWMMVisMapTool *, QString> toolActionKeys() const;
338 void activateAddPumpTool();
340 void activateAddWeirTool();
342 void activateAddGageTool();
344 void activateAddTextTool();
345 void zoomToFullExtent();
346
349 OpenSWMMVisAnnotationLayer *annotationLayer() const { return mAnnotationLayer; }
350
354
357 bool isAutoLengthEnabled() const { return mAutoLengthEnabled; }
358 void setAutoLengthEnabled(bool enabled);
359
361 QString engineVersion() const { return mEngineVersion; }
362 void setEngineVersion(const QString &version);
363
367 QString notesHtml() const { return mNotesHtml; }
368 void setNotesHtml(const QString &html) { mNotesHtml = html; }
369
370 // ── Terrain editing ──────────────────────────────────────────────────────
371
373 [[nodiscard]] QString activeTerrainLayerPath() const;
374
378 [[nodiscard]] GISRasterLayer *activeTerrain() const { return mActiveTerrain; }
379
384 [[nodiscard]] double terrainVertFactor() const { return mTerrainVertFactor; }
385
387 [[nodiscard]] double terrainNodeOffset() const { return mTerrainNodeOffset; }
388
390 [[nodiscard]] double terrainLinkOffset() const { return mTerrainLinkOffset; }
391
397 void setActiveTerrain(GISRasterLayer *layer);
398
400 void setTerrainNodeOffset(double offset);
401
403 void setTerrainLinkOffset(double offset);
404
406 [[nodiscard]] QString terrainVerticalUnit() const { return mTerrainVertUnit; }
407
412 void setTerrainVerticalUnit(const QString &unit);
413
422 void restoreTerrainState(const QString &absoluteLayerPath,
423 double nodeOffset,
424 double linkOffset,
425 const QString &vertUnit = QString());
426
427signals:
429 void modelLoadError(const QString &msg);
430
435 void modelLoadFinished(bool ok, const QList<QString> &warnings,
436 const QList<QString> &errors);
442 void saveCompletedWithEngineWarnings(const QStringList &warnings);
448 void meshImportFinished(bool ok, const QString &message,
449 const QString &meshPath);
450
451 void hasChangesChanged(bool dirty);
452 void editSessionChanged(bool active);
453 void offsetModeChanged(bool elevation);
454 void autoLengthChanged(bool enabled);
455
461
465 const QVector<int> &triIdxList,
466 const QVector<openswmmvis::plot::PlotAttribute> &attrs);
467
475 void meshProfileTraced(const QVector<QPointF> &scenePolyline);
476 void analysisMeshProfileTraced(const QVector<QPointF> &scenePolyline);
477
480 void terrainProfileTraced(const QVector<QPointF> &scenePolyline);
481
485 void meshEdgeFluxRequested(class SWMM2DMeshLayer *mesh, int triIdx, int edgeLocal,
487
490 void meshEdgeStatusMessage(const QString &message);
491
495 void meshVertexSeriesRequested(class SWMM2DMeshLayer *mesh, const QVector<int> &vertexIdxList,
496 const QVector<openswmmvis::plot::PlotAttribute> &attrs);
497
503
513
514protected:
515 void closeEvent(QCloseEvent *event) override;
516 void changeEvent(QEvent *event) override;
517 bool eventFilter(QObject *watched, QEvent *event) override;
518
519private:
520 void updateWindowTitle();
521 void repositionMeasurePanel();
522 void updateMeasureUnitCombo();
523
527 bool finishModelLoad(QList<QString> &warnings, QList<QString> &errors);
528
532 void refreshActive2DCellHighlight();
533
534 OpenSWMMVisWorkspace *mWorkspace = nullptr;
535 MapCanvas *mCanvas = nullptr;
536 SWMMModelLayer *mModelLayer = nullptr;
537 UnitSystem *mUnits = nullptr;
538 SelectionManager *mSelectionManager = nullptr;
539 bool mCanvasCRSAdopted = false; // true after first successful loadModel
540 bool mHasChanges = false;
541 bool mEditSessionActive = false;
542 bool mElevationOffsetMode = false; // OPTIONS LINK_OFFSETS = ELEVATION
543 bool mUntitled = false; // Slice Y — never saved
544 bool mClosePromptActive = false; // re-entrancy guard for closeEvent's prompt
545 bool mClosing = false; // see isClosing()
546 QStringList mLastSaveWarnings; // delta across the last successful engine write
547 QString mEngineVersion = "6.0.0"; // Default to newest version
548 QString mNotesHtml; // [TITLE] notes (rich HTML)
549 QJsonArray mPending2DResultsRestore; // .oswp 2D results entries
550
551 OpenSWMMVisMapToolPan *mPanTool = nullptr;
552 OpenSWMMVisMapToolZoom *mZoomInTool = nullptr;
553 OpenSWMMVisMapToolZoom *mZoomOutTool = nullptr;
554 OpenSWMMVisMapToolSelect *mSelectTool = nullptr;
555 OpenSWMMVisMapToolSelectPolygon *mSelectPolygonTool = nullptr;
556 OpenSWMMVisMapToolMeasure *mMeasureTool = nullptr;
557 class OpenSWMMVisMapToolSelectProfile *mSelectProfileTool = nullptr;
558 OpenSWMMVisMapToolAddNode *mAddJunctionTool = nullptr;
559 OpenSWMMVisMapToolAddVirtualNode *mAddVirtualJunctionTool = nullptr;
560 class OpenSWMMVisMapToolAddInletNode *mAddInletJunctionTool = nullptr;
561 OpenSWMMVisMapToolAddNode *mAddOutfallTool = nullptr;
562 OpenSWMMVisMapToolAddNode *mAddStorageTool = nullptr;
563 OpenSWMMVisMapToolAddNode *mAddDividerTool = nullptr;
564 OpenSWMMVisMapToolAddLink *mAddConduitTool = nullptr;
565 OpenSWMMVisMapToolAddLink *mAddPumpTool = nullptr;
566 OpenSWMMVisMapToolAddLink *mAddOrificeTool = nullptr;
567 OpenSWMMVisMapToolAddLink *mAddWeirTool = nullptr;
568 OpenSWMMVisMapToolAddLink *mAddOutletTool = nullptr;
569 OpenSWMMVisMapToolAddGage *mAddGageTool = nullptr;
570 OpenSWMMVisMapToolAddSubcatchment *mAddSubcatchTool = nullptr;
571 OpenSWMMVisMapToolAddText *mAddTextTool = nullptr;
572 OpenSWMMVisAnnotationLayer *mAnnotationLayer = nullptr;
573 class MapToolPick2DCells *mPick2DCellsTool = nullptr;
574 class MapToolMeshProfile *mMeshProfileTool = nullptr;
575 class MapToolMeshProfile *mAnalysisMeshProfileTool = nullptr;
576 class MapToolMeshProfile *mTerrainProfileTool = nullptr;
577 class MapToolMeshSelectVertex *mMeshSelectVertexTool = nullptr;
578 class MapToolMeshSelectEdge *mMeshSelectEdgeTool = nullptr;
579
580 // Measure tool floating panel (child of mCanvas)
581 QFrame *mMeasurePanel = nullptr;
582 QComboBox *mMeasureModeCombo = nullptr;
583 QComboBox *mMeasureUnitCombo = nullptr;
584 QLabel *mMeasureTotalLabel = nullptr;
585
586 bool mAutoLengthEnabled = false;
587
588 // Slice QA.2 — output identity registry. Owned via QObject parent
589 // (constructed with `this` as parent in the .cpp constructor) so
590 // it follows the project window's lifetime.
591 openswmmvis::OutputStatsRegistry *mStatsRegistry = nullptr;
592
593 // Active analysis layers (results-analysis demarcation). QPointer so a
594 // layer destroyed/removed from the canvas auto-nulls the active pointer
595 // without a dangling reference.
596 QPointer<SWMMResultsLayer> mActiveResultsLayer;
597 QPointer<SWMM2DResultsLayer> mActive2DResultsLayer;
598
599 // Terrain editing state (per-project, persisted to .oswp)
600 GISRasterLayer *mActiveTerrain = nullptr;
601 double mTerrainNodeOffset = 0.0;
602 double mTerrainLinkOffset = 0.0;
603 QString mTerrainVertUnit = QStringLiteral("m"); // raster vertical unit
604 double mTerrainVertFactor = 1.0; // rasterUnit → modelUnit
605};
606
607#endif // SWMMVISPROJECTWINDOW_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
Definition maptoolmeshprofile.h:35
Definition maptoolmeshselectedge.h:45
Definition maptoolmeshselectvertex.h:38
Definition maptoolpick2dcells.h:43
Weighted, monotonic progress aggregator for one project open.
Definition loadprogress.h:114
Definition annotationlayer.h:30
Definition maptooladdgage.h:17
Left-click a STREET conduit to split it and insert an inlet junction at the picked point.
Definition maptooladdinletnode.h:44
Left-click on the canvas to place a new SWMM node.
Definition maptooladdnode.h:50
Click-to-place polygon vertices; double-click to close and commit.
Definition maptooladdsubcatchment.h:33
Definition maptooladdtext.h:21
Left-click a conduit to split it and insert a virtual junction at the picked point.
Definition maptooladdvirtualnode.h:34
Abstract base class for interactive map tools used in the MapCanvas.
Definition maptool.h:43
Interactive tool for measuring geodesic distances or areas on the map.
Definition maptoolmeasure.h:47
Tool that pans the map canvas by click-dragging.
Definition maptoolpan.h:25
Tool that selects features in vector and SWMM model layers.
Definition maptoolselect.h:41
Selects SWMM model features enclosed by a user-drawn polygon.
Definition maptoolselectpolygon.h:35
Definition maptoolselectprofile.h:40
Tool that zooms the map canvas by rubber-band rectangle or mouse wheel.
Definition maptoolzoom.h:28
Top-level project container managing sessions, the SWMM model layer, and persistence paths for one SW...
Definition openswmmvisworkspace.h:42
Definition swmm2dmeshlayer.h:64
Definition swmm2dresultslayer.h:550
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
Overlays time-stepped simulation results on the SWMM network geometry.
Definition swmmresultslayer.h:96
MDI sub-window owning a MapCanvas, SWMMModelLayer, and map tools.
Definition swmmvisprojectwindow.h:58
OpenSWMMVisAnnotationLayer * ensureAnnotationLayer()
Definition swmmvisprojectwindow.cpp:2005
void editSessionChanged(bool active)
void meshProfileTraced(const QVector< QPointF > &scenePolyline)
void autoLengthChanged(bool enabled)
bool hasModelLayer() const
Definition swmmvisprojectwindow.cpp:1969
void reloadElevationOffsetModeFromEngine()
Definition swmmvisprojectwindow.cpp:553
UnitSystem * unitSystem() const
Definition swmmvisprojectwindow.cpp:550
void activateAddWeirTool()
Definition swmmvisprojectwindow.cpp:1993
void activateAddJunctionTool()
Definition swmmvisprojectwindow.cpp:1984
void setActive2DResultsLayer(SWMM2DResultsLayer *layer)
Definition swmmvisprojectwindow.cpp:2109
bool save(QString *errorOut=nullptr)
Save the model to its current path or to a new path.
Definition swmmvisprojectwindow.cpp:1321
SWMMResultsLayer * activeResultsLayer() const
Definition swmmvisprojectwindow.cpp:2087
void activateSelectByPolygonTool()
Definition swmmvisprojectwindow.cpp:1869
SWMM2DResultsLayer * active2DResultsLayer() const
Definition swmmvisprojectwindow.cpp:2092
void hasChangesChanged(bool dirty)
bool hasMeshLayer() const
Definition swmmvisprojectwindow.cpp:1977
void activeResultsLayerChanged(SWMMResultsLayer *layer)
void loadModelAsync(class OpenProgressModel *progress=nullptr)
Non-blocking variant of loadModel().
Definition swmmvisprojectwindow.cpp:617
void setHasChanges(bool dirty)
Definition swmmvisprojectwindow.cpp:995
bool initializeBlankModel(const SWMMModelLayer::NewProjectSpec &spec, QList< QString > &warnings, QList< QString > &errors)
In-memory File → New: build a blank BUILDING-state engine from spec (SWMMModelLayer::adoptNewEngine) ...
Definition swmmvisprojectwindow.cpp:1304
void activatePick2DCellsTool()
Definition swmmvisprojectwindow.cpp:1871
SWMMModelLayer * modelLayer() const
Definition swmmvisprojectwindow.cpp:549
void closeEvent(QCloseEvent *event) override
Definition swmmvisprojectwindow.cpp:1759
void activateMeshSelectEdgeTool()
Definition swmmvisprojectwindow.cpp:1892
void markUntitled()
Definition swmmvisprojectwindow.cpp:1298
void convertLinkOffsets(bool toElevation, bool convertValues)
Definition swmmvisprojectwindow.cpp:581
void meshImportFinished(bool ok, const QString &message, const QString &meshPath)
double terrainNodeOffset() const
Definition swmmvisprojectwindow.h:387
void setEditSessionActive(bool active)
Definition swmmvisprojectwindow.cpp:1278
void activateZoomOutTool()
Definition swmmvisprojectwindow.cpp:1862
void zoomToFullExtent()
Definition swmmvisprojectwindow.cpp:2017
void activateAddConduitTool()
Definition swmmvisprojectwindow.cpp:1990
void active2DResultsLayerChanged(SWMM2DResultsLayer *layer)
void setNotesHtml(const QString &html)
Definition swmmvisprojectwindow.h:368
void meshVertexSeriesRequested(class SWMM2DMeshLayer *mesh, const QVector< int > &vertexIdxList, const QVector< openswmmvis::plot::PlotAttribute > &attrs)
bool isEditSessionActive() const
Definition swmmvisprojectwindow.h:179
MapCanvas * canvas() const
Definition swmmvisprojectwindow.cpp:548
void activateAddVirtualJunctionTool()
Definition swmmvisprojectwindow.cpp:1985
void importMeshFileAsync(const QString &srcPath)
Browse-and-load an existing SWMMVis 2D mesh (.2dm) into this project.
Definition swmmvisprojectwindow.cpp:1031
bool isAutoLengthEnabled() const
Definition swmmvisprojectwindow.h:357
void setTerrainLinkOffset(double offset)
Definition swmmvisprojectwindow.cpp:2194
QStringList lastSaveWarnings() const
Definition swmmvisprojectwindow.h:170
void activateSelectProfileTool()
Definition swmmvisprojectwindow.cpp:1910
class openswmmvis::OutputStatsRegistry * statsRegistry() const
Definition swmmvisprojectwindow.h:287
void activateAddOutletTool()
Definition swmmvisprojectwindow.cpp:1994
void activateAddStorageTool()
Definition swmmvisprojectwindow.cpp:1988
QString terrainVerticalUnit() const
Definition swmmvisprojectwindow.h:406
class OpenSWMMVisMapToolAddVirtualNode * addVirtualJunctionTool() const
Definition swmmvisprojectwindow.h:258
void activateAddInletJunctionTool()
Definition swmmvisprojectwindow.cpp:1986
void setElevationOffsetMode(bool elevation)
Definition swmmvisprojectwindow.cpp:565
class OpenSWMMVisMapToolSelectProfile * selectProfileTool() const
Definition swmmvisprojectwindow.h:253
bool hasChanges() const
Definition swmmvisprojectwindow.h:173
void activateMeshSelectVertexTool()
Definition swmmvisprojectwindow.cpp:1882
SelectionManager * selectionManager() const
Definition swmmvisprojectwindow.cpp:551
void terrainProfileTraced(const QVector< QPointF > &scenePolyline)
void activateMeshProfileTool()
Definition swmmvisprojectwindow.cpp:1918
bool saveAs(const QString &newPath, QString *errorOut=nullptr)
Definition swmmvisprojectwindow.cpp:1334
void activateAddGageTool()
Definition swmmvisprojectwindow.cpp:1995
bool loadModel(QList< QString > &warnings, QList< QString > &errors)
Definition swmmvisprojectwindow.cpp:610
void saveCompletedWithEngineWarnings(const QStringList &warnings)
QList< OpenSWMMVisMapToolAddNode * > addNodeTools() const
Definition swmmvisprojectwindow.h:264
void modelLoadFinished(bool ok, const QList< QString > &warnings, const QList< QString > &errors)
bool eventFilter(QObject *watched, QEvent *event) override
Definition swmmvisprojectwindow.cpp:1709
bool isElevationOffsetMode() const
Definition swmmvisprojectwindow.h:76
void activateZoomInTool()
Definition swmmvisprojectwindow.cpp:1861
void modelLoadError(const QString &msg)
double terrainLinkOffset() const
Definition swmmvisprojectwindow.h:390
void offsetModeChanged(bool elevation)
void activateSelectTool()
Definition swmmvisprojectwindow.cpp:1863
void activatePanTool()
Definition swmmvisprojectwindow.cpp:1860
OpenSWMMVisAnnotationLayer * annotationLayer() const
Definition swmmvisprojectwindow.h:349
bool isUntitled() const
Definition swmmvisprojectwindow.h:187
void restoreTerrainState(const QString &absoluteLayerPath, double nodeOffset, double linkOffset, const QString &vertUnit=QString())
Restores terrain state from a persisted .oswp session. Called by ProjectSerializer::applySession afte...
Definition swmmvisprojectwindow.cpp:2249
void setActiveTerrain(GISRasterLayer *layer)
Sets the active terrain raster and propagates it to all add-node and add-link tools owned by this win...
Definition swmmvisprojectwindow.cpp:2157
void pick2DCellsPicked(class SWMM2DResultsLayer *layer, const QVector< int > &triIdxList, const QVector< openswmmvis::plot::PlotAttribute > &attrs)
void activateAddOutfallTool()
Definition swmmvisprojectwindow.cpp:1987
class OpenSWMMVisMapToolSelect * selectTool() const
Definition swmmvisprojectwindow.h:248
class MapToolPick2DCells * pick2DCellsTool() const
Definition swmmvisprojectwindow.h:275
void attachMeshLayer(class SWMM2DMeshLayer *meshLayer, bool pristine=false)
Subscribe a 2D mesh layer's edit signals to the project's dirty flag.
Definition swmmvisprojectwindow.cpp:1004
QJsonArray pending2DResultsRestore() const
Definition swmmvisprojectwindow.h:324
bool isClosing() const
Definition swmmvisprojectwindow.h:193
void changeEvent(QEvent *event) override
Definition swmmvisprojectwindow.cpp:1849
GISRasterLayer * activeTerrain() const
Definition swmmvisprojectwindow.h:378
void meshEdgeStatusMessage(const QString &message)
void activateAddSubcatchmentTool()
Definition swmmvisprojectwindow.cpp:1996
void setTerrainVerticalUnit(const QString &unit)
Sets the terrain raster's vertical unit and updates the conversion factor applied when computing node...
Definition swmmvisprojectwindow.cpp:2207
void setPending2DResultsRestore(const QJsonArray &entries)
Definition swmmvisprojectwindow.h:322
QHash< class OpenSWMMVisMapTool *, QString > toolActionKeys() const
Definition swmmvisprojectwindow.cpp:2019
void setEngineVersion(const QString &version)
Definition swmmvisprojectwindow.cpp:2074
class OpenSWMMVisMapToolAddInletNode * addInletJunctionTool() const
Definition swmmvisprojectwindow.h:269
void activateAddPumpTool()
Definition swmmvisprojectwindow.cpp:1991
void activateAddTextTool()
Definition swmmvisprojectwindow.cpp:1997
double terrainVertFactor() const
Definition swmmvisprojectwindow.h:384
void activateAddDividerTool()
Definition swmmvisprojectwindow.cpp:1989
QString notesHtml() const
Definition swmmvisprojectwindow.h:367
void setTerrainNodeOffset(double offset)
Definition swmmvisprojectwindow.cpp:2181
void activateTerrainProfileTool()
Definition swmmvisprojectwindow.cpp:1951
void clearPending2DResultsRestore()
Definition swmmvisprojectwindow.h:326
void analysisMeshProfileTraced(const QVector< QPointF > &scenePolyline)
void setActiveResultsLayer(SWMMResultsLayer *layer)
Definition swmmvisprojectwindow.cpp:2097
QString engineVersion() const
Definition swmmvisprojectwindow.h:361
void activateMeasureTool()
Definition swmmvisprojectwindow.cpp:1903
void meshEdgeFluxRequested(class SWMM2DMeshLayer *mesh, int triIdx, int edgeLocal, openswmmvis::plot::PlotAttribute attr)
~SWMMVisProjectWindow() override
QString activeTerrainLayerPath() const
Definition swmmvisprojectwindow.cpp:2082
class MapToolMeshProfile * meshProfileTool() const
Definition swmmvisprojectwindow.h:278
void activateAnalysisMeshProfileTool()
Definition swmmvisprojectwindow.cpp:1934
void setAutoLengthEnabled(bool enabled)
Definition swmmvisprojectwindow.cpp:2063
void activeTerrainChanged(GISRasterLayer *newTerrain)
void activateAddOrificeTool()
Definition swmmvisprojectwindow.cpp:1992
Owner of the canonical selection set for one SWMM project.
Definition selectionmanager.h:112
Per-project flow-units state + label helpers.
Definition unitsystem.h:28
Definition outputstatsregistry.h:70
bool ok
Definition inpmeshwriter.cpp:575
Definition meshcommands.h:302
PlotAttribute
What a series plots. One row per attribute in the Nx2 grid.
Definition plotattribute.h:38
Definition aquiferprovider.h:21
Slice BL — canonical enumeration of plottable result attributes.
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString message
Definition queryparser.cpp:150
Everything a blank untitled project needs — the in-memory replacement for the synthetic temp ....
Definition swmmmodellayer.h:296
Map layer that renders an OpenSWMMEngine network (nodes, links, subcatchments, rain gages) and provid...