X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fselectableitem.h;h=36ff0dbcd48a95adf8626aefe751185adb1c39f7;hb=8dbbc7f0b9ea59d0f0d62225772f8a56eee125f5;hp=467da0f2cbf0b7140edf87fb9e3be0b34b3c79e6;hpb=ef8311a4296a2dc85c82b063de61efa4eb7a8404;p=pulseview.git diff --git a/pv/view/selectableitem.h b/pv/view/selectableitem.h index 467da0f..36ff0db 100644 --- a/pv/view/selectableitem.h +++ b/pv/view/selectableitem.h @@ -26,8 +26,15 @@ #include class QAction; +class QMenu; +class QWidget; namespace pv { + +namespace widgets { +class Popup; +} + namespace view { class SelectableItem : public QObject @@ -42,7 +49,7 @@ public: public: /** - * Returns true if the signal has been selected by the user. + * Returns true if the item has been selected by the user. */ bool selected() const; @@ -51,16 +58,47 @@ public: */ void select(bool select = true); + /** + * Returns true if the item is being dragged. + */ + bool dragging() const; + + /** + * Retunrns the current drag point. + */ + QPoint drag_point() const; + + /** + * Sets this item into the dragged state. + */ + void drag(); + + /** + * Sets this item into the un-dragged state. + */ + void drag_release(); + + /** + * Get the drag point. + */ + virtual QPoint point() const = 0; + public: - virtual void init_context_bar_actions(QWidget *parent) = 0; + virtual QMenu* create_context_menu(QWidget *parent); + + virtual pv::widgets::Popup* create_popup(QWidget *parent) = 0; - virtual const std::list get_context_bar_actions() = 0; + virtual void delete_pressed(); protected: static QPen highlight_pen(); +protected: + QWidget *context_parent_; + private: - bool _selected; + bool selected_; + QPoint drag_point_; }; } // namespace view