]> sigrok.org Git - pulseview.git/blobdiff - pv/session.cpp
QHexView: Fix saved ASCII output
[pulseview.git] / pv / session.cpp
index e412f501bdf8a59c846994c1fa62ee0bf788585d..0e071fbcdd9882d96ac7c4714ed3e969cf6e24b6 100644 (file)
@@ -218,6 +218,7 @@ void Session::save_setup(QSettings &settings) const
        for (const shared_ptr<views::ViewBase>& view : views_) {
                if (view != main_view_) {
                        settings.beginGroup("view" + QString::number(views++));
+                       settings.setValue("type", view->get_type());
                        view->save_settings(settings);
                        settings.endGroup();
                }
@@ -312,7 +313,7 @@ void Session::restore_setup(QSettings &settings)
 
                if (i > 0) {
                        views::ViewType type = (views::ViewType)settings.value("type").toInt();
-                       add_view(name_, type, this);
+                       add_view(type, this);
                        views_.back()->restore_settings(settings);
                } else
                        main_view_->restore_settings(settings);
@@ -526,8 +527,7 @@ Session::input_format_options(vector<string> user_spec,
 }
 
 void Session::load_init_file(const string &file_name,
-       const string &format,
-       const string &setup_file_name)
+       const string &format, const string &setup_file_name)
 {
        shared_ptr<InputFormat> input_format;
        map<string, Glib::VariantBase> input_opts;
@@ -551,15 +551,12 @@ void Session::load_init_file(const string &file_name,
                        input_format->options());
        }
 
-       load_file(QString::fromStdString(file_name),
-               QString::fromStdString(setup_file_name),
+       load_file(QString::fromStdString(file_name), QString::fromStdString(setup_file_name),
                input_format, input_opts);
 }
 
-void Session::load_file(QString file_name,
-       QString setup_file_name,
-       shared_ptr<sigrok::InputFormat> format,
-       const map<string, Glib::VariantBase> &options)
+void Session::load_file(QString file_name, QString setup_file_name,
+       shared_ptr<sigrok::InputFormat> format, const map<string, Glib::VariantBase> &options)
 {
        const QString errorMessage(
                QString("Failed to load file %1").arg(file_name));
@@ -587,13 +584,13 @@ void Session::load_file(QString file_name,
                return;
        }
 
-       // Default the setup filename with a .pvs extension if none is provided
+       // Use the input file with .pvs extension if no setup file was given
        if (setup_file_name.isEmpty()) {
                setup_file_name = file_name;
                setup_file_name.truncate(setup_file_name.lastIndexOf('.'));
                setup_file_name.append(".pvs");
        }
-       // Auto-load the setup if one exists
+
        if (QFileInfo::exists(setup_file_name) && QFileInfo(setup_file_name).isReadable()) {
                QSettings settings_storage(setup_file_name, QSettings::IniFormat);
                restore_setup(settings_storage);
@@ -667,9 +664,8 @@ void Session::stop_capture()
 
 void Session::register_view(shared_ptr<views::ViewBase> view)
 {
-       if (views_.empty()) {
+       if (views_.empty())
                main_view_ = view;
-       }
 
        views_.push_back(view);
 
@@ -677,35 +673,29 @@ void Session::register_view(shared_ptr<views::ViewBase> view)
        update_signals();
 
        // Add all other signals
-       unordered_set< shared_ptr<data::SignalBase> > view_signalbases =
-               view->signalbases();
-
-       views::trace::View *trace_view =
-               qobject_cast<views::trace::View*>(view.get());
-
-       if (trace_view) {
-               for (const shared_ptr<data::SignalBase>& signalbase : signalbases_) {
-                       const int sb_exists = count_if(
-                               view_signalbases.cbegin(), view_signalbases.cend(),
-                               [&](const shared_ptr<data::SignalBase> &sb) {
-                                       return sb == signalbase;
-                               });
-                       // Add the signal to the view as it doesn't have it yet
-                       if (!sb_exists)
-                               switch (signalbase->type()) {
-                               case data::SignalBase::AnalogChannel:
-                               case data::SignalBase::LogicChannel:
-                               case data::SignalBase::DecodeChannel:
+       unordered_set< shared_ptr<data::SignalBase> > view_signalbases = view->signalbases();
+
+       for (const shared_ptr<data::SignalBase>& signalbase : signalbases_) {
+               const int sb_exists = count_if(
+                       view_signalbases.cbegin(), view_signalbases.cend(),
+                       [&](const shared_ptr<data::SignalBase> &sb) {
+                               return sb == signalbase;
+                       });
+
+               // Add the signal to the view if it doesn't have it yet
+               if (!sb_exists)
+                       switch (signalbase->type()) {
+                       case data::SignalBase::AnalogChannel:
+                       case data::SignalBase::LogicChannel:
+                       case data::SignalBase::MathChannel:
+                               view->add_signalbase(signalbase);
+                               break;
+                       case data::SignalBase::DecodeChannel:
 #ifdef ENABLE_DECODE
-                                       trace_view->add_decode_signal(
-                                               dynamic_pointer_cast<data::DecodeSignal>(signalbase));
+                               view->add_decode_signal(dynamic_pointer_cast<data::DecodeSignal>(signalbase));
 #endif
-                                       break;
-                               case data::SignalBase::MathChannel:
-                                       // TBD
-                                       break;
-                               }
-               }
+                               break;
+                       }
        }
 
        signals_changed();
@@ -829,7 +819,7 @@ void Session::set_capture_state(capture_state state)
        bool changed;
 
        if (state == Running)
-               acq_time_.start();
+               acq_time_.restart();
        if (state == Stopped)
                qDebug("Acquisition took %.2f s", acq_time_.elapsed() / 1000.);
 
@@ -1482,8 +1472,10 @@ void Session::on_new_decoders_selected(vector<const srd_decoder*> decoders)
        shared_ptr<data::DecodeSignal> signal = add_decode_signal();
 
        if (signal)
-               for (const srd_decoder* d : decoders)
-                       signal->stack_decoder(d);
+               for (unsigned int i = 0; i < decoders.size(); i++) {
+                       const srd_decoder* d = decoders[i];
+                       signal->stack_decoder(d, !(i < decoders.size() - 1));
+               }
 }
 #endif