[Bf-blender-cvs] [c468aeefb5b] master: PyAPI: updates to bl_ui.generic_ui_list which didn't follow conventions

Campbell Barton noreply at git.blender.org
Fri Feb 3 05:08:14 CET 2023


Commit: c468aeefb5b17b43f12e0bb69b60641721033e8a
Author: Campbell Barton
Date:   Fri Feb 3 14:52:16 2023 +1100
Branches: master
https://developer.blender.org/rBc468aeefb5b17b43f12e0bb69b60641721033e8a

PyAPI: updates to bl_ui.generic_ui_list which didn't follow conventions

- Replace type annotations with doc-strings, the current conventions is
  not to use type annotations in startup scripts.
- Replace abbreviation "idx" with "index" in public arguments/properties.
- Replace `len(..) > 0` with boolean checks.
- Add `__all__` to list public members.
- Use `arg` instead of `param` for doc-strings.
- Locate the doc-string so it shows as `__doc__`.

===================================================================

M	release/scripts/startup/bl_ui/generic_ui_list.py
M	release/scripts/templates_py/ui_list_generic.py

===================================================================

diff --git a/release/scripts/startup/bl_ui/generic_ui_list.py b/release/scripts/startup/bl_ui/generic_ui_list.py
index 2ca380ed657..ef9c22d55eb 100644
--- a/release/scripts/startup/bl_ui/generic_ui_list.py
+++ b/release/scripts/startup/bl_ui/generic_ui_list.py
@@ -1,7 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
-import bpy
-from bpy.types import Operator, UILayout, Context
-from bpy.props import EnumProperty, StringProperty
 
 """
 This module (in particular the draw_ui_list function) lets you draw the commonly
@@ -15,54 +12,67 @@ You can get an example of how to use this via the Blender Text Editor->
 Templates->Ui List Generic.
 """
 
+import bpy
+from bpy.types import Operator
+from bpy.props import (
+    EnumProperty,
+    StringProperty,
+)
+
+__all__ = (
+    "draw_ui_list",
+)
+
 
 def draw_ui_list(
-        layout: UILayout,
-        context: Context,
+        layout,
+        context,
         class_name="UI_UL_list",
         *,
         unique_id="",
-        list_path: str,
-        active_idx_path: str,
+        list_path,
+        active_index_path,
         insertion_operators=True,
         move_operators=True,
         menu_class_name="",
-        **kwargs) -> UILayout:
+        **kwargs,
+):
     """
     Draw a UIList with Add/Remove/Move buttons and a menu.
 
-    :param layout:
-        UILayout to draw the list in.
-    :param context:
-        Blender context to get the list data from.
-    :param class_name:
-        Name of the UIList class to draw. The default is the
-        UIList class that ships with Blender.
-    :param unique_id:
-        Optional identifier, in case wanting to draw multiple unique copies of a list.
-
-    :param list_path:
-        Data path of the list relative to context, eg. "object.vertex_groups".
-    :param active_idx_path:
-        Data path of the list active index integer relative to context,
-        eg. "object.vertex_groups.active_index".
-
-    :param insertion_operators:
-        Whether to draw Add/Remove buttons.
-    :param move_operators:
-        Whether to draw Move Up/Down buttons.
-    :param menu_class_name:
-        Name of a Menu that should be drawn as a drop-down.
-
-    Additional keyword arguments are passed to template_list().
+    :arg layout: UILayout to draw the list in.
+    :type layout: :class:`UILayout`
+    :arg context: Blender context to get the list data from.
+    :type context: :class:`Context`
+    :arg class_name: Name of the UIList class to draw. The default is the UIList class that ships with Blender.
+    :type class_name: str
+    :arg unique_id: Optional identifier, in case wanting to draw multiple unique copies of a list.
+    :type unique_id: str
+    :arg list_path: Data path of the list relative to context, eg. "object.vertex_groups".
+    :type list_path: str
+    :arg active_index_path: Data path of the list active index integer relative to context,
+       eg. "object.vertex_groups.active_index".
+    :type active_index_path: str
+    :arg insertion_operators: Whether to draw Add/Remove buttons.
+    :type insertion_operators: bool
+    :arg move_operators: Whether to draw Move Up/Down buttons.
+    :type move_operators: str
+    :arg menu_class_name: Identifier of a Menu that should be drawn as a drop-down.
+    :type menu_class_name: str
+
+    :returns: The right side column.
+    :rtype: :class:`UILayout`.
+
+    Additional keyword arguments are passed to :class:`UIList.template_list`.
     """
