Example #1
0
    def line_number_area_paint_event(self, event: QPaintEvent):
        log.debug("")
        painter = QPainter(self.line_number_area)
        painter.fillRect(event.rect(), Qt.lightGray)
        block = self.firstVisibleBlock()
        block_number = block.blockNumber()
        top = self.blockBoundingGeometry(block).translated(
            self.contentOffset()).top()
        bottom = top + self.blockBoundingRect(block).height()
        log.debug(top)
        log.debug(bottom)

        # print(block.isValid(), top <= event.rect().bottom())
        # print(block.isVisible(), bottom >= event.rect().top())

        while block.isValid() and top <= event.rect().bottom():
            if block.isVisible() and bottom >= event.rect().top():
                number = str(block_number + 1)
                # print(number)
                painter.setPen(Qt.black)
                painter.drawText(0, top, self.line_number_area.width(),
                                 self.fontMetrics().height(), Qt.AlignRight,
                                 number)
            block = block.next()
            top = bottom
            bottom = top + self.blockBoundingRect(block).height()
            block_number += 1
Example #2
0
 def paintEvent(self, e: QtGui.QPaintEvent):
     if self.isVisible():
         block = self.editor.firstVisibleBlock()
         height = self.editor.fontMetrics().height()
         block_number = block.blockNumber()
         painter = QtGui.QPainter(self)
         painter.fillRect(e.rect(), QtGui.QColor("#ACDED5"))
         # painter.drawRect(0, 0, e.rect().width(), e.rect().height())
         font = self.editor.font()
         current_block = self.editor.textCursor().block().blockNumber() + 1
         condition = True
         while block.isValid() and condition:
             block_geometry = self.editor.blockBoundingGeometry(block)
             offset = self.editor.contentOffset()
             top = block_geometry.translated(offset).top()
             block_number += 1
             rect = QtCore.QRect(0, top, self.width(), height)
             if block_number == current_block:
                 font.setBold(True)
             else:
                 font.setBold(False)
             painter.setFont(font)
             painter.drawText(rect, QtCore.Qt.AlignRight,
                              '%i' % block_number)
             if top > e.rect().bottom():
                 condition = False
             block = block.next()
         painter.end()
    def paintEvent(self, evt: QtGui.QPaintEvent) -> None:
        painter = QtGui.QPainter(self)
        try:
            painter.fillRect(evt.rect(), self._bg_color)
            painter.translate(-self.xOffset(), 0)
            self._paint(painter, evt.rect().translated(self.xOffset(), 0))

        finally:
            painter.end()
Example #4
0
    def paintEvent(self, e: QtGui.QPaintEvent):
        painter = QtGui.QPainter(self)
        color = (r, g, b, a) = (255, 0, 0, 16)
        painter.fillRect(e.rect(), QColor(r, g, b, a))

        if self.m_infocus:
            rect = e.rect()
            rect.adjust(0,0,-1,-1)
            painter.setPen(QColor(r, g, b))
            painter.drawRect(rect)
Example #5
0
    def paintEvent(self, evt: QtGui.QPaintEvent) -> None:
        super().paintEvent(evt)

        painter = QtGui.QPainter(self)
        try:
            painter.fillRect(evt.rect(), Qt.white)

            painter.translate(-self.xOffset(), 0)

            self.renderTimeGrid(painter,
                                evt.rect().translated(self.xOffset(), 0),
                                show_numbers=True)

            # loop markers
            loop_start_time = self.__player_state.loopStartTime()
            if loop_start_time is not None:
                x = self.timeToX(loop_start_time)
                painter.setBrush(Qt.black)
                painter.setPen(Qt.NoPen)
                polygon = QtGui.QPolygon()
                polygon.append(QtCore.QPoint(x, 0))
                polygon.append(QtCore.QPoint(x + 7, 0))
                polygon.append(QtCore.QPoint(x + 2, 5))
                polygon.append(QtCore.QPoint(x + 2, self.height() - 5))
                polygon.append(QtCore.QPoint(x + 7, self.height()))
                polygon.append(QtCore.QPoint(x, self.height()))
                painter.drawPolygon(polygon)

            loop_end_time = self.__player_state.loopEndTime()
            if loop_end_time is not None:
                x = self.timeToX(loop_end_time)
                painter.setBrush(Qt.black)
                painter.setPen(Qt.NoPen)
                polygon = QtGui.QPolygon()
                polygon.append(QtCore.QPoint(x - 6, 0))
                polygon.append(QtCore.QPoint(x + 2, 0))
                polygon.append(QtCore.QPoint(x + 2, self.height()))
                polygon.append(QtCore.QPoint(x - 6, self.height()))
                polygon.append(QtCore.QPoint(x, self.height() - 6))
                polygon.append(QtCore.QPoint(x, 6))
                painter.drawPolygon(polygon)

            # playback time
            x = self.timeToX(self.__player_state.currentTime())
            painter.fillRect(x, 0, 2, self.height(), QtGui.QColor(0, 0, 160))

        finally:
            painter.end()
