Add preferences with default templates with option to set them from env (falling back to prefs) at startup

change default templates to use label instead of name
This commit is contained in:
pullusb
2025-07-25 10:55:04 +02:00
parent 7d8535a7eb
commit 4feebf0a06
5 changed files with 120 additions and 15 deletions
+18 -5
View File
@@ -10,7 +10,7 @@ class RT_PG_render_toolbox_props(PropertyGroup):
name="Base Path Template",
description="Template for file output base path\
\nFolder containing subsequent filepath",
default="//render/{node_name}/",
default="//render/{node_label}/",
# options={'SKIP_SAVE'}
)
@@ -19,7 +19,7 @@ class RT_PG_render_toolbox_props(PropertyGroup):
name="Base Path Template",
description="Template for multilayer file output base paths\
\nOutput of the file sequence",
default="//render/{node_name}/{node_name}_",
default="//render/{node_label}/{node_label}_",
# options={'SKIP_SAVE'}
)
@@ -58,15 +58,28 @@ class RT_PG_render_toolbox_props(PropertyGroup):
# # options={'SKIP_SAVE'}
# )
def set_env_properties():
## set default template from environment variable if available
def reset_scene_path_templates():
## set default template from environment variable if available, or fallback to preferences defaults
prefs = bpy.context.preferences.addons[__package__].preferences
if not prefs.use_env_base_path_templates:
# set from preferences
bpy.context.scene.render_toolbox.default_base_path = prefs.base_path_template
bpy.context.scene.render_toolbox.default_multilayer_base_path = prefs.base_path_multilayer_template
return
# set from environment variables (fallback to preferences if not set)
exr_base_path_template = os.getenv('RENDERTOOLBOX_EXR_PATH_TEMPLATE')
if exr_base_path_template:
bpy.context.scene.render_toolbox.default_base_path = exr_base_path_template
else:
bpy.context.scene.render_toolbox.default_base_path = prefs.base_path_template
multilayer_base_path_template = os.getenv('RENDERTOOLBOX_MULTILAYER_PATH_TEMPLATE')
if multilayer_base_path_template:
bpy.context.scene.render_toolbox.default_multilayer_base_path = multilayer_base_path_template
else:
bpy.context.scene.render_toolbox.default_multilayer_base_path = prefs.base_path_multilayer_template
classes = (
RT_PG_render_toolbox_props,
@@ -77,7 +90,7 @@ def register():
bpy.utils.register_class(cls)
bpy.types.Scene.render_toolbox = bpy.props.PointerProperty(type=RT_PG_render_toolbox_props)
# set_env_properties() # restricted context error when trying assignation here (probably need handler)
# reset_scene_path_templates() # restricted context error when trying assignation here (probably need handler)
def unregister():
del bpy.types.Scene.render_toolbox