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