From d512d4a5a790206953346f5266f201b23e559e98 Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Wed, 1 Feb 2017 14:29:05 +0000 Subject: [PATCH] Allow removing plots --- plotview.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/plotview.cpp b/plotview.cpp index 55758f7..d575480 100644 --- a/plotview.cpp +++ b/plotview.cpp @@ -64,10 +64,14 @@ void PlotView::contextMenuEvent(QContextMenuEvent * event) // Get selected plot Plot *selectedPlot = nullptr; + auto it = plots.begin(); int y = -verticalScrollBar()->value(); - for (auto&& plot : plots) { - if (range_t{y, y + plot->height()}.contains(event->pos().y())) + for (; it != plots.end(); it++) { + auto&& plot = *it; + if (range_t{y, y + plot->height()}.contains(event->pos().y())) { selectedPlot = plot.get(); + break; + } y += plot->height(); } if (selectedPlot == nullptr) @@ -112,6 +116,18 @@ void PlotView::contextMenuEvent(QContextMenuEvent * event) ); menu.addAction(save); + // Add action to remove the selected plot + auto rem = new QAction("Remove plot", &menu); + connect( + rem, &QAction::triggered, + this, [=]() { + plots.erase(it); + } + ); + // Don't allow remove the first plot (the spectrogram) + rem->setEnabled(it != plots.begin()); + menu.addAction(rem); + updateViewRange(false); if(menu.exec(event->globalPos())) updateView(false);