Converted __init__ module initialisation to new pattern

Thanks to Dr. Sybren for the BCON25 presentation that tipped me off to the existence of `register_classes_factory`.
This commit is contained in:
Colin Basnett
2025-09-18 23:29:14 -07:00
parent b4eefaba6f
commit 33e7862288
15 changed files with 121 additions and 67 deletions

View File

@@ -1,6 +1,41 @@
from bpy.app.handlers import persistent
if 'bpy' in locals():
from .shared import data as shared_data, types as shared_types, helpers as shared_helpers
from .shared import dfs as shared_dfs, ui as shared_ui
from .psk import (
builder as psk_builder,
data as psk_data,
importer as psk_importer,
properties as psk_properties,
writer as psk_writer,
)
from .psk import reader as psk_reader, ui as psk_ui
from .psk.export import (
operators as psk_export_operators,
properties as psk_export_properties,
ui as psk_export_ui,
)
from .psk.import_ import operators as psk_import_operators
from .psa import (
config as psa_config,
data as psa_data,
writer as psa_writer,
reader as psa_reader,
builder as psa_builder,
importer as psa_importer,
)
from .psa.export import (
properties as psa_export_properties,
ui as psa_export_ui,
operators as psa_export_operators,
)
from .psa.import_ import operators as psa_import_operators
from .psa.import_ import ui as psa_import_ui, properties as psa_import_properties
_needs_reload = 'bpy' in locals()
if _needs_reload:
import importlib
importlib.reload(shared_data)
@@ -33,58 +68,10 @@ if 'bpy' in locals():
importlib.reload(psa_import_properties)
importlib.reload(psa_import_operators)
importlib.reload(psa_import_ui)
else:
from .shared import data as shared_data, types as shared_types, helpers as shared_helpers
from .shared import dfs as shared_dfs, ui as shared_ui
from .psk import (
builder as psk_builder,
data as psk_data,
importer as psk_importer,
properties as psk_properties,
writer as psk_writer,
)
from .psk import reader as psk_reader, ui as psk_ui
from .psk.export import (
operators as psk_export_operators,
properties as psk_export_properties,
ui as psk_export_ui,
)
from .psk.import_ import operators as psk_import_operators
from .psa import (
config as psa_config,
data as psa_data,
writer as psa_writer,
reader as psa_reader,
builder as psa_builder,
importer as psa_importer,
)
from .psa.export import (
properties as psa_export_properties,
ui as psa_export_ui,
operators as psa_export_operators,
)
from .psa.import_ import operators as psa_import_operators
from .psa.import_ import ui as psa_import_ui, properties as psa_import_properties
import bpy
from bpy.props import PointerProperty
classes = shared_types.classes + \
shared_ui.classes + \
psk_properties.classes + \
psk_ui.classes + \
psk_import_operators.classes + \
psk_export_properties.classes + \
psk_export_operators.classes + \
psk_export_ui.classes + \
psa_export_properties.classes + \
psa_export_operators.classes + \
psa_export_ui.classes + \
psa_import_properties.classes + \
psa_import_operators.classes + \
psa_import_ui.classes
def psk_export_menu_func(self, context):
self.layout.operator(psk_export_operators.PSK_OT_export.bl_idname, text='Unreal PSK (.psk)')
@@ -102,9 +89,26 @@ def psa_import_menu_func(self, context):
self.layout.operator(psa_import_operators.PSA_OT_import.bl_idname, text='Unreal PSA (.psa)')
_modules = (
shared_types,
shared_ui,
psk_properties,
psk_ui,
psk_import_operators,
psk_export_properties,
psk_export_operators,
psk_export_ui,
psa_export_properties,
psa_export_operators,
psa_export_ui,
psa_import_properties,
psa_import_operators,
psa_import_ui
)
def register():
for cls in classes:
bpy.utils.register_class(cls)
for module in _modules:
module.register()
bpy.types.TOPBAR_MT_file_export.append(psk_export_menu_func)
bpy.types.TOPBAR_MT_file_import.append(psk_import_menu_func)
bpy.types.TOPBAR_MT_file_export.append(psa_export_menu_func)
@@ -128,8 +132,8 @@ def unregister():
bpy.types.TOPBAR_MT_file_import.remove(psk_import_menu_func)
bpy.types.TOPBAR_MT_file_export.remove(psa_export_menu_func)
bpy.types.TOPBAR_MT_file_import.remove(psa_import_menu_func)
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
for module in reversed(_modules):
module.unregister()
if __name__ == '__main__':

