30#ifndef OPENSWMMVIS_UI_WIDGETS_CURVEEDITCHARTVIEW_H
31#define OPENSWMMVIS_UI_WIDGETS_CURVEEDITCHARTVIEW_H
52class ChartAxisFormatController;
69 QLineSeries *referenceSeries,
70 QWidget *
parent =
nullptr);
80 QUndoStack *
undoStack() const noexcept {
return m_undoStack; }
93 bool lockX() const noexcept {
return m_lockX; }
94 bool lockY() const noexcept {
return m_lockY; }
108 int hitTestPoint(
const QPoint &viewportPx,
int hitRadiusPx = 8)
const;
123 void onProviderPointsChanged_();
126 void refreshSelectionOverlay_();
127 QPointF viewportToValue_(
const QPoint &px)
const;
129 QPointer<openswmmvis::curve::CurveProvider> m_provider;
130 QUndoStack *m_undoStack =
nullptr;
131 QLineSeries *m_referenceSeries =
nullptr;
132 QScatterSeries *m_selectedScatter =
nullptr;
136 bool m_lockX =
false;
137 bool m_lockY =
false;
140 bool m_pointDragging =
false;
141 bool m_rubberSelecting =
false;
143 QPointF m_pressValue;
144 QVector<int> m_dragIndices;
145 QVector<openswmmvis::curve::CurvePoint> m_dragInitial;
147 QVector<int> m_selection;
148 QRubberBand *m_selectionBand =
nullptr;
Definition curveprovider.h:56
Definition curveeditchartview.h:55
void lockXChanged(bool on)
void setUndoStack(QUndoStack *stack)
Bind the undo stack for drag-completion commands.
Definition curveeditchartview.cpp:81
bool lockX() const noexcept
Definition curveeditchartview.h:93
void setLockX(bool on)
Definition curveeditchartview.cpp:90
void lockYChanged(bool on)
void setEditMode(EditMode m)
Definition curveeditchartview.cpp:83
void mouseReleaseEvent(QMouseEvent *e) override
Definition curveeditchartview.cpp:250
void contextMenuEvent(QContextMenuEvent *e) override
Definition curveeditchartview.cpp:320
void editModeChanged(EditMode m)
int hitTestPoint(const QPoint &viewportPx, int hitRadiusPx=8) const
Public for tests — convert a viewport pixel to the nearest point index, or -1 if no point lies within...
Definition curveeditchartview.cpp:160
openswmmvis::curve::CurveProvider * provider() const noexcept
Definition curveeditchartview.cpp:59
QUndoStack * undoStack() const noexcept
Definition curveeditchartview.h:80
void selectionChanged(const QVector< int > &indices)
void clearSelection()
Definition curveeditchartview.cpp:137
bool lockY() const noexcept
Definition curveeditchartview.h:94
void setLockY(bool on)
Definition curveeditchartview.cpp:97
void mouseMoveEvent(QMouseEvent *e) override
Definition curveeditchartview.cpp:223
EditMode editMode() const noexcept
Definition curveeditchartview.h:88
EditMode
Definition curveeditchartview.h:59
@ None
Base modes only (Select / Pan / Zoom).
@ EditPoints
Drag vertex (X/Y per axis locks); rubber-band multi-select.
void setProvider(openswmmvis::curve::CurveProvider *p)
Definition curveeditchartview.cpp:64
void setSelection(QVector< int > indices)
Definition curveeditchartview.cpp:145
~CurveEditChartView() override
void mousePressEvent(QMouseEvent *e) override
Definition curveeditchartview.cpp:182
void setAxisFormatController(ChartAxisFormatController *c)
Bind the per-chart axis number-format controller so the context menu can offer "Chart Properties…"....
Definition curveeditchartview.h:84
QVector< int > selectedIndices() const
Definition curveeditchartview.h:100
Definition interactivechartview.h:43
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 curveprovider.h:31
Definition openswmmvislayer.h:43
Definition aquiferprovider.h:21
QVector< int > parent
union-find
Definition pslgminsize.cpp:176