X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=c69e75caec10594ba3122aa31a8344a2e5dd5b3a;hb=3a21afa6a5dfc06c17f127960bb0038fd322f213;hp=7e47140c6bf2f3d4335df419e8cea74dd8976ecf;hpb=47e9e7bbc3a4e91a960f4cbb1db48c5aff6dcace;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 7e47140..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 @@ -201,6 +205,30 @@ void View::add_signal(const shared_ptr signal) signals_.insert(signal); } +#ifdef ENABLE_DECODE +void View::clear_decode_traces() +{ + decode_traces_.clear(); +} + +void View::add_decode_trace(shared_ptr signalbase) +{ + shared_ptr d( + new view::DecodeTrace(session_, signalbase, decode_traces_.size())); + decode_traces_.push_back(d); +} + +void View::remove_decode_trace(shared_ptr signalbase) +{ + for (auto i = decode_traces_.begin(); i != decode_traces_.end(); i++) + if ((*i)->base() == signalbase) { + decode_traces_.erase(i); + signals_changed(); + return; + } +} +#endif + View* View::view() { return this; @@ -221,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()); @@ -967,9 +1034,7 @@ void View::signals_changed() set< shared_ptr > traces(signals_.begin(), signals_.end()); #ifdef ENABLE_DECODE - const vector< shared_ptr > decode_traces( - session().get_decode_signals()); - traces.insert(decode_traces.begin(), decode_traces.end()); + traces.insert(decode_traces_.begin(), decode_traces_.end()); #endif set< shared_ptr > add_traces;