]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decodesignal.cpp
DecodeSignal: Save/restore row and column visibilities
[pulseview.git] / pv / data / decodesignal.cpp
index 831c8e7f90c41964dee9b2a496705ccd170db0ce..fdf55b73f5d0216c3ecbfbde7a4c2137fb8e4bcf 100644 (file)
@@ -35,7 +35,6 @@
 
 using std::forward_list;
 using std::lock_guard;
-using std::make_pair;
 using std::make_shared;
 using std::min;
 using std::out_of_range;
@@ -690,6 +689,24 @@ void DecodeSignal::save_settings(QSettings &settings) const
                        i++;
                }
 
+               // Save row properties
+               i = 0;
+               for (const Row* row : decoder->get_rows()) {
+                       settings.beginGroup("row" + QString::number(i));
+                       settings.setValue("visible", row->visible());
+                       settings.endGroup();
+                       i++;
+               }
+
+               // Save class properties
+               i = 0;
+               for (const AnnotationClass* ann_class : decoder->ann_classes()) {
+                       settings.beginGroup("ann_class" + QString::number(i));
+                       settings.setValue("visible", ann_class->visible);
+                       settings.endGroup();
+                       i++;
+               }
+
                settings.endGroup();
        }
 
@@ -755,6 +772,25 @@ void DecodeSignal::restore_settings(QSettings &settings)
 
                                // Include the newly created decode channels in the channel lists
                                update_channel_list();
+
+                               // Restore row properties
+                               int i = 0;
+                               for (Row* row : decoder->get_rows()) {
+                                       settings.beginGroup("row" + QString::number(i));
+                                       row->set_visible(settings.value("visible", true).toBool());
+                                       settings.endGroup();
+                                       i++;
+                               }
+
+                               // Restore class properties
+                               i = 0;
+                               for (AnnotationClass* ann_class : decoder->ann_classes()) {
+                                       settings.beginGroup("ann_class" + QString::number(i));
+                                       ann_class->visible = settings.value("visible", true).toBool();
+                                       settings.endGroup();
+                                       i++;
+                               }
+
                                break;
                        }
                }
@@ -1363,7 +1399,7 @@ void DecodeSignal::create_decode_segment()
        segments_.emplace_back(DecodeSegment());
 
        // Add annotation classes
-       for (const shared_ptr<Decoder> dec : stack_)
+       for (const shared_ptr<Decoder>& dec : stack_)
                for (Row* row : dec->get_rows())
                        segments_.back().annotation_rows.emplace(row, RowData(row));