X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=c69e75caec10594ba3122aa31a8344a2e5dd5b3a;hp=3f832474cebdf9415df879dc3592a7de27a25f7d;hb=3a21afa6a5dfc06c17f127960bb0038fd322f213;hpb=43017494e4cca1f2a0470b57ad3aceb977aced6b diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 3f83247..c69e75c 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -28,10 +28,14 @@ #include #include #include +#include #include #include #include +#include +#include +#include #include #include @@ -245,6 +249,45 @@ const Viewport* View::viewport() const return viewport_; } +void View::save_settings(QSettings &settings) const +{ + settings.setValue("scale", scale_); + + std::stringstream ss; + boost::archive::text_oarchive oa(ss); + oa << boost::serialization::make_nvp("offset", offset_); + settings.setValue("offset", QString::fromStdString(ss.str())); + + for (shared_ptr signal : signals_) { + settings.beginGroup(signal->base()->internal_name()); + signal->save_settings(settings); + settings.endGroup(); + } +} + +void View::restore_settings(QSettings &settings) +{ + if (settings.contains("scale")) + set_scale(settings.value("scale").toDouble()); + + if (settings.contains("offset")) { + util::Timestamp offset; + std::stringstream ss; + ss << settings.value("offset").toString().toStdString(); + + boost::archive::text_iarchive ia(ss); + ia >> boost::serialization::make_nvp("offset", offset); + + set_offset(offset); + } + + for (shared_ptr signal : signals_) { + settings.beginGroup(signal->base()->internal_name()); + signal->restore_settings(settings); + settings.endGroup(); + } +} + vector< shared_ptr > View::time_items() const { const vector> f(flags());