def __paintDeclaration(self, painter): """Paints the scope header""" s = self.canvas.settings painter.setBrush(QBrush(self.bgColor)) pen = QPen(self.fgColor) painter.setFont(s.monoFont) painter.setPen(pen) canvasLeft = self.baseX - s.scopeRectRadius canvasTop = self.baseY - s.scopeRectRadius textHeight = self.textRect.height() yShift = 0 if hasattr(self.ref, 'sideComment'): yShift = s.vTextPadding painter.drawText(canvasLeft + s.hHeaderPadding, canvasTop + s.vHeaderPadding + yShift, self.textRect.width(), textHeight, Qt.AlignLeft, self.text) pen = QPen(self.borderColor) pen.setWidth(s.boxLineWidth) painter.setPen(pen) # If the scope is selected then the line may need to be shorter # to avoid covering the outline row = self.addr[1] - 1 column = self.addr[0] - 1 correction = 0.0 if self.canvas.cells[row][column].isSelected(): correction = s.selectPenWidth - 1 painter.drawLine( canvasLeft + correction, self.baseY + self.height, canvasLeft + self.canvas.minWidth - 2 * s.hCellPadding - correction, self.baseY + self.height)
def paint(self, painter, option, widget): """Draws the independent comment""" settings = self.canvas.settings brush = QBrush(settings.commentBGColor) self.setBrush(brush) if self.isSelected(): selectPen = QPen(settings.selectColor) selectPen.setWidth(settings.selectPenWidth) selectPen.setJoinStyle(Qt.RoundJoin) self.setPen(selectPen) else: pen = QPen(settings.commentLineColor) pen.setWidth(settings.commentLineWidth) pen.setJoinStyle(Qt.RoundJoin) self.setPen(pen) # Hide the dotted outline itemOption = QStyleOptionGraphicsItem(option) if itemOption.state & QStyle.State_Selected != 0: itemOption.state = itemOption.state & ~QStyle.State_Selected QGraphicsPathItem.paint(self, painter, itemOption, widget) # Draw the text in the rectangle pen = QPen(settings.commentFGColor) painter.setFont(settings.monoFont) painter.setPen(pen) painter.drawText( self.__leftEdge + settings.hCellPadding + self.__hTextPadding, self.baseY + settings.vCellPadding + self.__vTextPadding, self.__textRect.width(), self.__textRect.height(), Qt.AlignLeft, self.__getText())
def paint(self, painter, option, widget): """Draws the collapsed group""" del option # unused argument del widget # unused argument settings = self.canvas.settings # Group rectangle if self.isSelected(): selectPen = QPen(settings.selectColor) selectPen.setWidth(settings.selectPenWidth) selectPen.setJoinStyle(Qt.RoundJoin) painter.setPen(selectPen) else: pen = QPen(self.__borderColor) if self.highlight: pen.setStyle(Qt.SolidLine) else: pen.setStyle(Qt.DotLine) pen.setWidth(1) painter.setPen(pen) brush = QBrush(self.__bgColor) painter.setBrush(brush) fullWidth = self.groupWidth + 2 * settings.openGroupHSpacer fullHeight = self.groupHeight + 2 * settings.openGroupVSpacer painter.drawRoundedRect(self.baseX + settings.openGroupHSpacer, self.baseY + settings.openGroupVSpacer, fullWidth, fullHeight, settings.openGroupVSpacer, settings.openGroupVSpacer)
def paint(self, painter, option, widget): """Draws a curve and then adds an arrow""" pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) self.setPen(pen) painter.setRenderHint(QPainter.Antialiasing, True) QGraphicsPathItem.paint(self, painter, option, widget)
def paint(self, painter, option, widget): """Draws a curve and then adds an arrow""" pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) pen.setStyle(Qt.DotLine) self.setPen(pen) QGraphicsPathItem.paint(self, painter, option, widget)
def paint(self, painter, option, widget): """Draws the code block""" settings = self.canvas.settings pen = QPen(settings.cfLineColor) pen.setWidth(settings.cfLineWidth) pen.setJoinStyle(Qt.RoundJoin) self.setPen(pen) painter.setPen(pen) QGraphicsPathItem.paint(self, painter, option, widget)
def getPainterPen(self, selected, borderColor): """Provides the painter pen for the item""" if selected: pen = QPen(self.canvas.settings.selectColor) pen.setWidth(self.canvas.settings.selectPenWidth) else: pen = QPen(borderColor) pen.setWidth(self.canvas.settings.boxLineWidth) pen.setJoinStyle(Qt.RoundJoin) return pen
def __init__(self, node): QGraphicsRectItem.__init__(self) self.__node = node posX = node.posX - node.width / 2.0 posY = node.posY - node.height / 2.0 QGraphicsRectItem.__init__(self, posX, posY, node.width, node.height) pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) self.setPen(pen) self.setBrush(QColor(216, 216, 207))
def paint(self, painter, option, widget): """Draws the collapsed group""" del option # unused argument del widget # unused argument settings = self.canvas.settings # Outer rectangle rectWidth = self.minWidth - 2 * settings.hCellPadding rectHeight = self.minHeight - 2 * settings.vCellPadding if self.isSelected(): selectPen = QPen(settings.selectColor) selectPen.setWidth(settings.selectPenWidth) selectPen.setJoinStyle(Qt.RoundJoin) painter.setPen(selectPen) else: pen = QPen(self.__borderColor) painter.setPen(pen) brush = QBrush(self.__bgColor) painter.setBrush(brush) painter.drawRect(self.baseX + settings.hCellPadding, self.baseY + settings.vCellPadding, rectWidth, rectHeight) # Inner rectangle rectWidth -= 2 * settings.collapsedOutlineWidth rectHeight -= 2 * settings.collapsedOutlineWidth pen = QPen(self.__borderColor) painter.setPen(pen) painter.drawRect(self.baseX + settings.hCellPadding + settings.collapsedOutlineWidth, self.baseY + settings.vCellPadding + settings.collapsedOutlineWidth, rectWidth, rectHeight) # Draw the text in the rectangle pen = QPen(self.__fgColor) painter.setFont(settings.monoFont) painter.setPen(pen) textWidth = self.__textRect.width() + 2 * settings.hTextPadding textShift = (rectWidth - textWidth) / 2 painter.drawText( self.baseX + settings.hCellPadding + settings.hTextPadding + settings.collapsedOutlineWidth + textShift, self.baseY + settings.vCellPadding + settings.vTextPadding + settings.collapsedOutlineWidth, self.__textRect.width(), self.__textRect.height(), Qt.AlignLeft, self._getText())
def paint(self, painter, option, widget): """Paints the control""" settings = self.ref.canvas.settings pen = QPen(settings.groupControlBorderColor) pen.setStyle(Qt.SolidLine) pen.setWidth(1) painter.setPen(pen) brush = QBrush(settings.groupControlBGColor) painter.setBrush(brush) painter.drawRoundedRect(self.x(), self.y(), self.__width, self.__height, 1, 1)
def __init__(self, node, refFile, srcobj, deviceDPI): self.__node = node self.__srcobj = srcobj self.__refFile = refFile self.__pixelsPerLine = self.calcPixelsPerLine() posX = node.posX - node.width / 2.0 posY = node.posY - node.height / 2.0 QGraphicsRectItem.__init__(self, posX, posY, node.width, node.height) pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) self.setPen(pen) # To make double click delivered self.setFlag(QGraphicsItem.ItemIsSelectable, True)
def paintBadgeRectangle(self, painter, isSelected, borderColor, bgColor): """Draws the badge filled rectange""" s = self.ref.canvas.settings if isSelected: pen = QPen(s.selectColor) pen.setWidth(s.selectPenWidth) else: pen = QPen(borderColor) pen.setWidth(s.badgeLineWidth) pen.setJoinStyle(Qt.RoundJoin) painter.setPen(pen) painter.setBrush(QBrush(bgColor)) painter.drawRoundedRect(self.x(), self.y(), self.width, self.height, s.badgeRadius, s.badgeRadius)
def __init__(self, node, refFile, srcobj): QGraphicsRectItem.__init__(self) self.__node = node self.__srcobj = srcobj self.__refFile = refFile posX = node.posX - node.width / 2.0 posY = node.posY - node.height / 2.0 QGraphicsRectItem.__init__(self, posX, posY, node.width, node.height) pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) self.setPen(pen) # To make double click delivered self.setFlag(QGraphicsItem.ItemIsSelectable, True) self.setBrush(QColor(253, 245, 145))
def paint(self, painter, option, widget): """Paints the connector""" color = self.__settings.lineColor if self.penColor: color = self.penColor width = self.__settings.lineWidth if self.penWidth: width = self.penWidth pen = QPen(color) pen.setWidth(width) pen.setCapStyle(Qt.FlatCap) pen.setJoinStyle(Qt.RoundJoin) if self.penStyle: pen.setStyle(self.penStyle) self.setPen(pen) QGraphicsPathItem.paint(self, painter, option, widget)
def __paintTopLeft(self, painter): """Paints the scope rectangle""" s = self.canvas.settings painter.setPen(self.getPainterPen(self.isSelected(), self.borderColor)) painter.setBrush(QBrush(self.bgColor)) yPos = self.baseY + s.vCellPadding height = self.canvas.minHeight - 2 * s.vCellPadding if self.aboveBadges.hasAny(): badgeShift = self.aboveBadges.height + s.badgeToScopeVPadding yPos += badgeShift height -= badgeShift if self.kind in [CellElement.FOR_SCOPE, CellElement.WHILE_SCOPE]: cellBelow = self.canvas.cells[self.addr[1] + 1][self.addr[0]] halfDeclHeight = (cellBelow.height + s.scopeRectRadius) / 2 yPos += halfDeclHeight height -= halfDeclHeight painter.drawRoundedRect(self.baseX + s.hCellPadding, yPos, self.canvas.minWidth - 2 * s.hCellPadding, height, s.scopeRectRadius, s.scopeRectRadius) if self.kind in [CellElement.FOR_SCOPE, CellElement.WHILE_SCOPE]: # Brush if self.kind == CellElement.FOR_SCOPE: painter.setBrush(QBrush(s.forScopeHeaderBGColor)) else: painter.setBrush(QBrush(s.whileScopeHeaderBGColor)) # Pen, if not selected if not self.isSelected(): if self.kind == CellElement.FOR_SCOPE: pen = QPen(QColor(s.forScopeHeaderBorderColor)) pen.setWidth(s.forScopeHeaderPenWidth) else: pen = QPen(QColor(s.whileScopeHeaderBorderColor)) pen.setWidth(s.whileScopeHeaderPenWidth) painter.setPen(pen) painter.drawPolygon(QPointF(self.x1, self.y1), QPointF(self.x2, self.y2), QPointF(self.x3, self.y3), QPointF(self.x4, self.y4), QPointF(self.x5, self.y5), QPointF(self.x6, self.y6))
def __init__(self, node, refFile, docstring): QGraphicsRectItem.__init__(self) self.__node = node self.__refFile = refFile self.__docstring = docstring posX = node.posX - node.width / 2.0 posY = node.posY - node.height / 2.0 QGraphicsRectItem.__init__(self, posX, posY, node.width, node.height) pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) self.setPen(pen) self.setBrush(QColor(220, 255, 220)) # System modules are clickable self.setFlag(QGraphicsItem.ItemIsSelectable, True)
def paint(self, painter, option, widget): """Paints the line item""" color = self.canvas.settings.cfLineColor if self.penColor: color = self.penColor width = self.canvas.settings.cfLineWidth if self.penWidth: width = self.penWidth pen = QPen(color) pen.setWidth(width) pen.setCapStyle(Qt.FlatCap) pen.setJoinStyle(Qt.RoundJoin) if self.penStyle: pen.setStyle(self.penStyle) self.setPen(pen) QGraphicsLineItem.paint(self, painter, option, widget)
def __paintDeclaration(self, painter): """Paints the scope header""" s = self.canvas.settings canvasLeft = self.baseX - s.scopeRectRadius canvasTop = self.baseY - s.scopeRectRadius row = self.addr[1] - 1 column = self.addr[0] - 1 topLeftCell = self.canvas.cells[row][column] if self.kind not in [CellElement.FOR_SCOPE, CellElement.WHILE_SCOPE]: painter.setBrush(QBrush(self.bgColor)) pen = QPen(self.borderColor) pen.setWidth(s.boxLineWidth) painter.setPen(pen) # If the scope is selected then the line may need to be shorter # to avoid covering the outline correction = 0.0 if topLeftCell.isSelected(): correction = s.selectPenWidth - 1 painter.drawLine( canvasLeft + correction, self.baseY + self.height, canvasLeft + self.canvas.minWidth - 2 * s.hCellPadding - correction, self.baseY + self.height) pen = QPen(self.fgColor) painter.setFont(s.monoFont) painter.setPen(pen) if self.kind in [CellElement.FOR_SCOPE, CellElement.WHILE_SCOPE]: availWidth = topLeftCell.x3 - topLeftCell.x2 textWidth = self.textRect.width() + 2 * s.hTextPadding textShift = (availWidth - textWidth) / 2 painter.drawText(topLeftCell.x2 + s.hTextPadding + textShift, canvasTop + s.vHeaderPadding, self.textRect.width(), self.textRect.height(), Qt.AlignLeft | Qt.AlignVCenter, self.text) else: painter.drawText(canvasLeft + s.hHeaderPadding, canvasTop + s.vHeaderPadding, self.textRect.width(), self.textRect.height(), Qt.AlignLeft, self.text)
def paint(self, painter, option, widget): """Draws the leading comment""" settings = self.canvas.settings # Bottom adjustment yShift = self.height - self.minHeight baseY = self.baseY + yShift # Left adjustments shift = self.hShift * 2 * settings.openGroupHSpacer self._leftEdge += shift brush = QBrush(settings.commentBGColor) self.setBrush(brush) if self.isSelected(): selectPen = QPen(settings.selectColor) selectPen.setWidth(settings.selectPenWidth) selectPen.setJoinStyle(Qt.RoundJoin) self.setPen(selectPen) else: pen = QPen(settings.commentLineColor) pen.setWidth(settings.commentLineWidth) pen.setJoinStyle(Qt.RoundJoin) self.setPen(pen) # Hide the dotted outline itemOption = QStyleOptionGraphicsItem(option) if itemOption.state & QStyle.State_Selected != 0: itemOption.state = itemOption.state & ~QStyle.State_Selected QGraphicsPathItem.paint(self, painter, itemOption, widget) # Draw the text in the rectangle pen = QPen(settings.commentFGColor) painter.setFont(settings.monoFont) painter.setPen(pen) painter.drawText( self._leftEdge + settings.hCellPadding + self._hTextPadding, baseY + settings.vCellPadding + self._vTextPadding, self._textRect.width(), self._textRect.height(), Qt.AlignLeft, self.__getText()) self._leftEdge -= shift
def draw(self, scene, baseX, baseY): """Draws the diagram on the real canvas""" self.baseX = baseX self.baseY = baseY currentY = baseY for row in self.cells: if not row: continue height = row[0].height currentX = baseX for cell in row: if self.settings.debug: pen = QPen(Qt.DotLine) pen.setWidth(1) if cell.kind == CellElement.VCANVAS: pen.setColor(QColor(255, 0, 0, 255)) scene.addLine(currentX + 1, currentY + 1, currentX + cell.width - 2, currentY + 1, pen) scene.addLine(currentX + 1, currentY + 1, currentX + 1, currentY + cell.height - 2, pen) scene.addLine(currentX + 1, currentY + cell.height - 2, currentX + cell.width - 2, currentY + cell.height - 2, pen) scene.addLine(currentX + cell.width - 2, currentY + 1, currentX + cell.width - 2, currentY + cell.height - 2, pen) else: pen.setColor(QColor(0, 255, 0, 255)) scene.addLine(currentX, currentY, currentX + cell.width, currentY, pen) scene.addLine(currentX, currentY, currentX, currentY + cell.height, pen) scene.addLine(currentX, currentY + cell.height, currentX + cell.width, currentY + cell.height, pen) scene.addLine(currentX + cell.width, currentY, currentX + cell.width, currentY + cell.height, pen) cell.draw(scene, currentX, currentY) currentX += cell.width currentY += height
def paint(self, painter, option, widget): """Paints the badge item""" s = self.ref.canvas.settings if self.__needRect: pen = QPen(self.__frameColor) pen.setWidth(s.badgeLineWidth) painter.setPen(pen) brush = QBrush(self.__bgColor) painter.setBrush(brush) painter.drawRoundedRect(self.x(), self.y(), self.__width, self.__height, self.__radius, self.__radius) pen = QPen(self.__fgColor) painter.setPen(pen) painter.setFont(self.__font) painter.drawText(self.x() + self.__hSpacing, self.y() + self.__vSpacing, self.__textRect.width(), self.__textRect.height(), Qt.AlignLeft, self.__text)
def paint(self, painter, option, widget): """Paints the badge item""" del option del widget s = self.ref.canvas.settings if self.__needRect: pen = QPen(self.__frameColor) pen.setWidth(s.badgeLineWidth) painter.setPen(pen) painter.setBrush(QBrush(self.__bgColor)) painter.drawRoundedRect(self.x(), self.y(), self.width, self.height, s.badgeRadius, s.badgeRadius) pen = QPen(self.__fgColor) painter.setPen(pen) painter.setFont(s.badgeFont) painter.drawText(self.x() + s.badgeHSpacing, self.y() + s.badgeVSpacing, self.__textRect.width(), self.__textRect.height(), Qt.AlignCenter, self.__text)
def paint(self, painter, option, widget): """Draws the independent comment""" settings = self.canvas.settings rectWidth = self.minWidth - 2 * settings.hCellPadding rectHeight = self.minHeight - 2 * settings.vCellPadding if self.isSelected(): selectPen = QPen(settings.selectColor) selectPen.setWidth(settings.selectPenWidth) selectPen.setJoinStyle(Qt.RoundJoin) painter.setPen(selectPen) else: pen = QPen(self.__borderColor) pen.setWidth(settings.docLinkLineWidth) pen.setJoinStyle(Qt.RoundJoin) painter.setPen(pen) brush = QBrush(self.__bgColor) painter.setBrush(brush) painter.drawRoundedRect(self.baseX + settings.hCellPadding, self.baseY + settings.vCellPadding, rectWidth, rectHeight, 0, 0) if self._text: # Draw the text in the rectangle font = QFont(settings.monoFont) font.setItalic(True) painter.setFont(font) pen = QPen(self.__fgColor) painter.setPen(pen) painter.drawText( self._leftEdge + settings.hCellPadding + settings.hDocLinkPadding + self.iconItem.width() + settings.hDocLinkPadding, self.baseY + settings.vCellPadding + settings.vDocLinkPadding, self._textRect.width(), self._textRect.height(), Qt.AlignLeft, self._text)
def __paintDocstring(self, painter): """Paints the docstring""" s = self.canvas.settings painter.setBrush(QBrush(self.bgColor)) canvasLeft = self.baseX - s.scopeRectRadius if self.isSelected(): selectPen = QPen(s.selectColor) selectPen.setWidth(s.selectPenWidth) selectPen.setJoinStyle(Qt.RoundJoin) painter.setPen(selectPen) painter.drawRect(canvasLeft, self.baseY, self.canvas.minWidth - 2 * s.hCellPadding, self.height) else: # If the scope is selected then the line may need to be shorter # to avoid covering the outline row = self.addr[1] - 2 column = self.addr[0] - 1 correction = 0.0 if self.canvas.cells[row][column].isSelected(): correction = s.selectPenWidth - 1 # The background could also be custom pen = QPen(self.bgColor) pen.setWidth(s.boxLineWidth) pen.setJoinStyle(Qt.MiterJoin) painter.setPen(pen) dsCorr = float(s.boxLineWidth) if self.canvas.cells[row][column].isSelected(): dsCorr = float(s.selectPenWidth) / 2.0 + \ float(s.boxLineWidth) / 2.0 painter.drawRect( float(canvasLeft) + dsCorr, self.baseY + s.boxLineWidth, float(self.canvas.minWidth) - 2.0 * float(s.hCellPadding) - 2.0 * dsCorr, self.height - 2 * s.boxLineWidth) pen = QPen(self.borderColor) pen.setWidth(s.boxLineWidth) painter.setPen(pen) painter.drawLine( canvasLeft + correction, self.baseY + self.height, canvasLeft + self.canvas.minWidth - 2 * s.hCellPadding - correction, self.baseY + self.height) if not s.hidedocstrings: pen = QPen(self.fgColor) painter.setFont(s.monoFont) painter.setPen(pen) painter.drawText(canvasLeft + s.hHeaderPadding, self.baseY + s.vHeaderPadding, self.canvas.width - 2 * s.hHeaderPadding, self.height - 2 * s.vHeaderPadding, Qt.AlignLeft, self.text)
def setRectanglePen(self): """Sets the diagram pen""" pen = QPen(QColor(0, 0, 0)) pen.setWidth(2) pen.setJoinStyle(Qt.RoundJoin) self.setPen(pen)