glTF: Update user extension ui registration after Blender changes

After Panel UI refactoring for I/O, there is no more Panel class
This commit is contained in:
Julien Duroure 2024-05-30 15:11:25 +02:00
parent 2b1e825545
commit 018ece5309

@ -5,7 +5,7 @@
bl_info = {
'name': 'glTF 2.0 format',
'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
"version": (4, 2, 40),
"version": (4, 2, 41),
'blender': (4, 2, 0),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',
@ -60,8 +60,8 @@ from bpy_extras.io_utils import ImportHelper, ExportHelper, poll_file_object_dro
# Functions / Classes.
#
exporter_extension_panel_unregister_functors = []
importer_extension_panel_unregister_functors = []
exporter_extension_layout_draw = {}
importer_extension_layout_draw = {}
def ensure_filepath_matches_export_format(filepath, export_format):
@ -991,11 +991,11 @@ class ExportGLTF2_Base(ConvertGLTF2_Base):
'glTF2ExportUserExtension') or hasattr(
sys.modules[addon_name],
'glTF2ExportUserExtensions'):
exporter_extension_panel_unregister_functors.append(sys.modules[addon_name].register_panel())
exporter_extension_layout_draw[addon_name] = sys.modules[addon_name].draw
except Exception:
pass
self.has_active_exporter_extensions = len(exporter_extension_panel_unregister_functors) > 0
self.has_active_exporter_extensions = len(exporter_extension_layout_draw.keys()) > 0
return ExportHelper.invoke(self, context, event)
def save_settings(self, context):
@ -1298,6 +1298,8 @@ class ExportGLTF2_Base(ConvertGLTF2_Base):
if gltfpack_path != '':
export_panel_gltfpack(layout, operator)
export_panel_user_extension(context, layout)
def export_main(layout, operator, is_file_browser):
layout.prop(operator, 'export_format')
@ -1681,6 +1683,11 @@ def export_panel_gltfpack(layout, operator):
col.prop(operator, 'export_gltfpack_noq')
def export_panel_user_extension(context, layout):
for draw in exporter_extension_layout_draw.values():
draw(context, layout)
class ExportGLTF2(bpy.types.Operator, ExportGLTF2_Base, ExportHelper):
"""Export scene as glTF 2.0 file"""
bl_idname = 'export_scene.gltf'
@ -1791,6 +1798,8 @@ class ImportGLTF2(Operator, ConvertGLTF2_Base, ImportHelper):
layout.prop(self, 'export_import_convert_lighting_mode')
layout.prop(self, 'import_webp_texture')
import_panel_user_extension(context, layout)
def invoke(self, context, event):
import sys
preferences = bpy.context.preferences
@ -1801,11 +1810,11 @@ class ImportGLTF2(Operator, ConvertGLTF2_Base, ImportHelper):
'glTF2ImportUserExtension') or hasattr(
sys.modules[addon_name],
'glTF2ImportUserExtensions'):
importer_extension_panel_unregister_functors.append(sys.modules[addon_name].register_panel())
importer_extension_layout_draw[addon_name] = sys.modules[addon_name].draw
except Exception:
pass
self.has_active_importer_extensions = len(importer_extension_panel_unregister_functors) > 0
self.has_active_importer_extensions = len(importer_extension_layout_draw.keys()) > 0
return ImportHelper.invoke_popup(self, context)
def execute(self, context):
@ -1887,6 +1896,11 @@ class ImportGLTF2(Operator, ConvertGLTF2_Base, ImportHelper):
self.loglevel = logging.DEBUG
def import_panel_user_extension(context, layout):
for draw in importer_extension_layout_draw.values():
draw(context, layout)
class GLTF2_filter_action(bpy.types.PropertyGroup):
keep: bpy.props.BoolProperty(name="Keep Animation")
action: bpy.props.PointerProperty(type=bpy.types.Action)
@ -2010,13 +2024,6 @@ def unregister():
for c in classes:
bpy.utils.unregister_class(c)
for f in exporter_extension_panel_unregister_functors:
f()
exporter_extension_panel_unregister_functors.clear()
for f in importer_extension_panel_unregister_functors:
f()
importer_extension_panel_unregister_functors.clear()
# bpy.utils.unregister_module(__name__)