X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.cpp;fp=pv%2Fviews%2Ftrace%2Fview.cpp;h=0a51a96fb5398a590997e558a9fc7427c9e3679b;hp=33122047745048e341c155956e6f99076b73e136;hb=8997f62a4f87c822578aa5d835e1dd8109c6f5eb;hpb=593ea025f22372ed6761d0cb300f0873fa1a47e7 diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index 33122047..0a51a96f 100644 --- a/pv/views/trace/view.cpp +++ b/pv/views/trace/view.cpp @@ -52,6 +52,7 @@ #include "view.hpp" #include "viewport.hpp" +#include "pv/metadata_obj.hpp" #include "pv/data/logic.hpp" #include "pv/data/logicsegment.hpp" #include "pv/devices/device.hpp" @@ -182,6 +183,12 @@ View::View(Session &session, bool is_main_view, QMainWindow *parent) : GlobalSettings::add_change_handler(this); + // Set up metadata objects and event handlers + if (is_main_view) + session_.metadata_obj_manager()->create_object(MetadataObjMainViewRange); + + + // Set up UI event handlers connect(scrollarea_->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(h_scroll_value_changed(int))); connect(scrollarea_->verticalScrollBar(), SIGNAL(valueChanged(int)), @@ -525,6 +532,22 @@ void View::set_offset(const pv::util::Timestamp& offset, bool force_update) if ((offset_ != offset) || force_update) { offset_ = offset; ruler_offset_ = offset_ + zero_offset_; + + const int w = viewport_->width(); + if (w > 0) { + const double samplerate = session_.get_samplerate(); + // Note: sample_num = time * samplerate + // Note: samples_per_pixel = samplerate * scale + int64_t start_sample = (offset_ * samplerate).convert_to(); + int64_t end_sample = (offset_ * samplerate).convert_to() + + (w * session_.get_samplerate() * scale_); + + MetadataObject* md_obj = + session_.metadata_obj_manager()->find_object_by_type(MetadataObjMainViewRange); + md_obj->set_value(MetadataValueStartSample, QVariant((qlonglong)start_sample)); + md_obj->set_value(MetadataValueEndSample, QVariant((qlonglong)end_sample)); + } + offset_changed(); } }