]> sigrok.org Git - pulseview.git/blobdiff - pv/view/ruler.cpp
Added selection_changed signal to pv::view::View
[pulseview.git] / pv / view / ruler.cpp
index 0322af8a611e1ad9520b854e2cbae0b7ec39ad81..fa5c488e4f576107e51f490b75ec4162b906aeb9 100644 (file)
@@ -49,8 +49,7 @@ const int Ruler::FirstSIPrefixPower = -15;
 const int Ruler::HoverArrowSize = 5;
 
 Ruler::Ruler(View &parent) :
-       QWidget(&parent),
-       _view(parent),
+       MarginWidget(parent),
        _grabbed_marker(NULL)
 {
        setMouseTracking(true);
@@ -59,6 +58,14 @@ Ruler::Ruler(View &parent) :
                this, SLOT(hover_point_changed()));
 }
 
+void Ruler::clear_selection()
+{
+       CursorPair &cursors = _view.cursors();
+       cursors.first().select(false);
+       cursors.second().select(false);
+       update();
+}
+
 QString Ruler::format_time(double t, unsigned int prefix,
        unsigned int precision)
 {
@@ -163,7 +170,8 @@ void Ruler::paintEvent(QPaintEvent*)
        } while (x < width());
 
        // Draw the cursors
-       draw_cursors(p, prefix);
+       if (_view.cursors_shown())
+               _view.cursors().draw_markers(p, rect(), prefix);
 
        // Draw the hover mark
        draw_hover_mark(p);
@@ -185,6 +193,8 @@ void Ruler::mousePressEvent(QMouseEvent *e)
        if (e->buttons() & Qt::LeftButton) {
                _grabbed_marker = NULL;
 
+               clear_selection();
+
                if (_view.cursors_shown()) {
                        CursorPair &cursors = _view.cursors();
                        if (cursors.first().get_label_rect(
@@ -194,6 +204,11 @@ void Ruler::mousePressEvent(QMouseEvent *e)
                                rect()).contains(e->pos()))
                                _grabbed_marker = &cursors.second();
                }
+
+               if(_grabbed_marker)
+                       _grabbed_marker->select();
+
+               selection_changed();
        }
 }
 
@@ -202,17 +217,6 @@ void Ruler::mouseReleaseEvent(QMouseEvent *)
        _grabbed_marker = NULL;
 }
 
-void Ruler::draw_cursors(QPainter &p, unsigned int prefix)
-{
-       if (!_view.cursors_shown())
-               return;
-
-       const QRect r = rect();
-       CursorPair &cursors = _view.cursors();
-       cursors.first().paint_label(p, r, prefix);
-       cursors.second().paint_label(p, r, prefix);
-}
-
 void Ruler::draw_hover_mark(QPainter &p)
 {
        const int x = _view.hover_point().x();