65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
|
|
# 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()))
|