* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef PV_VIEW_RULER_H
-#define PV_VIEW_RULER_H
+#ifndef PULSEVIEW_PV_VIEW_RULER_H
+#define PULSEVIEW_PV_VIEW_RULER_H
-#include <QWidget>
+#include <boost/weak_ptr.hpp>
+
+#include "marginwidget.h"
namespace pv {
namespace view {
+class TimeMarker;
class View;
-class Ruler : public QWidget
+class Ruler : public MarginWidget
{
Q_OBJECT
private:
+ static const int RulerHeight;
static const int MinorTickSubdivision;
static const int ScaleUnits[3];
static const QString SIPrefixes[9];
static const int FirstSIPrefixPower;
+ static const int HoverArrowSize;
+
public:
Ruler(View &parent);
+ void clear_selection();
+
+ static QString format_time(double t, unsigned int prefix,
+ unsigned precision = 0);
+
+public:
+ QSize sizeHint() const;
+
private:
void paintEvent(QPaintEvent *event);
+ void mouseMoveEvent(QMouseEvent *e);
+ void mousePressEvent(QMouseEvent *e);
+ void mouseReleaseEvent(QMouseEvent *);
+
+private:
+ /**
+ * Draw a hover arrow under the cursor position.
+ */
+ void draw_hover_mark(QPainter &p);
+
+private slots:
+ void hover_point_changed();
+
private:
- View &_view;
+ boost::weak_ptr<TimeMarker> _grabbed_marker;
+ QPoint _mouse_down_point;
+ bool _dragging;
};
} // namespace view
} // namespace pv
-#endif // PV_VIEW_HEADER_H
+#endif // PULSEVIEW_PV_VIEW_RULER_H