From 4ab6e8aca5343bc13956fb59e02593dedcc2116b 2017-11-24 10:07:06 From: Alexandre Leroux Date: 2017-11-24 10:07:06 Subject: [PATCH] Handles double click on color scale The action opens the color scale editor --- diff --git a/gui/include/Visualization/VisualizationGraphRenderingDelegate.h b/gui/include/Visualization/VisualizationGraphRenderingDelegate.h index b17a1ec..f8b54d3 100644 --- a/gui/include/Visualization/VisualizationGraphRenderingDelegate.h +++ b/gui/include/Visualization/VisualizationGraphRenderingDelegate.h @@ -18,6 +18,7 @@ public: /// @remarks the graph widget must exist throughout the life cycle of the delegate explicit VisualizationGraphRenderingDelegate(VisualizationGraphWidget &graphWidget); + void onMouseDoubleClick(QMouseEvent *event) noexcept; void onMouseMove(QMouseEvent *event) noexcept; /// Sets properties of the plot's axes from the data series passed as parameter diff --git a/gui/include/Visualization/VisualizationGraphWidget.h b/gui/include/Visualization/VisualizationGraphWidget.h index 19a4cc3..be9f91b 100644 --- a/gui/include/Visualization/VisualizationGraphWidget.h +++ b/gui/include/Visualization/VisualizationGraphWidget.h @@ -104,6 +104,8 @@ private slots: /// Rescale the X axe to range parameter void onRangeChanged(const QCPRange &t1, const QCPRange &t2); + /// Slot called when a mouse double click was made + void onMouseDoubleClick(QMouseEvent *event) noexcept; /// Slot called when a mouse move was made void onMouseMove(QMouseEvent *event) noexcept; /// Slot called when a mouse wheel was made, to perform some processing before the zoom is done diff --git a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp index 735a107..6bf0c1e 100644 --- a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp +++ b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp @@ -1,5 +1,6 @@ #include "Visualization/VisualizationGraphRenderingDelegate.h" #include "Visualization/AxisRenderingUtils.h" +#include "Visualization/ColorScaleEditor.h" #include "Visualization/PlottablesRenderingUtils.h" #include "Visualization/VisualizationGraphWidget.h" #include "Visualization/qcustomplot.h" @@ -172,6 +173,15 @@ VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate( { } +void VisualizationGraphRenderingDelegate::onMouseDoubleClick(QMouseEvent *event) noexcept +{ + // Opens color scale editor if color scale is double clicked + if (auto colorScale + = dynamic_cast(impl->m_Plot.layoutElementAt(event->pos()))) { + ColorScaleEditor{}.exec(); + } +} + void VisualizationGraphRenderingDelegate::onMouseMove(QMouseEvent *event) noexcept { // Cancels pending refresh diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index 532c09a..95f2cf0 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -141,6 +141,8 @@ VisualizationGraphWidget::VisualizationGraphWidget(const QString &name, QWidget &VisualizationGraphWidget::onMouseRelease); connect(ui->widget, &QCustomPlot::mouseMove, this, &VisualizationGraphWidget::onMouseMove); connect(ui->widget, &QCustomPlot::mouseWheel, this, &VisualizationGraphWidget::onMouseWheel); + connect(ui->widget, &QCustomPlot::mouseDoubleClick, this, + &VisualizationGraphWidget::onMouseDoubleClick); connect(ui->widget->xAxis, static_cast( &QCPAxis::rangeChanged), this, &VisualizationGraphWidget::onRangeChanged, Qt::DirectConnection); @@ -476,6 +478,11 @@ void VisualizationGraphWidget::onRangeChanged(const QCPRange &t1, const QCPRange } } +void VisualizationGraphWidget::onMouseDoubleClick(QMouseEvent *event) noexcept +{ + impl->m_RenderingDelegate->onMouseDoubleClick(event); +} + void VisualizationGraphWidget::onMouseMove(QMouseEvent *event) noexcept { // Handles plot rendering when mouse is moving