def paintEvent(self, event): """Paints the margin""" if self.__firstTime: self.__updateWidth() self.__firstTime = False painter = QPainter(self) painter.fillRect(event.rect(), self.__bgColor) block = self._qpart.firstVisibleBlock() blockNumber = block.blockNumber() top = int( self._qpart.blockBoundingGeometry(block).translated( self._qpart.contentOffset()).top()) bottom = top + int(self._qpart.blockBoundingRect(block).height()) boundingRect = self._qpart.blockBoundingRect(block) availableWidth = self.__width - self._RIGHT_MARGIN - self._LEFT_MARGIN # The margin font could be smaller than the main area font topShift = int( (self._qpart.fontMetrics().height() - self.fontMetrics().height()) / 2) if topShift < 0: topShift = 0 availableHeight = self._qpart.fontMetrics().height() while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): lineno = blockNumber + 1 props = self.__data.get(lineno, [(None, None, None)]) text = props[0][0] if text: msgType = props[0][2] color = CDMRedirectedIOMargin.MSG_TYPE_PROPS[msgType][1] if color is None: color = self.__fgColor painter.setPen(color) painter.drawText(self._LEFT_MARGIN, top + topShift, availableWidth, availableHeight, Qt.AlignRight, text) block = block.next() boundingRect = self._qpart.blockBoundingRect(block) top = bottom bottom = top + int(boundingRect.height()) blockNumber += 1
def paintEvent(self, event): """Paints the margin""" if self.__firstTime: self.__updateWidth() self.__firstTime = False painter = QPainter(self) painter.fillRect(event.rect(), self.__bgColor) painter.setPen(self.__fgColor) block = self._qpart.firstVisibleBlock() blockNumber = block.blockNumber() top = int( self._qpart.blockBoundingGeometry(block).translated( self._qpart.contentOffset()).top()) bottom = top + int(self._qpart.blockBoundingRect(block).height()) boundingRect = self._qpart.blockBoundingRect(block) availableWidth = self.__width - self._RIGHT_MARGIN - self._LEFT_MARGIN # The margin font could be smaller than the main area font topShift = int( (self._qpart.fontMetrics().height() - self.fontMetrics().height()) / 2) if topShift < 0: topShift = 0 availableHeight = self._qpart.fontMetrics().height() while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): number = str(blockNumber + 1) painter.drawText(self._LEFT_MARGIN, top + topShift, availableWidth, availableHeight, Qt.AlignRight, number) block = block.next() boundingRect = self._qpart.blockBoundingRect(block) top = bottom bottom = top + int(boundingRect.height()) blockNumber += 1