from krita import QPushButton, QVBoxLayout, QWidget
from ..script import script
from ..widgets import QCheckBox, QComboBoxLayout, QLabel, StatusBar
# TODO: Become SD Upscale tab.
class UpscalePage(QWidget):
name = "Upscale"
def __init__(self, *args, **kwargs):
super(UpscalePage, self).__init__(*args, **kwargs)
self.status_bar = StatusBar()
self.upscaler_layout = QComboBoxLayout(
script.cfg, "upscaler_list", "upscale_upscaler_name", label="Upscaler:"
)
self.downscale_first = QCheckBox(
script.cfg,
"upscale_downscale_first",
"Downscale image x0.5 before upscaling",
)
self.note = QLabel(
"""
NOTE:
- txt2img & img2img will use the Quick Config Upscaler when needing to scale up.
- Upscaling manually is only useful if the image was resized via Krita.
- In the future, SD Upscaling will replace this tab! For now, use the WebUI.
"""
)
self.note.setWordWrap(True)
self.btn = QPushButton("Start upscaling")
layout = QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(self.status_bar)
layout.addWidget(self.note)
layout.addLayout(self.upscaler_layout)
layout.addWidget(self.downscale_first)
layout.addWidget(self.btn)
layout.addStretch()
self.setLayout(layout)
def cfg_init(self):
self.upscaler_layout.cfg_init()
self.downscale_first.cfg_init()
self.note.setVisible(not script.cfg("minimize_ui", bool))
def cfg_connect(self):
self.upscaler_layout.cfg_connect()
self.downscale_first.cfg_connect()
self.btn.released.connect(lambda: script.action_simple_upscale())
script.status_changed.connect(lambda s: self.status_bar.set_status(s))