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)
Exemple #2
0
    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())
Exemple #3
0
    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)
Exemple #6
0
    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)
Exemple #7
0
 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))
Exemple #9
0
    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())
Exemple #10
0
    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)
Exemple #12
0
    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))
Exemple #14
0
    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)
Exemple #15
0
    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)
Exemple #17
0
    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)
Exemple #18
0
    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)
Exemple #19
0
    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
Exemple #20
0
 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
Exemple #21
0
    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)
Exemple #22
0
    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)
Exemple #23
0
    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)