コード例 #1
0
def draw_triangle_port(painter, rect, info):
    """
    Custom paint function for drawing a Triangle shaped port.

    Args:
        painter (QtGui.QPainter): painter object.
        rect (QtCore.QRectF): port rect used to describe parameters
                              needed to draw.
        info (dict): information describing the ports current state.
            {
                'port_type': 'in',
                'color': (0, 0, 0),
                'border_color': (255, 255, 255),
                'multi_connection': False,
                'connected': False,
                'hovered': False,
            }
    """
    painter.save()

    size = int(rect.height() / 2)
    triangle = QtGui.QPolygonF()
    triangle.append(QtCore.QPointF(-size, size))
    triangle.append(QtCore.QPointF(0.0, -size))
    triangle.append(QtCore.QPointF(size, size))

    transform = QtGui.QTransform()
    transform.translate(rect.center().x(), rect.center().y())
    port_poly = transform.map(triangle)

    # mouse over port color.
    if info['hovered']:
        color = QtGui.QColor(14, 45, 59)
        border_color = QtGui.QColor(136, 255, 35)
    # port connected color.
    elif info['connected']:
        color = QtGui.QColor(195, 60, 60)
        border_color = QtGui.QColor(200, 130, 70)
    # default port color
    else:
        color = QtGui.QColor(*info['color'])
        border_color = QtGui.QColor(*info['border_color'])

    pen = QtGui.QPen(border_color, 1.8)
    pen.setJoinStyle(QtCore.Qt.MiterJoin)

    painter.setPen(pen)
    painter.setBrush(color)
    painter.drawPolygon(port_poly)

    painter.restore()
コード例 #2
0
ファイル: pipe.py プロジェクト: spider2449/NodeGraphQt
 def __init__(self, input_port=None, output_port=None):
     super(Pipe, self).__init__()
     self.setZValue(Z_VAL_PIPE)
     self.setAcceptHoverEvents(True)
     self._color = PIPE_DEFAULT_COLOR
     self._style = PIPE_STYLE_DEFAULT
     self._active = False
     self._highlight = False
     self._input_port = input_port
     self._output_port = output_port
     size = 6.0
     self._arrow = QtGui.QPolygonF()
     self._arrow.append(QtCore.QPointF(-size, size))
     self._arrow.append(QtCore.QPointF(0.0, -size * 1.5))
     self._arrow.append(QtCore.QPointF(size, size))
コード例 #3
0
ファイル: pipe.py プロジェクト: shdwdln/NodeGraphQt
 def __init__(self, input_port=None, output_port=None):
     super(Pipe, self).__init__()
     self.setZValue(Z_VAL_PIPE)
     self.setAcceptHoverEvents(True)
     self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
     self._color = PIPE_DEFAULT_COLOR
     self._style = PIPE_STYLE_DEFAULT
     self._active = False
     self._highlight = False
     self._input_port = input_port
     self._output_port = output_port
     size = 6.0
     self._arrow = QtGui.QPolygonF()
     self._arrow.append(QtCore.QPointF(-size, size))
     self._arrow.append(QtCore.QPointF(0.0, -size * 1.5))
     self._arrow.append(QtCore.QPointF(size, size))
     self.setCacheMode(ITEM_CACHE_MODE)
コード例 #4
0
ファイル: pipe.py プロジェクト: sol87/NodeGraphQt
 def set_size(self, size=5.0):
     triangle = QtGui.QPolygonF()
     triangle.append(QtCore.QPointF(-size, size))
     triangle.append(QtCore.QPointF(0.0, -size * 2))
     triangle.append(QtCore.QPointF(size, size))
     self.setPolygon(triangle)