namespace views {
namespace trace {
+class ContainerWidget;
+
struct DecodeTraceRow {
// When adding a field, make sure it's initialized properly in
// DecodeTrace::update_rows()
QPolygon expand_marker_shape;
float anim_height, anim_shape;
- QWidget* container;
+ ContainerWidget* container;
QWidget* header_container;
QWidget* selector_container;
vector<QCheckBox*> selectors;
+
+ QColor row_color;
+ map<uint32_t, QColor> ann_class_color;
+ map<uint32_t, QColor> ann_class_dark_color;
+};
+
+class ContainerWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ ContainerWidget(QWidget *parent = nullptr);
+
+ virtual void resizeEvent(QResizeEvent* event);
+
+Q_SIGNALS:
+ void widgetResized(QWidget* sender);
};
class DecodeTrace : public Trace
virtual void mouse_left_press_event(const QMouseEvent* event);
private:
- void draw_annotations(vector<const Annotation*> annotations, QPainter &p,
- int h, const ViewItemPaintParams &pp, int y, QColor row_color,
- int row_title_width);
+ void draw_annotations(deque<const Annotation*>& annotations, QPainter &p,
+ const ViewItemPaintParams &pp, int y, const DecodeTraceRow& row);
- void draw_annotation(const Annotation* a, QPainter &p, int h,
- const ViewItemPaintParams &pp, int y, QColor row_color,
- int row_title_width) const;
+ void draw_annotation(const Annotation* a, QPainter &p,
+ const ViewItemPaintParams &pp, int y, const DecodeTraceRow& row) const;
void draw_annotation_block(qreal start, qreal end, Annotation::Class ann_class,
- bool use_ann_format, QPainter &p, int h, int y, QColor row_color) const;
+ bool use_ann_format, QPainter &p, int y, const DecodeTraceRow& row) const;
- void draw_instant(const Annotation* a, QPainter &p, int h, qreal x, int y) const;
+ void draw_instant(const Annotation* a, QPainter &p, qreal x, int y) const;
- void draw_range(const Annotation* a, QPainter &p, int h, qreal start, qreal end,
+ void draw_range(const Annotation* a, QPainter &p, qreal start, qreal end,
int y, const ViewItemPaintParams &pp, int row_title_width) const;
void draw_error(QPainter &p, const QString &message, const ViewItemPaintParams &pp);
- void draw_unresolved_period(QPainter &p, int h, int left, int right) const;
+ void draw_unresolved_period(QPainter &p, int left, int right) const;
pair<double, double> get_pixels_offset_samples_per_pixel() const;
QComboBox* create_channel_selector_init_state(QWidget *parent,
const data::decode::DecodeChannel *ch);
- void export_annotations(vector<const Annotation*> *annotations) const;
+ void export_annotations(deque<const Annotation*>& annotations) const;
void initialize_row_widgets(DecodeTraceRow* r, unsigned int row_id);
void update_rows();
void on_show_hide_decoder(int index);
void on_show_hide_row(int row_id);
void on_show_hide_class(QWidget* sender);
+ void on_row_container_resized(QWidget* sender);
void on_copy_annotation_to_clipboard();