Skip to content

Commit 38cde26

Browse files
committed
ADC: genalyzer: fix panel update on ch enable
Signed-off-by: Andrei Popa <[email protected]>
1 parent dc127cb commit 38cde26

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed

gui/include/gui/widgets/genalyzerpanel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public Q_SLOTS:
6767
double *rvalues);
6868
void clear();
6969
void clearChannel(const QString &channelName);
70+
void setChannelVisible(const QString &channelName, bool visible);
7071

7172
private:
7273
GenalyzerChannelDisplay *findOrCreateChannelDisplay(const QString &channelName, QColor channelColor);

gui/src/widgets/genalyzerpanel.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,12 @@ void GenalyzerPanel::clear()
160160
m_channelDisplays.clear();
161161
}
162162

163+
void GenalyzerPanel::setChannelVisible(const QString &channelName, bool visible)
164+
{
165+
if(m_channelDisplays.contains(channelName)) {
166+
GenalyzerChannelDisplay *display = m_channelDisplays[channelName];
167+
display->setVisible(visible);
168+
}
169+
}
170+
163171
#include "moc_genalyzerpanel.cpp"

packages/generic-plugins/plugins/adc/src/adcfftinstrumentcontroller.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,16 @@ void ADCFFTInstrumentController::createIIOComplexChannel(AcqTreeNode *node_I, Ac
264264
connect(c, &GRFFTChannelComponent::genalyzerDataUpdated, m_plotComponentManager->genalyzerPanel(),
265265
&GenalyzerPanel::updateResults);
266266

267+
// Connect channel enable/disable signals to update genalyzer panel visibility
268+
connect(c, &GRFFTChannelComponent::genalyzerChannelEnabled, m_plotComponentManager->genalyzerPanel(),
269+
[=](const QString &channelName) {
270+
m_plotComponentManager->genalyzerPanel()->setChannelVisible(channelName, true);
271+
});
272+
connect(c, &GRFFTChannelComponent::genalyzerChannelDisabled, m_plotComponentManager->genalyzerPanel(),
273+
[=](const QString &channelName) {
274+
m_plotComponentManager->genalyzerPanel()->setChannelVisible(channelName, false);
275+
});
276+
267277
connect(c->chData(), &ChannelData::newData, this,
268278
[=](const float *xData_, const float *yData_, size_t size, bool copy) {
269279
if(m_ui->m_complex->isChecked() && m_measureComponent->measureSettings()->genalyzerEnabled() &&
@@ -302,6 +312,15 @@ void ADCFFTInstrumentController::createFFTSink(AcqTreeNode *node)
302312
if(isComplex) {
303313
m_plotComponentManager->selectChannel(m_defaultComplexCh);
304314
Q_EMIT m_defaultComplexCh->requestChannelMenu(false);
315+
316+
// Show all enabled complex channels in genalyzer panel
317+
for(auto component : components()) {
318+
GRFFTChannelComponent *channelComponent =
319+
dynamic_cast<GRFFTChannelComponent *>(component);
320+
if(channelComponent) {
321+
channelComponent->emitGenalyzerEnabledIfAppropriate();
322+
}
323+
}
305324
} else {
306325
m_plotComponentManager->selectChannel(m_defaultRealCh);
307326
Q_EMIT m_defaultRealCh->requestChannelMenu(false);

packages/generic-plugins/plugins/adc/src/freq/grfftchannelcomponent.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,16 @@ void GRFFTChannelComponent::enable()
401401
m_grtch->sigpath()->setEnabled(true);
402402
}
403403
Q_EMIT m_node->top()->src()->requestRebuild(); // sigpath()->requestRebuild();
404+
405+
// Emit signal for genalyzer panel to show this channel
406+
if(m_complex && enabled()) {
407+
QString uniqueChannelName = this->name();
408+
if(m_node && m_node->treeParent()) {
409+
QString deviceName = m_node->treeParent()->name();
410+
uniqueChannelName = deviceName + ":" + this->name();
411+
}
412+
Q_EMIT genalyzerChannelEnabled(uniqueChannelName);
413+
}
404414
}
405415

406416
void GRFFTChannelComponent::disable()
@@ -411,6 +421,16 @@ void GRFFTChannelComponent::disable()
411421
m_grtch->sigpath()->setEnabled(false);
412422
}
413423
Q_EMIT m_node->top()->src()->requestRebuild(); // sigpath()->requestRebuild();
424+
425+
// Emit signal for genalyzer panel to hide this channel
426+
if(m_complex) {
427+
QString uniqueChannelName = this->name();
428+
if(m_node && m_node->treeParent()) {
429+
QString deviceName = m_node->treeParent()->name();
430+
uniqueChannelName = deviceName + ":" + this->name();
431+
}
432+
Q_EMIT genalyzerChannelDisabled(uniqueChannelName);
433+
}
414434
}
415435

416436
// MeasureManagerInterface *GRFFTChannelComponent::getMeasureManager() { return m_measureMgr; }
@@ -493,3 +513,15 @@ void GRFFTChannelComponent::triggerGenalyzerAnalysis()
493513
}
494514
}
495515
}
516+
517+
void GRFFTChannelComponent::emitGenalyzerEnabledIfAppropriate()
518+
{
519+
if(m_complex && enabled()) {
520+
QString uniqueChannelName = this->name();
521+
if(m_node && m_node->treeParent()) {
522+
QString deviceName = m_node->treeParent()->name();
523+
uniqueChannelName = deviceName + ":" + this->name();
524+
}
525+
Q_EMIT genalyzerChannelEnabled(uniqueChannelName);
526+
}
527+
}

packages/generic-plugins/plugins/adc/src/freq/grfftchannelcomponent.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ public Q_SLOTS:
212212
// Method to trigger genalyzer analysis (only when needed)
213213
void triggerGenalyzerAnalysis();
214214

215+
// Method to emit genalyzer channel enabled signal if channel is complex and enabled
216+
void emitGenalyzerEnabledIfAppropriate();
217+
215218
Q_SIGNALS:
216219
void yModeChanged();
217220
void fftSizeChanged();
@@ -220,6 +223,8 @@ public Q_SLOTS:
220223
void windowCorrectionChanged(bool);
221224
void genalyzerDataUpdated(const QString &channelName, QColor channelColor, size_t results_size, char **rkeys,
222225
double *rvalues);
226+
void genalyzerChannelEnabled(const QString &channelName);
227+
void genalyzerChannelDisabled(const QString &channelName);
223228

224229
private:
225230
double m_powerOffset;

0 commit comments

Comments
 (0)