diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f706611..7b72057 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -50,6 +50,7 @@ MainWindow::MainWindow() connect(dock->powerMinSlider, &QSlider::valueChanged, plots, &PlotView::setPowerMin); connect(dock->cursorsCheckBox, &QCheckBox::stateChanged, plots, &PlotView::enableCursors); connect(dock->scalesCheckBox, &QCheckBox::stateChanged, plots, &PlotView::enableScales); + connect(dock->annosCheckBox, &QCheckBox::stateChanged, plots, &PlotView::enableAnnotations); connect(dock->cursorSymbolsSpinBox, static_cast(&QSpinBox::valueChanged), plots, &PlotView::setCursorSegments); // Connect dock outputs diff --git a/src/plotview.cpp b/src/plotview.cpp index 914c2c9..d5bc424 100644 --- a/src/plotview.cpp +++ b/src/plotview.cpp @@ -49,6 +49,8 @@ PlotView::PlotView(InputSource *input) : cursors(this), viewRange({0, 0}) enableScales(true); + enableAnnotations(true); + addPlot(spectrogramPlot); mainSampleSource->subscribe(this); @@ -602,6 +604,14 @@ void PlotView::enableScales(bool enabled) viewport()->update(); } +void PlotView::enableAnnotations(bool enabled) +{ + if (spectrogramPlot != nullptr) + spectrogramPlot->enableAnnotations(enabled); + + viewport()->update(); +} + int PlotView::sampleToColumn(size_t sample) { return sample / samplesPerColumn(); diff --git a/src/plotview.h b/src/plotview.h index 2b6bfdc..c698b07 100644 --- a/src/plotview.h +++ b/src/plotview.h @@ -46,6 +46,7 @@ public slots: void cursorsMoved(); void enableCursors(bool enabled); void enableScales(bool enabled); + void enableAnnotations(bool enabled); void invalidateEvent() override; void repaint(); void setCursorSegments(int segments); diff --git a/src/spectrogramcontrols.cpp b/src/spectrogramcontrols.cpp index 08007d9..36f152d 100644 --- a/src/spectrogramcontrols.cpp +++ b/src/spectrogramcontrols.cpp @@ -93,6 +93,13 @@ SpectrogramControls::SpectrogramControls(const QString & title, QWidget * parent symbolPeriodLabel = new QLabel(); layout->addRow(new QLabel(tr("Symbol period:")), symbolPeriodLabel); + // SigMF selection settings + layout->addRow(new QLabel()); // TODO: find a better way to add an empty row? + layout->addRow(new QLabel(tr("SigMF Control"))); + + annosCheckBox = new QCheckBox(widget); + layout->addRow(new QLabel(tr("Display Annotations:")), annosCheckBox); + widget->setLayout(layout); setWidget(widget); @@ -126,6 +133,8 @@ void SpectrogramControls::setDefaults() cursorsCheckBox->setCheckState(Qt::Unchecked); cursorSymbolsSpinBox->setValue(1); + annosCheckBox->setCheckState(Qt::Checked); + // Try to set the sample rate from the last-used value QSettings settings; int savedSampleRate = settings.value("SampleRate", 8000000).toInt(); diff --git a/src/spectrogramcontrols.h b/src/spectrogramcontrols.h index abe06d6..1120619 100644 --- a/src/spectrogramcontrols.h +++ b/src/spectrogramcontrols.h @@ -73,4 +73,5 @@ public: QLabel *symbolRateLabel; QLabel *symbolPeriodLabel; QCheckBox *scalesCheckBox; + QCheckBox *annosCheckBox; }; diff --git a/src/spectrogramplot.cpp b/src/spectrogramplot.cpp index 8fe9cc8..b779cb6 100644 --- a/src/spectrogramplot.cpp +++ b/src/spectrogramplot.cpp @@ -39,6 +39,7 @@ SpectrogramPlot::SpectrogramPlot(std::shared_ptr if (frequencyScaleEnabled) paintFrequencyScale(painter, rect); - paintAnnotations(painter, rect, sampleRange); + + if (sigmfAnnotationsEnabled) + paintAnnotations(painter, rect, sampleRange); } void SpectrogramPlot::paintFrequencyScale(QPainter &painter, QRect &rect) @@ -387,6 +390,11 @@ void SpectrogramPlot::enableScales(bool enabled) frequencyScaleEnabled = enabled; } +void SpectrogramPlot::enableAnnotations(bool enabled) +{ + sigmfAnnotationsEnabled = enabled; +} + bool SpectrogramPlot::tunerEnabled() { return (tunerTransform->subscriberCount() > 0); diff --git a/src/spectrogramplot.h b/src/spectrogramplot.h index 1b27f40..e7d0891 100644 --- a/src/spectrogramplot.h +++ b/src/spectrogramplot.h @@ -48,6 +48,7 @@ public: void setSampleRate(double sampleRate); bool tunerEnabled(); void enableScales(bool enabled); + void enableAnnotations(bool enabled); public slots: void setFFTSize(int size); @@ -73,6 +74,7 @@ private: float powerMin; double sampleRate; bool frequencyScaleEnabled; + bool sigmfAnnotationsEnabled; Tuner tuner; std::shared_ptr tunerTransform;