#ifndef PULSEVIEW_PV_VIEW_HEADER_H
#define PULSEVIEW_PV_VIEW_HEADER_H
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
#include <list>
+#include <memory>
#include <utility>
#include "marginwidget.h"
namespace pv {
namespace view {
-class Signal;
+class RowItem;
class View;
class Header : public MarginWidget
{
Q_OBJECT
+private:
+ static const int Padding;
+
public:
Header(View &parent);
+ QSize sizeHint() const;
+
+ /**
+ * The horizontal offset, relative to the left edge of the widget,
+ * where the arrows of the trace labels end.
+ */
+ static const int BaselineOffset;
+
+ void signals_updated();
+
private:
- boost::shared_ptr<pv::view::Signal> get_mouse_over_signal(
+ std::shared_ptr<pv::view::RowItem> get_mouse_over_row_item(
const QPoint &pt);
+ void clear_selection();
+
+ void show_popup(const std::shared_ptr<RowItem> &item);
+
private:
void paintEvent(QPaintEvent *event);
private:
+ void mouseLeftPressEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent * event);
+ void mouseLeftReleaseEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
-private slots:
- void on_action_set_name_triggered();
-
- void on_action_set_colour_triggered();
+ void keyPressEvent(QKeyEvent *e);
+private Q_SLOTS:
void on_signals_moved();
-signals:
+ void on_trace_changed();
+
+Q_SIGNALS:
void signals_moved();
private:
QPoint _mouse_point;
QPoint _mouse_down_point;
+ bool _dragging;
- std::list<std::pair<boost::weak_ptr<Signal>, int> >
- _drag_sigs;
-
- boost::shared_ptr<Signal> _context_signal;
- QAction *_action_set_name;
- QAction *_action_set_colour;
+ std::list<std::pair<std::weak_ptr<RowItem>, int> >
+ _drag_row_items;
};
} // namespace view