auto-sd-paint-ext/frontends/krita/krita_diff/extension.py

64 lines
2.4 KiB
Python

from krita import Extension, QMainWindow, QTimer
from .defaults import REFRESH_INTERVAL
from .script import script
class SDPluginExtension(Extension):
def __init__(self, instance):
super().__init__(instance)
self.instance = instance
# store original window docker config
self.dock_opts = None
def setup(self):
self.update_timer = QTimer()
self.update_timer.timeout.connect(lambda: script.action_update_config())
self.update_timer.start(REFRESH_INTERVAL)
script.config_updated.connect(lambda: self.update_global())
self.instance.notifier().windowCreated.connect(lambda: self.update_global())
script.action_update_config()
def update_global(self):
window = self.instance.activeWindow()
if not window:
return
qwin = window.qwindow()
if not self.dock_opts:
self.dock_opts = qwin.dockOptions()
# NOTE: This changes the default behaviour of Krita for all dockers!
if script.cfg("alt_dock_behavior", bool):
qwin.setDockOptions(
QMainWindow.AnimatedDocks
| QMainWindow.AllowTabbedDocks
| QMainWindow.GroupedDragging
| QMainWindow.AllowNestedDocks
# | QMainWindow.VerticalTabs
)
else:
qwin.setDockOptions(self.dock_opts)
def createActions(self, window):
txt2img_action = window.createAction(
"txt2img", "Apply txt2img", "tools/scripts"
)
txt2img_action.triggered.connect(lambda: script.action_txt2img())
img2img_action = window.createAction(
"img2img", "Apply img2img", "tools/scripts"
)
img2img_action.triggered.connect(lambda: script.action_img2img())
upscale_x_action = window.createAction(
"img2img_upscale", "Apply img2img upscale", "tools/scripts"
)
upscale_x_action.triggered.connect(lambda: script.action_sd_upscale())
upscale_x_action = window.createAction(
"img2img_inpaint", "Apply img2img inpaint", "tools/scripts"
)
upscale_x_action.triggered.connect(lambda: script.action_inpaint())
simple_upscale_action = window.createAction(
"simple_upscale", "Apply simple upscaler", "tools/scripts"
)
simple_upscale_action.triggered.connect(lambda: script.action_simple_upscale())