X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=39b1fb354fff6d10f0320e3f47708af7154f2adb;hp=99bd74823904079e1d507be7178afe7b03aedc3c;hb=baf867eddd4efbc465f5a3490b1ea21dfe7ba597;hpb=323715c41a09a1aba08f4b716e9d93da58f0f3a8 diff --git a/pv/session.cpp b/pv/session.cpp index 99bd7482..39b1fb35 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -312,7 +312,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); @@ -525,7 +525,8 @@ Session::input_format_options(vector user_spec, return result; } -void Session::load_init_file(const string &file_name, const string &format) +void Session::load_init_file(const string &file_name, + const string &format, const string &setup_file_name) { shared_ptr input_format; map input_opts; @@ -549,12 +550,12 @@ void Session::load_init_file(const string &file_name, const string &format) input_format->options()); } - load_file(QString::fromStdString(file_name), input_format, input_opts); + load_file(QString::fromStdString(file_name), QString::fromStdString(setup_file_name), + input_format, input_opts); } -void Session::load_file(QString file_name, - shared_ptr format, - const map &options) +void Session::load_file(QString file_name, QString setup_file_name, + shared_ptr format, const map &options) { const QString errorMessage( QString("Failed to load file %1").arg(file_name)); @@ -582,6 +583,18 @@ void Session::load_file(QString file_name, return; } + // 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"); + } + + if (QFileInfo::exists(setup_file_name) && QFileInfo(setup_file_name).isReadable()) { + QSettings settings_storage(setup_file_name, QSettings::IniFormat); + restore_setup(settings_storage); + } + main_bar_->update_device_list(); start_capture([&, errorMessage](QString infoMessage) { @@ -811,6 +824,11 @@ void Session::set_capture_state(capture_state state) { bool changed; + if (state == Running) + acq_time_.restart(); + if (state == Stopped) + qDebug("Acquisition took %.2f s", acq_time_.elapsed() / 1000.); + { lock_guard lock(sampling_mutex_); changed = capture_state_ != state; @@ -1452,4 +1470,17 @@ void Session::on_data_saved() data_saved_ = true; } +#ifdef ENABLE_DECODE +void Session::on_new_decoders_selected(vector decoders) +{ + assert(decoders.size() > 0); + + shared_ptr signal = add_decode_signal(); + + if (signal) + for (const srd_decoder* d : decoders) + signal->stack_decoder(d); +} +#endif + } // namespace pv