]> sigrok.org Git - pulseview.git/blobdiff - pv/popups/channels.cpp
Channels: Let "Enable all changing" also check for sample data
[pulseview.git] / pv / popups / channels.cpp
index 99e6376aeb5aa70351494de00238645125b061b5..fdb97728f59fe080506c81ecd9acbae0039f3d6d 100644 (file)
@@ -19,7 +19,9 @@
 
 #include <map>
 
 
 #include <map>
 
+#include <QApplication>
 #include <QCheckBox>
 #include <QCheckBox>
+#include <QFontMetrics>
 #include <QFormLayout>
 #include <QGridLayout>
 #include <QLabel>
 #include <QFormLayout>
 #include <QGridLayout>
 #include <QLabel>
@@ -118,20 +120,13 @@ Channels::Channels(Session &session, QWidget *parent) :
        connect(&enable_all_changing_channels_, SIGNAL(clicked()),
                this, SLOT(enable_all_changing_channels()));
 
        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_);
 
 
        layout_.addRow(&buttons_bar_);
 
@@ -316,6 +311,10 @@ void Channels::enable_all_changing_channels()
 {
        set_all_channels_conditionally([](const shared_ptr<SignalBase> signal)
                {
 {
        set_all_channels_conditionally([](const shared_ptr<SignalBase> 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;
                        // Non-logic channels are considered to always have a signal
                        if (signal->type() != SignalBase::LogicChannel)
                                return true;