X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Ftrace.cpp;h=7d8501122753aabe9f4d739d2dbea82d211fab5b;hp=cc91fff5a5aa43de401ec6b64cc4f1cc48d61090;hb=99c4952654ae218a6b45ca61066deb4f81f68416;hpb=641574bcc118be0b6dc3a65039ab3497f9d7241a diff --git a/pv/views/trace/trace.cpp b/pv/views/trace/trace.cpp index cc91fff5..7d850112 100644 --- a/pv/views/trace/trace.cpp +++ b/pv/views/trace/trace.cpp @@ -60,6 +60,17 @@ Trace::Trace(shared_ptr channel) : this, SLOT(on_name_changed(const QString&))); connect(channel.get(), SIGNAL(color_changed(const QColor&)), this, SLOT(on_color_changed(const QColor&))); + + GlobalSettings::add_change_handler(this); + + GlobalSettings settings; + show_hover_marker_ = + settings.value(GlobalSettings::Key_View_ShowHoverMarker).toBool(); +} + +Trace::~Trace() +{ + GlobalSettings::remove_change_handler(this); } shared_ptr Trace::base() const @@ -67,6 +78,20 @@ shared_ptr Trace::base() const return base_; } +void Trace::set_segment_display_mode(SegmentDisplayMode mode) +{ + segment_display_mode_ = mode; + + if (owner_) + owner_->row_item_appearance_changed(true, true); +} + +void Trace::on_setting_changed(const QString &key, const QVariant &value) +{ + if (key == GlobalSettings::Key_View_ShowHoverMarker) + show_hover_marker_ = value.toBool(); +} + void Trace::paint_label(QPainter &p, const QRect &rect, bool hover) { const int y = get_visual_y(); @@ -172,6 +197,14 @@ int Trace::get_current_segment() const return current_segment_; } +void Trace::hover_point_changed(const QPoint &hp) +{ + (void)hp; + + if (owner_) + owner_->row_item_appearance_changed(false, true); +} + void Trace::paint_back(QPainter &p, ViewItemPaintParams &pp) { const View *view = owner_->view(); @@ -213,6 +246,26 @@ void Trace::add_color_option(QWidget *parent, QFormLayout *form) form->addRow(tr("Color"), color_button); } +void Trace::paint_hover_marker(QPainter &p) +{ + const View *view = owner_->view(); + assert(view); + + const int x = view->hover_point().x(); + + if (x == -1) + return; + + p.setPen(QPen(QColor(Qt::lightGray))); + + const pair extents = v_extents(); + + p.setRenderHint(QPainter::Antialiasing, false); + p.drawLine(x, get_visual_y() + extents.first, + x, get_visual_y() + extents.second); + p.setRenderHint(QPainter::Antialiasing, true); +} + void Trace::create_popup_form() { // Clear the layout @@ -244,24 +297,6 @@ void Trace::populate_popup_form(QWidget *parent, QFormLayout *form) add_color_option(parent, form); } -void Trace::set_name(QString name) -{ - base_->set_name(name); -} - -void Trace::set_color(QColor color) -{ - base_->set_color(color); -} - -void Trace::set_segment_display_mode(SegmentDisplayMode mode) -{ - segment_display_mode_ = mode; - - if (owner_) - owner_->row_item_appearance_changed(true, true); -} - void Trace::on_name_changed(const QString &text) { /* This event handler is called by SignalBase when the name was changed there */ @@ -291,13 +326,13 @@ void Trace::on_popup_closed() void Trace::on_nameedit_changed(const QString &name) { /* This event handler notifies SignalBase that the name changed */ - set_name(name); + base_->set_name(name); } void Trace::on_coloredit_changed(const QColor &color) { /* This event handler notifies SignalBase that the color changed */ - set_color(color); + base_->set_color(color); } } // namespace trace