File: 0024-Adding-checkbox-to-show-hide-SigMF-annotations.patch

package info (click to toggle)
inspectrum 0.2.3-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,312 kB
  • sloc: cpp: 2,675; makefile: 3
file content (163 lines) | stat: -rw-r--r-- 5,633 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
From 64928b2cd0aaa54a0ffd410c126dbaad34a98b07 Mon Sep 17 00:00:00 2001
From: Jacob Gilbert <jacob.gilbert@protonmail.com>
Date: Fri, 16 Jul 2021 22:37:28 -0600
Subject: [PATCH 24/31] Adding checkbox to show / hide SigMF annotations

Signed-off-by: Jacob Gilbert <jacob.gilbert@protonmail.com>
---
 src/mainwindow.cpp          |  1 +
 src/plotview.cpp            | 10 ++++++++++
 src/plotview.h              |  1 +
 src/spectrogramcontrols.cpp |  9 +++++++++
 src/spectrogramcontrols.h   |  1 +
 src/spectrogramplot.cpp     | 10 +++++++++-
 src/spectrogramplot.h       |  2 ++
 7 files changed, 33 insertions(+), 1 deletion(-)

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<void (QSpinBox::*)(int)>(&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("<b>SigMF Control</b>")));
+
+    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<SampleSource<std::complex<float
     powerMin = -50.0f;
     sampleRate = 0;
     frequencyScaleEnabled = false;
+    sigmfAnnotationsEnabled = true;
 
     for (int i = 0; i < 256; i++) {
         float p = (float)i / 256;
@@ -66,7 +67,9 @@ void SpectrogramPlot::paintFront(QPainter &painter, QRect &rect, range_t<size_t>
 
     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> tunerTransform;
-- 
2.35.1