Cleanup: use staticmethod where appropriate
[blender.git] / release / scripts / templates_py / ui_list.py
1 import bpy
2
3
4 class MESH_UL_mylist(bpy.types.UIList):
5     # Constants (flags)
6     # Be careful not to shadow FILTER_ITEM (i.e. UIList().bitflag_filter_item)!
7     # E.g. VGROUP_EMPTY = 1 << 0
8
9     # Custom properties, saved with .blend file. E.g.
10     # use_filter_empty: bpy.props.BoolProperty(
11     #     name="Filter Empty", default=False, options=set(),
12     #     description="Whether to filter empty vertex groups",
13     # )
14
15     # Called for each drawn item.
16     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index, flt_flag):
17         # 'DEFAULT' and 'COMPACT' layout types should usually use the same draw code.
18         if self.layout_type in {'DEFAULT', 'COMPACT'}:
19             pass
20         # 'GRID' layout type should be as compact as possible (typically a single icon!).
21         elif self.layout_type in {'GRID'}:
22             pass
23
24     # Called once to draw filtering/reordering options.
25     def draw_filter(self, context, layout):
26         # Nothing much to say here, it's usual UI code...
27         pass
28
29     # Called once to filter/reorder items.
30     def filter_items(self, context, data, propname):
31         # This function gets the collection property (as the usual tuple (data, propname)), and must return two lists:
32         # * The first one is for filtering, it must contain 32bit integers were self.bitflag_filter_item marks the
33         #   matching item as filtered (i.e. to be shown), and 31 other bits are free for custom needs. Here we use the
34         #   first one to mark VGROUP_EMPTY.
35         # * The second one is for reordering, it must return a list containing the new indices of the items (which
36         #   gives us a mapping org_idx -> new_idx).
37         # Please note that the default UI_UL_list defines helper functions for common tasks (see its doc for more info).
38         # If you do not make filtering and/or ordering, return empty list(s) (this will be more efficient than
39         # returning full lists doing nothing!).
40
41         # Default return values.
42         flt_flags = []
43         flt_neworder = []
44
45         # Do filtering/reordering here...
46
47         return flt_flags, flt_neworder