diff --git a/include-gpl/gui/glscope.h b/include-gpl/gui/glscope.h index b08c18ad5..a0cc80033 100644 --- a/include-gpl/gui/glscope.h +++ b/include-gpl/gui/glscope.h @@ -59,6 +59,7 @@ public: void setSampleRate(int sampleRate); int getSampleRate() const { return m_sampleRate; } + Mode getDataMode() const { return m_mode; } signals: void traceSizeChanged(int); diff --git a/include-gpl/gui/glscopegui.h b/include-gpl/gui/glscopegui.h index 4ccc4742d..1e3f408d3 100644 --- a/include-gpl/gui/glscopegui.h +++ b/include-gpl/gui/glscopegui.h @@ -47,9 +47,13 @@ private: qint32 m_ampOffset; int m_displayGridIntensity; + static const qreal amps[11]; + void applySettings(); void setTimeScaleDisplay(); void setTimeOfsDisplay(); + void setAmpScaleDisplay(); + void setAmpOfsDisplay(); private slots: void on_amp_valueChanged(int value); diff --git a/sdrbase/gui/glscopegui.cpp b/sdrbase/gui/glscopegui.cpp index 72c936182..beeebb93f 100644 --- a/sdrbase/gui/glscopegui.cpp +++ b/sdrbase/gui/glscopegui.cpp @@ -8,6 +8,8 @@ #include #include +const qreal GLScopeGUI::amps[11] = { 0.2, 0.1, 0.05, 0.02, 0.01, 0.005, 0.002, 0.001, 0.0005, 0.0002, 0.0001 }; + GLScopeGUI::GLScopeGUI(QWidget* parent) : QWidget(parent), ui(new Ui::GLScopeGUI), @@ -120,18 +122,37 @@ void GLScopeGUI::applySettings() ui->gridIntensity->setSliderPosition(m_displayGridIntensity); } +void GLScopeGUI::setAmpScaleDisplay() +{ + if (m_glScope->getDataMode() == GLScope::ModeMagdBPha) { + ui->ampText->setText(tr("%1\ndB/div").arg(amps[m_amplification]*50.0, 0, 'f', 2)); + } else { + ui->ampText->setText(tr("%1\n/div").arg(amps[m_amplification], 0, 'f', 4)); + } +} + +void GLScopeGUI::setAmpOfsDisplay() +{ + if (m_glScope->getDataMode() == GLScope::ModeMagdBPha) { + ui->ampOfsText->setText(tr("%1\ndB").arg(m_ampOffset - 100.0, 0, 'f', 0)); + } else if (m_glScope->getDataMode() == GLScope::ModeMagLinPha) { + ui->ampOfsText->setText(tr("%1").arg(m_ampOffset/200.0, 0, 'f', 3)); + } else { + ui->ampOfsText->setText(tr("%1").arg(m_ampOffset/100.0, 0, 'f', 2)); + } +} + void GLScopeGUI::on_amp_valueChanged(int value) { - static qreal amps[11] = { 0.2, 0.1, 0.05, 0.02, 0.01, 0.005, 0.002, 0.001, 0.0005, 0.0002, 0.0001 }; - ui->ampText->setText(tr("%1\n/div").arg(amps[value], 0, 'f', 4)); - m_glScope->setAmp(0.2 / amps[value]); m_amplification = value; + setAmpScaleDisplay(); + m_glScope->setAmp(0.2 / amps[m_amplification]); } void GLScopeGUI::on_ampOfs_valueChanged(int value) { m_ampOffset = value; - ui->ampOfsText->setText(tr("%1").arg(value/100.0, 0, 'f', 2)); + setAmpOfsDisplay(); m_glScope->setAmpOfs(value/100.0); // scale to [-1.0,1.0] } @@ -199,6 +220,7 @@ void GLScopeGUI::on_timeOfs_valueChanged(int value) void GLScopeGUI::on_dataMode_currentIndexChanged(int index) { m_displayData = index; + switch(index) { case 0: // i+q m_glScope->setMode(GLScope::ModeIQ); @@ -219,6 +241,9 @@ void GLScopeGUI::on_dataMode_currentIndexChanged(int index) default: break; } + + setAmpScaleDisplay(); + setAmpOfsDisplay(); } void GLScopeGUI::on_horizView_clicked()