mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-24 11:12:27 -04:00
MIMO: channel marker affinity with the stream being displayed on the main spectrum. Implemented in demod AM
This commit is contained in:
parent
d0c829f141
commit
ecb4a08718
@ -240,6 +240,7 @@ void AMDemodGUI::onMenuDialogCalled(const QPoint &p)
|
|||||||
dialog.exec();
|
dialog.exec();
|
||||||
|
|
||||||
m_settings.m_streamIndex = dialog.getSelectedStreamIndex();
|
m_settings.m_streamIndex = dialog.getSelectedStreamIndex();
|
||||||
|
m_channelMarker.setStreamIndex(m_settings.m_streamIndex);
|
||||||
displayStreamIndex();
|
displayStreamIndex();
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,7 @@ LocalSourceGUI::LocalSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B
|
|||||||
m_channelMarker.setColor(m_settings.m_rgbColor);
|
m_channelMarker.setColor(m_settings.m_rgbColor);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("Local Source");
|
m_channelMarker.setTitle("Local Source");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -342,6 +342,7 @@ AMModGUI::AMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampl
|
|||||||
m_channelMarker.setBandwidth(5000);
|
m_channelMarker.setBandwidth(5000);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("AM Modulator");
|
m_channelMarker.setTitle("AM Modulator");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -678,6 +678,7 @@ ATVModGUI::ATVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
|
|||||||
m_channelMarker.setBandwidth(5000);
|
m_channelMarker.setBandwidth(5000);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("ATV Modulator");
|
m_channelMarker.setTitle("ATV Modulator");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -375,6 +375,7 @@ FreeDVModGUI::FreeDVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
|
|||||||
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
|
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
|
||||||
ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
|
ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
|
||||||
|
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.setVisible(true);
|
m_channelMarker.setVisible(true);
|
||||||
|
|
||||||
m_deviceUISet->registerTxChannelInstance(FreeDVMod::m_channelIdURI, this);
|
m_deviceUISet->registerTxChannelInstance(FreeDVMod::m_channelIdURI, this);
|
||||||
|
@ -370,6 +370,7 @@ NFMModGUI::NFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
|
|||||||
m_channelMarker.setBandwidth(12500);
|
m_channelMarker.setBandwidth(12500);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("NFM Modulator");
|
m_channelMarker.setTitle("NFM Modulator");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -455,6 +455,7 @@ SSBModGUI::SSBModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
|
|||||||
m_channelMarker.setSidebands(ChannelMarker::usb);
|
m_channelMarker.setSidebands(ChannelMarker::usb);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("SSB Modulator");
|
m_channelMarker.setTitle("SSB Modulator");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true);
|
m_channelMarker.setVisible(true);
|
||||||
|
|
||||||
|
@ -360,6 +360,7 @@ WFMModGUI::WFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
|
|||||||
m_channelMarker.setBandwidth(125000);
|
m_channelMarker.setBandwidth(125000);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("WFM Modulator");
|
m_channelMarker.setTitle("WFM Modulator");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -184,6 +184,7 @@ RemoteSourceGUI::RemoteSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet,
|
|||||||
m_channelMarker.setColor(m_settings.m_rgbColor);
|
m_channelMarker.setColor(m_settings.m_rgbColor);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setTitle("Remote source");
|
m_channelMarker.setTitle("Remote source");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -159,6 +159,7 @@ UDPSourceGUI::UDPSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
|
|||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setColor(m_settings.m_rgbColor);
|
m_channelMarker.setColor(m_settings.m_rgbColor);
|
||||||
m_channelMarker.setTitle("UDP Sample Sink");
|
m_channelMarker.setTitle("UDP Sample Sink");
|
||||||
|
m_channelMarker.setSourceOrSinkStream(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||||
|
|
||||||
|
@ -153,6 +153,7 @@ void TestMIGui::on_streamIndex_currentIndexChanged(int index)
|
|||||||
if (ui->streamLock->isChecked())
|
if (ui->streamLock->isChecked())
|
||||||
{
|
{
|
||||||
m_spectrumStreamIndex = index;
|
m_spectrumStreamIndex = index;
|
||||||
|
m_deviceUISet->m_spectrum->setDisplayedStream(true, index);
|
||||||
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(true, m_spectrumStreamIndex);
|
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(true, m_spectrumStreamIndex);
|
||||||
ui->spectrumSource->blockSignals(true);
|
ui->spectrumSource->blockSignals(true);
|
||||||
ui->spectrumSource->setCurrentIndex(index);
|
ui->spectrumSource->setCurrentIndex(index);
|
||||||
@ -168,6 +169,7 @@ void TestMIGui::on_streamIndex_currentIndexChanged(int index)
|
|||||||
void TestMIGui::on_spectrumSource_currentIndexChanged(int index)
|
void TestMIGui::on_spectrumSource_currentIndexChanged(int index)
|
||||||
{
|
{
|
||||||
m_spectrumStreamIndex = index;
|
m_spectrumStreamIndex = index;
|
||||||
|
m_deviceUISet->m_spectrum->setDisplayedStream(true, index);
|
||||||
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(true, m_spectrumStreamIndex);
|
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(true, m_spectrumStreamIndex);
|
||||||
updateSampleRateAndFrequency();
|
updateSampleRateAndFrequency();
|
||||||
|
|
||||||
|
@ -37,7 +37,9 @@ ChannelMarker::ChannelMarker(QObject* parent) :
|
|||||||
m_highlighted(false),
|
m_highlighted(false),
|
||||||
m_color(m_colorTable[m_nextColor]),
|
m_color(m_colorTable[m_nextColor]),
|
||||||
m_movable(true),
|
m_movable(true),
|
||||||
m_fScaleDisplayType(FScaleDisplay_freq)
|
m_fScaleDisplayType(FScaleDisplay_freq),
|
||||||
|
m_sourceOrSinkStream(true),
|
||||||
|
m_streamIndex(0)
|
||||||
{
|
{
|
||||||
++m_nextColor;
|
++m_nextColor;
|
||||||
if(m_colorTable[m_nextColor] == 0)
|
if(m_colorTable[m_nextColor] == 0)
|
||||||
|
@ -72,6 +72,11 @@ public:
|
|||||||
const QString& getDisplayAddressSend() const { return m_displayAddressSend; }
|
const QString& getDisplayAddressSend() const { return m_displayAddressSend; }
|
||||||
const QString& getDisplayAddressReceive() const { return m_displayAddressReceive; }
|
const QString& getDisplayAddressReceive() const { return m_displayAddressReceive; }
|
||||||
|
|
||||||
|
void setSourceOrSinkStream(bool sourceOrSinkStream) { m_sourceOrSinkStream = sourceOrSinkStream; }
|
||||||
|
bool getSourceOrSinkStream() const { return m_sourceOrSinkStream; }
|
||||||
|
void setStreamIndex(int streamIndex) { m_streamIndex = streamIndex; }
|
||||||
|
int getStreamIndex() const { return m_streamIndex; }
|
||||||
|
|
||||||
virtual QByteArray serialize() const;
|
virtual QByteArray serialize() const;
|
||||||
virtual bool deserialize(const QByteArray& data);
|
virtual bool deserialize(const QByteArray& data);
|
||||||
|
|
||||||
@ -92,6 +97,8 @@ protected:
|
|||||||
QColor m_color;
|
QColor m_color;
|
||||||
bool m_movable;
|
bool m_movable;
|
||||||
frequencyScaleDisplay_t m_fScaleDisplayType;
|
frequencyScaleDisplay_t m_fScaleDisplayType;
|
||||||
|
bool m_sourceOrSinkStream;
|
||||||
|
int m_streamIndex;
|
||||||
|
|
||||||
void resetToDefaults();
|
void resetToDefaults();
|
||||||
|
|
||||||
|
@ -64,6 +64,8 @@ GLSpectrum::GLSpectrum(QWidget* parent) :
|
|||||||
m_histogram(0),
|
m_histogram(0),
|
||||||
m_displayHistogram(true),
|
m_displayHistogram(true),
|
||||||
m_displayChanged(false),
|
m_displayChanged(false),
|
||||||
|
m_displaySourceOrSink(true),
|
||||||
|
m_displayStreamIndex(0),
|
||||||
m_matrixLoc(0),
|
m_matrixLoc(0),
|
||||||
m_colorLoc(0),
|
m_colorLoc(0),
|
||||||
m_messageQueueToGUI(0)
|
m_messageQueueToGUI(0)
|
||||||
@ -605,7 +607,10 @@ void GLSpectrum::paintGL()
|
|||||||
for (int i = 0; i < m_channelMarkerStates.size(); ++i)
|
for (int i = 0; i < m_channelMarkerStates.size(); ++i)
|
||||||
{
|
{
|
||||||
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
||||||
if (dv->m_channelMarker->getVisible())
|
|
||||||
|
if (dv->m_channelMarker->getVisible()
|
||||||
|
&& (dv->m_channelMarker->getSourceOrSinkStream() == m_displaySourceOrSink)
|
||||||
|
&& (dv->m_channelMarker->getStreamIndex() == m_displayStreamIndex))
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
GLfloat q3[] {
|
GLfloat q3[] {
|
||||||
@ -693,7 +698,10 @@ void GLSpectrum::paintGL()
|
|||||||
for(int i = 0; i < m_channelMarkerStates.size(); ++i)
|
for(int i = 0; i < m_channelMarkerStates.size(); ++i)
|
||||||
{
|
{
|
||||||
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
||||||
if(dv->m_channelMarker->getVisible())
|
|
||||||
|
if (dv->m_channelMarker->getVisible()
|
||||||
|
&& (dv->m_channelMarker->getSourceOrSinkStream() == m_displaySourceOrSink)
|
||||||
|
&& (dv->m_channelMarker->getStreamIndex() == m_displayStreamIndex))
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
GLfloat q3[] {
|
GLfloat q3[] {
|
||||||
@ -784,7 +792,9 @@ void GLSpectrum::paintGL()
|
|||||||
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
||||||
|
|
||||||
// frequency scale channel overlay
|
// frequency scale channel overlay
|
||||||
if(dv->m_channelMarker->getVisible())
|
if (dv->m_channelMarker->getVisible()
|
||||||
|
&& (dv->m_channelMarker->getSourceOrSinkStream() == m_displaySourceOrSink)
|
||||||
|
&& (dv->m_channelMarker->getStreamIndex() == m_displayStreamIndex))
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
GLfloat q3[] {
|
GLfloat q3[] {
|
||||||
@ -1506,7 +1516,10 @@ void GLSpectrum::applyChanges()
|
|||||||
// Frequency overlay on highlighted marker
|
// Frequency overlay on highlighted marker
|
||||||
for(int i = 0; i < m_channelMarkerStates.size(); ++i) {
|
for(int i = 0; i < m_channelMarkerStates.size(); ++i) {
|
||||||
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
ChannelMarkerState* dv = m_channelMarkerStates[i];
|
||||||
if (dv->m_channelMarker->getHighlighted())
|
|
||||||
|
if (dv->m_channelMarker->getVisible()
|
||||||
|
&& (dv->m_channelMarker->getSourceOrSinkStream() == m_displaySourceOrSink)
|
||||||
|
&& (dv->m_channelMarker->getStreamIndex() == m_displayStreamIndex))
|
||||||
{
|
{
|
||||||
qreal xc;
|
qreal xc;
|
||||||
int shift;
|
int shift;
|
||||||
@ -1651,7 +1664,9 @@ void GLSpectrum::mouseMoveEvent(QMouseEvent* event)
|
|||||||
{
|
{
|
||||||
Real freq = m_frequencyScale.getValueFromPos(event->x() - m_leftMarginPixmap.width() - 1) - m_centerFrequency;
|
Real freq = m_frequencyScale.getValueFromPos(event->x() - m_leftMarginPixmap.width() - 1) - m_centerFrequency;
|
||||||
|
|
||||||
if (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getMovable())
|
if (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getMovable()
|
||||||
|
&& (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getSourceOrSinkStream() == m_displaySourceOrSink)
|
||||||
|
&& (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getStreamIndex() == m_displayStreamIndex))
|
||||||
{
|
{
|
||||||
m_channelMarkerStates[m_cursorChannel]->m_channelMarker->setCenterFrequencyByCursor(freq);
|
m_channelMarkerStates[m_cursorChannel]->m_channelMarker->setCenterFrequencyByCursor(freq);
|
||||||
channelMarkerChanged();
|
channelMarkerChanged();
|
||||||
@ -1662,6 +1677,12 @@ void GLSpectrum::mouseMoveEvent(QMouseEvent* event)
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < m_channelMarkerStates.size(); ++i)
|
for (int i = 0; i < m_channelMarkerStates.size(); ++i)
|
||||||
{
|
{
|
||||||
|
if ((m_channelMarkerStates[i]->m_channelMarker->getSourceOrSinkStream() != m_displaySourceOrSink)
|
||||||
|
|| (m_channelMarkerStates[i]->m_channelMarker->getStreamIndex() != m_displayStreamIndex))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_channelMarkerStates[i]->m_rect.contains(event->pos()))
|
if (m_channelMarkerStates[i]->m_rect.contains(event->pos()))
|
||||||
{
|
{
|
||||||
if (m_cursorState == CSNormal)
|
if (m_cursorState == CSNormal)
|
||||||
@ -1721,7 +1742,9 @@ void GLSpectrum::mousePressEvent(QMouseEvent* event)
|
|||||||
m_cursorChannel = 0;
|
m_cursorChannel = 0;
|
||||||
Real freq = m_frequencyScale.getValueFromPos(event->x() - m_leftMarginPixmap.width() - 1) - m_centerFrequency;
|
Real freq = m_frequencyScale.getValueFromPos(event->x() - m_leftMarginPixmap.width() - 1) - m_centerFrequency;
|
||||||
|
|
||||||
if(m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getMovable())
|
if (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getMovable()
|
||||||
|
&& (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getSourceOrSinkStream() == m_displaySourceOrSink)
|
||||||
|
&& (m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getStreamIndex() == m_displayStreamIndex))
|
||||||
{
|
{
|
||||||
m_channelMarkerStates[m_cursorChannel]->m_channelMarker->setCenterFrequencyByCursor(freq);
|
m_channelMarkerStates[m_cursorChannel]->m_channelMarker->setCenterFrequencyByCursor(freq);
|
||||||
channelMarkerChanged();
|
channelMarkerChanged();
|
||||||
@ -1756,6 +1779,12 @@ void GLSpectrum::wheelEvent(QWheelEvent *event)
|
|||||||
|
|
||||||
for (int i = 0; i < m_channelMarkerStates.size(); ++i)
|
for (int i = 0; i < m_channelMarkerStates.size(); ++i)
|
||||||
{
|
{
|
||||||
|
if ((m_channelMarkerStates[i]->m_channelMarker->getSourceOrSinkStream() != m_displaySourceOrSink)
|
||||||
|
|| (m_channelMarkerStates[i]->m_channelMarker->getStreamIndex() != m_displayStreamIndex))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_channelMarkerStates[i]->m_rect.contains(event->pos()))
|
if (m_channelMarkerStates[i]->m_rect.contains(event->pos()))
|
||||||
{
|
{
|
||||||
int freq = m_channelMarkerStates[i]->m_channelMarker->getCenterFrequency();
|
int freq = m_channelMarkerStates[i]->m_channelMarker->getCenterFrequency();
|
||||||
|
@ -96,6 +96,12 @@ public:
|
|||||||
void setWaterfallShare(Real waterfallShare);
|
void setWaterfallShare(Real waterfallShare);
|
||||||
void connectTimer(const QTimer& timer);
|
void connectTimer(const QTimer& timer);
|
||||||
|
|
||||||
|
void setDisplayedStream(bool sourceOrSink, int streamIndex)
|
||||||
|
{
|
||||||
|
m_displaySourceOrSink = sourceOrSink;
|
||||||
|
m_displayStreamIndex = streamIndex;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct ChannelMarkerState {
|
struct ChannelMarkerState {
|
||||||
ChannelMarker* m_channelMarker;
|
ChannelMarker* m_channelMarker;
|
||||||
@ -180,8 +186,9 @@ private:
|
|||||||
QMatrix4x4 m_glHistogramSpectrumMatrix;
|
QMatrix4x4 m_glHistogramSpectrumMatrix;
|
||||||
QMatrix4x4 m_glHistogramBoxMatrix;
|
QMatrix4x4 m_glHistogramBoxMatrix;
|
||||||
bool m_displayHistogram;
|
bool m_displayHistogram;
|
||||||
|
|
||||||
bool m_displayChanged;
|
bool m_displayChanged;
|
||||||
|
bool m_displaySourceOrSink;
|
||||||
|
int m_displayStreamIndex;
|
||||||
|
|
||||||
GLShaderSimple m_glShaderSimple;
|
GLShaderSimple m_glShaderSimple;
|
||||||
GLShaderTextured m_glShaderLeftScale;
|
GLShaderTextured m_glShaderLeftScale;
|
||||||
|
@ -362,6 +362,7 @@ void MainWindow::addSinkDevice()
|
|||||||
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
||||||
|
|
||||||
dspDeviceSinkEngine->addSpectrumSink(m_deviceUIs.back()->m_spectrumVis);
|
dspDeviceSinkEngine->addSpectrumSink(m_deviceUIs.back()->m_spectrumVis);
|
||||||
|
m_deviceUIs.back()->m_spectrum->setDisplayedStream(false, 0);
|
||||||
ui->tabSpectra->addTab(m_deviceUIs.back()->m_spectrum, tabNameCStr);
|
ui->tabSpectra->addTab(m_deviceUIs.back()->m_spectrum, tabNameCStr);
|
||||||
ui->tabSpectraGUI->addTab(m_deviceUIs.back()->m_spectrumGUI, tabNameCStr);
|
ui->tabSpectraGUI->addTab(m_deviceUIs.back()->m_spectrumGUI, tabNameCStr);
|
||||||
ui->tabChannels->addTab(m_deviceUIs.back()->m_channelWindow, tabNameCStr);
|
ui->tabChannels->addTab(m_deviceUIs.back()->m_channelWindow, tabNameCStr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user