X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fheader.h;h=49a95bb7ce05069f1c209ca74ae69fcc61c93ef8;hb=8dbbc7f0b9ea59d0f0d62225772f8a56eee125f5;hp=b9cf8da3e76560bc21b0ded392ab85417458acc8;hpb=b3b57abc4fcfea1471529e9d116eaf11905f6639;p=pulseview.git diff --git a/pv/view/header.h b/pv/view/header.h index b9cf8da..49a95bb 100644 --- a/pv/view/header.h +++ b/pv/view/header.h @@ -21,48 +21,77 @@ #ifndef PULSEVIEW_PV_VIEW_HEADER_H #define PULSEVIEW_PV_VIEW_HEADER_H -#include +#include +#include +#include -#include +#include "marginwidget.h" namespace pv { - -class Signal; - namespace view { +class RowItem; class View; -class Header : public QWidget +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; + +private: + std::shared_ptr get_mouse_over_row_item( + const QPoint &pt); + + void clear_selection(); + + void show_popup(const std::shared_ptr &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 leaveEvent(QEvent *event); void contextMenuEvent(QContextMenuEvent *event); -private slots: - void on_action_set_name_triggered(); + void keyPressEvent(QKeyEvent *e); - void on_action_set_colour_triggered(); +private Q_SLOTS: + void on_signals_moved(); -private: - View &_view; + void on_group(); + + void on_ungroup(); - QPoint _mouse_point; +Q_SIGNALS: + void signals_moved(); - boost::shared_ptr _context_signal; - QAction *_action_set_name; - QAction *_action_set_colour; +private: + QPoint mouse_point_; + QPoint mouse_down_point_; + std::shared_ptr mouse_down_item_; + bool dragging_; }; } // namespace view