Ejemplo n.º 1
0
    def styleChange(self):
        super().styleChange()
        style = self.style()

        # Text item ----------------------------------------------------------------------------------------------------
        self._text_item.setFont(style.font(Style.MessageTextFont))
        self._text_item.setMaximumWidth(style.pixelMetric(Style.MessageTextLength))

        # Position
        text_metrics = QFontMetricsF(self._text_item.font())
        icon_size = style.pixelMetric(Style.MessageIconSize)
        margin = style.pixelMetric(Style.MessageIconTextMargin)

        self._text_item.setPos(icon_size + margin, 0)
        self._text_item.moveBy(0, text_metrics.capHeight() / 2)
        self._text_item.moveBy(0, icon_size / 2)

        # Icon item ----------------------------------------------------------------------------------------------------
        icon_renderer = self._icon_item.renderer()
        if icon_renderer is None:  # No icon set
            scale = 1
        else:
            scale = icon_size / icon_renderer.defaultSize().width()

        self._icon_item.setScale(scale)
Ejemplo n.º 2
0
    def styleChange(self):
        self.prepareGeometryChange()
        style = self.style()

        # Size and Frame
        frame_width = style.pixelMetric(Style.NodeWidth)
        self._size.setWidth(frame_width)
        self._body_item.setPen(style.framePen(self.palette()))

        path = QPainterPath()
        path.addRoundedRect(QRectF(QPointF(), self.size()),
                            style.pixelMetric(Style.NodeFrameCornerRadius),
                            style.pixelMetric(Style.NodeFrameCornerRadius))
        self._body_item.setPath(path)

        # Title item
        title_font = style.font(Style.NodeTitleFont)
        title_metrics = QFontMetricsF(title_font)

        padding = style.pixelMetric(Style.NodeFrameTextPadding)

        self._title_item.setFont(title_font)
        self._title_item.setPos(padding, padding)
        self._title_item.moveBy(0, title_metrics.capHeight())
        self._title_item.setMaximumWidth(frame_width - padding * 2)

        # Divider item
        div_margin = style.pixelMetric(Style.NodeDividerTextMargin)
        div_voffset = padding + title_metrics.capHeight(
        ) + title_metrics.descent() + div_margin

        self._divider.setLine(0, div_voffset, frame_width, div_voffset)
        self._divider.setPen(style.framePen(self.palette()))

        # Description item
        self._description_item.setFont(style.font(Style.NodeDescriptionFont))
        self._description_item.setPos(padding, div_voffset + div_margin)
        self._description_item.setFrame(
            QRectF(
                QPointF(0, 0),
                QSizeF(
                    px(frame_width) - padding * 2,
                    (px(self.size().height()) - padding) -
                    (div_voffset + padding))))
Ejemplo n.º 3
0
    def styleChange(self):
        super().styleChange()
        self.prepareGeometryChange()
        style = self.style()

        margin = style.pixelMetric(Style.ConnectionStemTextMargin)
        metrics = QFontMetricsF(self._text_item.font())

        self._stem_item.setLine(QLineF(self.stemRoot(), self.stemTip()))
        self._text_item.setPos(self.stemTip().x() + margin,
                               metrics.capHeight() / 2)