X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;ds=sidebyside;f=pv%2Fview%2Fview.h;h=5fbc0adef7eb463317ef2e14cba17c00bf2898e0;hb=eae6e30af53f6b3e42dc5be212c82870078276b0;hp=6e097a4d68c11b4ba3e31df41e16f5a9d98a4dfc;hpb=18f7104f875a71bceeb152398b682737528a4ad7;p=pulseview.git diff --git a/pv/view/view.h b/pv/view/view.h index 6e097a4..5fbc0ad 100644 --- a/pv/view/view.h +++ b/pv/view/view.h @@ -33,6 +33,7 @@ #include #include "cursorpair.h" +#include "rowitemowner.h" namespace pv { @@ -43,10 +44,9 @@ namespace view { class CursorHeader; class Header; class Ruler; -class Trace; class Viewport; -class View : public QAbstractScrollArea { +class View : public QAbstractScrollArea, public RowItemOwner { Q_OBJECT private: @@ -70,6 +70,16 @@ public: SigSession& session(); const SigSession& session() const; + /** + * Returns the view of the owner. + */ + virtual pv::view::View* view(); + + /** + * Returns the view of the owner. + */ + virtual const pv::view::View* view() const; + Viewport* viewport(); const Viewport* viewport() const; @@ -84,7 +94,7 @@ public: * seconds. */ double offset() const; - int v_offset() const; + int owner_v_offset() const; void zoom(double steps); void zoom(double steps, int offset); @@ -100,7 +110,10 @@ public: */ void set_scale_offset(double scale, double offset); - std::vector< std::shared_ptr > get_traces() const; + /** + * Returns a list of traces owned by this object. + */ + std::vector< std::shared_ptr > child_items() const; std::list > selected_items() const; @@ -164,6 +177,23 @@ private: void update_layout(); + /** + * Satisifies RowItem functionality. + * @param p the QPainter to paint into. + * @param right the x-coordinate of the right edge of the header + * area. + * @param hover true if the label is being hovered over by the mouse. + */ + void paint_label(QPainter &p, int right, bool hover); + + /** + * Computes the outline rectangle of a label. + * @param right the x-coordinate of the right edge of the header + * area. + * @return Returns the rectangle of the signal label. + */ + QRectF label_rect(int right); + private: bool eventFilter(QObject *object, QEvent *event);