diff --git a/include-gpl/gui/glscopegui.h b/include-gpl/gui/glscopegui.h
index 7f7ad2da6..a41620759 100644
--- a/include-gpl/gui/glscopegui.h
+++ b/include-gpl/gui/glscopegui.h
@@ -48,16 +48,18 @@ private:
qint32 m_ampOffset;
int m_displayGridIntensity;
qint32 m_triggerChannel;
- Real m_triggerLevel;
+ qint32 m_triggerLevel; // percent
bool m_triggerPositiveEdge;
static const qreal amps[11];
void applySettings();
+ void applyTriggerSettings();
void setTimeScaleDisplay();
void setTimeOfsDisplay();
void setAmpScaleDisplay();
void setAmpOfsDisplay();
+ void setTrigLevelDisplay();
private slots:
void on_amp_valueChanged(int value);
@@ -73,6 +75,11 @@ private slots:
void on_vertView_clicked();
void on_onlyPrimeView_clicked();
void on_onlySecondView_clicked();
+
+ void on_trigMode_currentIndexChanged(int index);
+ void on_slopePos_clicked();
+ void on_slopeNeg_clicked();
+ void on_trigLevel_valueChanged(int value);
};
#endif // INCLUDE_GLSCOPEGUI_H
diff --git a/sdrbase/gui/glscopegui.cpp b/sdrbase/gui/glscopegui.cpp
index acd091672..60d1e4feb 100644
--- a/sdrbase/gui/glscopegui.cpp
+++ b/sdrbase/gui/glscopegui.cpp
@@ -77,6 +77,9 @@ QByteArray GLScopeGUI::serialize() const
s.writeS32(6, m_displayGridIntensity);
s.writeS32(7, m_ampOffset);
s.writeS32(8, m_displays);
+ s.writeS32(9, m_triggerChannel);
+ s.writeS32(10, m_triggerLevel);
+ s.writeBool(11, m_triggerPositiveEdge);
return s.final();
}
@@ -101,7 +104,16 @@ bool GLScopeGUI::deserialize(const QByteArray& data)
m_timeBase = 1;
d.readS32(7, &m_ampOffset, 0);
d.readS32(8, &m_displays, GLScope::DisplayBoth);
+ d.readS32(9, &m_triggerChannel, ScopeVis::TriggerFreeRun);
+ ui->trigMode->setCurrentIndex(m_triggerChannel);
+ d.readS32(10, &m_triggerLevel, 0);
+ ui->trigLevel->setValue(m_triggerLevel);
+ setTrigLevelDisplay();
+ d.readBool(11, &m_triggerPositiveEdge, true);
+ ui->slopePos->setChecked(m_triggerPositiveEdge);
+ ui->slopeNeg->setChecked(!m_triggerPositiveEdge);
applySettings();
+ applyTriggerSettings();
return true;
} else {
resetToDefaults();
@@ -151,6 +163,15 @@ void GLScopeGUI::applySettings()
ui->gridIntensity->setSliderPosition(m_displayGridIntensity);
}
+void GLScopeGUI::applyTriggerSettings()
+{
+}
+
+void GLScopeGUI::setTrigLevelDisplay()
+{
+ ui->trigText->setText(tr("%1").arg(m_triggerLevel/100.0, 0, 'f', 2));
+}
+
void GLScopeGUI::setAmpScaleDisplay()
{
if (m_glScope->getDataMode() == GLScope::ModeMagdBPha) {
@@ -344,6 +365,45 @@ void GLScopeGUI::on_gridIntensity_valueChanged(int index)
m_glScope->setDisplayGridIntensity(m_displayGridIntensity);
}
+void GLScopeGUI::on_trigMode_currentIndexChanged(int index)
+{
+ m_triggerChannel = index;
+ applyTriggerSettings();
+}
+
+void GLScopeGUI::on_trigLevel_valueChanged(int value)
+{
+ m_triggerLevel = value;
+ setTrigLevelDisplay();
+ applyTriggerSettings();
+}
+
+void GLScopeGUI::on_slopePos_clicked()
+{
+ m_triggerPositiveEdge = true;
+
+ if(ui->slopePos->isChecked()) {
+ ui->slopeNeg->setChecked(false);
+ } else {
+ ui->slopePos->setChecked(true);
+ }
+
+ applyTriggerSettings();
+}
+
+void GLScopeGUI::on_slopeNeg_clicked()
+{
+ m_triggerPositiveEdge = false;
+
+ if(ui->slopeNeg->isChecked()) {
+ ui->slopePos->setChecked(false);
+ } else {
+ ui->slopeNeg->setChecked(true);
+ }
+
+ applyTriggerSettings();
+}
+
bool GLScopeGUI::handleMessage(Message* cmd)
{
return false;
diff --git a/sdrbase/gui/glscopegui.ui b/sdrbase/gui/glscopegui.ui
index 5c1f4b13e..73bd1735b 100644
--- a/sdrbase/gui/glscopegui.ui
+++ b/sdrbase/gui/glscopegui.ui
@@ -7,7 +7,7 @@
0
0
807
- 50
+ 67
@@ -126,7 +126,7 @@
- :/display1.png:/display1.png
+ :/display1_w.png:/display1_w.png
@@ -137,6 +137,9 @@
true
+
+ true
+
-
@@ -149,7 +152,7 @@
- :/display2.png:/display2.png
+ :/display2_w.png:/display2_w.png
@@ -160,6 +163,9 @@
true
+
+ true
+
-
@@ -172,7 +178,7 @@
- :/horizontal.png:/horizontal.png
+ :/horizontal_w.png:/horizontal_w.png
@@ -186,6 +192,9 @@
true
+
+ true
+
-
@@ -198,7 +207,7 @@
- :/vertical.png:/vertical.png
+ :/vertical_w.png:/vertical_w.png
@@ -209,6 +218,9 @@
true
+
+ true
+
@@ -240,6 +252,9 @@
0
+
+ Time range
+
1
@@ -352,6 +367,9 @@
0
+
+ Y range
+
0
@@ -550,7 +568,11 @@
Trigger slope positive
- +
+
+
+
+
+ :/slopep_icon.png:/slopep_icon.png
@@ -564,6 +586,12 @@
true
+
+ Qt::ToolButtonIconOnly
+
+
+ true
+
-
@@ -577,7 +605,11 @@
Trigger slope negative
- -
+
+
+
+
+ :/slopen_icon.png:/slopen_icon.png
@@ -588,6 +620,9 @@
true
+
+ true
+
@@ -602,6 +637,9 @@
Trigger level
+
+ -100
+
100
diff --git a/sdrbase/resources/display1_w.png b/sdrbase/resources/display1_w.png
new file mode 100644
index 000000000..7a971097b
Binary files /dev/null and b/sdrbase/resources/display1_w.png differ
diff --git a/sdrbase/resources/display2_w.png b/sdrbase/resources/display2_w.png
new file mode 100644
index 000000000..6441f0525
Binary files /dev/null and b/sdrbase/resources/display2_w.png differ
diff --git a/sdrbase/resources/horizontal_w.png b/sdrbase/resources/horizontal_w.png
new file mode 100644
index 000000000..59fd3e349
Binary files /dev/null and b/sdrbase/resources/horizontal_w.png differ
diff --git a/sdrbase/resources/res.qrc b/sdrbase/resources/res.qrc
index 3a27f63b9..d38c33f87 100644
--- a/sdrbase/resources/res.qrc
+++ b/sdrbase/resources/res.qrc
@@ -16,5 +16,11 @@
preset-last.png
display1.png
display2.png
+ slopen_icon.png
+ slopep_icon.png
+ display1_w.png
+ display2_w.png
+ horizontal_w.png
+ vertical_w.png
diff --git a/sdrbase/resources/slopen_icon.png b/sdrbase/resources/slopen_icon.png
new file mode 100644
index 000000000..54d31f9f2
Binary files /dev/null and b/sdrbase/resources/slopen_icon.png differ
diff --git a/sdrbase/resources/slopep_icon.png b/sdrbase/resources/slopep_icon.png
new file mode 100644
index 000000000..0e376efbc
Binary files /dev/null and b/sdrbase/resources/slopep_icon.png differ
diff --git a/sdrbase/resources/vertical_w.png b/sdrbase/resources/vertical_w.png
new file mode 100644
index 000000000..7302902ff
Binary files /dev/null and b/sdrbase/resources/vertical_w.png differ