#include <boost/shared_ptr.hpp>
#include <QColor>
+#include <QComboBox>
#include <QPainter>
+#include <QPen>
#include <QRect>
#include <QString>
+#include <QWidgetAction>
#include <stdint.h>
+#include <libsigrok/libsigrok.h>
+
+#include "selectableitem.h"
+
namespace pv {
namespace data {
namespace view {
-class Signal
+class Signal : public SelectableItem
{
+ Q_OBJECT
+
private:
static const int LabelHitPadding;
- static const int LabelHighlightRadius;
+
+ static const QPen SignalAxisPen;
protected:
- Signal(QString name);
+ Signal(const sr_probe *const probe);
public:
/**
*/
void set_v_offset(int v_offset);
- /**
- * Returns true if the signal has been selected by the user.
- */
- bool selected() const;
-
- /**
- * Selects or deselects the signal.
- */
- void select(bool select = true);
-
/**
* Paints the signal with a QPainter
* @param p the QPainter to paint into.
bool pt_in_label_rect(int y, int left, int right,
const QPoint &point);
+protected:
+
+ /**
+ * Paints a zero axis across the viewport.
+ * @param p the QPainter to paint into.
+ * @param y the y-offset of the axis.
+ * @param left the x-coordinate of the left edge of the view.
+ * @param right the x-coordinate of the right edge of the view.
+ */
+ void paint_axis(QPainter &p, int y, int left, int right);
+
private:
/**
*/
QRectF get_label_rect(int y, int right);
+private slots:
+ void on_text_changed(const QString &text);
+
+signals:
+ void text_changed();
+
protected:
+ const sr_probe *const _probe;
+
QString _name;
QColor _colour;
int _v_offset;
- bool _selected;
-
QSizeF _text_size;
+
+ QWidgetAction _name_action;
+ QComboBox _name_widget;
+ bool _updating_name_widget;
};
} // namespace view