X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=99bd74823904079e1d507be7178afe7b03aedc3c;hp=d406b9f21ba040c1fb4707c0f261bb7c75b05b33;hb=323715c41a09a1aba08f4b716e9d93da58f0f3a8;hpb=5f9a52096e07e399d76da6724c1cf56bf4511c9f diff --git a/pv/session.cpp b/pv/session.cpp index d406b9f..99bd748 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -187,11 +187,49 @@ bool Session::data_saved() const return data_saved_; } +void Session::save_setup(QSettings &settings) const +{ + int decode_signals = 0, views = 0; + + // Save channels and decoders + for (const shared_ptr& base : signalbases_) { +#ifdef ENABLE_DECODE + if (base->is_decode_signal()) { + settings.beginGroup("decode_signal" + QString::number(decode_signals++)); + base->save_settings(settings); + settings.endGroup(); + } else +#endif + { + settings.beginGroup(base->internal_name()); + base->save_settings(settings); + settings.endGroup(); + } + } + + settings.setValue("decode_signals", decode_signals); + + // Save view states and their signal settings + // Note: main_view must be saved as view0 + settings.beginGroup("view" + QString::number(views++)); + main_view_->save_settings(settings); + settings.endGroup(); + + for (const shared_ptr& view : views_) { + if (view != main_view_) { + settings.beginGroup("view" + QString::number(views++)); + view->save_settings(settings); + settings.endGroup(); + } + } + + settings.setValue("views", views); +} + void Session::save_settings(QSettings &settings) const { map dev_info; list key_list; - int decode_signals = 0, views = 0; if (device_) { shared_ptr hw_device = @@ -241,39 +279,45 @@ void Session::save_settings(QSettings &settings) const settings.endGroup(); } - // Save channels and decoders - for (const shared_ptr& base : signalbases_) { + save_setup(settings); + } +} + +void Session::restore_setup(QSettings &settings) +{ + // Restore channels + for (shared_ptr base : signalbases_) { + settings.beginGroup(base->internal_name()); + base->restore_settings(settings); + settings.endGroup(); + } + + // Restore decoders #ifdef ENABLE_DECODE - if (base->is_decode_signal()) { - settings.beginGroup("decode_signal" + QString::number(decode_signals++)); - base->save_settings(settings); - settings.endGroup(); - } else + int decode_signals = settings.value("decode_signals").toInt(); + + for (int i = 0; i < decode_signals; i++) { + settings.beginGroup("decode_signal" + QString::number(i)); + shared_ptr signal = add_decode_signal(); + signal->restore_settings(settings); + settings.endGroup(); + } #endif - { - settings.beginGroup(base->internal_name()); - base->save_settings(settings); - settings.endGroup(); - } - } - settings.setValue("decode_signals", decode_signals); + // Restore views + int views = settings.value("views").toInt(); - // Save view states and their signal settings - // Note: main_view must be saved as view0 - settings.beginGroup("view" + QString::number(views++)); - main_view_->save_settings(settings); - settings.endGroup(); + for (int i = 0; i < views; i++) { + settings.beginGroup("view" + QString::number(i)); - for (const shared_ptr& view : views_) { - if (view != main_view_) { - settings.beginGroup("view" + QString::number(views++)); - view->save_settings(settings); - settings.endGroup(); - } - } + if (i > 0) { + views::ViewType type = (views::ViewType)settings.value("type").toInt(); + add_view(name_, type, this); + views_.back()->restore_settings(settings); + } else + main_view_->restore_settings(settings); - settings.setValue("views", views); + settings.endGroup(); } } @@ -345,42 +389,8 @@ void Session::restore_settings(QSettings &settings) } } - if (device) { - // Restore channels - for (shared_ptr base : signalbases_) { - settings.beginGroup(base->internal_name()); - base->restore_settings(settings); - settings.endGroup(); - } - - // Restore decoders -#ifdef ENABLE_DECODE - int decode_signals = settings.value("decode_signals").toInt(); - - for (int i = 0; i < decode_signals; i++) { - settings.beginGroup("decode_signal" + QString::number(i)); - shared_ptr signal = add_decode_signal(); - signal->restore_settings(settings); - settings.endGroup(); - } -#endif - - // Restore views - int views = settings.value("views").toInt(); - - for (int i = 0; i < views; i++) { - settings.beginGroup("view" + QString::number(i)); - - if (i > 0) { - views::ViewType type = (views::ViewType)settings.value("type").toInt(); - add_view(name_, type, this); - views_.back()->restore_settings(settings); - } else - main_view_->restore_settings(settings); - - settings.endGroup(); - } - } + if (device) + restore_setup(settings); } void Session::select_device(shared_ptr device)