X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fpopups%2Fchannels.cpp;h=89080c4fc45426fd5ccaf6b8d2abe8467be9ddad;hp=3d209e84bb15a9350cc7445966c15fbde81f3b08;hb=09f55d9665efb3b17ba7de4bae47be6989e884fe;hpb=78b0af3ebcbeab50e1c1634af729c0a7f97fb435 diff --git a/pv/popups/channels.cpp b/pv/popups/channels.cpp index 3d209e84..89080c4f 100644 --- a/pv/popups/channels.cpp +++ b/pv/popups/channels.cpp @@ -14,12 +14,19 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, see . */ #include +#ifdef _WIN32 +// Windows: Avoid boost/thread namespace pollution (which includes windows.h). +#define NOGDI +#define NORESOURCE +#endif +#include +#include + #include #include #include @@ -28,6 +35,8 @@ #include "channels.hpp" #include +#include +#include #include #include @@ -45,12 +54,12 @@ using std::shared_ptr; using std::unordered_set; using std::vector; +using pv::data::SignalBase; + using sigrok::Channel; using sigrok::ChannelGroup; using sigrok::Device; -using pv::view::Signal; - namespace pv { namespace popups { @@ -65,27 +74,26 @@ Channels::Channels(Session &session, QWidget *parent) : // Create the layout setLayout(&layout_); - shared_ptr device = session_.device(); + const shared_ptr device = session_.device()->device(); assert(device); // Collect a set of signals - map, shared_ptr > signal_map; + map, shared_ptr > signal_map; - shared_lock lock(session_.signals_mutex()); - const unordered_set< shared_ptr > &sigs(session_.signals()); + unordered_set< shared_ptr > sigs; + for (const shared_ptr b : session_.signalbases()) + sigs.insert(b); - for (const shared_ptr &sig : sigs) + for (const shared_ptr &sig : sigs) signal_map[sig->channel()] = sig; // Populate channel groups - for (auto entry : device->channel_groups()) - { + for (auto entry : device->channel_groups()) { shared_ptr group = entry.second; // Make a set of signals, and removed this signals from the // signal map. - vector< shared_ptr > group_sigs; - for (auto channel : group->channels()) - { + vector< shared_ptr > group_sigs; + for (auto channel : group->channels()) { const auto iter = signal_map.find(channel); if (iter == signal_map.end()) @@ -99,17 +107,16 @@ Channels::Channels(Session &session, QWidget *parent) : } // Make a vector of the remaining channels - vector< shared_ptr > global_sigs; - for (auto channel : device->channels()) - { - const map, shared_ptr >:: + vector< shared_ptr > global_sigs; + for (auto channel : device->channels()) { + const map, shared_ptr >:: const_iterator iter = signal_map.find(channel); if (iter != signal_map.end()) global_sigs.push_back((*iter).second); } // Create a group - populate_group(NULL, global_sigs); + populate_group(nullptr, global_sigs); // Create the enable/disable all buttons connect(&enable_all_channels_, SIGNAL(clicked()), @@ -135,14 +142,13 @@ void Channels::set_all_channels(bool set) { updating_channels_ = true; - for (map >::const_iterator i = - check_box_signal_map_.begin(); - i != check_box_signal_map_.end(); i++) - { - const shared_ptr sig = (*i).second; + for (map >::const_iterator i = + check_box_signal_map_.begin(); + i != check_box_signal_map_.end(); i++) { + const shared_ptr sig = (*i).second; assert(sig); - sig->enable(set); + sig->set_enabled(set); (*i).first->setChecked(set); } @@ -150,7 +156,7 @@ void Channels::set_all_channels(bool set) } void Channels::populate_group(shared_ptr group, - const vector< shared_ptr > sigs) + const vector< shared_ptr > sigs) { using pv::binding::Device; @@ -181,13 +187,12 @@ void Channels::populate_group(shared_ptr group, } QGridLayout* Channels::create_channel_group_grid( - const vector< shared_ptr > sigs) + const vector< shared_ptr > sigs) { int row = 0, col = 0; QGridLayout *const grid = new QGridLayout(); - for (const shared_ptr& sig : sigs) - { + for (const shared_ptr& sig : sigs) { assert(sig); QCheckBox *const checkbox = new QCheckBox(sig->name()); @@ -199,24 +204,23 @@ QGridLayout* Channels::create_channel_group_grid( check_box_signal_map_[checkbox] = sig; - if(++col >= 8) + if (++col >= 8) col = 0, row++; } return grid; } -void Channels::showEvent(QShowEvent *e) +void Channels::showEvent(QShowEvent *event) { - pv::widgets::Popup::showEvent(e); + pv::widgets::Popup::showEvent(event); updating_channels_ = true; - for (map >::const_iterator i = - check_box_signal_map_.begin(); - i != check_box_signal_map_.end(); i++) - { - const shared_ptr sig = (*i).second; + for (map >::const_iterator i = + check_box_signal_map_.begin(); + i != check_box_signal_map_.end(); i++) { + const shared_ptr sig = (*i).second; assert(sig); (*i).first->setChecked(sig->enabled()); @@ -234,14 +238,14 @@ void Channels::on_channel_checked(QWidget *widget) assert(check_box); // Look up the signal of this check-box - map< QCheckBox*, shared_ptr >::const_iterator iter = + map< QCheckBox*, shared_ptr >::const_iterator iter = check_box_signal_map_.find((QCheckBox*)check_box); assert(iter != check_box_signal_map_.end()); - const shared_ptr s = (*iter).second; + const shared_ptr s = (*iter).second; assert(s); - s->enable(check_box->isChecked()); + s->set_enabled(check_box->isChecked()); } void Channels::enable_all_channels()