pullusb 37a9e0ca43 add template in create output path base node
templates for slot are in code but disabled, not useful in the end
2025-07-21 16:24:27 +02:00

117 lines
3.8 KiB
Python

import bpy
from bpy.types import Operator
from bpy.props import (BoolProperty,
EnumProperty,
PointerProperty,
CollectionProperty,
StringProperty)
from .. import fn
class RT_OT_select_object_by_name(Operator):
bl_idname = "rt.select_object_by_name"
bl_label = "Select Object By name"
bl_description = "Select object and modifier"
bl_options = {"REGISTER", "INTERNAL"}
object_name: StringProperty(
name="Object Name",
description="Name of the object to select",
default="",
options={'SKIP_SAVE'}
)
modifier_name: StringProperty(
name="Modifier Name",
description="Name of the modifier to show (optional)",
default="",
options={'SKIP_SAVE'}
)
def execute(self, context):
# Check if object name is provided
if not self.object_name:
self.report({'ERROR'}, "No object name provided")
return {'CANCELLED'}
# Get the object
target_object = context.scene.objects.get(self.object_name)
if not target_object:
self.report({'WARNING'}, f"Object '{self.object_name}' not found in scene")
return {'CANCELLED'}
# Make it the active object
## function to make active and selected
# fn.show_and_active_object(context, target_object, make_active=True, )
context.view_layer.objects.active = target_object
# Handle modifier expansion if modifier name is provided
if self.modifier_name:
# Check if the object has modifiers
if target_object.modifiers:
# Look for the specified modifier
modifier = target_object.modifiers.get(self.modifier_name)
if modifier:
# Expand only this modifier
for mod in target_object.modifiers:
# Collapse all modifiers first
mod.show_expanded = mod == modifier
## Make it the active modifier
target_object.modifiers.active = modifier
## Show modifier panel
fn.set_properties_editor_tab('MODIFIER')
return {'FINISHED'}
class RT_OT_info_note(Operator):
bl_idname = "rt.info_note"
bl_label = "Info Note"
bl_description = "Info Note"
bl_options = {"REGISTER", "INTERNAL"}
text : bpy.props.StringProperty(default='', options={'SKIP_SAVE'})
title : bpy.props.StringProperty(default='Help', options={'SKIP_SAVE'})
icon : bpy.props.StringProperty(default='INFO', options={'SKIP_SAVE'})
@classmethod
def description(self, context, properties):
return properties.text
def execute(self, context):
## Split text in list of lines to display
lines = self.text.split('\n')
fn.show_message_box(_message=lines, _title=self.title, _icon=self.icon)
return {"FINISHED"}
# Not registered yet
class RT_set_env_settings(bpy.types.Operator):
"""manually reset environnement settings"""
bl_idname = "rt.set_env_settings"
bl_label = "Reset Templates From Env"
bl_description = "Reset Render Toolbox templates from environment variables"
bl_options = {"REGISTER", "UNDO", "INTERNAL"}
# mode : bpy.props.StringProperty(default='ALL', options={'SKIP_SAVE'}) # 'HIDDEN',
def execute(self, context):
from ..properties import set_env_properties
set_env_properties()
return {'FINISHED'}
classes = (
RT_OT_select_object_by_name,
RT_OT_info_note
)
def register():
for cls in classes:
bpy.utils.register_class(cls)
def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)