Example #6
0
    def paint_all(
        self,
        event: QPaintEvent,
        bindings,
        figures: Dict[str, Figure],
        selected_figures: list,
        created_figure: Optional[Figure] = None,
    ):
        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255)))
        painter.save()
        painter.translate(*self._center)

        # Paint all
        paint.write_coordinates_near_pointer(painter, self._mouse_xy)

        for figure in figures.values():
            paint.paint_figure(painter, figure, 'basic')

        paint.paint_bindings(painter, figures, bindings)

        # Paint painted figure
        if created_figure is not None:
            paint.paint_figure(painter, created_figure, 'created')

        # Paint selected figure
        for selected_figure in selected_figures:
            paint.paint_figure(painter, selected_figure, 'selected')

        # Finish painting
        painter.restore()
        painter.end()
 def paintEvent(self, event: QPaintEvent) -> None:
     qp = QPainter()
     qp.begin(self)
     qp.setRenderHint(QPainter.Antialiasing)
     qp.fillRect(event.rect(), QBrush(Qt.white))  # or changed to Qt.white
     self._drawPeptide(qp)
     qp.end()
Example #8
0
 def _draw_text(self, event: QtG.QPaintEvent, painter: QtG.QPainter):
     metrics = QtG.QFontMetrics(self.font())
     elided_text = metrics.elidedText(self.text(), self._elide_mode,
                                      self.width())
     # noinspection PyTypeChecker
     painter.drawText(event.rect(),
                      self.alignment() | QtC.Qt.AlignVCenter, elided_text)
Example #9
0
 def paintEvent(self, event: QtGui.QPaintEvent):
     # 通过一个绘图事件实现绘图。
     paint = QtGui.QPainter()
     paint.begin(self)
     paint.setPen(QtGui.QColor(168, 34, 3))
     paint.setFont(QtGui.QFont("STLiti", 20))
     paint.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text)
     paint.end()
Example #10
0
    def drawText(self, e: QtGui.QPaintEvent, qp):
        qp.setPen(QColor(168, 34, 3))
        qp.setFont(QFont('Decorative', 10))
        qp.drawText(e.rect(), Qt.AlignCenter, self.text)

        size = self.size()

        for i in range(1000):
            x = random.randint(1, size.width() - 1)
            y = random.randint(1, size.height() - 1)
            qp.drawPoint(x, y)
Example #11
0
    def lineNumberAreaPaintEvent(self, event: QtGui.QPaintEvent) -> None:
        painter = QtGui.QPainter(self.__line_number_area)
        painter.fillRect(event.rect(), Qt.lightGray)
        block = self.firstVisibleBlock()
        block_number = block.blockNumber()
        offset = self.contentOffset()
        top = int(self.blockBoundingGeometry(block).translated(offset).top())
        bottom = top + int(self.blockBoundingRect(block).height())

        while block.isValid() and top <= event.rect().bottom():
            if block.isVisible() and bottom >= event.rect().top():
                number = str(block_number + 1)
                painter.setPen(Qt.black)
                width = self.__line_number_area.width()
                height = self.fontMetrics().height()
                painter.drawText(0, top, width, height, Qt.AlignRight, number)

            block = block.next()
            top = bottom
            bottom = top + int(self.blockBoundingRect(block).height())
            block_number += 1
