]> sigrok.org Git - pulseview.git/blobdiff - pv/view/timemarker.h
Don't use Qt-defined keywords, they can cause problems with other headers.
[pulseview.git] / pv / view / timemarker.h
index 34e936c1423fd4c17c02b8e6212d9ea63bb4878d..ec34fb5668a1a89a6db2f03bc21753e8a0dfe4ce 100644 (file)
 #define PULSEVIEW_PV_VIEW_MARKER_H
 
 #include <QColor>
+#include <QDoubleSpinBox>
 #include <QObject>
 #include <QRectF>
+#include <QWidgetAction>
+
+#include "selectableitem.h"
 
 class QPainter;
 class QRect;
@@ -33,7 +37,7 @@ namespace view {
 
 class View;
 
-class TimeMarker : public QObject
+class TimeMarker : public SelectableItem
 {
        Q_OBJECT
 
@@ -44,12 +48,7 @@ protected:
         * @param colour A reference to the colour of this cursor.
         * @param time The time to set the flag to.
         */
-       TimeMarker(const View &view, const QColor &colour, double time);
-
-       /**
-        * Copy constructor
-        */
-       TimeMarker(const TimeMarker &s);
+       TimeMarker(View &view, const QColor &colour, double time);
 
 public:
        /**
@@ -62,6 +61,8 @@ public:
         */
        void set_time(double time);
 
+       float get_x() const;
+
        /**
         * Paints the marker to the viewport.
         * @param p The painter to draw with.
@@ -80,19 +81,30 @@ public:
         * Paints the marker's label to the ruler.
         * @param p The painter to draw with.
         * @param rect The rectangle of the ruler client area.
+        * @param prefix The SI prefix to paint time value with.
         */
-       virtual void paint_label(QPainter &p, const QRect &rect) = 0;
+       virtual void paint_label(QPainter &p, const QRect &rect,
+               unsigned int prefix) = 0;
+
+       pv::widgets::Popup* create_popup(QWidget *parent);
 
-signals:
+private Q_SLOTS:
+       void on_value_changed(double value);
+
+Q_SIGNALS:
        void time_changed();
 
 protected:
-       const View &_view;
+       View &_view;
        const QColor &_colour;
 
        double _time;
 
        QSizeF _text_size;
+
+       QWidgetAction *_value_action;
+       QDoubleSpinBox *_value_widget;
+       bool _updating_value_widget;
 };
 
 } // namespace view