static asset items, fix blender freeze
This commit is contained in:
@@ -5,10 +5,11 @@ import bpy
|
||||
from bpy.types import Context, Event, PropertyGroup, Operator
|
||||
from bpy.props import (CollectionProperty, EnumProperty, StringProperty)
|
||||
|
||||
from vse_toolbox.constants import CASTING_BUFFER
|
||||
from vse_toolbox.constants import CASTING_BUFFER, ASSET_ITEMS
|
||||
from vse_toolbox.sequencer_utils import get_strips
|
||||
from vse_toolbox.bl_utils import (get_addon_prefs, get_scene_settings, get_strip_settings)
|
||||
|
||||
from time import perf_counter
|
||||
|
||||
class VSETB_OT_casting_replace(Operator):
|
||||
bl_idname = "vse_toolbox.casting_replace"
|
||||
@@ -75,20 +76,15 @@ class VSETB_OT_casting_replace(Operator):
|
||||
col.prop_search(self, 'new_asset', self, 'assets', text='New Asset', icon='ASSET_MANAGER')
|
||||
|
||||
|
||||
def get_asset_items(self, context):
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
|
||||
return [(a.id, a.label, '', i) for i, a in enumerate(project.assets)]
|
||||
|
||||
class VSETB_OT_casting_add(Operator):
|
||||
bl_idname = "vse_toolbox.casting_add"
|
||||
bl_label = "Casting Add"
|
||||
bl_description = "Add Asset to Castin"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
bl_property = "asset_name"
|
||||
|
||||
asset_name : EnumProperty(name='', items=get_asset_items)
|
||||
|
||||
asset_name : EnumProperty(name='', items=lambda s,c : ASSET_ITEMS)
|
||||
#asset_name : EnumProperty(name='', items=get_scene_settings().active_project.get('asset_items', []))
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
active_strip = context.scene.sequence_editor.active_strip
|
||||
|
||||
+54
-24
@@ -6,12 +6,13 @@ import bpy
|
||||
from bpy.types import (Operator, )
|
||||
from bpy.props import (BoolProperty, EnumProperty, StringProperty)
|
||||
|
||||
from vse_toolbox.constants import (ASSET_PREVIEWS, PREVIEWS_DIR)
|
||||
from vse_toolbox.constants import (ASSET_PREVIEWS, PREVIEWS_DIR, ASSET_ITEMS)
|
||||
|
||||
from vse_toolbox.sequencer_utils import (get_strips, get_strip_render_path, get_strip_sequence_name)
|
||||
|
||||
from vse_toolbox.bl_utils import (get_addon_prefs, get_scene_settings)
|
||||
from vse_toolbox.file_utils import (norm_name,)
|
||||
from bpy.app.handlers import persistent
|
||||
|
||||
|
||||
class VSETB_OT_tracker_connect(Operator):
|
||||
@@ -85,7 +86,8 @@ class VSETB_OT_load_assets(Operator):
|
||||
|
||||
if preview_id not in ASSET_PREVIEWS:
|
||||
ASSET_PREVIEWS.load(preview_id, preview_path.as_posix(), 'IMAGE', True)
|
||||
|
||||
|
||||
set_asset_items()
|
||||
|
||||
self.report({'INFO'}, f'Assets for {project.name} successfully loaded')
|
||||
return {"FINISHED"}
|
||||
@@ -106,26 +108,43 @@ class VSETB_OT_load_projects(Operator):
|
||||
prefs = get_addon_prefs()
|
||||
tracker = prefs.tracker
|
||||
|
||||
old_project_name = settings.project_name.replace(' ', '_').upper()
|
||||
# old_project_name = settings.project_name.replace(' ', '_').upper()
|
||||
|
||||
old_episode_name = None
|
||||
if settings.active_project:
|
||||
old_episode_name = settings.active_project.episode_name.replace(' ', '_').upper()
|
||||
# old_episode_name = None
|
||||
# if settings.active_project:
|
||||
# old_episode_name = settings.active_project.episode_name.replace(' ', '_').upper()
|
||||
|
||||
settings.projects.clear()
|
||||
|
||||
|
||||
#settings.projects.clear()
|
||||
tracker.connect()
|
||||
|
||||
for project_data in tracker.get_projects():
|
||||
project = settings.projects.add()
|
||||
project_datas = tracker.get_projects()
|
||||
for project_data in project_datas:
|
||||
project = settings.projects.get(project_data['name'])
|
||||
if not project:
|
||||
project = settings.projects.add()
|
||||
|
||||
project.type = project_data['production_type'].upper().replace(' ', '')
|
||||
project.name = project_data['name']
|
||||
project.id = project_data['id']
|
||||
|
||||
if project.type == 'TVSHOW':
|
||||
for episode_data in tracker.get_episodes(project_data):
|
||||
episode = project.episodes.add()
|
||||
episode_datas = tracker.get_episodes(project_data)
|
||||
for episode_data in episode_datas:
|
||||
episode = project.episodes.get(episode_data['name'])
|
||||
|
||||
if not episode:
|
||||
episode = project.episodes.add()
|
||||
|
||||
episode.name = episode_data['name']
|
||||
episode.id = episode_data['id']
|
||||
|
||||
# Clear deleted episodes
|
||||
ep_names = [e['name'] for e in episode_datas]
|
||||
for ep in reversed(project.episodes):
|
||||
if ep.name not in ep_names:
|
||||
project.episodes.remove(list(project.episodes).index(ep))
|
||||
|
||||
for metadata_data in tracker.get_metadata_types(project_data):
|
||||
#pprint(metadata_data)
|
||||
@@ -158,22 +177,18 @@ class VSETB_OT_load_projects(Operator):
|
||||
|
||||
project.set_spreadsheet()
|
||||
|
||||
for project in settings.projects:
|
||||
if project.name.replace(' ', '_').upper() == old_project_name:
|
||||
settings.project_name = project.name
|
||||
|
||||
for episode in project.episodes:
|
||||
if episode.name.replace(' ', '_').upper() == old_episode_name:
|
||||
project.episode_name = episode.name
|
||||
|
||||
bpy.ops.vse_toolbox.load_settings()
|
||||
#else:
|
||||
# print('Could Not restore Project Name')
|
||||
|
||||
# Remove deleted projects
|
||||
project_names = [p['name'] for p in project_datas]
|
||||
for project in reversed(settings.projects):
|
||||
if project.name not in project_names:
|
||||
settings.projects.remove(list(settings.projects).index(project))
|
||||
|
||||
|
||||
#if settings.active_project:
|
||||
# settings.active_project.set_strip_metadata()
|
||||
|
||||
#bpy.ops.vse_toolbox.load_assets()
|
||||
|
||||
self.report({"INFO"}, 'Successfully Load Tracker Projects')
|
||||
|
||||
@@ -367,6 +382,15 @@ class VSETB_OT_upload_to_tracker(Operator):
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
@persistent
|
||||
def set_asset_items(scene=None):
|
||||
ASSET_ITEMS.clear()
|
||||
|
||||
settings = get_scene_settings()
|
||||
if settings.active_project:
|
||||
ASSET_ITEMS.extend([(a.id, a.label, '', i) for i, a in enumerate(settings.active_project.assets)])
|
||||
|
||||
|
||||
classes = (
|
||||
VSETB_OT_load_assets,
|
||||
VSETB_OT_load_projects,
|
||||
@@ -375,10 +399,16 @@ classes = (
|
||||
VSETB_OT_upload_to_tracker,
|
||||
)
|
||||
|
||||
def register():
|
||||
def register():
|
||||
if not bpy.app.background:
|
||||
bpy.app.handlers.load_post.append(set_asset_items)
|
||||
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
def unregister():
|
||||
for cls in reversed(classes):
|
||||
bpy.utils.unregister_class(cls)
|
||||
bpy.utils.unregister_class(cls)
|
||||
|
||||
if not bpy.app.background:
|
||||
bpy.app.handlers.load_post.remove(set_asset_items)
|
||||
Reference in New Issue
Block a user