Example #12
0
    def gutter_paint_event(self, event: QPaintEvent):
        painter = QPainter(self.gutter)
        painter.fillRect(event.rect(), QColor(Qt.lightGray).lighter(125))

        block = self.firstVisibleBlock()
        block_number = block.blockNumber()
        top = self.blockBoundingGeometry(block).translated(
            self.contentOffset()).top()
        bottom = top + self.blockBoundingRect(block).height()

        while block.isValid() and top <= event.rect().bottom():
            if block.isVisible() and bottom >= event.rect().top():
                line_number = block_number + 1
                painter.setPen(Qt.black)
                painter.drawText(0, top, self.gutter.width(),
                                 self.fontMetrics().height(), Qt.AlignRight,
                                 str(line_number))

            block = block.next()
            top = bottom
            bottom = top + self.blockBoundingRect(block).height()
            block_number += 1
Example #13
0
    def paintEvent(self, event: QPaintEvent):
        p = QPainter(self)
        if FLAT_STYLE:
            p.fillRect(event.rect(), BASE_COLOR)

        current = self._currentIndex
        paintTab = self.paintTab
        for i, tab in enumerate(self._tabs):
            if i != current:
                paintTab(p, i)

        if current != -1:
            paintTab(p, current)
Example #14
0
    def paintEvent(self, event: QPaintEvent) -> None:
        """
        Overridden paintEvent of QWidget which repainting numbers in bar.

        Args:
            event(QPaintEvent): qt event object with event data
        """
        if self.isVisible():
            block = self.editor.firstVisibleBlock()  # first visible block of editor
            line_number = block.blockNumber()  + 1# line of first visible block
            font_height = self.fontMetrics().height()  # height of used font for line numbers

            painter = QPainter(self)  # painter which will draw bar and numbers
            painter.fillRect(event.rect(), QColor("#d3d7cf"))  # fill the line number bar with some color TODO: configurable
            painter.drawRect(0, 0, event.rect().width() - 1, event.rect().height() - 1)  # draw line number bar border
            font = painter.font()  # actual font

            current_block = self.editor.textCursor().block().blockNumber() + 1  # line of actual block under cursor

            condition = True
            while block.isValid() and condition:
                block_geometry = self.editor.blockBoundingGeometry(block)
                offset = self.editor.contentOffset()
                block_top = block_geometry.translated(offset).top()

                number_rect = QRect(5, block_top, self.width() - 5, font_height)  # rectangle for the line number
                font.setBold(line_number == current_block)  # set bold line number for actual line

                painter.setFont(font)
                painter.drawText(number_rect, Qt.AlignLeft, str(line_number))

                line_number += 1

                condition = block_top <= event.rect().bottom()

                block = block.next()

            painter.end()
Example #15
0
    def paintEvent(self, event: QPaintEvent) -> None:
        """Process the paint event by repainting this Widget.

        Parameters
        ----------
        event : QPaintEvent
        """
        super().paintEvent(event)  # make sure the frame is painted

        if True:  # self._autoencoder is not None
            painter = QPainter()
            painter.begin(self)
            self._drawAutoencoder(painter, event.rect())
            painter.end()
