X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fheader.h;h=541430ab794c615be82084d03d4054db9426c772;hb=ba6ec376740b86510493465ce3e4e8bdc7089656;hp=36b786c69268e85e23d65f5119e6d7c029c7269a;hpb=1d8dca913d07df3a53184e40246eb2e333520e31;p=pulseview.git diff --git a/pv/view/header.h b/pv/view/header.h index 36b786c..541430a 100644 --- a/pv/view/header.h +++ b/pv/view/header.h @@ -1,5 +1,5 @@ /* - * This file is part of the sigrok project. + * This file is part of the PulseView project. * * Copyright (C) 2012 Joel Holdsworth * @@ -18,31 +18,83 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef PV_VIEW_HEADER_H -#define PV_VIEW_HEADER_H +#ifndef PULSEVIEW_PV_VIEW_HEADER_H +#define PULSEVIEW_PV_VIEW_HEADER_H -#include +#include +#include +#include + +#include "marginwidget.h" namespace pv { 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: - View &_view; + 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); + + void keyPressEvent(QKeyEvent *e); + +private Q_SLOTS: + void on_signals_moved(); + + void on_group(); + + void on_ungroup(); + +Q_SIGNALS: + void signals_moved(); + +private: + QPoint _mouse_point; + QPoint _mouse_down_point; + std::shared_ptr _mouse_down_item; + bool _dragging; }; } // namespace view } // namespace pv -#endif // PV_VIEW_HEADER_H +#endif // PULSEVIEW_PV_VIEW_HEADER_H