#include "tracetreeitem.hpp"
+#include <pv/globalsettings.hpp>
#include "pv/data/signalbase.hpp"
using std::shared_ptr;
* For this reason, Trace is more generic and contains properties and helpers
* that benefit any kind of time series items.
*/
-class Trace : public TraceTreeItem
+class Trace : public TraceTreeItem, public GlobalSettingsInterface
{
Q_OBJECT
static const QPen AxisPen;
static const int LabelHitPadding;
- static const QColor BrightGrayBGColour;
- static const QColor DarkGrayBGColour;
+ static const QColor BrightGrayBGColor;
+ static const QColor DarkGrayBGColor;
protected:
Trace(shared_ptr<data::SignalBase> channel);
+ ~Trace();
public:
/**
shared_ptr<data::SignalBase> base() const;
/**
- * Sets the name of the signal.
+ * Returns true if the item may be selected.
*/
- virtual void set_name(QString name);
+ virtual bool is_selectable(QPoint pos) const;
/**
- * Set the colour of the signal.
+ * Returns true if the item may be dragged/moved.
*/
- virtual void set_colour(QColor colour);
+ virtual bool is_draggable() const;
/**
* Configures the segment display mode to use.
*/
virtual void set_segment_display_mode(SegmentDisplayMode mode);
+ virtual void on_setting_changed(const QString &key, const QVariant &value);
+
/**
* Paints the signal label.
* @param p the QPainter to paint into.
*/
virtual void paint_label(QPainter &p, const QRect &rect, bool hover);
- virtual QMenu* create_context_menu(QWidget *parent);
+ virtual QMenu* create_header_context_menu(QWidget *parent);
pv::widgets::Popup* create_popup(QWidget *parent);
*/
QRectF label_rect(const QRectF &rect) const;
+ /**
+ * Computes the outline rectangle of the viewport hit-box.
+ * @param rect the rectangle of the viewport area.
+ * @return Returns the rectangle of the hit-box.
+ * @remarks The default implementation returns an empty hit-box.
+ */
+ virtual QRectF hit_box_rect(const ViewItemPaintParams &pp) const;
+
void set_current_segment(const int segment);
int get_current_segment() const;
+ virtual void hover_point_changed(const QPoint &hp);
+
protected:
/**
* Paints the background layer of the signal with a QPainter.
*/
void paint_axis(QPainter &p, ViewItemPaintParams &pp, int y);
- void add_colour_option(QWidget *parent, QFormLayout *form);
+ /**
+ * Draw a hover marker under the cursor position.
+ * @param p The painter to draw into.
+ */
+ void paint_hover_marker(QPainter &p);
+
+ void add_color_option(QWidget *parent, QFormLayout *form);
void create_popup_form();
protected Q_SLOTS:
virtual void on_name_changed(const QString &text);
- virtual void on_colour_changed(const QColor &colour);
+ virtual void on_color_changed(const QColor &color);
void on_popup_closed();
private Q_SLOTS:
void on_nameedit_changed(const QString &name);
- void on_colouredit_changed(const QColor &colour);
+ void on_coloredit_changed(const QColor &color);
protected:
shared_ptr<data::SignalBase> base_;
QPen axis_pen_;
SegmentDisplayMode segment_display_mode_;
+ bool show_hover_marker_;
/// The ID of the currently displayed segment
int current_segment_;