| @@ -1924,22 +1924,46 @@ class CanvasPort(QGraphicsItem): | |||||
| qCritical("PatchCanvas::CanvasPort.paint() - invalid port type '%s'" % port_type2str(self.m_port_type)) | qCritical("PatchCanvas::CanvasPort.paint() - invalid port type '%s'" % port_type2str(self.m_port_type)) | ||||
| return | return | ||||
| polygon = QPolygonF() | |||||
| polygon += QPointF(poly_locx[0], line_width / 2) | |||||
| polygon += QPointF(poly_locx[1], line_width / 2) | |||||
| polygon += QPointF(poly_locx[2], float(canvas.theme.port_height)/2) | |||||
| polygon += QPointF(poly_locx[3], canvas.theme.port_height - line_width / 2) | |||||
| polygon += QPointF(poly_locx[4], canvas.theme.port_height - line_width / 2) | |||||
| path = QPainterPath() | |||||
| if canvas.theme.port_mode == Theme.THEME_PORT_POLYGON: | |||||
| polygon = QPolygonF() | |||||
| polygon += QPointF(poly_locx[0], line_width / 2) | |||||
| polygon += QPointF(poly_locx[1], line_width / 2) | |||||
| polygon += QPointF(poly_locx[2], float(canvas.theme.port_height)/2) | |||||
| polygon += QPointF(poly_locx[3], canvas.theme.port_height - line_width / 2) | |||||
| polygon += QPointF(poly_locx[4], canvas.theme.port_height - line_width / 2) | |||||
| path.addPolygon(polygon) | |||||
| else: | |||||
| rounding = canvas.theme.port_rounding | |||||
| clipRect = QRectF() | |||||
| clipRect.setCoords(poly_locx[0], 0, poly_locx[1], canvas.theme.port_height) | |||||
| clipRect = clipRect.normalized() | |||||
| clipRect.adjust(-line_width / 2, 0, line_width / 2, 0) | |||||
| rect = QRectF(clipRect) | |||||
| rect.adjust(line_width / 2, line_width / 2, -line_width / 2, -line_width / 2) | |||||
| if self.m_port_mode == PORT_MODE_INPUT: | |||||
| rect.adjust(-rounding, 0, 0, 0) | |||||
| else: | |||||
| rect.adjust(0, 0, rounding, 0) | |||||
| path.addRoundedRect(rect, rounding, rounding) | |||||
| path.moveTo(poly_locx[0], line_width / 2) | |||||
| path.lineTo(poly_locx[4], canvas.theme.port_height - line_width / 2) | |||||
| path.closeSubpath() | |||||
| painter.setClipping(True) | |||||
| painter.setClipRect(clipRect) | |||||
| if canvas.theme.port_bg_pixmap: | if canvas.theme.port_bg_pixmap: | ||||
| portRect = polygon.boundingRect() | |||||
| portRect = path.boundingRect() | |||||
| portPos = portRect.topLeft() | portPos = portRect.topLeft() | ||||
| painter.drawTiledPixmap(portRect, canvas.theme.port_bg_pixmap, portPos) | painter.drawTiledPixmap(portRect, canvas.theme.port_bg_pixmap, portPos) | ||||
| else: | else: | ||||
| painter.setBrush(poly_color) | painter.setBrush(poly_color) | ||||
| painter.setPen(poly_pen) | painter.setPen(poly_pen) | ||||
| painter.drawPolygon(polygon) | |||||
| painter.drawPath(path) | |||||
| painter.setClipping(False) # For square port | |||||
| painter.setPen(text_pen) | painter.setPen(text_pen) | ||||
| painter.setFont(self.m_port_font) | painter.setFont(self.m_port_font) | ||||