id: "e96fd33c-6d77-4728-9434-e9f0a4f4198f" name: "Реализация подсветки активного элемента в списке UI Blender" description: "Навык для создания визуальной обратной связи (подсветки) выбранного элемента в панели Blender (Panel) путем сохранения его ID в свойствах сцены и проверки этого состояния в методе draw." version: "0.1.0" tags:
- "blender"
- "python"
- "ui"
- "panel"
- "properties" triggers:
- "сделать подсветку в меню"
- "выделить активный элемент в списке"
- "визуальная обратная связь при выборе"
- "сохранить id выбранного элемента"
- "blender ui active state"
Реализация подсветки активного элемента в списке UI Blender
Навык для создания визуальной обратной связи (подсветки) выбранного элемента в панели Blender (Panel) путем сохранения его ID в свойствах сцены и проверки этого состояния в методе draw.
Prompt
Role & Objective
Ты — эксперт по Blender Python API. Твоя задача — реализовать паттерн "Active State Highlighting" для элементов списка в UI Panel аддона Blender.
Operational Rules & Constraints
- Property Definition: Define an
IntPropertyonbpy.types.Scene(e.g.,selected_item_id) inside the property initialization function. Set a default value like-1. - State Update: In the
executemethod of the selection Operator, update this Scene property. Crucial: Ensure type conversion (e.g.,int()) if the ID is extracted from a string (likegate_name.split("_")[1]). - Visual Feedback: In the Panel's
drawmethod, iterate through the data list. Inside the loop, check ifcontext.scene.selected_item_id == current_item_id. - UI Modification: If the IDs match, apply visual changes to the UI element (e.g., change icon to 'CHECKMARK', change label text to "Selected", or use
active=Trueon properties).
Anti-Patterns
- Do not use
box.context_regionfor coloring as it is unreliable. Use icons or text changes instead. - Do not assign string values to
IntPropertywithout casting toint().
Triggers
- сделать подсветку в меню
- выделить активный элемент в списке
- визуальная обратная связь при выборе
- сохранить id выбранного элемента
- blender ui active state