Example #16
0
    def drawBackground(self, qp: QPainter, event: QPaintEvent):
        qp.fillRect(event.rect(), QColor(255, 255, 255))
        pen = QPen(QColor(223, 223, 223), 1, Qt.SolidLine)
        qp.setPen(pen)
        x1 = 15
        y1 = 15
        x2 = event.rect().width() - 30
        y2 = event.rect().height() - 30
        qp.drawLine(x1, y1, x2, y1)
        qp.drawLine(x2, y1, x2, y2)
        qp.drawLine(x1, y1, x1, y2)
        qp.drawLine(x1, y2, x2, y2)

        pen = QPen(QColor(223, 223, 223), 1, Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(x1, (y1 + y2) / 4, x2, (y1 + y2) / 4)
        qp.drawLine(x1, (y1 + y2) * 3 / 4, x2, (y1 + y2) * 3 / 4)
        qp.drawLine((x1 + x2) / 4, y1, (x1 + x2) / 4, y2)
        qp.drawLine((x1 + x2) / 2, y1, (x1 + x2) / 2, y2)
        qp.drawLine((x1 + x2) * 3 / 4, y1, (x1 + x2) * 3 / 4, y2)
        pen = QPen(QColor(0, 0, 0), 1, Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(x1, (y1 + y2) / 2, x2, (y1 + y2) / 2)
Example #17
0
    def paintEvent(self, event: QPaintEvent) -> None:
        """Process the paint event by repainting this Widget.

        Parameters
        ----------
        event : QPaintEvent
        """
        super().paintEvent(event)  # make sure the frame is painted

        if self._features is not None:
            painter = QPainter()
            painter.begin(self)
            self._drawFeatures(painter, event.rect())
            painter.end()
    def paintEvent(self, paint_event: QPaintEvent):
        super().paintEvent(paint_event)

        if self._pixmap is None:
            return

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)

        pix_size: QSize = self._pixmap.size()
        pix_size.scale(paint_event.rect().size(), Qt.KeepAspectRatio)

        scaled_pix: QPixmap = self._pixmap.scaled(pix_size, Qt.KeepAspectRatio,
                                                  Qt.SmoothTransformation)
        painter.drawPixmap(QPoint(), scaled_pix)
Example #19
0
 def lineNumberAreaPaintEvent(self, event: QtGui.QPaintEvent):
     painter = QtGui.QPainter(self.lineNumberArea)
     painter.fillRect(event.rect(), QtCore.Qt.lightGray)
     block = self.firstVisibleBlock()
     blockNumber = block.blockNumber()
     top = int(
         self.blockBoundingGeometry(block).translated(
             self.contentOffset()).top())
     bottom = top + int(self.blockBoundingRect(block).height())
     while block.isValid() and top <= event.rect().bottom():
         if block.isVisible() and bottom >= event.rect().top():
             number = format(blockNumber + 1, "d")
             painter.setPen(QtCore.Qt.darkGray)
             font = painter.font()
             font.setWeight(QtGui.QFont.Bold)
             painter.setFont(font)
             painter.drawText(0, top,
                              self.lineNumberArea.width() - 3,
                              self.fontMetrics().height(),
                              QtCore.Qt.AlignRight, number)
         block = block.next()
         top = bottom
         bottom = top + int(self.blockBoundingRect(block).height())
         blockNumber += 1
Example #20
0
    def statusAreaPaintEvent(self, event: QPaintEvent):
        painter = QPainter(self._statusArea)
        painter.fillRect(event.rect(), Qt.lightGray)

        block = self.firstVisibleBlock()
        top = qRound(
            self.blockBoundingGeometry(block).translated(
                self.contentOffset()).top())
        bottom = top + qRound(self.blockBoundingRect(block).height())

        while block.isValid() and top <= event.rect().bottom():
            if block.isVisible() and bottom >= event.rect().top():
                painter.setPen(Qt.red)
                painter.drawText(
                    0,
                    top,
                    self._statusArea.width(),
                    self.fontMetrics().height(),
                    Qt.AlignRight,
                    MARK if block.userState() == self._State.Error else NOMARK,
                )
            block = block.next()
            top = bottom
            bottom = top + qRound(self.blockBoundingRect(block).height())
Example #21
0
    def paintEvent(self, event: QPaintEvent) -> NoReturn:
        rect: QRect = event.rect()
        spacing = 25

        paint = QPainter()
        paint.begin(self)
        for i in range(rect.x(), rect.x() + rect.width() + spacing, spacing):
            for j in range(rect.y(),
                           rect.y() + rect.height() + spacing, spacing):
                paint.drawPoint(
                    QPointF(
                        int(i / spacing) * spacing,
                        int(j / spacing) * spacing))

        pen = QPen(Qt.black, 3, Qt.SolidLine, Qt.RoundCap)
        for wire in WorkspaceView.wires:
            pen.setColor(Qt.blue if wire.selected else Qt.black)
            paint.setPen(pen)
            paint.drawLine(wire.output, wire.input)
        paint.end()
Example #22
0
    def paintEvent(self, event: QPaintEvent):
        if self.isVisible():
            block: QTextBlock = self.editor.firstVisibleBlock()
            height: int = self.fontMetrics().height()
            number: int = block.blockNumber()

            painter = QPainter(self)
            painter.fillRect(event.rect(), QColor(53, 53, 53))
            # painter.drawRect(0, 0, event.rect().width() - 1, event.rect().height() - 1)
            font = painter.font()
            font.setPointSize(15)
            for blocks in self.editor.currentlyVisibleBlocks:
                bl: QTextBlock = blocks[-1]
                blockGeometry: QRectF = self.editor.blockBoundingGeometry(bl)
                offset: QPointF = self.editor.contentOffset()
                blockTop: float = float(
                    blockGeometry.translated(offset).top() + 2)
                rect: QRect = QRect(0, blockTop, self.width(), height)
                painter.drawText(rect, Qt.AlignRight,
                                 str(bl.blockNumber() + 1))

            painter.end()
Example #23
0
    def canvasPaintEvent(self, ev : QPaintEvent):
        print(self.counter, '  ', end='')
        self.counter += 1
        repaintRect = ev.rect()
        repaintArea = Rectangle(repaintRect.x(), repaintRect.y(), repaintRect.width(),
                repaintRect.height())

        painter = QPainter(self.w)

        thumbRequested = False
        cells = self.layoutEngine.getVisibleCells(repaintArea)
        for cellNum, cell in cells.items():
            thumb = self.items[cellNum]
            if thumb.getPath() in self.thumbs:
                self.drawThumnail(cellNum, self.thumbs[thumb.getPath()], thumb, cell, painter)
            else:
                if not thumbRequested:

                    self.needThumb.emit(cellNum, thumb.getPath())
                    thumbRequested = True
                self.drawThumnail(cellNum, self.noThumbPixmap, self.items[cellNum],
                        cell, painter)
Example #24
0
    def canvasPaintEvent(self, ev: QPaintEvent):
        print(self.counter, '  ', end='')
        self.counter += 1
        repaintRect = ev.rect()
        repaintArea = Rectangle(repaintRect.x(), repaintRect.y(),
                                repaintRect.width(), repaintRect.height())

        painter = QPainter(self.w)

        thumbRequested = False
        cells = self.layoutEngine.getVisibleCells(repaintArea)
        for cellNum, cell in cells.items():
            thumb = self.items[cellNum]
            if thumb.getPath() in self.thumbs:
                self.drawThumnail(cellNum, self.thumbs[thumb.getPath()], thumb,
                                  cell, painter)
            else:
                if not thumbRequested:

                    self.needThumb.emit(cellNum, thumb.getPath())
                    thumbRequested = True
                self.drawThumnail(cellNum, self.noThumbPixmap,
                                  self.items[cellNum], cell, painter)
Example #25
0
 def draw(self, q_painter: QtGui.QPainter, q_paint_event: QtGui.QPaintEvent):
     if self.visible:
         self._q_painter = q_painter
         q_painter.setRenderHint(QtGui.QPainter.Antialiasing)
         self._window_rect = q_paint_event.rect()
         self._build()
Example #26
0
 def paintEvent(self, e: QtGui.QPaintEvent):
     painter = QtGui.QPainter(self)
     rect = e.rect()
     rect.adjust(0, 0, -1, -1)
     painter.setPen(self.pen)
     painter.drawRect(rect)
    def paintEvent(self, evt: QtGui.QPaintEvent) -> None:
        painter = QtGui.QPainter(self)
        try:
            painter.fillRect(evt.rect(), self.__bg_color)

            w = self.width() - 10
            h = self.height() - 10

            for g in (1, 2, 3, 4, 6, 7, 8, 9, 5, 0, 10):
                if g in (0, 10):
                    color = self.__border_color
                elif g == 5:
                    color = self.__center_color
                else:
                    color = self.__grid_color

                painter.fillRect(int(g * (w - 1) / 10) + 5, 5, 1, h, color)
                painter.fillRect(5, int(g * (h - 1) / 10) + 5, w, 1, color)

            path = QtGui.QPainterPath()
            tfa = audioproc.TransferFunction(self.__spec)
            x_to_value = lambda value: (
                (self.__spec.input_max - self.__spec.input_min) *
                (value / (w - 1)) + self.__spec.input_min)
            value_to_y = lambda value: int(
                (h - 1) * (value - self.__spec.output_min) /
                (self.__spec.output_max - self.__spec.output_min))

            for x in range(w):
                value = x_to_value(x)
                value = tfa(value)
                y = value_to_y(value)
                if x == 0:
                    path.moveTo(x + 5, h - y + 4)
                else:
                    path.lineTo(x + 5, h - y + 4)

            painter.setPen(self.__plot_pen)
            painter.drawPath(path)

            self.__handles.clear()
            handles_to_render = []
            if self.__spec.WhichOneof('type') in ('fixed', 'linear'):
                y1 = value_to_y(tfa(self.__spec.input_min))
                r = QtCore.QRect(3, h - y1 + 2, 6, 6)
                self.__handles['left'] = r
                handles_to_render.append('left')

                y2 = value_to_y(tfa(self.__spec.input_max))
                r = QtCore.QRect(w + 2, h - y2 + 2, 6, 6)
                self.__handles['right'] = r
                handles_to_render.append('right')

            elif self.__spec.WhichOneof('type') == 'gamma':
                x = int(0.3 * math.log10(self.__spec.gamma.value) * w) + w // 2
                y = value_to_y(tfa(x_to_value(x)))
                r = QtCore.QRect(x + 3, h - y + 2, 6, 6)
                self.__handles['center'] = r
                handles_to_render.append('center')

            for name in handles_to_render:
                rect = self.__handles[name]
                painter.setPen(self.__handle_pen)
                if name == self.__active_handle:
                    painter.setBrush(self.__active_handle_brush)
                else:
                    painter.setBrush(self.__handle_brush)
                painter.drawRect(QtCore.QRectF(rect).translated(-0.5, -0.5))

        finally:
            painter.end()
Example #28
0
    def drawCurve(self, qp: QPainter, event: QPaintEvent):
        h = event.rect().height() - 30
        w = event.rect().width() - 30

        if self.pf is None:
            return

        kw = w / self.N
        kh = h / (self.top - self.bodom)

        #绘制k线

        for i in range(0, self.N, 1):

            high = self.pf.ix[i, 'high']
            low = self.pf.ix[i, 'low']
            open = self.pf.ix[i, 'open']
            close = self.pf.ix[i, 'close']
            pre_close = self.pf.ix[i, 'pre_close']
            pct_chg = self.pf.ix[i, 'pct_chg']
            #画k线
            if open < close:
                #画K线
                qp.fillRect(15 + kw * (self.N - i - 1),
                            15 + (self.top - close) * kh, kw,
                            (close - open) * kh, QColor(255, 0, 0))
                #画上下影线
                pen = QPen(QColor(255, 0, 0), 1, Qt.SolidLine)
                qp.setPen(pen)
                qp.drawLine(15 + kw * (self.N - i - 1) + kw * 0.5,
                            15 + (self.top - high) * kh,
                            15 + kw * (self.N - i - 1) + kw * 0.5,
                            15 + (self.top - low) * kh)
            else:
                #画K线
                if open == close:
                    pen = QPen(QColor(0, 0, 255), 1, Qt.SolidLine)
                    qp.setPen(pen)
                    qp.drawLine(15 + kw * (self.N - i - 1),
                                15 + (self.top - open) * kh,
                                15 + kw * (self.N - i - 1) + kw,
                                15 + (self.top - open) * kh)
                else:
                    qp.fillRect(15 + kw * (self.N - i - 1),
                                15 + (self.top - open) * kh, kw,
                                (open - close) * kh, QColor(0, 0, 255))
                #画上下影线
                pen = QPen(QColor(0, 0, 255), 1, Qt.SolidLine)
                qp.setPen(pen)
                qp.drawLine(15 + kw * (self.N - i - 1) + kw * 0.5,
                            15 + (self.top - high) * kh,
                            15 + kw * (self.N - i - 1) + kw * 0.5,
                            15 + (self.top - low) * kh)

        #绘制均线
        #5日
        self.drawMaLine(qp, kw, kh, 5, QColor(0, 0, 0))
        #13日
        self.drawMaLine(qp, kw, kh, 13, QColor(255, 201, 14))
        #24日
        self.drawMaLine(qp, kw, kh, 24, QColor(255, 0, 128))
        #56日
        self.drawMaLine(qp, kw, kh, 54, QColor(0, 255, 64))
Example #29
0
    def paintEvent(self, event: QPaintEvent) -> None:
        p = QPainter(self)
        self.m_normalMap.render(p, event.rect())
        p.setPen(Qt.black)
        p.drawText(
            self.rect(),
            Qt.AlignBottom | Qt.TextWordWrap,
            "Map data CCBYSA 2009 OpenStreetMap.org contributors",
        )
        p.end()

        if self.zoomed:
            dim = min(self.width(), self.height())
            magnifierSize = min(MAX_MAGNIFIER, dim * 2 / 3)
            radius = magnifierSize / 2
            ring = radius - 15
            box = QSize(magnifierSize, magnifierSize)

            if self.maskPixmap.size() != box:
                self.maskPixmap = QPixmap(box)
                self.maskPixmap.fill(Qt.transparent)

                g = QRadialGradient()
                g.setCenter(radius, radius)
                g.setFocalPoint(radius, radius)
                g.setRadius(radius)
                g.setColorAt(1.0, QColor(255, 255, 255, 0))
                g.setColorAt(0.5, QColor(128, 128, 128, 255))

                mask = QPainter(self.maskPixmap)
                mask.setRenderHint(QPainter.Antialiasing)
                mask.setCompositionMode(QPainter.CompositionMode_Source)
                mask.setBrush(g)
                mask.setPen(Qt.NoPen)
                mask.drawRect(self.maskPixmap.rect())
                mask.setBrush(QColor(Qt.transparent))
                mask.drawEllipse(g.center(), ring, ring)
                mask.end()

            center = self.dragPos - QPoint(0, radius)
            center = center + QPoint(0, radius / 2)
            corner = center - QPoint(radius, radius)

            xy = center * 2 - QPoint(radius, radius)

            # only set the dimension to the magnified portion
            if self.zoomPixmap.size() != box:
                zoomPixmap = QPixmap(box)
                zoomPixmap.fill(Qt.lightGray)

            if True:
                p = QPainter(zoomPixmap)
                p.translate(-xy)
                self.m_largeMap.render(p, QRect(xy, box))
                p.end()

            clipPath = QPainterPath()
            clipPath.addEllipse(center, ring, ring)

            p = QPainter(self)
            p.setRenderHint(QPainter.Antialiasing)
            p.setClipPath(clipPath)
            p.drawPixmap(corner, zoomPixmap)
            p.setClipping(False)
            p.drawPixmap(corner, self.maskPixmap)
            p.setPen(Qt.gray)
            p.drawPath(clipPath)
        if self.invert:
            p = QPainter(self)
            p.setCompositionMode(QPainter.CompositionMode_Difference)
            p.fillRect(event.rect(), Qt.white)
            p.end()
Example #30
0
    def paintEvent(self, event: QtGui.QPaintEvent) -> None:
        """
		Draws the message/busy overlay

		See http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#paintEvent
		"""
        """
		Draws the message/busy overlay

		See http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#paintEvent
		"""
        painter = QtGui.QPainter()
        painter.begin(self)
        painter.setRenderHint(QtGui.QPainter.Antialiasing)
        if self.status == self.BUSY:
            painter.fillRect(event.rect(),
                             QtGui.QBrush(QtGui.QColor(255, 255, 255, 128)))
            animIdx = int((self.counter) % 7)
            painter.pen().setWidth(4)
            coords = [
                (self.width() / 2 - 30, self.height() / 2 - 30),  # Top left
                (self.width() / 2, (self.height() / 2) - 30),  # Top center
                (self.width() / 2 + 30, (self.height() / 2) - 30),  # Top right
                (self.width() / 2 + 30, (self.height() / 2)),  # Center right
                (self.width() / 2 + 30,
                 (self.height() / 2) + 30),  # Bottom right
                (self.width() / 2, (self.height() / 2) + 30),  # Bottom center
                (self.width() / 2 - 30,
                 (self.height() / 2) + 30),  # Bottom left
                (self.width() / 2 - 30, (self.height() / 2))
            ]  # Center left
            for i in range(0, 8):
                if (animIdx - i) % 8 == 0:
                    color = QtGui.QColor(84, 1, 11,
                                         min(255, self.counter * 10))
                elif (animIdx - i) % 8 == 1:
                    color = QtGui.QColor(147, 2, 20,
                                         min(255, self.counter * 10))
                else:
                    color = QtGui.QColor(211, 3, 28,
                                         min(255, self.counter * 10))
                x, y = coords[i]
                painter.fillRect(int(x - 15), int(y - 15), 20, 20, color)
            painter.pen().setWidth(1)
            painter.setPen(QtGui.QColor(0, 0, 0, min(255, self.counter * 10)))
            fm = QtGui.QFontMetrics(painter.font())
            fontWidth = fm.width(self.message)
            painter.drawText(self.width() / 2 - fontWidth / 2,
                             (self.height() / 2) + 55, self.message)
        elif self.status == self.SUCCESS:
            if self.counter > self.INFO_DURATION - 10:
                painter.setOpacity((20 - self.counter) / 10.0)
            painter.fillRect(event.rect(),
                             QtGui.QBrush(QtGui.QColor(52, 131, 63, 192)))
            painter.drawImage(
                (self.width() / 2 - self.okayImage.width() / 2),
                (self.height() / 2 - self.okayImage.height() / 2),
                self.okayImage)
            fm = QtGui.QFontMetrics(painter.font())
            fontWidth = fm.width(self.message)
            painter.setPen(QtGui.QColor(255, 255, 255))
            painter.drawText(
                self.width() / 2 - fontWidth / 2,
                (self.height() / 2 + self.okayImage.height() / 2) + 50,
                self.message)
            if self.counter > self.INFO_DURATION:
                self.clear(True)
        elif self.status == self.MISSING:
            if self.counter > self.WARNING_DURATION - 10:
                painter.setOpacity((20 - self.counter) / 10.0)
            painter.fillRect(event.rect(),
                             QtGui.QBrush(QtGui.QColor(0, 65, 110, 192)))
            painter.drawImage(
                (self.width() / 2 - self.missingImage.width() / 2),
                (self.height() / 2 - self.missingImage.height() / 2),
                self.missingImage)
            fm = QtGui.QFontMetrics(painter.font())
            fontWidth = fm.width(self.message)
            painter.setPen(QtGui.QColor(255, 255, 255))
            painter.drawText(
                self.width() / 2 - fontWidth / 2,
                (self.height() / 2 + self.missingImage.height() / 2) + 50,
                self.message)
            if self.counter > self.WARNING_DURATION:
                self.clear(True)
        elif self.status == self.ERROR:
            if self.counter > self.ERROR_DURATION - 10:
                painter.setOpacity((20 - self.counter) / 10.0)
            painter.fillRect(event.rect(),
                             QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)))
            painter.drawImage(
                (self.width() / 2 - self.errorImage.width() / 2),
                (self.height() / 2 - self.errorImage.height() / 2),
                self.errorImage)
            fm = QtGui.QFontMetrics(painter.font())
            fontWidth = fm.width(self.message)
            painter.setPen(QtGui.QColor(248, 197, 51))
            painter.drawText(
                self.width() / 2 - fontWidth / 2,
                (self.height() / 2 + self.errorImage.height() / 2) + 50,
                self.message)
            if self.counter > self.ERROR_DURATION:
                self.clear(True)
        painter.end()
Example #31
0
 def paintEvent(self, event: QtGui.QPaintEvent) -> None:
     painter = QtGui.QPainter(self.label.pixmap())
     painter.drawImage(event.rect(), self.image, self.rect())