X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=ca575bec2ebc0e0258e3ee08490e1f6b5e111b8d;hb=9e40e83daf6a2851f4883468a4237849f984b336;hp=6ea8cc0af30eea06c6fbc9e7523bf1e8ca257c1c;hpb=b4d91e564cfb71d76e4aa8a4328b8a3b739ce383;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 6ea8cc0a..ca575bec 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -85,14 +85,24 @@ View::View(SigSession &session, QWidget *parent) : connect(&_session, SIGNAL(data_updated()), this, SLOT(data_updated())); - connect(&_cursors.first(), SIGNAL(time_changed()), + connect(_cursors.first().get(), SIGNAL(time_changed()), this, SLOT(marker_time_changed())); - connect(&_cursors.second(), SIGNAL(time_changed()), + connect(_cursors.second().get(), SIGNAL(time_changed()), this, SLOT(marker_time_changed())); connect(_header, SIGNAL(signals_moved()), this, SLOT(on_signals_moved())); + connect(_header, SIGNAL(selection_changed()), + _ruler, SLOT(clear_selection())); + connect(_ruler, SIGNAL(selection_changed()), + _header, SLOT(clear_selection())); + + connect(_header, SIGNAL(selection_changed()), + this, SIGNAL(selection_changed())); + connect(_ruler, SIGNAL(selection_changed()), + this, SIGNAL(selection_changed())); + setViewportMargins(LabelMarginWidth, RulerHeight, 0, 0); setViewport(_viewport); @@ -149,6 +159,27 @@ void View::set_scale_offset(double scale, double offset) _viewport->update(); } +list > View::selected_items() const +{ + list > items; + + // List the selected signals + const vector< shared_ptr > sigs(_session.get_signals()); + BOOST_FOREACH (shared_ptr s, sigs) { + assert(s); + if (s->selected()) + items.push_back(s); + } + + // List the selected cursors + if (_cursors.first()->selected()) + items.push_back(_cursors.first()); + if (_cursors.second()->selected()) + items.push_back(_cursors.second()); + + return items; +} + bool View::cursors_shown() const { return _show_cursors; @@ -164,8 +195,8 @@ void View::show_cursors(bool show) void View::centre_cursors() { const double time_width = _scale * _viewport->width(); - _cursors.first().set_time(_offset + time_width * 0.4); - _cursors.second().set_time(_offset + time_width * 0.6); + _cursors.first()->set_time(_offset + time_width * 0.4); + _cursors.second()->set_time(_offset + time_width * 0.6); _ruler->update(); _viewport->update(); } @@ -175,6 +206,11 @@ CursorPair& View::cursors() return _cursors; } +const CursorPair& View::cursors() const +{ + return _cursors; +} + const QPoint& View::hover_point() const { return _hover_point;