]> sigrok.org Git - pulseview.git/blobdiff - pv/views/decoder_output/view.cpp
DecoderOutputView: Allow for adaptive size constraints
[pulseview.git] / pv / views / decoder_output / view.cpp
index 8bce3745f1aa3e83ef932f3c05f5f45a6910e817..18cb3b449726ad19e953624d334d3f3e4fb17460 100644 (file)
@@ -53,6 +53,7 @@ View::View(Session &session, bool is_main_view, QMainWindow *parent) :
        ViewBase(session, is_main_view, parent),
 
        // Note: Place defaults in View::reset_view_state(), not here
+       parent_(parent),
        decoder_selector_(new QComboBox()),
        format_selector_(new QComboBox()),
        class_selector_(new QComboBox()),
@@ -93,6 +94,8 @@ View::View(Session &session, bool is_main_view, QMainWindow *parent) :
        decoder_selector_->setSizeAdjustPolicy(QComboBox::AdjustToContents);
        class_selector_->setSizeAdjustPolicy(QComboBox::AdjustToContents);
 
+       parent->setSizePolicy(hex_view_->sizePolicy()); // TODO Must be updated when selected widget changes
+
        reset_view_state();
 }
 
@@ -223,10 +226,10 @@ void View::on_selected_decoder_changed(int index)
 
        if (signal_) {
                // Populate binary class selector
-               uint8_t bin_classes = decoder_->get_binary_class_count();
-               for (uint8_t i = 0; i < bin_classes; i++) {
+               uint32_t bin_classes = decoder_->get_binary_class_count();
+               for (uint32_t i = 0; i < bin_classes; i++) {
                        const data::decode::DecodeBinaryClassInfo* class_info = decoder_->get_binary_class(i);
-                       class_selector_->addItem(class_info->name, QVariant::fromValue(i));
+                       class_selector_->addItem(class_info->description, QVariant::fromValue(i));
                }
 
                connect(signal_, SIGNAL(new_binary_data(unsigned int, void*, unsigned int)),
@@ -238,7 +241,7 @@ void View::on_selected_decoder_changed(int index)
 
 void View::on_selected_class_changed(int index)
 {
-       bin_class_id_ = class_selector_->itemData(index).value<uint8_t>();
+       bin_class_id_ = class_selector_->itemData(index).value<uint32_t>();
 
        update_data();
 }
@@ -276,7 +279,8 @@ void View::on_signal_name_changed(const QString &name)
 void View::on_new_binary_data(unsigned int segment_id, void* decoder, unsigned int bin_class_id)
 {
        if ((segment_id == current_segment_) && (decoder == decoder_) && (bin_class_id == bin_class_id_))
-               update_data();
+               if (!delayed_view_updater_.isActive())
+                       delayed_view_updater_.start();
 }
 
 void View::on_decoder_stacked(void* decoder)
@@ -315,6 +319,11 @@ void View::on_decoder_removed(void* decoder)
                decoder_selector_->removeItem(index);
 }
 
+void View::perform_delayed_view_update()
+{
+       update_data();
+}
+
 
 } // namespace decoder_output
 } // namespace views