This commit is contained in:
2025-10-13 11:34:22 +02:00
parent 2519b55f08
commit 065ab855c1
15 changed files with 427 additions and 47 deletions

View File

@@ -168,15 +168,24 @@ class TEXT_TEXTURE_OT_save_preset(Operator):
existing_preset = preset
break
target_index = None
if not existing_preset:
pass
preset = props.presets.add()
preset.name = preset_name
preset.source = 'BLEND_FILE' if props.save_with_blend_file else 'PERSISTENT_FILE'
target_index = len(props.presets) - 1
else:
pass
# Update source based on where it was saved
existing_preset.source = 'BLEND_FILE' if props.save_with_blend_file else 'PERSISTENT_FILE'
for idx, collection_preset in enumerate(props.presets):
pass
if collection_preset.name == preset_name:
pass
target_index = idx
break
# Provide clear feedback
location = "with .blend file" if props.save_with_blend_file else "to persistent storage"
@@ -188,6 +197,13 @@ class TEXT_TEXTURE_OT_save_preset(Operator):
pass
self.report({'INFO'}, f"✅ Preset '{preset_name}' saved {location}")
if target_index is not None and hasattr(props, "active_preset_index"):
pass
props.active_preset_index = target_index
if hasattr(props, "last_loaded_preset"):
pass
props.last_loaded_preset = preset_name
except (OSError, IOError, json.JSONEncodeError) as e:
pass
self.report({'ERROR'}, f"Failed to save preset: {str(e)}")
@@ -234,6 +250,22 @@ class TEXT_TEXTURE_OT_save_preset_enter(Operator):
# Delegate to the main save preset operator
return bpy.ops.text_texture.save_preset('INVOKE_DEFAULT')
class TEXT_TEXTURE_OT_clear_preset_search(Operator):
pass
"""Clear the preset search filter"""
bl_idname = "text_texture.clear_preset_search"
bl_label = "Clear Preset Search"
bl_description = "Reset the preset search field"
bl_options = {'INTERNAL'}
def execute(self, context):
pass
props = context.scene.text_texture_props
if hasattr(props, "preset_search_query"):
pass
props.preset_search_query = ""
return {'FINISHED'}
class TEXT_TEXTURE_OT_load_preset(Operator):
pass
"""Load preset"""
@@ -382,6 +414,18 @@ class TEXT_TEXTURE_OT_load_preset(Operator):
from ..core.generation_engine import generate_preview
generate_preview(props, props.preview_size if hasattr(props, 'preview_size') else 512, props.preview_size if hasattr(props, 'preview_size') else 512)
if hasattr(props, "last_loaded_preset"):
pass
props.last_loaded_preset = self.preset_name
if hasattr(props, "active_preset_index"):
pass
for idx, preset in enumerate(props.presets):
pass
if preset.name == self.preset_name:
pass
props.active_preset_index = idx
break
source_info = {
'BLEND_FILE': "from blend file",
'PERSISTENT_FILE': "from persistent storage",
@@ -438,13 +482,27 @@ class TEXT_TEXTURE_OT_delete_preset(Operator):
self.report({'WARNING'}, f"Preset '{self.preset_name}' not found in blend file or local storage")
# Remove from UI list
removed_index = None
for i, preset in enumerate(props.presets):
pass
if preset.name == self.preset_name:
pass
props.presets.remove(i)
removed_index = i
break
if hasattr(props, "last_loaded_preset") and props.last_loaded_preset == self.preset_name:
pass
props.last_loaded_preset = ""
if removed_index is not None and hasattr(props, "active_preset_index"):
pass
if len(props.presets) == 0:
pass
props.active_preset_index = 0
else:
pass
props.active_preset_index = min(removed_index, len(props.presets) - 1)
delete_info = []
if blend_deleted:
pass
@@ -809,6 +867,7 @@ class TEXT_TEXTURE_OT_import_presets(Operator):
__all__ = [
'TEXT_TEXTURE_OT_save_preset',
'TEXT_TEXTURE_OT_save_preset_enter',
'TEXT_TEXTURE_OT_clear_preset_search',
'TEXT_TEXTURE_OT_load_preset',
'TEXT_TEXTURE_OT_delete_preset',
'TEXT_TEXTURE_OT_refresh_presets',