diff --git a/sdrbase/gui/glscopenggui.cpp b/sdrbase/gui/glscopenggui.cpp
index 75bead96b..ab2b128c9 100644
--- a/sdrbase/gui/glscopenggui.cpp
+++ b/sdrbase/gui/glscopenggui.cpp
@@ -343,12 +343,18 @@ void GLScopeNGGUI::on_trigLevelFine_valueChanged(int value)
changeCurrentTrigger();
}
-void GLScopeNGGUI::on_trigDelay_valueChanged(int value)
+void GLScopeNGGUI::on_trigDelayCoarse_valueChanged(int value)
{
setTrigDelayDisplay();
changeCurrentTrigger();
}
+void GLScopeNGGUI::on_trigDelayFine_valueChanged(int value)
+{
+ setTrigDelayDisplay();
+ changeCurrentTrigger();
+}
+
void GLScopeNGGUI::on_trigPre_valueChanged(int value)
{
setTrigPreDisplay();
@@ -558,7 +564,8 @@ void GLScopeNGGUI::setTrigLevelDisplay()
void GLScopeNGGUI::setTrigDelayDisplay()
{
- unsigned int n_samples_delay = m_traceLenMult * ScopeVisNG::m_traceChunkSize * ui->trigDelay->value();
+ double delayMult = ui->trigDelayCoarse->value() + ui->trigDelayFine->value() / 100.0;
+ unsigned int n_samples_delay = m_traceLenMult * ScopeVisNG::m_traceChunkSize * delayMult;
if (n_samples_delay < 1000) {
ui->trigDelayText->setToolTip(tr("%1S").arg(n_samples_delay));
@@ -644,8 +651,9 @@ void GLScopeNGGUI::fillTriggerData(ScopeVisNG::TriggerData& triggerData)
triggerData.m_triggerLevel = (ui->trigLevelCoarse->value() / 100.0) + (ui->trigLevelFine->value() / 20000.0);
triggerData.m_triggerPositiveEdge = ui->trigPos->isChecked();
triggerData.m_triggerBothEdges = ui->trigBoth->isChecked();
- triggerData.m_triggerDelay = ui->trigDelay->value();
triggerData.m_triggerRepeat = ui->trigCount->value();
+ double delayMult = ui->trigDelayCoarse->value() + ui->trigDelayFine->value() / 100.0;
+ triggerData.m_triggerDelay = (int) (m_traceLenMult * ScopeVisNG::m_traceChunkSize * delayMult);
}
void GLScopeNGGUI::applySettings()
diff --git a/sdrbase/gui/glscopenggui.h b/sdrbase/gui/glscopenggui.h
index bc79bb995..1d6b21f3e 100644
--- a/sdrbase/gui/glscopenggui.h
+++ b/sdrbase/gui/glscopenggui.h
@@ -113,7 +113,8 @@ private slots:
void on_trigBoth_toggled(bool checked);
void on_trigLevelCoarse_valueChanged(int value);
void on_trigLevelFine_valueChanged(int value);
- void on_trigDelay_valueChanged(int value);
+ void on_trigDelayCoarse_valueChanged(int value);
+ void on_trigDelayFine_valueChanged(int value);
void on_trigPre_valueChanged(int value);
void on_trigOneShot_toggled(bool checked);
void on_freerun_toggled(bool checked);
diff --git a/sdrbase/gui/glscopenggui.ui b/sdrbase/gui/glscopenggui.ui
index 0135de025..a2cc681e4 100644
--- a/sdrbase/gui/glscopenggui.ui
+++ b/sdrbase/gui/glscopenggui.ui
@@ -1386,20 +1386,55 @@ kS/s
-
-
-
- Trigger delay
+
+
+ 2
-
- 100
+
+ 0
-
- 1
+
+ 0
-
- Qt::Horizontal
+
+ 0
-
+
+ 0
+
+
-
+
+
+ Trigger delay coarse (trace length multiplier)
+
+
+ 100
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Trigger delay fine (trace length divider)
+
+
+ 100
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+
+
-