X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fpopups%2Fprobes.cpp;h=51ba3ddca8b2744bfd60e89a109906ab741f60dd;hp=5499df62cd9496dc141ee3ef5cc2a45fb596b69a;hb=b7b659aa72851df2d34d4c1e5fd5636fbd9176d1;hpb=95237c18d988245fd5f484b70a481891982f5f37 diff --git a/pv/popups/probes.cpp b/pv/popups/probes.cpp index 5499df6..51ba3dd 100644 --- a/pv/popups/probes.cpp +++ b/pv/popups/probes.cpp @@ -35,6 +35,7 @@ Probes::Probes(SigSession &session, QWidget *parent) : _session(session), _layout(this), _probes(this), + _updating_probes(false), _probes_bar(this), _enable_all_probes(this), _disable_all_probes(this) @@ -56,27 +57,39 @@ Probes::Probes(SigSession &session, QWidget *parent) : _layout.addWidget(&_probes_bar); + connect(&_probes, SIGNAL(itemChanged(QListWidgetItem*)), + this, SLOT(item_changed(QListWidgetItem*))); +} + +void Probes::set_all_probes(bool set) +{ + using pv::view::Signal; + + _updating_probes = true; + const vector< shared_ptr > sigs = _session.get_signals(); for (unsigned int i = 0; i < sigs.size(); i++) { const shared_ptr &s = sigs[i]; assert(s); - QListWidgetItem *const item = new QListWidgetItem( - s->get_name(), &_probes); + s->enable(set); + + QListWidgetItem *const item = _probes.item(i); assert(item); - item->setData(UserRole, qVariantFromValue(i)); - item->setCheckState(s->enabled() ? Checked : Unchecked); - _probes.addItem(item); + item->setCheckState(set ? Qt::Checked : Qt::Unchecked); } - connect(&_probes, SIGNAL(itemChanged(QListWidgetItem*)), - this, SLOT(item_changed(QListWidgetItem*))); + _updating_probes = false; } -void Probes::set_all_probes(bool set) +void Probes::showEvent(QShowEvent *e) { - using pv::view::Signal; + pv::widgets::Popup::showEvent(e); + + _updating_probes = true; + + _probes.clear(); const vector< shared_ptr > sigs = _session.get_signals(); @@ -84,18 +97,24 @@ void Probes::set_all_probes(bool set) { const shared_ptr &s = sigs[i]; assert(s); - s->enable(set); - - QListWidgetItem *const item = _probes.item(i); + QListWidgetItem *const item = new QListWidgetItem( + s->get_name(), &_probes); assert(item); - item->setCheckState(set ? Qt::Checked : Qt::Unchecked); + item->setCheckState(s->enabled() ? Checked : Unchecked); + item->setData(UserRole, qVariantFromValue(i)); + _probes.addItem(item); } + + _updating_probes = false; } void Probes::item_changed(QListWidgetItem *item) { using pv::view::Signal; + if (_updating_probes) + return; + assert(item); const vector< shared_ptr > sigs = _session.get_signals();