]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.cpp
Added View::selected_items
[pulseview.git] / pv / view / view.cpp
index bc82e0b4c4a6c7ab2b9e9e5c3896c81fac66db92..ca575bec2ebc0e0258e3ee08490e1f6b5e111b8d 100644 (file)
@@ -85,9 +85,9 @@ 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()),
@@ -159,6 +159,27 @@ void View::set_scale_offset(double scale, double offset)
        _viewport->update();
 }
 
+list<weak_ptr<SelectableItem> > View::selected_items() const
+{
+       list<weak_ptr<SelectableItem> > items;
+
+       // List the selected signals
+       const vector< shared_ptr<Signal> > sigs(_session.get_signals());
+       BOOST_FOREACH (shared_ptr<Signal> 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;
@@ -174,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();
 }
@@ -185,6 +206,11 @@ CursorPair& View::cursors()
        return _cursors;
 }
 
+const CursorPair& View::cursors() const
+{
+       return _cursors;
+}
+
 const QPoint& View::hover_point() const
 {
        return _hover_point;