Beispiel #1
0
    def on_paint(self, painter, style_option, widget=None):
        lod = style_option.levelOfDetailFromTransform(painter.worldTransform())

        # painting circle
        painter.setBrush(self.color_background)
        painter.setPen(self.pen_outline)
        painter.drawEllipse(-self.radius, -self.radius, 2 * self.radius,
                            2 * self.radius)

        if self.show_label:
            painter.setFont(self.font_label)
            painter.setPen(self.pen_label)
            is_left = self.socket_position in (SocketPosition.LEFT_BOTTOM,
                                               SocketPosition.LEFT_TOP)

            alignment = QtCore.Qt.AlignVCenter
            if is_left:
                alignment |= QtCore.Qt.AlignLeft
            else:
                alignment |= QtCore.Qt.AlignRight

            node = self.parent()
            width = node.width / 2 - self.radius - self.outline_width
            height = self.radius * 2

            offset = 2 * self.radius + self.outline_width
            x = offset if is_left else -width - offset
            y = -self.radius

            rect = QtCore.QRectF(x, y, width, height)

            painter.drawText(rect, alignment, self.name)
Beispiel #2
0
 def boundingRect(self):
     p = self.proxy
     return QtCore.QRectF(
         -p.radius - p.outline_width,
         -p.radius - p.outline_width,
         2 * (p.radius + p.outline_width),
         2 * (p.radius + p.outline_width),
     )
Beispiel #3
0
    def __init__(self, e, ids=None):
        """
        Creates a QtPainterPath from an SVG document applying all transforms. 
        
        Does NOT include any styling.
        
        Parameters
        ----------
            e: Element or string
                An lxml etree.Element or an argument to pass to etree.parse()
            ids: List
                List of node ids to include. If not given all will be used.
        """
        self.isParentSvg = not isinstance(e, EtreeElement)
        self.ids = ids or []
        if self.isParentSvg:
            self._doc = etree.parse(e)
            self._svg = self._doc.getroot()
            self.viewBox = QtCore.QRectF(0, 0, -1, -1)

        super(QtSvgDoc, self).__init__(self._svg)
Beispiel #4
0
    def __init__(self, e, ids=None):
        """
        Creates a QtPainterPath from an SVG document applying all transforms. 
        
        Does NOT include any styling.
        
        Parameters
        ----------
            e: Element or string
                An lxml etree.Element or an argument to pass to etree.parse()
            ids: List
                List of node ids to include. If not given all will be used.
        """
        self.isParentSvg = not isinstance(e, EtreeElement)
        if self.isParentSvg:
            self._doc = etree.parse(e)
            self._svg = self._doc.getroot()
            if ids:
                nodes = set()
                xpath = self._svg.xpath
                for node_id in ids:
                    nodes.update(set(xpath('//*[@id="%s"]' % node_id)))

                # Find all nodes and their parents
                valid_nodes = set()
                for node in nodes:
                    valid_nodes.add(node)
                    parent = node.getparent()
                    while parent:
                        valid_nodes.add(parent)
                        parent = parent.getparent()
                self._nodes = valid_nodes

            self.viewBox = QtCore.QRectF(0, 0, -1, -1)

        super(QtSvgDoc, self).__init__(self._svg, self._nodes)
Beispiel #5
0
 def _default_area(self):
     return QtCore.QRectF(0, 0, self.size[0], self.size[1])
Beispiel #6
0
 def available_area(self):
     x, y = self.padding_left, self.padding_bottom
     w, h = (self.size[0] - (self.padding_right + self.padding_left),
             self.size[1] - (self.padding_bottom + self.padding_top))
     return QtCore.QRectF(x, y, w, h)
 def fitInView(self, bbox):
     if self.widget is not None:
         self.widget.fitInView(QtCore.QRectF(*bbox), QtCore.Qt.KeepAspectRatio)
 def boundingRect(self):
     return QtCore.QRectF(0., 0., float(self.proxy.width),
                          float(self.proxy.height)).normalized()