add generic templates

This commit is contained in:
ChristopheSeux
2024-04-16 14:28:02 +02:00
parent 2960bab63d
commit 0055e0f39e
11 changed files with 343 additions and 116 deletions
+67 -13
View File
@@ -5,6 +5,7 @@ import os
import bpy
from bpy.types import Operator
from bpy.props import IntProperty
import vse_toolbox
@@ -37,6 +38,21 @@ class VSETB_OT_load_settings(Operator):
bl_label = 'Load Settings'
bl_description = 'Load VSE ToolBox settings from config file'
def set_config(self, data, values):
for k, v in values.items():
if not hasattr(data, k):
print(f'{repr(data)} has no attribute {k}')
continue
if isinstance(v, list):
data[k] = v
return
try:
setattr(data, k, v)
except Exception:
print(f'Could not set property {k} with value {v} to {repr(data)}')
def execute(self, context):
prefs = get_addon_prefs()
settings = get_scene_settings()
@@ -48,6 +64,10 @@ class VSETB_OT_load_settings(Operator):
if not addon_config:
return {'CANCELLED'}
# Environ set
for k, v in addon_config.get('environ', {}).items():
os.environ[k] = str(v)
addon_config['trackers'] = addon_config.get('trackers')
trackers_config = addon_config.pop('trackers')
@@ -61,11 +81,10 @@ class VSETB_OT_load_settings(Operator):
for k, v in tracker_config.items():
setattr(tracker, k, v)
addon_config['spreadsheet_export'] = addon_config.get('spreadsheet_export', {})
spreadsheet_export_config = addon_config.pop('spreadsheet_export')
addon_config['spreadsheet_import'] = addon_config.get('spreadsheet_import', {})
spreadsheet_import_config = addon_config.pop('spreadsheet_import')
spreadsheet_export_config = addon_config.pop('spreadsheet_export', {})
spreadsheet_import_config = addon_config.pop('spreadsheet_import', {})
upload_to_tracker_config = addon_config.pop('upload_to_tracker', {})
import_shots_config = addon_config.pop('import_shots', {})
project_name = addon_config.get('project_name')
if project_name not in settings.projects:
@@ -77,12 +96,7 @@ class VSETB_OT_load_settings(Operator):
# Project Properties
project = settings.active_project
for k, v in addon_config.items():
try:
setattr(project, k, v)
except Exception:
print(f'Could not set property {k} with value {v} to project {settings.project_name}')
self.set_config(project, addon_config)
export_cells = project.spreadsheet_export.cells
for k, v in spreadsheet_export_config.items():
@@ -148,13 +162,53 @@ class VSETB_OT_load_settings(Operator):
except Exception:
print(f'Could not set option {k} with value {v} to spreadsheet')
self.report({"INFO"}, 'Settings loaded with sucess')
# Upload to Tracker
self.set_config(project.upload_to_tracker, upload_to_tracker_config)
# Import Shots
self.set_config(project.import_shots, import_shots_config)
self.report({"INFO"}, 'Settings loaded with success')
return {'FINISHED'}
class VSETB_OT_add_template(Operator):
bl_idname = "vse_toolbox.add_template"
bl_label = "Add Template"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
scn = context.scene
settings = get_scene_settings()
project = settings.active_project
project.templates.add()
return {'FINISHED'}
class VSETB_OT_remove_template(Operator):
bl_idname = "vse_toolbox.remove_template"
bl_label = "Remove Template"
bl_options = {"REGISTER", "UNDO"}
index : IntProperty()
def execute(self, context):
scn = context.scene
settings = get_scene_settings()
project = settings.active_project
project.templates.remove(self.index)
return {'FINISHED'}
classes = (
VSETB_OT_reload_addon,
VSETB_OT_load_settings
VSETB_OT_load_settings,
VSETB_OT_add_template,
VSETB_OT_remove_template
)
def register():