17#ifndef PROFILE_PLOT_DIALOG_H
18#define PROFILE_PLOT_DIALOG_H
84 QWidget *
parent =
nullptr);
102 void showEvent(QShowEvent *event)
override;
109 bool eventFilter(QObject *watched, QEvent *event)
override;
128 void rebindSources();
134 void onAnimationTimeChanged(
const QDateTime &dt);
139 void onSourceActionToggled();
143 void populateSourcesPanel();
150 void buildAttributeTracksUi(
class QToolBar *toolbar);
155 void rebuildTracks();
159 void updateTracksPaneVisibility();
164 void ensureTracksPaneExpanded();
168 void syncTracksAxes();
175 void syncTracksGutter();
184 void rebuildTerrainSamples();
192 void forEachPathStation(
193 const std::function<
void(
double,
double,
double)> &fn)
const;
198 void forEachPathStationScene(
199 const std::function<
void(
double,
const QPointF &)> &fn)
const;
209 QPointer<class SWMM2DMeshLayer> m_groundMesh;
216 struct Surface2DStation
218 double chainage = 0.0;
231 void rebuildSurface2DStations();
235 void refreshSurface2DDepths();
237 QVector<Surface2DStation> m_surface2D;
238 QPointer<class SWMM2DResultsLayer> m_surface2DLayer;
239 QAction *m_actShow2D =
nullptr;
241 QPointer<SWMMModelLayer> m_model;
242 QPointer<MapCanvas> m_canvas;
243 QPointer<SWMMVisProjectWindow> m_projectWindow;
244 QPointer<AnimationController> m_anim;
253 QSet<SWMMVisProjectWindow *> m_observedProjects;
260 QToolButton *m_sourceButton =
nullptr;
261 QMenu *m_sourceMenu =
nullptr;
262 QProgressBar *m_loadingBar =
nullptr;
263 int m_loadCookie = 0;
269 QScrollArea *m_tracksScroll =
nullptr;
270 QWidget *m_plotHolder =
nullptr;
271 QSplitter *m_profileSplit =
nullptr;
272 QMenu *m_tracksMenu =
nullptr;
273 QAction *m_actShowTracks =
nullptr;
277 QAction *m_tracksLinkSection =
nullptr;
280 QList<QAction *> m_speciesTrackActions;
281 int m_trackLoadCookie = 0;
282 bool m_syncingX =
false;
283 QList<int> m_lastSplitSizes;
287 void refreshTracksMenuSpecies();
294 QHash<QPair<SWMMResultsLayer *, QString>,
295 std::shared_ptr<const ProfileAttributeSampler::AttributeProfile>>
300 QTimer m_liveTracksThrottle;
301 bool m_liveTracksPending =
false;
302 bool m_liveTracksWired =
false;
303 QPointer<SWMMResultsLayer> m_liveTracksLayer;
306 QHash<QAction *, QPointer<SWMMResultsLayer>> m_actionLayer;
316 std::shared_ptr<ProfileBuilder::SourceDerived>> m_sourceCache;
322 std::shared_ptr<ProfileBuilder::SourceSeries>> m_sourceSeriesCache;
326 int m_rebindsInFlight = 0;
327 QSet<SWMMResultsLayer *> m_cacheWired;
355 bool pushEditedPlotStylesToSources();
359 struct PlotStyleSnapshot {
364 QBrush maxHglFillBrush;
Central coordinator for result-layer time-stepping and playback.
Definition animationcontroller.h:43
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 profileattributetrackoptions.h:35
Definition profilelayerpanel.h:31
Definition profileplotdialog.h:62
bool eventFilter(QObject *watched, QEvent *event) override
Watches the tracks widget for resizes so the profile's right gutter can absorb the tracks scroll area...
Definition profileplotdialog.cpp:1959
void showEvent(QShowEvent *event) override
After DialogLayoutWatcher restores the splitter state on this first Show, makes sure a shown attribut...
Definition profileplotdialog.cpp:1945
void plotAttributeRequested(const SWMMObjectRef &ref, const openswmmvis::plot::ResultDescriptor &descriptor)
Emitted when the user picks a specific variable from the "Plot Time Series…" submenu on a node / link...
~ProfilePlotDialog() override
Sever every external signal/slot connection while children are still alive so that any cross-window t...
Definition profileplotdialog.cpp:189
Definition profileplotoptions.h:28
GroundSource
Ground-line source. Auto resolves to Mesh2D when the project has a 2D mesh layer, else NodeRims.
Definition profileplotoptions.h:79
@ NodeRims
Definition profileplotoptions.h:79
Definition swmm2dmeshlayer.h:64
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
Represents a coordinate reference system backed by a GDAL OGRSpatialReference.
Definition spatialreferencesystem.h:28
Slice BL — canonical enumeration of plottable result attributes.
Attribute-tracks feature — fetches an along-the-path profile of one generic result attribute (node de...
Pure-logic data assembly for Slice BC's longitudinal profile plot: chainage, HGL/EGL time-series,...
Q_OBJECT facade for every user-configurable display option on the profile plot. Both the per-dialog L...
Path-routing primitives over an abstract weighted graph, used by Slice BC's profile-path picker.
EdgeRef ref
Definition pslgminsize.cpp:377
int path
Definition pslgminsize.cpp:234
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Y2b-1 (amendment D-Y4) — one plottable result, fixed or species.
A fully-resolved profile path: ordered nodes, joining links, and cumulative chainage from nodes[0] to...
Definition profilebuilder.h:242
A single candidate path: ordered node sequence (length N+1) of engine node indices,...
Definition profilerouter.h:80
Identifies a single SWMM object.
Definition selectionmanager.h:32
One plottable result: a fixed attribute OR a species by name.
Definition resultdescriptor.h:39