Ejemplo n.º 1
0
    def _draw_textdoc(self, rect, col):
        """Draw the QTextDocument of an item.

        Args:
            rect: The QRect to clip the drawing to.
        """
        # We can't use drawContents because then the color would be ignored.
        clip = QRectF(0, 0, rect.width(), rect.height())
        self._painter.save()

        if self._opt.state & QStyle.State_Selected:
            color = config.val.colors.completion.item.selected.fg
        elif not self._opt.state & QStyle.State_Enabled:
            color = config.val.colors.completion.category.fg
        else:
            colors = config.val.colors.completion.fg
            # if multiple colors are set, use different colors per column
            color = colors[col % len(colors)]
        self._painter.setPen(color)

        ctx = QAbstractTextDocumentLayout.PaintContext()
        ctx.palette.setColor(QPalette.Text, self._painter.pen().color())
        if clip.isValid():
            self._painter.setClipRect(clip)
            ctx.clip = clip
        self._doc.documentLayout().draw(self._painter, ctx)
        self._painter.restore()
Ejemplo n.º 2
0
    def _draw_textdoc(self, rect, col):
        """Draw the QTextDocument of an item.

        Args:
            rect: The QRect to clip the drawing to.
        """
        # We can't use drawContents because then the color would be ignored.
        clip = QRectF(0, 0, rect.width(), rect.height())
        self._painter.save()

        if self._opt.state & QStyle.State_Selected:
            color = config.val.colors.completion.item.selected.fg
        elif not self._opt.state & QStyle.State_Enabled:
            color = config.val.colors.completion.category.fg
        else:
            colors = config.val.colors.completion.fg
            # if multiple colors are set, use different colors per column
            color = colors[col % len(colors)]
        self._painter.setPen(color)

        ctx = QAbstractTextDocumentLayout.PaintContext()
        ctx.palette.setColor(QPalette.Text, self._painter.pen().color())
        if clip.isValid():
            self._painter.setClipRect(clip)
            ctx.clip = clip
        self._doc.documentLayout().draw(self._painter, ctx)
        self._painter.restore()
Ejemplo n.º 3
0
    def _draw_textdoc(self, rect):
        """Draw the QTextDocument of an item.

        Args:
            rect: The QRect to clip the drawing to.
        """
        # We can't use drawContents because then the color would be ignored.
        # See: https://qt-project.org/forums/viewthread/21492
        clip = QRectF(0, 0, rect.width(), rect.height())
        self._painter.save()
        if self._opt.state & QStyle.State_Selected:
            option = 'completion.item.selected.fg'
        elif not self._opt.state & QStyle.State_Enabled:
            option = 'completion.category.fg'
        else:
            option = 'completion.fg'
        try:
            self._painter.setPen(config.get('colors', option))
        except configexc.NoOptionError:
            self._painter.setPen(config.get('colors', 'completion.fg'))
        ctx = QAbstractTextDocumentLayout.PaintContext()
        ctx.palette.setColor(QPalette.Text, self._painter.pen().color())
        if clip.isValid():
            self._painter.setClipRect(clip)
            ctx.clip = clip
        self._doc.documentLayout().draw(self._painter, ctx)
        self._painter.restore()
Ejemplo n.º 4
0
    def _draw_textdoc(self, rect):
        """Draw the QTextDocument of an item.

        Args:
            rect: The QRect to clip the drawing to.
        """
        # We can't use drawContents because then the color would be ignored.
        # See: https://qt-project.org/forums/viewthread/21492
        clip = QRectF(0, 0, rect.width(), rect.height())
        self._painter.save()
        if self._opt.state & QStyle.State_Selected:
            option = 'completion.item.selected.fg'
        elif not self._opt.state & QStyle.State_Enabled:
            option = 'completion.category.fg'
        else:
            option = 'completion.fg'
        try:
            self._painter.setPen(config.get('colors', option))
        except configexc.NoOptionError:
            self._painter.setPen(config.get('colors', 'completion.fg'))
        ctx = QAbstractTextDocumentLayout.PaintContext()
        ctx.palette.setColor(QPalette.Text, self._painter.pen().color())
        if clip.isValid():
            self._painter.setClipRect(clip)
            ctx.clip = clip
        self._doc.documentLayout().draw(self._painter, ctx)
        self._painter.restore()
