Example #1
0
    def __init__(self, node, fileName, lineNumber, outside, nodeFont):
        QGraphicsRectItem.__init__(self)
        self.__node = node
        self.__fileName = fileName
        self.__lineNumber = lineNumber
        self.__outside = outside

        self.__font = DEFAULT_FONT
        if nodeFont:
            self.__font = nodeFont

        posX = node.posX - node.width / 2.0
        posY = node.posY - node.height / 2.0
        QGraphicsRectItem.__init__(self, posX, posY, node.width, node.height)

        self.setRectanglePen()

        # node.color is like "#fe0400"
        if node.color.startswith("#"):
            color = QColor(int(node.color[1:3], 16), int(node.color[3:5], 16),
                           int(node.color[5:], 16))
        else:
            color = QColor(220, 255, 220)
        self.setBrush(color)

        # To make item selectable
        self.setFlag(QGraphicsItem.ItemIsSelectable,
                     os.path.isabs(self.__fileName) and self.__lineNumber > 0)

        # Set tooltip as a function docstring
        if fileName != "" and lineNumber != 0:
            self.setToolTip(GlobalData().getFileLineDocstring(
                fileName, lineNumber))
Example #2
0
    def __init__(self, canvas, x, y, w, h):
        CellElement.__init__(self, None, canvas, x=None, y=None)
        QGraphicsRectItem.__init__(self, x, y, w, h)
        self.kind = CellElement.RECTANGLE

        self.pen = None
        self.brush = None
Example #3
0
    def paint(self, painter, option, widget):
        """Draws a filled rectangle and then adds a title"""
        # Hide the dotted outline
        itemOption = QStyleOptionGraphicsItem(option)
        if itemOption.state & QStyle.State_Selected != 0:
            itemOption.state = itemOption.state & ~QStyle.State_Selected

        # Draw the rectangle
        pen = painter.pen()
        pen.setJoinStyle(Qt.RoundJoin)
        painter.setPen(pen)
        QGraphicsRectItem.paint(self, painter, itemOption, widget)

        # Draw text over the rectangle
        painter.setFont(self.__font)
        painter.setPen(QPen(QColor(255, 255, 255)))
        painter.drawText(self.__node.posX - self.__node.width / 2.0,
                         self.__node.posY - self.__node.height / 2.0,
                         self.__node.width, self.__node.height, Qt.AlignCenter,
                         self.__node.label.replace('\\n', '\n'))

        if self.__outside:
            pixmap = getPixmap("nonprojectentrydgm.png")
            pixmapPosX = self.__node.posX - self.__node.width / 2.0 + 2
            pixmapPosY = self.__node.posY + self.__node.height / 2.0 - \
                pixmap.height() - 2
            painter.setRenderHint(QPainter.SmoothPixmapTransform)
            painter.drawPixmap(pixmapPosX, pixmapPosY, pixmap)
Example #4
0
    def __init__(self, itemRef, cmlRef, canvas, x, y):
        CommentCellBase.__init__(self, itemRef, canvas, x, y)
        ColorMixin.__init__(self, None, canvas.settings.docLinkBGColor,
                            canvas.settings.docLinkFGColor,
                            canvas.settings.docLinkBorderColor,
                            colorSpec=cmlRef)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.cmlRef = cmlRef

        # They all have the same icon
        if cmlRef.link is not None and cmlRef.anchor is not None:
            IconMixin.__init__(self, canvas, 'docanchor.svg',
                               'Jump to the documentation')
            self.iconItem.setCursor(QCursor(Qt.PointingHandCursor))
        else:
            if cmlRef.link is not None:
                IconMixin.__init__(self, canvas, 'doclink.svg',
                                   'Jump to the documentation')
                self.iconItem.setCursor(QCursor(Qt.PointingHandCursor))
            else:
                IconMixin.__init__(self, canvas, 'anchor.svg',
                                   'Documentation anchor')


        # They all are double clickable
        # This makes double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #5
0
 def __init__(self, settings):
     QGraphicsRectItem.__init__(self)
     self.__settings = settings
     self.__x = None
     self.__y = None
     self.__width = None
     self.__height = None
