From f51921491cfc2bf3b196bb36ea4e58fd828705d1 Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Sat, 16 Apr 2016 20:26:44 +0100 Subject: [PATCH] plotview: Context menu for adding plots --- plotview.cpp | 22 ++++++++++++++++++++++ plotview.h | 1 + 2 files changed, 23 insertions(+) diff --git a/plotview.cpp b/plotview.cpp index 1d990f8..283f805 100644 --- a/plotview.cpp +++ b/plotview.cpp @@ -20,6 +20,7 @@ #include "plotview.h" #include #include +#include #include #include #include "plots.h" @@ -48,6 +49,27 @@ void PlotView::addPlot(Plot *plot) connect(plot, &Plot::repaint, this, &PlotView::repaint); } +void PlotView::contextMenuEvent(QContextMenuEvent * event) +{ + QMenu menu; + // TODO: get the selected plot + auto src = plots[0]->output(); + auto compatiblePlots = as_range(Plots::plots.equal_range(src->sampleType())); + for (auto p : compatiblePlots) { + auto action = new QAction("Add plot", &menu); + auto plotCreator = p.second; + connect( + action, &QAction::triggered, + this, [=]() { + addPlot(plotCreator(src)); + } + ); + menu.addAction(action); + } + if (menu.exec(event->globalPos())) + updateView(false); +} + void PlotView::cursorsMoved() { selectedSamples = { diff --git a/plotview.h b/plotview.h index 8a2d908..9b3bc62 100644 --- a/plotview.h +++ b/plotview.h @@ -52,6 +52,7 @@ public slots: void setPowerMax(int power); protected: + void contextMenuEvent(QContextMenuEvent * event) override; bool eventFilter(QObject * obj, QEvent *event) override; void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent * event);