Ejemplo n.º 5
0
    def keyPressEvent(self, event):

        if self.hasImage():

            # Zoom in
            if event.key() == Qt.Key_Plus:

                viewBBox = self.zoomStack[-1] if len(
                    self.zoomStack) else self.sceneRect()

                wh12 = int(
                    max(viewBBox.width(), viewBBox.height()) /
                    self.zoom_in_modifier)
                x, y = self._lastCursorCoords

                selectionBBox = QRectF(x - wh12, y - wh12, 2 * wh12,
                                       2 * wh12).intersected(viewBBox)

                if selectionBBox.isValid() and (selectionBBox != viewBBox):
                    self.zoomStack.append(selectionBBox)
                    self.updateViewer()

            # Zoom out
            if event.key() == Qt.Key_Minus:
                if self.canZoom:
                    viewBBox = self.zoomStack[-1] if len(
                        self.zoomStack) else False
                    if viewBBox:
                        self.zoomStack = self.zoomStack[:-1]
                        self.updateViewer()

            # Fill mask region
            if event.key() == Qt.Key_F:
                try:
                    self.viewport().setCursor(Qt.BusyCursor)
                    self.fillArea()
                except Exception as e:
                    print("Cannot fill region. Additional information:")
                    print(e)
                self.viewport().setCursor(Qt.ArrowCursor)

            # Erase closed contour under cursor with current paint color
            if event.key() == Qt.Key_X:
                if QApplication.keyboardModifiers() & Qt.ControlModifier:
                    try:
                        self.viewport().setCursor(Qt.BusyCursor)
                        self.fillArea(remove_closed_contour=True)
                    except Exception as e:
                        print(
                            "Cannot remove the contour. Additional information:"
                        )
                        print(e)
                    self.viewport().setCursor(Qt.ArrowCursor)

            # Erase closed contour under cursor and any connected contour regardless of color
            if event.key() == Qt.Key_Q:
                if QApplication.keyboardModifiers() & Qt.ControlModifier:
                    try:
                        self.viewport().setCursor(Qt.BusyCursor)
                        self.fillArea(remove_closed_contour=True,
                                      remove_only_current_color=False)
                    except Exception as e:
                        print(
                            "Cannot remove the contour. Additional information:"
                        )
                        print(e)
                    self.viewport().setCursor(Qt.ArrowCursor)

            # Erase mode enable/disable
            if event.key() == Qt.Key_D:
                self.global_erase_override = not self.global_erase_override
                if self.global_erase_override:
                    self.current_painting_mode = self.MODE_ERASE
                    self._deleteCrossHandles[0].show()
                    self._deleteCrossHandles[1].show()
                else:
                    self.current_painting_mode = self.MODE_PAINT
                    self._deleteCrossHandles[0].hide()
                    self._deleteCrossHandles[1].hide()

            # Temporarily hide the overlay
            if event.key() == Qt.Key_H:
                self._overlayHandle.hide()

            # Toggle helper on and off
            if event.key() == Qt.Key_T:
                if self._auxHelper is not None:
                    if self.showHelper:
                        self._auxHelper.hide()
                        self.showHelper = False
                    else:
                        self._auxHelper.show()
                        self.showHelper = True

            # Undo operations
            if event.key() == Qt.Key_Z:
                if QApplication.keyboardModifiers() & Qt.ControlModifier:
                    if (len(self._overlay_stack) > 0):
                        self.mask_pixmap = self._overlay_stack.pop()
                        self._overlayHandle.setPixmap(self.mask_pixmap)

                    if self.direct_mask_paint:
                        if len(self._offscreen_mask_stack) > 0:
                            self._offscreen_mask = self._offscreen_mask_stack.pop(
                            )

            # When CONTROL is pressed, show the delete cross
            if event.key(
            ) == Qt.Key_Control and not self.global_erase_override:
                self._deleteCrossHandles[0].show()
                self._deleteCrossHandles[1].show()

        QGraphicsView.keyPressEvent(self, event)