Example #6
0
    def __init__(self, ref, groupBeginCMLRef, canvas, x, y):
        GroupItemBase.__init__(self, groupBeginCMLRef, ref, canvas, x, y)
        ColorMixin.__init__(self,
                            None,
                            canvas.settings.openGroupBGColor,
                            canvas.settings.openGroupFGColor,
                            canvas.settings.openGroupBorderColor,
                            colorSpec=groupBeginCMLRef)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.OPENED_GROUP_BEGIN
        self.connector = None
        self.topLeftControl = None
        self.highlight = False

        # These two items are filled when rendering is finished for all the
        # items in the group
        self.groupWidth = None
        self.groupHeight = None

        self.groupEndRow = None
        self.groupEndColumn = None

        self.selfAndDeeperNestLevel = None
        self.selfMaxNestLevel = None  # Used in vcanvas.py

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #7
0
    def paint(self, painter, option, widget):
        """Paints the rectangle item"""
        if self.pen is not None:
            self.setPen(self.pen)
        if self.brush is not None:
            self.setBrush(self.brush)

        QGraphicsRectItem.paint(self, painter, option, widget)
Example #8
0
    def __init__(self, ref):
        QGraphicsRectItem.__init__(self)
        self.ref = ref

        settings = self.ref.canvas.settings
        self.__width = settings.openGroupHSpacer * 2 - 1
        self.__height = settings.openGroupVSpacer * 2 - 1

        self.setAcceptHoverEvents(True)
Example #9
0
    def __init__(self, ref, canvas, x, y):
        GroupItemBase.__init__(self)
        CellElement.__init__(self, ref, canvas, x, y)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.COLLAPSED_GROUP
        self.__textRect = None
        self.connector = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #10
0
    def __init__(self, canvas):
        CellElement.__init__(self, None, canvas, x=None, y=None)
        QGraphicsRectItem.__init__(self)

        self.kind = CellElement.RUBBER_BAND
        self.__settings = canvas.settings
        self.__x = None
        self.__y = None
        self.__width = None
        self.__height = None
Example #11
0
    def __init__(self, ref):
        CellElement.__init__(self, ref, ref.canvas, None, None)
        QGraphicsRectItem.__init__(self)
        self.kind = CellElement.GROUP_CORNER_CONROL

        settings = self.canvas.settings
        self.__width = settings.openGroupHSpacer * 2 - 1
        self.__height = settings.openGroupVSpacer * 2 - 1

        self.setAcceptHoverEvents(True)
Example #12
0
    def __init__(self, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        TextMixin.__init__(self)
        ColorMixin.__init__(self, ref, self.canvas.settings.codeBlockBGColor,
                            self.canvas.settings.codeBlockFGColor,
                            self.canvas.settings.codeBlockBorderColor)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.CODE_BLOCK
        self.connector = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #13
0
    def __init__(self, ref, text, drawText=True):
        BadgeItemBase.__init__(self, ref, text)
        QGraphicsRectItem.__init__(self)

        self.kind = CellElement.BADGE
        self.__drawText = drawText

        s = ref.canvas.settings
        self.__bgColor = s.badgeBGColor
        self.__fgColor = s.badgeFGColor
        self.__frameColor = s.badgeBorderColor
        self.__needRect = True
Example #14
0
    def __init__(self, fileName, needConnector, canvas, x, y):
        CellElement.__init__(self, None, canvas, x, y)
        TextMixin.__init__(self)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.DEPS_SELF_MODULE
        self.fileName = fileName

        self.needConnector = needConnector
        self.connector = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
    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))
