X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fpopups%2Fchannels.cpp;h=cbe9a2a2eb4fd7bd6b0ddb828739381261c5b597;hp=99e6376aeb5aa70351494de00238645125b061b5;hb=3b6c4a1fe75289e56be6bc2a5d1b9e24ccdd1744;hpb=5b35d18ccf2e5a8949d1b4b37d06bf527480e547 diff --git a/pv/popups/channels.cpp b/pv/popups/channels.cpp index 99e6376a..cbe9a2a2 100644 --- a/pv/popups/channels.cpp +++ b/pv/popups/channels.cpp @@ -19,7 +19,9 @@ #include +#include #include +#include #include #include #include @@ -98,16 +100,23 @@ Channels::Channels(Session &session, QWidget *parent) : } // Make a vector of the remaining channels - vector< shared_ptr > global_sigs; + vector< shared_ptr > global_analog_sigs, global_logic_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); + + if (iter != signal_map.end()) { + const shared_ptr signal = (*iter).second; + if (signal->type() == SignalBase::AnalogChannel) + global_analog_sigs.push_back(signal); + else + global_logic_sigs.push_back(signal); + } } - // Create a group - populate_group(nullptr, global_sigs); + // Create the groups for the ungrouped channels + populate_group(nullptr, global_logic_sigs); + populate_group(nullptr, global_analog_sigs); // Create the enable/disable all buttons connect(&enable_all_channels_, SIGNAL(clicked()), this, SLOT(enable_all_channels())); @@ -118,20 +127,13 @@ Channels::Channels(Session &session, QWidget *parent) : connect(&enable_all_changing_channels_, SIGNAL(clicked()), this, SLOT(enable_all_changing_channels())); - enable_all_channels_.setFlat(true); - disable_all_channels_.setFlat(true); - enable_all_logic_channels_.setFlat(true); - enable_all_analog_channels_.setFlat(true); - enable_all_named_channels_.setFlat(true); - enable_all_changing_channels_.setFlat(true); - - buttons_bar_.addWidget(&enable_all_channels_); - buttons_bar_.addWidget(&disable_all_channels_); - buttons_bar_.addWidget(&enable_all_logic_channels_); - buttons_bar_.addWidget(&enable_all_analog_channels_); - buttons_bar_.addWidget(&enable_all_named_channels_); - buttons_bar_.addWidget(&enable_all_changing_channels_); - buttons_bar_.addStretch(1); + buttons_bar_.setRowMinimumHeight(0, 2 * QFontMetrics(QApplication::font()).height()); + buttons_bar_.addWidget(&enable_all_channels_, 1, 0); + buttons_bar_.addWidget(&disable_all_channels_, 1, 1); + buttons_bar_.addWidget(&enable_all_logic_channels_, 2, 0); + buttons_bar_.addWidget(&enable_all_analog_channels_, 2, 1); + buttons_bar_.addWidget(&enable_all_named_channels_, 2, 2); + buttons_bar_.addWidget(&enable_all_changing_channels_, 2, 3); layout_.addRow(&buttons_bar_); @@ -316,6 +318,10 @@ void Channels::enable_all_changing_channels() { set_all_channels_conditionally([](const shared_ptr signal) { + // Never enable channels without sample data + if (!signal->has_samples()) + return false; + // Non-logic channels are considered to always have a signal if (signal->type() != SignalBase::LogicChannel) return true;