This patch adds a draw_ui_list() function, which is a wrapper around layout.template_list(). It implements generic add/remove/move buttons, passing the correct "row" integer to template_list(), as well as a drop-down menu, if provided, making it a complete solution for consistent UILists for addons. Differential Revision: https://developer.blender.org/D14119
47 lines
1005 B
Python
47 lines
1005 B
Python
import bpy
|
|
from bl_ui.generic_ui_list import draw_ui_list
|
|
|
|
|
|
class MyPropGroup(bpy.types.PropertyGroup):
|
|
name: bpy.props.StringProperty()
|
|
|
|
|
|
class MyPanel(bpy.types.Panel):
|
|
bl_label = "My Label"
|
|
bl_idname = "SCENE_PT_list_demo"
|
|
bl_space_type = 'VIEW_3D'
|
|
bl_region_type = 'UI'
|
|
bl_category = 'My Category'
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
draw_ui_list(
|
|
layout,
|
|
context,
|
|
list_context_path="scene.my_list",
|
|
active_idx_context_path="scene.my_list_active_idx"
|
|
)
|
|
|
|
|
|
classes = [
|
|
MyPropGroup,
|
|
MyPanel
|
|
]
|
|
|
|
class_register, class_unregister = bpy.utils.register_classes_factory(classes)
|
|
|
|
|
|
def register():
|
|
class_register()
|
|
bpy.types.Scene.my_list = bpy.props.CollectionProperty(type=MyPropGroup)
|
|
bpy.types.Scene.my_list_active_idx = bpy.props.IntProperty()
|
|
|
|
|
|
def unregister():
|
|
class_unregister()
|
|
del bpy.types.Scene.my_list
|
|
del bpy.types.Scene.my_list_active_idx
|
|
|
|
|
|
register()
|