# 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()))