diff --git a/gui/include/Visualization/VisualizationGraphRenderingDelegate.h b/gui/include/Visualization/VisualizationGraphRenderingDelegate.h index 7bdd366..0874972 100644 --- a/gui/include/Visualization/VisualizationGraphRenderingDelegate.h +++ b/gui/include/Visualization/VisualizationGraphRenderingDelegate.h @@ -5,10 +5,14 @@ class QCustomPlot; class QMouseEvent; +class VisualizationGraphWidget; class VisualizationGraphRenderingDelegate { public: - explicit VisualizationGraphRenderingDelegate(QCustomPlot &plot); + /// Ctor + /// @param graphWidget the graph widget to which the delegate is associated + /// @remarks the graph widget must exist throughout the life cycle of the delegate + explicit VisualizationGraphRenderingDelegate(VisualizationGraphWidget &graphWidget); void onMouseMove(QMouseEvent *event) noexcept; diff --git a/gui/include/Visualization/VisualizationGraphWidget.h b/gui/include/Visualization/VisualizationGraphWidget.h index c40ee8b..b695f09 100644 --- a/gui/include/Visualization/VisualizationGraphWidget.h +++ b/gui/include/Visualization/VisualizationGraphWidget.h @@ -13,6 +13,7 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_VisualizationGraphWidget) class QCPRange; +class QCustomPlot; class SqpRange; class Variable; @@ -23,6 +24,8 @@ class VisualizationGraphWidget; class VisualizationGraphWidget : public QWidget, public IVisualizationWidget { Q_OBJECT + friend class VisualizationGraphRenderingDelegate; + public: explicit VisualizationGraphWidget(const QString &name = {}, QWidget *parent = 0); virtual ~VisualizationGraphWidget(); @@ -52,10 +55,11 @@ signals: void requestDataLoading(QVector > variable, const SqpRange &range, const SqpRange &oldRange, bool synchronise); - void variableAdded(std::shared_ptr var); + QCustomPlot &plot() noexcept; + private: Ui::VisualizationGraphWidget *ui; diff --git a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp index b7b25ee..ddd5e22 100644 --- a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp +++ b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp @@ -1,4 +1,5 @@ #include "Visualization/VisualizationGraphRenderingDelegate.h" +#include "Visualization/VisualizationGraphWidget.h" #include "Visualization/qcustomplot.h" #include @@ -42,8 +43,10 @@ void initPointTracerStyle(QCPItemTracer &tracer) noexcept } // namespace struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegatePrivate { - explicit VisualizationGraphRenderingDelegatePrivate(QCustomPlot &plot) - : m_Plot{plot}, m_PointTracer{new QCPItemTracer{&plot}}, m_TracerTimer{} + explicit VisualizationGraphRenderingDelegatePrivate(VisualizationGraphWidget &graphWidget) + : m_Plot{graphWidget.plot()}, + m_PointTracer{new QCPItemTracer{&m_Plot}}, + m_TracerTimer{}, { initPointTracerStyle(*m_PointTracer); @@ -56,8 +59,9 @@ struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegateP QTimer m_TracerTimer; }; -VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate(QCustomPlot &plot) - : impl{spimpl::make_unique_impl(plot)} +VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate( + VisualizationGraphWidget &graphWidget) + : impl{spimpl::make_unique_impl(graphWidget)} { } diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index d8eebb6..537ec36 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -204,6 +204,11 @@ QString VisualizationGraphWidget::name() const return impl->m_Name; } +QCustomPlot &VisualizationGraphWidget::plot() noexcept +{ + return *ui->widget; +} + void VisualizationGraphWidget::onGraphMenuRequested(const QPoint &pos) noexcept { QMenu graphMenu{};