X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fpopups%2Fchannels.cpp;h=5a854453c3eebf1d78e27c5b7a205b45fe4e8656;hb=e8d009288de28cb194bc7964f96677c2baf900c9;hp=1e4bc5789dca0188291bb8639572059dec6df779;hpb=6ac6242b25cfbd4df14abe7580adc9d0f4cffe43;p=pulseview.git diff --git a/pv/popups/channels.cpp b/pv/popups/channels.cpp index 1e4bc57..5a85445 100644 --- a/pv/popups/channels.cpp +++ b/pv/popups/channels.cpp @@ -27,11 +27,12 @@ #include "channels.h" -#include #include #include #include +#include + using namespace Qt; using std::map; @@ -39,6 +40,10 @@ using std::set; using std::shared_ptr; using std::vector; +using sigrok::Channel; +using sigrok::ChannelGroup; +using sigrok::Device; + using pv::view::Signal; namespace pv { @@ -55,33 +60,25 @@ Channels::Channels(SigSession &session, QWidget *parent) : // Create the layout setLayout(&_layout); - shared_ptr dev_inst = _session.get_device(); - assert(dev_inst); - const sr_dev_inst *const sdi = dev_inst->dev_inst(); - assert(sdi); + shared_ptr device = _session.get_device(); + assert(device); // Collect a set of signals - map > signal_map; + map, shared_ptr > signal_map; const vector< shared_ptr > sigs = _session.get_signals(); for (const shared_ptr &sig : sigs) signal_map[sig->channel()] = sig; // Populate channel groups - for (const GSList *g = sdi->channel_groups; g; g = g->next) + for (auto entry : device->channel_groups()) { - const sr_channel_group *const group = - (const sr_channel_group*)g->data; - assert(group); - - // Make a set of signals and remove these signals from the + shared_ptr group = entry.second; + // Make a set of signals, and removed this signals from the // signal map. vector< shared_ptr > group_sigs; - for (const GSList *p = group->channels; p; p = p->next) + for (auto channel : group->channels()) { - const sr_channel *const channel = (const sr_channel*)p->data; - assert(channel); - const auto iter = signal_map.find(channel); if (iter == signal_map.end()) @@ -96,12 +93,9 @@ Channels::Channels(SigSession &session, QWidget *parent) : // Make a vector of the remaining channels vector< shared_ptr > global_sigs; - for (const GSList *p = sdi->channels; p; p = p->next) + for (auto channel : device->channels()) { - const sr_channel *const channel = (const sr_channel*)p->data; - assert(channel); - - const map >:: + const map, shared_ptr >:: const_iterator iter = signal_map.find(channel); if (iter != signal_map.end()) global_sigs.push_back((*iter).second); @@ -148,7 +142,7 @@ void Channels::set_all_channels(bool set) _updating_channels = false; } -void Channels::populate_group(const sr_channel_group *group, +void Channels::populate_group(shared_ptr group, const vector< shared_ptr > sigs) { using pv::prop::binding::DeviceOptions; @@ -158,14 +152,13 @@ void Channels::populate_group(const sr_channel_group *group, // popup. shared_ptr binding; if (group) - binding = shared_ptr(new DeviceOptions( - _session.get_device(), group)); + binding = shared_ptr(new DeviceOptions(group)); // Create a title if the group is going to have any content if ((!sigs.empty() || (binding && !binding->properties().empty())) && - group && group->name) + group) _layout.addRow(new QLabel( - QString("

%1

").arg(group->name))); + QString("

%1

").arg(group->name().c_str()))); // Create the channel group grid QGridLayout *const channel_grid =