X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Ftracegroup.cpp;h=3058cec5158ba90e1979a82ba3dd9d790b43ef56;hb=3e769a374963f37f7d52b65ef6c56bcdf1ef11fe;hp=af756d49be6bea0a4877433223773d0b3bbc84c2;hpb=0a51d1c122784a9052058c79ec2099b1ed104a22;p=pulseview.git diff --git a/pv/view/tracegroup.cpp b/pv/view/tracegroup.cpp index af756d4..3058cec 100644 --- a/pv/view/tracegroup.cpp +++ b/pv/view/tracegroup.cpp @@ -18,11 +18,13 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include #include #include +#include #include "tracegroup.h" @@ -35,6 +37,8 @@ namespace view { const int TraceGroup::Padding = 8; const int TraceGroup::Width = 12; +const int TraceGroup::LineThickness = 5; +const QColor TraceGroup::LineColour(QColor(0x55, 0x57, 0x53)); TraceGroup::~TraceGroup() { @@ -79,9 +83,33 @@ pair TraceGroup::v_extents() const void TraceGroup::paint_label(QPainter &p, int right, bool hover) { - (void)p; - (void)right; - (void)hover; + const QRectF r = label_rect(right).adjusted( + LineThickness / 2, LineThickness / 2, + -LineThickness / 2, -LineThickness / 2); + + // Paint the label + const QPointF points[] = { + r.topRight(), + r.topLeft(), + r.bottomLeft(), + r.bottomRight() + }; + + if (selected()) { + const QPen pen(highlight_pen()); + p.setPen(QPen(pen.brush(), pen.width() + LineThickness, + Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin)); + p.setBrush(Qt::transparent); + p.drawPolyline(points, countof(points)); + } + + p.setPen(QPen(QBrush(LineColour.darker()), LineThickness, + Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin)); + p.drawPolyline(points, countof(points)); + p.setPen(QPen(QBrush(hover ? LineColour.lighter() : LineColour), + LineThickness - 2, Qt::SolidLine, Qt::SquareCap, + Qt::RoundJoin)); + p.drawPolyline(points, countof(points)); } QRectF TraceGroup::label_rect(int right) const @@ -124,13 +152,12 @@ pv::widgets::Popup* TraceGroup::create_popup(QWidget *parent) int TraceGroup::owner_v_offset() const { - return v_offset() + _owner->owner_v_offset(); + return _owner ? layout_v_offset() + _owner->owner_v_offset() : 0; } -void TraceGroup::update_viewport() +unsigned int TraceGroup::depth() const { - if (_owner) - _owner->update_viewport(); + return _owner ? _owner->depth() + 1 : 0; } void TraceGroup::on_ungroup() @@ -139,13 +166,22 @@ void TraceGroup::on_ungroup() child_items().begin(), child_items().end()); clear_child_items(); - for (shared_ptr r : items) { + for (shared_ptr r : items) _owner->add_child_item(r); - r->set_v_offset(r->v_offset() + v_offset()); - } _owner->remove_child_item(shared_from_this()); - appearance_changed(); +} + +void TraceGroup::appearance_changed(bool label, bool content) +{ + if (_owner) + _owner->appearance_changed(label, content); +} + +void TraceGroup::extents_changed(bool horz, bool vert) +{ + if (_owner) + _owner->extents_changed(horz, vert); } } // namespace view