View File

@@ -658,10 +658,14 @@ class PSA_OT_export_bone_collections_deselect_all(Operator):
return {'FINISHED'}
classes = (
_classes = (
PSA_OT_export,
PSA_OT_export_actions_select_all,
PSA_OT_export_actions_deselect_all,
PSA_OT_export_bone_collections_select_all,
PSA_OT_export_bone_collections_deselect_all,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -262,10 +262,14 @@ def filter_sequences(pg: PSA_PG_export, sequences) -> List[int]:
return flt_flags
classes = (
_classes = (
PSA_PG_export_action_list_item,
PSA_PG_export_timeline_markers,
PSA_PG_export_nla_strip_list_item,
PSA_PG_export_active_action_list_item,
PSA_PG_export,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -52,6 +52,10 @@ class PSA_UL_export_sequences(UIList):
return flt_flags, flt_neworder
classes = (
_classes = (
PSA_UL_export_sequences,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -438,7 +438,7 @@ class PSA_FH_import(FileHandler): # TODO: rename and add handling for PSA expor
return context.area and context.area.type == 'VIEW_3D'
classes = (
_classes = (
PSA_OT_import_sequences_select_all,
PSA_OT_import_sequences_deselect_all,
PSA_OT_import_sequences_select_from_text,
@@ -447,3 +447,6 @@ classes = (
PSA_OT_import_drag_and_drop,
PSA_FH_import,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -175,9 +175,12 @@ def get_visible_sequences(pg: PSA_PG_import, sequences) -> List[PSA_PG_import_ac
return visible_sequences
classes = (
_classes = (
PSA_PG_import_action_list_item,
PSA_PG_bone,
PSA_PG_data,
PSA_PG_import,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -42,8 +42,11 @@ class PSA_UL_import_actions(PSA_UL_sequences_mixin):
pass
classes = (
_classes = (
PSA_UL_sequences,
PSA_UL_import_sequences,
PSA_UL_import_actions,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -509,7 +509,7 @@ class PSK_OT_export(Operator, ExportHelper):
return {'FINISHED'}
classes = (
_classes = (
PSK_OT_material_list_move_up,
PSK_OT_material_list_move_down,
PSK_OT_export,
@@ -521,3 +521,6 @@ classes = (
PSK_OT_material_list_name_move_down,
PSK_OT_material_list_name_add,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -67,8 +67,12 @@ class PSK_PG_export(PropertyGroup, PskExportMixin):
pass
classes = (
_classes = (
PSK_PG_material_list_item,
PSK_PG_material_name_list_item,
PSK_PG_export,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -10,6 +10,9 @@ class PSK_UL_material_names(UIList):
row.prop(item, 'material_name', text='', emboss=False, icon_value=icon_value, icon='BLANK1' if icon_value == 0 else 'NONE')
classes = (
_classes = (
PSK_UL_material_names,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -171,8 +171,12 @@ class PSK_FH_import(FileHandler):
return context.area and context.area.type == 'VIEW_3D'
classes = (
_classes = (
PSK_OT_import,
PSK_OT_import_drag_and_drop,
PSK_FH_import,
PSK_OT_create_bones_from_selected_objects,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -145,6 +145,10 @@ class PskImportMixin:
)
classes = (
_classes = (
PSX_PG_material,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -23,6 +23,10 @@ class PSK_PT_material(Panel):
col.prop(material.psk, 'mesh_triangle_bit_flags', expand=True, text='Flags')
classes = (
_classes = (
PSK_PT_material,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -154,10 +154,13 @@ class PSX_PG_scene_export(PropertyGroup, TransformMixin):
pass
classes = (
_classes = (
PSX_PG_scene_export,
PSX_PG_action_export,
PSX_PG_bone_collection_list_item,
PSX_UL_bone_collection_list,
PSX_PT_action,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)

View File

@@ -50,6 +50,10 @@ class PSX_PT_scene(Panel):
flow.prop(psx_export, 'up_axis')
classes = (
_classes = (
PSX_PT_scene,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)