32#ifndef OPENSWMMVIS_UI_WIDGETS_TIMESERIESEDITCHARTVIEW_H
33#define OPENSWMMVIS_UI_WIDGETS_TIMESERIESEDITCHARTVIEW_H
50class TimeseriesProvider;
55class ChartAxisFormatController;
71 QWidget *
parent =
nullptr);
87 QUndoStack *
undoStack() const noexcept {
return m_undoStack; }
118 int hitTestPoint(
const QPoint &viewportPx,
int hitRadiusPx = 6)
const;
141 void onProviderPointsChanged_(
int firstIndex,
int count);
142 void onProviderPointsInserted_(
int at,
int count);
143 void onProviderPointsRemoved_(
int at,
int count);
148 static QChart *buildChart_();
151 void refreshSeriesFromProvider_();
154 void refreshSelectionOverlay_();
157 QPointF viewportToValue_(
const QPoint &px)
const;
160 bool isEditingAllowed_()
const;
162 QPointer<openswmmvis::timeseries::TimeseriesProvider> m_provider;
163 QUndoStack *m_undoStack =
nullptr;
165 QLineSeries *m_line =
nullptr;
166 QScatterSeries *m_scatter =
nullptr;
167 QScatterSeries *m_selectedScatter =
nullptr;
169 QValueAxis *m_yAxis =
nullptr;
177 bool m_pointDragging =
false;
178 bool m_rubberSelecting =
false;
180 double m_pressValueY = 0.0;
181 QVector<int> m_dragIndices;
182 QVector<double> m_dragInitialValues;
184 QVector<int> m_selection;
185 QRubberBand *m_selectionBand =
nullptr;
Definition utctimeaxis.h:57
Definition timeseriesprovider.h:43
Definition interactivechartview.h:43
Definition timeserieseditchartview.h:58
void setSnapToTimeStep(bool on) noexcept
Definition timeserieseditchartview.h:101
EditMode editMode() const noexcept
Definition timeserieseditchartview.h:95
~TimeseriesEditChartView() override
void clearSelection()
Definition timeserieseditchartview.cpp:248
void mouseMoveEvent(QMouseEvent *e) override
Definition timeserieseditchartview.cpp:368
void selectionChanged(const QVector< int > &indices)
Emitted after the selection set changes.
EditMode
Definition timeserieseditchartview.h:62
@ RotatePoints
Stub (follow-up).
@ ScalePoints
Stub (follow-up).
@ None
Base modes only (Select / Pan / Zoom).
@ EditPoints
Y-drag single + multi; rubber-band select; context insert/delete.
void zoomToExtent()
Fit the X and Y axes to the full extent of the provider's current points, with a small Y-padding....
Definition timeserieseditchartview.cpp:215
int hitTestPoint(const QPoint &viewportPx, int hitRadiusPx=6) const
Public for tests — convert a viewport pixel to the nearest point index, or -1 if no point lies within...
Definition timeserieseditchartview.cpp:298
void setSelection(QVector< int > indices)
Definition timeserieseditchartview.cpp:256
void setEditMode(EditMode m)
Definition timeserieseditchartview.cpp:144
void mousePressEvent(QMouseEvent *e) override
Definition timeserieseditchartview.cpp:323
void setProvider(openswmmvis::timeseries::TimeseriesProvider *p)
Rebind the chart to a different provider (or null to clear). Disconnects from the old provider's sign...
Definition timeserieseditchartview.cpp:122
void editModeChanged(EditMode m)
Emitted when the edit mode changes.
QUndoStack * undoStack() const noexcept
Definition timeserieseditchartview.h:87
int snapStepSeconds() const noexcept
Snap step in seconds (default 300 = 5 min).
Definition timeserieseditchartview.h:104
bool snapToTimeStep() const noexcept
Definition timeserieseditchartview.h:100
void setSnapStepSeconds(int secs) noexcept
Definition timeserieseditchartview.h:105
void contextMenuEvent(QContextMenuEvent *e) override
Definition timeserieseditchartview.cpp:444
QVector< int > selectedIndices() const
Currently-selected point indices, ascending.
Definition timeserieseditchartview.h:110
void setAxisFormatController(ChartAxisFormatController *c)
Bind the per-chart axis number-format controller so the context menu can offer "Chart Properties…"....
Definition timeserieseditchartview.h:91
void setUndoStack(QUndoStack *stack)
Bind the undo stack for committed edits. Null = apply directly.
Definition timeserieseditchartview.cpp:139
void mouseReleaseEvent(QMouseEvent *e) override
Definition timeserieseditchartview.cpp:391
openswmmvis::timeseries::TimeseriesProvider * provider() const noexcept
Definition timeserieseditchartview.cpp:117
int e
Definition inpmeshreader.cpp:41
Slice AT.2 — QChartView subclass with Select / Pan / ZoomIn / ZoomOut modes mirroring ProfilePlotDial...
ArrowPlacement p
Definition linesymbollayer.cpp:27
MaskMode m
Definition maskspec.cpp:18
Definition chartproperties.h:34
Definition timeseriesprovider.h:34
Definition openswmmvislayer.h:43
Definition aquiferprovider.h:21
QVector< int > parent
union-find
Definition pslgminsize.cpp:176