53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
from typing import cast
|
|
|
|
from bpy.types import UIList
|
|
|
|
from .properties import PSA_PG_export_action_list_item, filter_sequences
|
|
|
|
|
|
class PSA_UL_export_sequences(UIList):
|
|
|
|
def __init__(self):
|
|
super(PSA_UL_export_sequences, self).__init__()
|
|
# Show the filtering options by default.
|
|
self.use_filter_show = True
|
|
|
|
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
|
|
item = cast(PSA_PG_export_action_list_item, item)
|
|
is_pose_marker = hasattr(item, 'is_pose_marker') and item.is_pose_marker
|
|
layout.prop(item, 'is_selected', icon_only=True, text=item.name)
|
|
if hasattr(item, 'action') and item.action is not None and item.action.asset_data is not None:
|
|
layout.label(text='', icon='ASSET_MANAGER')
|
|
|
|
row = layout.row(align=True)
|
|
row.alignment = 'RIGHT'
|
|
if item.frame_end < item.frame_start:
|
|
row.label(text='', icon='FRAME_PREV')
|
|
if is_pose_marker:
|
|
row.label(text=item.action.name, icon='PMARKER')
|
|
|
|
def draw_filter(self, context, layout):
|
|
pg = getattr(context.scene, 'psa_export')
|
|
row = layout.row()
|
|
subrow = row.row(align=True)
|
|
subrow.prop(pg, 'sequence_filter_name', text='')
|
|
subrow.prop(pg, 'sequence_use_filter_invert', text='', icon='ARROW_LEFTRIGHT')
|
|
|
|
if pg.sequence_source == 'ACTIONS':
|
|
subrow = row.row(align=True)
|
|
subrow.prop(pg, 'sequence_filter_asset', icon_only=True, icon='ASSET_MANAGER')
|
|
subrow.prop(pg, 'sequence_filter_pose_marker', icon_only=True, icon='PMARKER')
|
|
subrow.prop(pg, 'sequence_filter_reversed', text='', icon='FRAME_PREV')
|
|
|
|
def filter_items(self, context, data, prop):
|
|
pg = getattr(context.scene, 'psa_export')
|
|
actions = getattr(data, prop)
|
|
flt_flags = filter_sequences(pg, actions)
|
|
flt_neworder = list(range(len(actions)))
|
|
return flt_flags, flt_neworder
|
|
|
|
|
|
classes = (
|
|
PSA_UL_export_sequences,
|
|
)
|