Example #16
0
    def __init__(self, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        TextMixin.__init__(self)
        ColorMixin.__init__(self, ref, self.canvas.settings.importBGColor,
                            self.canvas.settings.importFGColor,
                            self.canvas.settings.importBorderColor)
        IconMixin.__init__(self, canvas, 'import.svg', 'import')
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.IMPORT
        self.connector = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #17
0
    def __init__(self, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        QGraphicsRectItem.__init__(self)

        self.kind = CellElement.INDEPENDENT_MINIMIZED_COMMENT

        self.__setTooltip()

        self.leadingForElse = False
        self.sideForElse = False

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #18
0
    def __init__(self, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        TextMixin.__init__(self)
        ColorMixin.__init__(self, ref, self.canvas.settings.returnBGColor,
                            self.canvas.settings.returnFGColor,
                            self.canvas.settings.returnBorderColor)
        IconMixin.__init__(self, canvas, 'return.svg', 'return')
        QGraphicsRectItem.__init__(self)
        self.kind = CellElement.RETURN
        self.connector = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #19
0
    def __init__(self, ref, groupBeginCMLRef, canvas, x, y):
        GroupItemBase.__init__(self, groupBeginCMLRef, ref, canvas, x, y)
        ColorMixin.__init__(self,
                            None,
                            canvas.settings.collapsedGroupBGColor,
                            canvas.settings.collapsedGroupFGColor,
                            canvas.settings.collapsedGroupBorderColor,
                            colorSpec=groupBeginCMLRef)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.COLLAPSED_GROUP
        self.connector = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
    def paint(self, painter, option, widget):
        """Draws a filled rectangle and then adds a title"""
        # Draw the rectangle
        QGraphicsRectItem.paint(self, painter, option, widget)

        # Draw text over the rectangle
        font = QFont("Arial", 10)
        font.setBold(True)
        painter.setFont(font)
        painter.setPen(QPen(QColor(90, 90, 88)))
        painter.drawText(self.__node.posX - self.__node.width / 2.0,
                         self.__node.posY - self.__node.height / 2.0,
                         self.__node.width, self.__node.height, Qt.AlignCenter,
                         self.__node.label)
Example #21
0
    def __init__(self, ref, isSideComment):
        BadgeItemBase.__init__(self, ref, '#', 'hiddencomment.svg')
        QGraphicsRectItem.__init__(self)

        self.kind = CellElement.SCOPE_COMMENT_BADGE
        self.isSideComment = isSideComment

        if self.isSideComment:
            val = self.ref.ref.sideComment.getDisplayValue()
        else:
            val = self.ref.ref.leadingComment.getDisplayValue()
        self.setToolTip('<pre>' + escape(val) + '</pre>')

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
Example #22
0
    def __init__(self, iconFileName, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        IconMixin.__init__(self, canvas, iconFileName)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)

        # Visually the icon looks a bit too big so reduce the size to 80%
        self.iconItem.setIconHeight(self.iconItem.iconHeight() * 0.8)

        self.rectWidth = None
        self.rectHeight = None
        self.connector = None
        self.rectRadius = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
    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)
Example #24
0
    def __init__(self, ref, canvas, x, y, bgColor, fgColor, borderColor):
        CellElement.__init__(self, ref, canvas, x, y)
        TextMixin.__init__(self)
        ColorMixin.__init__(self, ref, bgColor, fgColor, borderColor)
        QGraphicsRectItem.__init__(self)

        self.connector = None

        # Cache for the size
        self.xPos = None
        self.yPos = None
        self.rectWidth = None
        self.rectHeight = None

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
    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))
Example #26
0
    def __init__(self, settings, bgColor, fgColor, borderColor, width, height):
        QGraphicsRectItem.__init__(self)
        self.__settings = settings
        self.__bgColor = bgColor
        self.__fgColor = fgColor
        self.__borderColor = borderColor
        self.__viewWidth = width
        self.__viewHeight = height

        self.__textRect = self.__settings.monoFontMetrics.boundingRect(
            0, 0, maxsize, maxsize, 0, 'Sample')

        vPadding = 2 * settings.vTextPadding
        self.__rectHeight = self.__textRect.height() + vPadding
        hPadding = 2 * settings.hTextPadding
        self.__rectWidth = max(self.__textRect.width() + hPadding,
                               settings.minWidth)
Example #27
0
    def __init__(self, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        ColorMixin.__init__(self,
                            None,
                            canvas.settings.docLinkBGColor,
                            canvas.settings.docLinkFGColor,
                            canvas.settings.docLinkBorderColor,
                            colorSpec=ref)
        QGraphicsRectItem.__init__(self)
        self.pixmapFile, tooltip = getDoclinkIconAndTooltip(ref, hidden=True)
        if tooltip:
            self.setToolTip('<pre>' + escape(tooltip) + '</pre>')

        self.kind = CellElement.INDEPENDENT_MINIMIZED_DOC

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
    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)
Example #29
0
    def __init__(self, ref, canvas, x, y):
        CellElement.__init__(self, ref, canvas, x, y)
        TextMixin.__init__(self)
        ColorMixin.__init__(self, ref, self.canvas.settings.ifBGColor,
                            self.canvas.settings.ifFGColor,
                            self.canvas.settings.ifBorderColor)
        QGraphicsRectItem.__init__(self, canvas.scopeRectangle)
        self.kind = CellElement.IF
        self.vConnector = None
        self.rhsConnector = None
        self.leftBadge = None
        self.yBelow = False
        self.needHConnector = True
        self.rhsShift = 0

        # To make double click delivered
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
    def paint(self, painter, option, widget):
        """Draws a filled rectangle and then adds a title"""
        # Hide the dotted outline for clickable system modules
        itemOption = QStyleOptionGraphicsItem(option)
        if itemOption.state & QStyle.State_Selected != 0:
            itemOption.state = itemOption.state & ~QStyle.State_Selected

        # Draw the rectangle
        QGraphicsRectItem.paint(self, painter, itemOption, widget)

        # Draw text over the rectangle
        font = QFont("Arial", 10)
        font.setBold(True)
        painter.setFont(font)
        painter.drawText(self.__node.posX - self.__node.width / 2.0,
                         self.__node.posY - self.__node.height / 2.0,
                         self.__node.width, self.__node.height, Qt.AlignCenter,
                         self.__node.label)