X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fheader.h;h=eed1d1e17b0e49d2d71908f29fae7f576b1afee9;hb=512bfc565937c0c1b07ec0e6486831526a6e1eee;hp=6b97c4af307df7b362e022262a9679d2cafe9bab;hpb=640d091b45b196cc586fbc6a7bec71c5c7d75544;p=pulseview.git diff --git a/pv/view/header.h b/pv/view/header.h index 6b97c4a..eed1d1e 100644 --- a/pv/view/header.h +++ b/pv/view/header.h @@ -21,45 +21,75 @@ #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 Trace; 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_trace( + const QPoint &pt); + + void clear_selection(); + private: void paintEvent(QPaintEvent *event); private: + void mousePressEvent(QMouseEvent * event); + + void mouseReleaseEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); void leaveEvent(QEvent *event); void contextMenuEvent(QContextMenuEvent *event); + void keyPressEvent(QKeyEvent *e); + private slots: - void on_action_set_name_triggered(); + void on_signals_changed(); -private: - View &_view; + void on_signals_moved(); + + void on_trace_changed(); +signals: + void signals_moved(); + +private: QPoint _mouse_point; + QPoint _mouse_down_point; + bool _dragging; - boost::shared_ptr _context_signal; - QAction *_action_set_name; + std::list, int> > + _drag_traces; }; } // namespace view