1 # SPDX-License-Identifier: GPL-2.0-or-later
3 __author__
= "Nutti <nutti.metro@gmail.com>"
4 __status__
= "production"
6 __date__
= "22 Apr 2022"
13 class BlClassRegistry
:
16 def __init__(self
, *_
, **kwargs
):
17 self
.legacy
= kwargs
.get('legacy', False)
19 def __call__(self
, cls
):
20 if hasattr(cls
, "bl_idname"):
21 BlClassRegistry
.add_class(cls
.bl_idname
, cls
, self
.legacy
)
22 elif hasattr(cls
, "bl_context"):
23 bl_idname
= "{}{}{}{}".format(cls
.bl_space_type
,
25 cls
.bl_context
, cls
.bl_label
)
26 BlClassRegistry
.add_class(bl_idname
, cls
, self
.legacy
)
28 bl_idname
= "{}{}{}".format(cls
.bl_space_type
,
31 BlClassRegistry
.add_class(bl_idname
, cls
, self
.legacy
)
35 def add_class(cls
, bl_idname
, op_class
, legacy
):
36 for class_
in cls
.class_list
:
37 if (class_
["bl_idname"] == bl_idname
) and \
38 (class_
["legacy"] == legacy
):
39 raise RuntimeError("{} is already registered"
43 "bl_idname": bl_idname
,
47 cls
.class_list
.append(new_op
)
48 common
.debug_print("{} is registered.".format(bl_idname
))
52 for class_
in cls
.class_list
:
53 bpy
.utils
.register_class(class_
["class"])
54 common
.debug_print("{} is registered to Blender."
55 .format(class_
["bl_idname"]))
59 for class_
in cls
.class_list
:
60 bpy
.utils
.unregister_class(class_
["class"])
61 common
.debug_print("{} is unregistered from Blender."
62 .format(class_
["bl_idname"]))
67 common
.debug_print("Cleanup registry.")