Krita/krita/pykrita/KritaToSpine/KritaToSpine.py

65 lines
2.3 KiB
Python
Raw Normal View History

2025-03-07 08:03:18 +01:00
# Spine export
# Forked from Unofficial Spine Export (https://github.com/chartinger/krita-unofficial-spine-export)
# Based on the Esoteric Software Photoshop plugin, and the Spine Document Tools plugin
# uidocumentools.py contains the main window and logic, including tabs for applying effects on export
# SpineExport.py contains the code and support for doing the exporting
import krita
import json
from krita import (Krita, Extension)
from PyQt5.QtCore import QByteArray
from . import uidocumenttools
class SpineExport(Extension):
def __init__(self, parent):
super().__init__(parent)
def setup(self):
pass
def createActions(self, window):
action = window.createAction("spineexportAction",i18n("Spine Export Settings"))
action.setToolTip(i18n("Plugin to export to Spine."))
action.triggered.connect(self.initialize)
action = window.createAction("spineexportActionGo", "Export to Spine", "tools/scripts")
action.triggered.connect(self.exportDoc)
def initialize(self):
self.uidocumenttools = uidocumenttools.UIDocumentTools()
self.uidocumenttools.initialize()
def exportDoc(self):
doc = Krita.instance().activeDocument() # type: krita.Document
view = Krita.instance().activeWindow().activeView()
q = doc.annotation("krita2spine") #type: QByteArray
if not q.isEmpty():
settings = json.loads(bytes(q).decode())
dir_str = settings["outDir"]
bone_len = settings["boneLength"]
incl_hidden = settings["includeHidden"]
d = doc.clone()
view.showFloatingMessage(
f"Krita2Spine exporting to: {dir_str} hidden:{incl_hidden}",
Krita.instance().icon("showColoringOff"),
1000,
1
)
s = uidocumenttools.UIDocumentTools().spineExport
s.exportDocument(d, dir_str, bone_len, incl_hidden)
d.close()
view.showFloatingMessage(
f"Krita2Spine: OK",
Krita.instance().icon("showColoringOff"),
1000,
1
)
else:
self.initialize()
Krita.instance().addExtension(SpineExport(Krita.instance()))