Blender 5.0 compat + STB XML import + sequence/stamps improvements
- Fix Blender 5.0 API: active_sequence_strip → active_strip, bracket property access on AddonPreferences, _RestrictContext during register() - Fix new_effect() frame_end → length for Blender 5.0 - Fix OTIO adapter kwargs (rate/ignore_timecode_mismatch only for cmx_3600) - Fix OTIO global_start_time RationalTime → int conversion - Add Import STB XML operator with movie strip import and XML patching for Storyboard Pro transitions missing <alignment> - Add Create Sequence Strip operator (select shots → create sequence) - Improve Set Stamps: channel at top, no conflict with existing strips, use raw strip names in templates - TVSHOW episode fixes: sequence loading, episode creation - Kitsu: new_asset, new_episode, admin_connect fix, gazu version pin - Fix escape warnings in file_utils regex patterns - Guard handler registration against duplicates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+25
-4
@@ -299,7 +299,28 @@ def get_episodes_items(self, context):
|
||||
|
||||
def on_episode_updated(self, context):
|
||||
settings = get_scene_settings()
|
||||
os.environ['TRACKER_EPISODE_ID'] = settings.active_episode.id
|
||||
project = settings.active_project
|
||||
episode = settings.active_episode
|
||||
|
||||
if not episode or not episode.id:
|
||||
return
|
||||
|
||||
os.environ['TRACKER_EPISODE_ID'] = episode.id
|
||||
|
||||
# Reload sequences for the selected episode (TVSHOW workflow)
|
||||
prefs = get_addon_prefs()
|
||||
tracker = prefs.tracker
|
||||
if not tracker or not project:
|
||||
return
|
||||
|
||||
project.sequences.clear()
|
||||
try:
|
||||
for seq in tracker.get_sequences(project.id, episode=episode.id):
|
||||
item = project.sequences.add()
|
||||
item.name = seq['name']
|
||||
item.id = seq['id']
|
||||
except Exception as e:
|
||||
print(f'Could not load sequences for episode {episode.name}: {e}')
|
||||
|
||||
class Project(PropertyGroup):
|
||||
id : StringProperty(default='')
|
||||
@@ -715,7 +736,7 @@ class VSETB_PGT_strip_settings(PropertyGroup):
|
||||
|
||||
@property
|
||||
def strip(self):
|
||||
sequences = bpy.context.scene.sequence_editor.sequences_all
|
||||
sequences = bpy.context.scene.sequence_editor.strips_all
|
||||
return next(s for s in sequences if s.vsetb_strip_settings == self)
|
||||
|
||||
@property
|
||||
@@ -808,7 +829,7 @@ def register():
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
bpy.types.Scene.vsetb_settings = PointerProperty(type=VSETB_PGT_scene_settings)
|
||||
bpy.types.Sequence.vsetb_strip_settings = PointerProperty(type=VSETB_PGT_strip_settings)
|
||||
bpy.types.Strip.vsetb_strip_settings = PointerProperty(type=VSETB_PGT_strip_settings)
|
||||
|
||||
#load_metadata_types()
|
||||
bpy.app.handlers.load_post.append(load_handler)
|
||||
@@ -818,7 +839,7 @@ def unregister():
|
||||
for cls in reversed(classes):
|
||||
bpy.utils.unregister_class(cls)
|
||||
|
||||
del bpy.types.Sequence.vsetb_strip_settings
|
||||
del bpy.types.Strip.vsetb_strip_settings
|
||||
del bpy.types.Scene.vsetb_settings
|
||||
|
||||
bpy.app.handlers.load_post.remove(load_handler)
|
||||
|
||||
Reference in New Issue
Block a user