+
     row = layout.row()
 
     list_owner_path, list_prop_name = list_path.rsplit('.', 1)
     list_owner = _get_context_attr(context, list_owner_path)
 
-    idx_owner_path, idx_prop_name = active_idx_path.rsplit('.', 1)
-    idx_owner = _get_context_attr(context, idx_owner_path)
+    index_owner_path, index_prop_name = active_index_path.rsplit('.', 1)
+    index_owner = _get_context_attr(context, index_owner_path)
 
     list_to_draw = _get_context_attr(context, list_path)
 
@@ -70,8 +80,8 @@ def draw_ui_list(
         class_name,
         unique_id,
         list_owner, list_prop_name,
-        idx_owner, idx_prop_name,
-        rows=4 if len(list_to_draw) > 0 else 1,
+        index_owner, index_prop_name,
+        rows=4 if list_to_draw else 1,
         **kwargs
     )
 
@@ -81,7 +91,7 @@ def draw_ui_list(
         _draw_add_remove_buttons(
             layout=col,
             list_path=list_path,
-            active_idx_path=active_idx_path,
+            active_index_path=active_index_path,
             list_length=len(list_to_draw)
         )
         layout.separator()
@@ -90,11 +100,11 @@ def draw_ui_list(
         col.menu(menu_class_name, icon='DOWNARROW_HLT', text="")
         col.separator()
 
-    if move_operators and len(list_to_draw) > 0:
+    if move_operators and list_to_draw:
         _draw_move_buttons(
             layout=col,
             list_path=list_path,
-            active_idx_path=active_idx_path,
+            active_index_path=active_index_path,
             list_length=len(list_to_draw)
         )
 
@@ -104,50 +114,50 @@ def draw_ui_list(
 
 def _draw_add_remove_buttons(
     *,
-    layout: UILayout,
-    list_path: str,
-    active_idx_path: str,
-    list_length: int
-) -> None:
+    layout,
+    list_path,
+    active_index_path,
+    list_length,
+):
     """Draw the +/- buttons to add and remove list entries."""
     add_op = layout.operator(UILIST_OT_entry_add.bl_idname, text="", icon='ADD')
     add_op.list_path = list_path
-    add_op.active_idx_path = active_idx_path
+    add_op.active_index_path = active_index_path
 
     row = layout.row()
     row.enabled = list_length > 0
     remove_op = row.operator(UILIST_OT_entry_remove.bl_idname, text="", icon='REMOVE')
     remove_op.list_path = list_path
-    remove_op.active_idx_path = active_idx_path
+    remove_op.active_index_path = active_index_path
 
 
 def _draw_move_buttons(
     *,
-    layout: UILayout,
-    list_path: str,
-    active_idx_path: str,
-    list_length: int
-) -> None:
+    layout,
+    list_path,
+    active_index_path,
+    list_length,
+):
     """Draw the up/down arrows to move elements in the list."""
     col = layout.column()
     col.enabled = list_length > 1
     move_up_op = layout.operator(UILIST_OT_entry_move.bl_idname, text="", icon='TRIA_UP')
     move_up_op.direction = 'UP'
     move_up_op.list_path = list_path
-    move_up_op.active_idx_path = active_idx_path
+    move_up_op.active_index_path = active_index_path
 
     move_down_op = layout.operator(UILIST_OT_entry_move.bl_idname, text="", icon='TRIA_DOWN')
     move_down_op.direction = 'DOWN'
     move_down_op.list_path = list_path
-    move_down_op.active_idx_path = active_idx_path
+    move_down_op.active_index_path = active_index_path
 
 
-def _get_context_attr(context: Context, data_path: str) -> object:
+def _get_context_attr(context, data_path):
     """Return the value of a context member based on its data path."""
     return context.path_resolve(data_path)
 
 
-def _set_context_attr(context: Context, data_path: str, value: object) -> None:
+def _set_context_attr(context, data_path, value) -> None:
     """Set the value of a context member based on its data path."""
     owner_path, attr_name = data_path.rsplit('.', 1)
     owner = context.path_resolve(owner_path)
@@ -160,19 +170,18 @@ class GenericUIListOperator:
     bl_options = {'REGISTER', 'UNDO', 'INTERNAL'}
 
     list_path: StringProperty()
-    active_idx_path: StringProperty()
+    active_index_path: StringProperty()
 
     def get_list(self, context) -> str:
         return _get_context_attr(context, self.list_path)
 
     def get_active_index(self, context) -> str:
-        return _get_context_attr(context, self.active_idx_path)
+        return _get_context_attr(context, self.active_index_path)
 
     def set_active_index(self, context, index):
-        _set_context_attr(context, self.active_idx_path, index)
+        _set_context_attr(context, self.active_index_path, index)
 
 
-# noinspection PyPep8Naming
 class UILIST_OT_entry_remove(GenericUIListOperator, Operator):
     """Remove the selected entry from the list"""
 
@@ -190,7 +199,6 @@ class UILIST_OT_entry_remove(GenericUIListOperator, Operator):
         return {'FINISHED'}
 
 
-# noinspection PyPep8Naming
 class UILIST_OT_entry_add(GenericUIListOperator, Operator):
     """Add an entry to the list after the current active item"""
 
@@ -210,7 +218,6 @@ class UILIST_OT_entry_add(GenericUIListOperator, Operator):
         return {'FINISHED'}
 
 
-# noinspection PyPep8Naming
 class UILIST_OT_entry_move(GenericUIListOperator, Operator):
     """Move an entry in the list up or down"""
 
@@ -219,8 +226,8 @@ class UILIST_OT_entry_move(GenericUIListOperator, Operator):
 
     direction: EnumProperty(
         name="Direction",
-        items=[('UP', 'UP', 'UP'),
-               ('DOWN', 'DOWN', 'DOWN')],
+        items=(('UP', 'UP', 'UP'),
+               ('DOWN', 'DOWN', 'DOWN')),
         default='UP'
     )
 
@@ -241,9 +248,7 @@ class UILIST_OT_entry_move(GenericUIListOperator, Operator):
         return {'FINISHED'}
 
 
-# =============================================
-# Registration
-
+# Registration.
 classes = (
     UILIST_OT_entry_remove,
     UILIST_OT_entry_add,
diff --git a/release/scripts/templates_py/ui_list_generic.py b/release/scripts/templates_py/ui_list_generic.py
index ad370ec4305..ec6135a62ac 100644
--- a/release/scripts/templates_py/ui_list_generic.py
+++ b/release/scripts/templates_py/ui_list_generic.py
@@ -19,7 +19,7 @@ class MyPanel(bpy.types.Panel):
             layout,
             context,
             list_context_path="scene.my_list",
-            active_idx_context_path="scene.my_list_active_idx"
+            active_index_context_path="scene.my_list_active_index"
         )
 
 
@@ -34,13 +34,13 @@ 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()
+    bpy.types.Scene.my_list_active_index = bpy.props.IntProperty()
 
 
 def unregister():
     class_unregister()
     del bpy.types.Scene.my_list
-    del 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list