* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef PULSEVIEW_PV_SIGNAL_H
-#define PULSEVIEW_PV_SIGNAL_H
+#ifndef PULSEVIEW_PV_VIEW_SIGNAL_H
+#define PULSEVIEW_PV_VIEW_SIGNAL_H
-#include <boost/shared_ptr.hpp>
+#include <memory>
-#include <QColor>
#include <QComboBox>
-#include <QPainter>
-#include <QPen>
-#include <QRect>
-#include <QString>
#include <QWidgetAction>
#include <stdint.h>
-#include <libsigrok/libsigrok.h>
+#include "trace.h"
-#include "selectableitem.h"
+struct sr_channel;
namespace pv {
-class SigSession;
-
namespace data {
class SignalData;
}
+namespace device {
+class DevInst;
+}
+
namespace view {
-class Signal : public SelectableItem
+class Signal : public Trace
{
Q_OBJECT
-private:
- static const int LabelHitPadding;
-
- static const QPen SignalAxisPen;
-
protected:
- Signal(pv::SigSession &session, const sr_probe *const probe);
+ Signal(std::shared_ptr<pv::device::DevInst> dev_inst,
+ const sr_channel *const channel);
public:
- /**
- * Gets the name of this signal.
- */
- QString get_name() const;
-
/**
* Sets the name of the signal.
*/
void set_name(QString name);
- /**
- * Get the colour of the signal.
- */
- QColor get_colour() const;
+ virtual std::shared_ptr<pv::data::SignalData> data() const = 0;
/**
- * Set the colour of the signal.
+ * Returns true if the trace is visible and enabled.
*/
- void set_colour(QColor colour);
+ bool enabled() const;
- /**
- * Gets the vertical layout offset of this signal.
- */
- int get_v_offset() const;
+ void enable(bool enable = true);
- /**
- * Sets the vertical layout offset of this signal.
- */
- void set_v_offset(int v_offset);
+ const sr_channel* channel() const;
- /**
- * Paints the signal with a QPainter
- * @param p the QPainter to paint into.
- * @param y the y-coordinate to draw the signal at
- * @param left the x-coordinate of the left edge of the signal
- * @param right the x-coordinate of the right edge of the signal
- * @param scale the scale in seconds per pixel.
- * @param offset the time to show at the left hand edge of
- * the view in seconds.
- **/
- virtual void paint(QPainter &p, int y, int left, int right,
- double scale, double offset) = 0;
+ virtual void populate_popup_form(QWidget *parent, QFormLayout *form);
- /**
- * Paints the signal label into a QGLWidget.
- * @param p the QPainter to paint into.
- * @param y the y-coordinate of the signal.
- * @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.
- */
- virtual void paint_label(QPainter &p, int y, int right,
- bool hover);
+ QMenu* create_context_menu(QWidget *parent);
- /**
- * Determines if a point is in the header label rect.
- * @param y the y-coordinate of the signal.
- * @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 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:
+ void delete_pressed();
- /**
- * 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 y the y-coordinate of the signal.
- * @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 y, int right);
-
-private slots:
- void on_text_changed(const QString &text);
+ bool eventFilter(QObject *obj, QEvent *evt);
-signals:
- void text_changed();
+private Q_SLOTS:
+ void on_disable();
protected:
- pv::SigSession &_session;
- const sr_probe *const _probe;
-
- QString _name;
- QColor _colour;
- int _v_offset;
-
- QSizeF _text_size;
+ std::shared_ptr<pv::device::DevInst> _dev_inst;
+ const sr_channel *const _channel;
- QWidgetAction _name_action;
- QComboBox _name_widget;
+ QComboBox *_name_widget;
bool _updating_name_widget;
};
} // namespace view
} // namespace pv
-#endif // PULSEVIEW_PV_SIGNAL_H
+#endif // PULSEVIEW_PV_VIEW_SIGNAL_H