diff --git a/src/plotmanager.cpp b/src/plotmanager.cpp --- a/src/plotmanager.cpp +++ b/src/plotmanager.cpp @@ -17,6 +17,7 @@ along with serialplot. If not, see . */ +#include #include "qwt_symbol.h" #include "plot.h" @@ -32,7 +33,8 @@ PlotManager::PlotManager(QWidget* plotAr unzoomAction("&Unzoom", this), darkBackgroundAction("&Dark Background", this), showLegendAction("&Legend", this), - showMultiAction("Multi &Plot", this) + showMultiAction("Multi &Plot", this), + setSymbolsAction("Symbols", this) { _autoScaled = true; _yMin = 0; @@ -40,6 +42,7 @@ PlotManager::PlotManager(QWidget* plotAr isDemoShown = false; _infoModel = infoModel; _numOfSamples = 1; + showSymbols = ShowSymbolsAuto; // initalize layout and single widget isMulti = false; @@ -54,6 +57,7 @@ PlotManager::PlotManager(QWidget* plotAr darkBackgroundAction.setToolTip("Enable Dark Plot Background"); showLegendAction.setToolTip("Display the Legend on Plot"); showMultiAction.setToolTip("Display All Channels Separately"); + setSymbolsAction.setToolTip("Show/Hide symbols"); showGridAction.setShortcut(QKeySequence("G")); showMinorGridAction.setShortcut(QKeySequence("M")); @@ -72,6 +76,37 @@ PlotManager::PlotManager(QWidget* plotAr showMinorGridAction.setEnabled(false); + // setup symbols menu + auto setSymbolAutoAct = setSymbolsMenu.addAction("Show When Zoomed"); + setSymbolAutoAct->setCheckable(true); + setSymbolAutoAct->setChecked(true); + connect(setSymbolAutoAct, SELECT::OVERLOAD_OF(&QAction::triggered), + [this](bool checked) + { + if (checked) setSymbols(ShowSymbolsAuto); + }); + auto setSymbolAlwaysAct = setSymbolsMenu.addAction("Always Show"); + setSymbolAlwaysAct->setCheckable(true); + connect(setSymbolAlwaysAct, SELECT::OVERLOAD_OF(&QAction::triggered), + [this](bool checked) + { + if (checked) setSymbols(ShowSymbolsAlways); + }); + auto setSymbolHideAct = setSymbolsMenu.addAction("Always Hide"); + setSymbolHideAct->setCheckable(true); + connect(setSymbolHideAct, SELECT::OVERLOAD_OF(&QAction::triggered), + [this](bool checked) + { + if (checked) setSymbols(ShowSymbolsNever); + }); + setSymbolsAction.setMenu(&setSymbolsMenu); + + // add symbol actions to same group so that they appear as radio buttons + auto group = new QActionGroup(this); + group->addAction(setSymbolAutoAct); + group->addAction(setSymbolAlwaysAct); + group->addAction(setSymbolHideAct); + connect(&showGridAction, SELECT::OVERLOAD_OF(&QAction::triggered), this, &PlotManager::showGrid); connect(&showGridAction, SELECT::OVERLOAD_OF(&QAction::triggered), @@ -252,6 +287,8 @@ Plot* PlotManager::addPlotWidget() plot->showLegend(showLegendAction.isChecked()); plot->showDemoIndicator(isDemoShown); plot->setYAxis(_autoScaled, _yMin, _yMax); + plot->setNumOfSamples(_numOfSamples); + plot->setSymbols(showSymbols); if (_xAxisAsIndex) { @@ -363,6 +400,7 @@ QList PlotManager::menuActions actions << &darkBackgroundAction; actions << &showLegendAction; actions << &showMultiAction; + actions << &setSymbolsAction; return actions; } @@ -415,6 +453,15 @@ void PlotManager::darkBackground(bool en } } +void PlotManager::setSymbols(ShowSymbols shown) +{ + showSymbols = shown; + for (auto plot : plotWidgets) + { + plot->setSymbols(shown); + } +} + void PlotManager::setYAxis(bool autoScaled, double yAxisMin, double yAxisMax) { _autoScaled = autoScaled; @@ -464,7 +511,7 @@ void PlotManager::onNumOfSamplesChanged( _numOfSamples = value; for (auto plot : plotWidgets) { - plot->onNumOfSamplesChanged(value); + plot->setNumOfSamples(value); if (_xAxisAsIndex) plot->setXAxis(0, value); } }