Files
io_scene_psk_psa/io_scene_psk_psa/shared/ui.py
Colin Basnett 33e7862288 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`.
2025-09-18 23:29:14 -07:00

60 lines
1.8 KiB
Python

import bpy
from bpy.types import Context, UILayout, Panel
from .types import bone_filter_mode_items
def is_bone_filter_mode_item_available(pg, identifier):
if identifier == 'BONE_COLLECTIONS' and len(pg.bone_collection_list) == 0:
return False
return True
def draw_bone_filter_mode(layout: UILayout, pg, should_always_show_bone_collections=False):
row = layout.row(align=True)
for item_identifier, _, _ in bone_filter_mode_items:
identifier = item_identifier
item_layout = row.row(align=True)
item_layout.prop_enum(pg, 'bone_filter_mode', item_identifier)
item_layout.enabled = should_always_show_bone_collections or is_bone_filter_mode_item_available(pg, identifier)
class PSX_PT_scene(Panel):
bl_idname = 'PSX_PT_scene'
bl_label = 'PSK Export'
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = 'scene'
bl_category = 'PSK/PSA'
@classmethod
def poll(cls, context):
return context.scene is not None
def draw(self, context: Context):
layout = self.layout
scene = bpy.context.scene
psx_export = getattr(scene, 'psx_export', None)
if psx_export is None:
return
# Transform
transform_header, transform_panel = layout.panel('Transform', default_closed=False)
transform_header.label(text='Transform')
if transform_panel:
flow = layout.grid_flow(columns=1)
flow.use_property_split = True
flow.use_property_decorate = False
flow.prop(psx_export, 'scale')
flow.prop(psx_export, 'forward_axis')
flow.prop(psx_export, 'up_axis')
_classes = (
PSX_PT_scene,
)
from bpy.utils import register_classes_factory
register, unregister = register_classes_factory(_classes)