diff --git a/src/plotmanager.cpp b/src/plotmanager.cpp --- a/src/plotmanager.cpp +++ b/src/plotmanager.cpp @@ -18,7 +18,6 @@ */ #include -#include #include #include #include "qwt_symbol.h" @@ -28,17 +27,12 @@ #include "utils.h" #include "setting_defines.h" -PlotManager::PlotManager(QWidget* plotArea, ChannelInfoModel* infoModel, QObject *parent) : - QObject(parent), - _plotArea(plotArea), - showGridAction("&Grid", this), - showMinorGridAction("&Minor Grid", this), - unzoomAction("&Unzoom", this), - darkBackgroundAction("&Dark Background", this), - showLegendAction("&Legend", this), - showMultiAction("Multi &Plot", this), - setSymbolsAction("Symbols", this) +PlotManager::PlotManager(QWidget* plotArea, PlotMenu* menu, + ChannelInfoModel* infoModel, QObject* parent) : + QObject(parent) { + _menu = menu; + _plotArea = plotArea; _autoScaled = true; _yMin = 0; _yMax = 1; @@ -56,78 +50,28 @@ PlotManager::PlotManager(QWidget* plotAr setupLayout(isMulti); addPlotWidget(); - // initialize menu actions - showGridAction.setToolTip("Show Grid"); - showMinorGridAction.setToolTip("Show Minor Grid"); - unzoomAction.setToolTip("Unzoom the Plot"); - 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")); - - showGridAction.setCheckable(true); - showMinorGridAction.setCheckable(true); - darkBackgroundAction.setCheckable(true); - showLegendAction.setCheckable(true); - showMultiAction.setCheckable(true); - - showGridAction.setChecked(false); - showMinorGridAction.setChecked(false); - darkBackgroundAction.setChecked(false); - showLegendAction.setChecked(true); - showMultiAction.setChecked(false); - - showMinorGridAction.setEnabled(false); + // connect to menu + connect(menu, &PlotMenu::symbolShowChanged, this, &PlotManager:: setSymbols); - // setup symbols menu - setSymbolsAutoAct = setSymbolsMenu.addAction("Show When Zoomed"); - setSymbolsAutoAct->setCheckable(true); - setSymbolsAutoAct->setChecked(true); - connect(setSymbolsAutoAct, SELECT::OVERLOAD_OF(&QAction::triggered), - [this](bool checked) - { - if (checked) setSymbols(Plot::ShowSymbolsAuto); - }); - setSymbolsShowAct = setSymbolsMenu.addAction("Always Show"); - setSymbolsShowAct->setCheckable(true); - connect(setSymbolsShowAct, SELECT::OVERLOAD_OF(&QAction::triggered), - [this](bool checked) - { - if (checked) setSymbols(Plot::ShowSymbolsShow); - }); - setSymbolsHideAct = setSymbolsMenu.addAction("Always Hide"); - setSymbolsHideAct->setCheckable(true); - connect(setSymbolsHideAct, SELECT::OVERLOAD_OF(&QAction::triggered), - [this](bool checked) - { - if (checked) setSymbols(Plot::ShowSymbolsHide); - }); - setSymbolsAction.setMenu(&setSymbolsMenu); + connect(&menu->showGridAction, SELECT::OVERLOAD_OF(&QAction::toggled), + this, &PlotManager::showGrid); + connect(&menu->showMinorGridAction, SELECT::OVERLOAD_OF(&QAction::toggled), + this, &PlotManager::showMinorGrid); + connect(&menu->darkBackgroundAction, SELECT::OVERLOAD_OF(&QAction::toggled), + this, &PlotManager::darkBackground); + connect(&menu->showLegendAction, SELECT::OVERLOAD_OF(&QAction::toggled), + this, &PlotManager::showLegend); + connect(&menu->showMultiAction, SELECT::OVERLOAD_OF(&QAction::toggled), + this, &PlotManager::setMulti); + connect(&menu->unzoomAction, &QAction::triggered, + this, &PlotManager::unzoom); - // add symbol actions to same group so that they appear as radio buttons - auto group = new QActionGroup(this); - group->addAction(setSymbolsAutoAct); - group->addAction(setSymbolsShowAct); - group->addAction(setSymbolsHideAct); - - connect(&showGridAction, SELECT::OVERLOAD_OF(&QAction::triggered), - this, &PlotManager::showGrid); - connect(&showGridAction, SELECT::OVERLOAD_OF(&QAction::triggered), - &showMinorGridAction, &QAction::setEnabled); - connect(&showMinorGridAction, SELECT::OVERLOAD_OF(&QAction::triggered), - this, &PlotManager::showMinorGrid); - connect(&unzoomAction, &QAction::triggered, this, &PlotManager::unzoom); - connect(&darkBackgroundAction, SELECT::OVERLOAD_OF(&QAction::triggered), - this, &PlotManager::darkBackground); - connect(&showLegendAction, SELECT::OVERLOAD_OF(&QAction::triggered), - this, &PlotManager::showLegend); - connect(&showLegendAction, SELECT::OVERLOAD_OF(&QAction::triggered), - this, &PlotManager::showLegend); - connect(&showMultiAction, SELECT::OVERLOAD_OF(&QAction::triggered), - this, &PlotManager::setMulti); + // initial settings from menu actions + showGrid(menu->showGridAction.isChecked()); + showMinorGrid(menu->showMinorGridAction.isChecked()); + darkBackground(menu->darkBackgroundAction.isChecked()); + showLegend(menu->showLegendAction.isChecked()); + setMulti(menu->showMultiAction.isChecked()); // connect to channel info model if (_infoModel != NULL) // TODO: remove when snapshots have infomodel @@ -308,14 +252,15 @@ Plot* PlotManager::addPlotWidget() plotWidgets.append(plot); layout->addWidget(plot); - plot->darkBackground(darkBackgroundAction.isChecked()); - plot->showGrid(showGridAction.isChecked()); - plot->showMinorGrid(showMinorGridAction.isChecked()); - plot->showLegend(showLegendAction.isChecked()); + plot->darkBackground(_menu->darkBackgroundAction.isChecked()); + plot->showGrid(_menu->showGridAction.isChecked()); + plot->showMinorGrid(_menu->showMinorGridAction.isChecked()); + plot->showLegend(_menu->showLegendAction.isChecked()); + plot->setSymbols(_menu->showSymbols()); + plot->showDemoIndicator(isDemoShown); plot->setYAxis(_autoScaled, _yMin, _yMax); plot->setNumOfSamples(_numOfSamples); - plot->setSymbols(showSymbols); plot->setPlotWidth(_plotWidth); if (_xAxisAsIndex) @@ -419,19 +364,6 @@ void PlotManager::replot() } } -QList PlotManager::menuActions() -{ - QList actions; - actions << &showGridAction; - actions << &showMinorGridAction; - actions << &unzoomAction; - actions << &darkBackgroundAction; - actions << &showLegendAction; - actions << &showMultiAction; - actions << &setSymbolsAction; - return actions; -} - void PlotManager::showGrid(bool show) { for (auto plot : plotWidgets) @@ -530,7 +462,7 @@ void PlotManager::flashSnapshotOverlay() { for (auto plot : plotWidgets) { - plot->flashSnapshotOverlay(darkBackgroundAction.isChecked()); + plot->flashSnapshotOverlay(_menu->darkBackgroundAction.isChecked()); } } @@ -552,115 +484,3 @@ void PlotManager::setPlotWidth(double wi plot->setPlotWidth(width); } } - -PlotViewSettings PlotManager::viewSettings() const -{ - return PlotViewSettings( - { - showGridAction.isChecked(), - showMinorGridAction.isChecked(), - darkBackgroundAction.isChecked(), - showLegendAction.isChecked(), - showMultiAction.isChecked(), - showSymbols - }); -} - -void PlotManager::setViewSettings(const PlotViewSettings& settings) -{ - showGridAction.setChecked(settings.showGrid); - showGrid(settings.showGrid); - showMinorGridAction.setChecked(settings.showMinorGrid); - showMinorGrid(settings.showMinorGrid); - darkBackgroundAction.setChecked(settings.darkBackground); - darkBackground(settings.darkBackground); - showLegendAction.setChecked(settings.showLegend); - showLegend(settings.showLegend); - showMultiAction.setChecked(settings.showMulti); - setMulti(settings.showMulti); - - setSymbols(settings.showSymbols); - if (showSymbols == Plot::ShowSymbolsAuto) - { - setSymbolsAutoAct->setChecked(true); - } - else if (showSymbols == Plot::ShowSymbolsShow) - { - setSymbolsShowAct->setChecked(true); - } - else - { - setSymbolsHideAct->setChecked(true); - } -} - -void PlotManager::saveSettings(QSettings* settings) -{ - settings->beginGroup(SettingGroup_Plot); - settings->setValue(SG_Plot_DarkBackground, darkBackgroundAction.isChecked()); - settings->setValue(SG_Plot_Grid, showGridAction.isChecked()); - settings->setValue(SG_Plot_MinorGrid, showMinorGridAction.isChecked()); - settings->setValue(SG_Plot_Legend, showLegendAction.isChecked()); - settings->setValue(SG_Plot_MultiPlot, showMultiAction.isChecked()); - - QString showSymbolsStr; - if (showSymbols == Plot::ShowSymbolsAuto) - { - showSymbolsStr = "auto"; - } - else if (showSymbols == Plot::ShowSymbolsShow) - { - showSymbolsStr = "show"; - } - else - { - showSymbolsStr = "hide"; - } - settings->setValue(SG_Plot_Symbols, showSymbolsStr); - - settings->endGroup(); -} - -void PlotManager::loadSettings(QSettings* settings) -{ - settings->beginGroup(SettingGroup_Plot); - darkBackgroundAction.setChecked( - settings->value(SG_Plot_DarkBackground, darkBackgroundAction.isChecked()).toBool()); - darkBackground(darkBackgroundAction.isChecked()); - showGridAction.setChecked( - settings->value(SG_Plot_Grid, showGridAction.isChecked()).toBool()); - showGrid(showGridAction.isChecked()); - showMinorGridAction.setChecked( - settings->value(SG_Plot_MinorGrid, showMinorGridAction.isChecked()).toBool()); - showMinorGridAction.setEnabled(showGridAction.isChecked()); - showMinorGrid(showMinorGridAction.isChecked()); - showLegendAction.setChecked( - settings->value(SG_Plot_Legend, showLegendAction.isChecked()).toBool()); - showLegend(showLegendAction.isChecked()); - showMultiAction.setChecked( - settings->value(SG_Plot_MultiPlot, showMultiAction.isChecked()).toBool()); - setMulti(showMultiAction.isChecked()); - - QString showSymbolsStr = settings->value(SG_Plot_Symbols, QString()).toString(); - if (showSymbolsStr == "auto") - { - setSymbols(Plot::ShowSymbolsAuto); - setSymbolsAutoAct->setChecked(true); - } - else if (showSymbolsStr == "show") - { - setSymbols(Plot::ShowSymbolsShow); - setSymbolsShowAct->setChecked(true); - } - else if (showSymbolsStr == "hide") - { - setSymbols(Plot::ShowSymbolsHide); - setSymbolsHideAct->setChecked(true); - } - else - { - qCritical() << "Invalid symbol setting:" << showSymbolsStr; - } - - settings->endGroup(); -}