Ejemplo n.º 1
0
    def setForeground(self):
        foregroundFile = QFileDialog.getOpenFileName(
            self,
            Krita.krita_i18n("Select foreground image"),
            filter=Krita.krita_i18n("Images (*.png *.xpm *.jpg)"))[0]
        self.foregroundImage.load(foregroundFile)

        writeTag("custom-preview-fg", foregroundFile)

        self.refresh()
        print("Custom Preview: Foreground set to " + foregroundFile)
Ejemplo n.º 2
0
    def setBackground(self):
        backgroundFile = QFileDialog.getOpenFileName(
            self,
            Krita.krita_i18n("Select background image"),
            filter=Krita.krita_i18n("Images (*.png *.xpm *.jpg)"))[0]
        self.backgroundImage.load(backgroundFile)

        writeTag("custom-preview-bg", backgroundFile)

        self.refresh()
        print("Custom Preview: Background set to " + backgroundFile)
Ejemplo n.º 3
0
    def __init__(self):
        super().__init__()

        self.setWindowTitle(Krita.krita_i18n("Custom Preview"))

        self.foregroundImage = QImage()
        self.backgroundImage = QImage()

        layout = QVBoxLayout()
        layout.setAlignment(Qt.AlignCenter)

        # PREVIEW

        self.previewContainer = QWidget()
        layout.addWidget(self.previewContainer)
        self.previewContainer.setContentsMargins(0, 0, 0, 0)
        previewContainerLayout = QHBoxLayout()
        previewContainerLayout.setContentsMargins(0, 0, 0, 0)
        previewContainerLayout.setSpacing(0)
        self.previewContainer.setLayout(previewContainerLayout)
        self.scrollArea = QScrollArea()
        previewContainerLayout.addWidget(self.scrollArea)
        self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Expanding)

        self.previewLabel = QLabel()
        self.scrollArea.setWidget(self.previewLabel)

        # BUTTONS

        self.buttonLayout = QHBoxLayout()
        layout.addLayout(self.buttonLayout)
        self.buttonLayout.setAlignment(Qt.AlignLeft)

        setForegroundAtn = QAction(self)
        setForegroundAtn.setIconText("Set foreground")
        setForegroundAtn.setIcon(KI.icon("object-order-front-calligra"))
        setForegroundAtn.triggered.connect(self.setForeground)
        setForegroundBtn = QToolButton()
        setForegroundBtn.setDefaultAction(setForegroundAtn)
        self.buttonLayout.addWidget(setForegroundBtn)

        setBackgroundAtn = QAction(self)
        setBackgroundAtn.setIconText(Krita.krita_i18n("Set background"))
        setBackgroundAtn.setIcon(KI.icon("object-order-back-calligra"))
        setBackgroundAtn.triggered.connect(self.setBackground)
        setBackgroundBtn = QToolButton()
        setBackgroundBtn.setDefaultAction(setBackgroundAtn)
        self.buttonLayout.addWidget(setBackgroundBtn)

        removeAtn = QAction(self)
        removeAtn.setIconText(
            Krita.krita_i18n("Remove foreground and background"))
        removeAtn.setIcon(KI.icon("list-remove"))
        removeAtn.triggered.connect(self.removeForegroundAndBackground)
        removeBtn = QToolButton()
        removeBtn.setDefaultAction(removeAtn)
        self.buttonLayout.addWidget(removeBtn)

        self.zoomComboBox = QComboBox(self)
        self.zoomComboBox.addItem(
            "Auto fit", lambda w, h:
            (self.previewContainer.contentsRect().width() - self.scrollArea
             .contentsMargins().top() * 2, self.previewContainer.contentsRect(
             ).height() - self.scrollArea.contentsMargins().top() * 2))
        for scale in [0.5, 1, 2, 4]:
            self.zoomComboBox.addItem("{:d}%".format(int(100 * scale)),
                                      lambda w, h, scale=scale:
                                      (w * scale, h * scale))
        self.buttonLayout.addWidget(self.zoomComboBox)

        mainWidget = QWidget(self)
        mainWidget.setLayout(layout)
        self.setWidget(mainWidget)

        self.startTimer(500)  # refresh twice a second