#include <stdint.h>
-#include "selectableitem.h"
+#include "rowitem.h"
+
+class QFormLayout;
namespace pv {
-class SigSession;
+namespace widgets {
+class Popup;
+}
namespace view {
-class View;
-
-class Trace : public SelectableItem
+class Trace : public RowItem
{
Q_OBJECT
static const int LabelHitPadding;
protected:
- Trace(SigSession &session, QString name);
+ Trace(QString name);
public:
/**
* Gets the name of this signal.
*/
- QString get_name() const;
+ QString name() const;
/**
* Sets the name of the signal.
/**
* Get the colour of the signal.
*/
- QColor get_colour() const;
+ QColor colour() const;
/**
* Set the colour of the signal.
void set_colour(QColor colour);
/**
- * Gets the vertical layout offset of this signal.
- */
- int get_v_offset() const;
-
- /**
- * Sets the vertical layout offset of this signal.
- */
- void set_v_offset(int v_offset);
-
- /**
- * Returns true if the trace is visible and enabled.
- */
- virtual bool enabled() const = 0;
-
- virtual void set_view(pv::view::View *view);
-
- /**
- * Paints the background layer of the trace with a QPainter
- * @param p the QPainter to paint into.
- * @param left the x-coordinate of the left edge of the signal
- * @param right the x-coordinate of the right edge of the signal
- **/
- virtual void paint_back(QPainter &p, int left, int right);
-
- /**
- * Paints the mid-layer of the trace with a QPainter
- * @param p the QPainter to paint into.
- * @param left the x-coordinate of the left edge of the signal
- * @param right the x-coordinate of the right edge of the signal
- **/
- virtual void paint_mid(QPainter &p, int left, int right);
-
- /**
- * Paints the foreground layer of the trace with a QPainter
- * @param p the QPainter to paint into.
- * @param left the x-coordinate of the left edge of the signal
- * @param right the x-coordinate of the right edge of the signal
- **/
- virtual void paint_fore(QPainter &p, int left, int right);
-
- /**
- * Paints the signal label into a QGLWidget.
+ * Paints the signal label.
* @param p the QPainter to paint into.
* @param right the x-coordinate of the right edge of the header
* area.
*/
virtual void paint_label(QPainter &p, int right, bool hover);
- /**
- * Determines if a point is in the header label rect.
- * @param left the x-coordinate of the left edge of the header
- * area.
- * @param right the x-coordinate of the right edge of the header
- * area.
- * @param point the point to test.
- */
- bool pt_in_label_rect(int left, int right, const QPoint &point);
-
virtual QMenu* create_context_menu(QWidget *parent);
pv::widgets::Popup* create_popup(QWidget *parent);
/**
- * Gets the y-offset of the axis.
+ * 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.
*/
- int get_y() const;
+ QRectF label_rect(int right) const;
protected:
+
/**
* Gets the text colour.
* @remarks This colour is computed by comparing the lightness
*/
void paint_axis(QPainter &p, int y, int left, int right);
- virtual void populate_popup_form(QWidget *parent, QFormLayout *form);
-
-private:
-
- /**
- * Computes an caches the size of the label text.
- */
- void compute_text_size(QPainter &p);
-
- /**
- * Computes the outline rectangle of a label.
- * @param p the QPainter to lay out text with.
- * @param right the x-coordinate of the right edge of the header
- * area.
- * @return Returns the rectangle of the signal label.
- */
- QRectF get_label_rect(int right);
+ void add_colour_option(QWidget *parent, QFormLayout *form);
-private slots:
- void on_action_set_name_triggered();
+ void create_popup_form();
- void on_action_set_colour_triggered();
+ virtual void populate_popup_form(QWidget *parent, QFormLayout *form);
+private Q_SLOTS:
void on_text_changed(const QString &text);
-signals:
- void text_changed();
+ void on_colour_changed(const QColor &colour);
-protected:
- pv::SigSession &_session;
- pv::view::View *_view;
+ void on_popup_closed();
- QString _name;
- QColor _colour;
- int _v_offset;
+protected:
+ QString name_;
+ QColor colour_;
- QSizeF _text_size;
+private:
+ pv::widgets::Popup *popup_;
+ QFormLayout *popup_form_;
};
} // namespace view