X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=0ebfea1e6d532b94c959569aaf5f1e9d03e601d4;hb=d9aecf1fcd9af471db3b59de7efc65b9632a6d79;hp=cf990bcdced9f7cf44eeac9b149f2942cb8c2cc9;hpb=8b2e2a9acef9501910047881edd54dd092b9732f;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index cf990bc..0ebfea1 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -26,8 +26,6 @@ #include #include -#include - #include #include #include @@ -92,7 +90,9 @@ View::View(SigSession &session, QWidget *parent) : connect(&_session, SIGNAL(signals_changed()), this, SLOT(signals_changed())); - connect(&_session, SIGNAL(data_updated()), + connect(&_session, SIGNAL(data_received()), + this, SLOT(data_updated())); + connect(&_session, SIGNAL(frame_ended()), this, SLOT(data_updated())); connect(_cursors.first().get(), SIGNAL(time_changed()), @@ -120,6 +120,10 @@ View::View(SigSession &session, QWidget *parent) : _viewport->installEventFilter(this); _ruler->installEventFilter(this); _header->installEventFilter(this); + + // Trigger the initial event manually. The default device has signals + // which were created before this object came into being + signals_changed(); } SigSession& View::session() @@ -169,7 +173,8 @@ void View::zoom_fit() if (w <= 0) return; - set_scale_offset(delta / w, extents.first); + const double scale = max(min(delta / w, MaxScale), MinScale); + set_scale_offset(scale, extents.first); } void View::zoom_one_to_one() @@ -180,16 +185,12 @@ void View::zoom_one_to_one() session().get_signals()); // Make a set of all the visible data objects - set< shared_ptr > visible_data; - BOOST_FOREACH(const shared_ptr sig, sigs) - if (sig->enabled()) - visible_data.insert(sig->data()); - + set< shared_ptr > visible_data = get_visible_data(); if (visible_data.empty()) return; double samplerate = 0.0; - BOOST_FOREACH(const shared_ptr d, visible_data) { + for (const shared_ptr d : visible_data) { assert(d); samplerate = max(samplerate, d->samplerate()); } @@ -229,7 +230,7 @@ vector< shared_ptr > View::get_traces() const vector< shared_ptr > traces(sigs.size()); #endif - vector< shared_ptr >::iterator i = traces.begin(); + auto i = traces.begin(); i = copy(sigs.begin(), sigs.end(), i); #ifdef ENABLE_DECODE i = copy(decode_sigs.begin(), decode_sigs.end(), i); @@ -245,7 +246,7 @@ list > View::selected_items() const // List the selected signals const vector< shared_ptr > traces(get_traces()); - BOOST_FOREACH (shared_ptr t, traces) { + for (shared_ptr t : traces) { assert(t); if (t->selected()) items.push_back(t); @@ -267,7 +268,7 @@ set< shared_ptr > View::get_visible_data() const // Make a set of all the visible data objects set< shared_ptr > visible_data; - BOOST_FOREACH(const shared_ptr sig, sigs) + for (const shared_ptr sig : sigs) if (sig->enabled()) visible_data.insert(sig->data()); @@ -281,7 +282,7 @@ pair View::get_time_extents() const return make_pair(0.0, 0.0); double left_time = DBL_MAX, right_time = DBL_MIN; - BOOST_FOREACH(const shared_ptr d, visible_data) + for (const shared_ptr d : visible_data) { const double start_time = d->get_start_time(); double samplerate = d->samplerate(); @@ -337,11 +338,11 @@ void View::normalize_layout() const vector< shared_ptr > traces(get_traces()); int v_min = INT_MAX; - BOOST_FOREACH(const shared_ptr t, traces) + for (const shared_ptr t : traces) v_min = min(t->get_v_offset(), v_min); const int delta = -min(v_min, 0); - BOOST_FOREACH(shared_ptr t, traces) + for (shared_ptr t : traces) t->set_v_offset(t->get_v_offset() + delta); verticalScrollBar()->setSliderPosition(_v_offset + delta); @@ -496,7 +497,7 @@ void View::signals_changed() { int offset = SignalMargin + SignalHeight; const vector< shared_ptr > traces(get_traces()); - BOOST_FOREACH(shared_ptr t, traces) { + for (shared_ptr t : traces) { t->set_view(this); t->set_v_offset(offset); offset += SignalHeight + 2 * SignalMargin;