vse_toolbox/__init__.py
Joseph HENRY d2d64dc8a8 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>
2026-03-10 16:09:03 +01:00

73 lines
2.0 KiB
Python

# SPDX-License-Identifier: GPL-2.0-or-later
bl_info = {
"name": "VSE ToolBox",
"description": "In-House Video editing Tools",
"author": "Samuel Bernou, Clement Ducarteron, Christophe Seux",
"version": (0, 1, 0),
"blender": (4, 0, 2),
"location": "Sequencer",
"warning": "",
"category": "Sequencer",
}
import sys
from pathlib import Path
#sys.modules['vse_toolbox'] = sys.modules.pop(Path(__file__).parent.name)
from vse_toolbox import ui
from vse_toolbox import operators
from vse_toolbox.constants import ASSET_PREVIEWS
from vse_toolbox.sequencer_utils import set_active_strip, update_text_strips
from vse_toolbox.bl_utils import get_addon_prefs
modules = (
operators,
ui,
)
if 'bpy' in locals():
import importlib
for mod in modules:
importlib.reload(mod)
import bpy
def register():
if update_text_strips not in bpy.app.handlers.frame_change_post:
bpy.app.handlers.frame_change_post.append(update_text_strips)
if update_text_strips not in bpy.app.handlers.render_pre:
bpy.app.handlers.render_pre.append(update_text_strips)
for module in modules:
module.register()
if set_active_strip not in bpy.app.handlers.frame_change_post:
bpy.app.handlers.frame_change_post.append(set_active_strip)
prefs = get_addon_prefs()
#print('\n\n-------------------', prefs.config_path)
def unregister():
if update_text_strips in bpy.app.handlers.frame_change_post:
bpy.app.handlers.frame_change_post.remove(update_text_strips)
if update_text_strips in bpy.app.handlers.render_pre:
bpy.app.handlers.render_pre.remove(update_text_strips)
try:
bpy.utils.previews.remove(ASSET_PREVIEWS)
except Exception as e:
pass
if set_active_strip in bpy.app.handlers.frame_change_post:
bpy.app.handlers.frame_change_post.remove(set_active_strip)
for module in reversed(modules):
module.unregister()
if __name__ == "__main__":
register()