1 # SPDX-License-Identifier: GPL-2.0-or-later
3 __author__
= "Nutti <nutti.metro@gmail.com>"
4 __status__
= "production"
6 __date__
= "22 Sep 2022"
12 def check_version(major
, minor
, _
):
17 if bpy
.app
.version
[0] == major
and bpy
.app
.version
[1] == minor
:
19 if bpy
.app
.version
[0] > major
:
21 if bpy
.app
.version
[1] > minor
:
26 def make_annotations(cls
):
27 if check_version(2, 80, 0) < 0:
30 # make annotation from attributes
32 for k
, v
in cls
.__dict
__.items()
33 if isinstance(v
, getattr(bpy
.props
, '_PropertyDeferred', tuple))}
35 if '__annotations__' not in cls
.__dict
__:
36 setattr(cls
, '__annotations__', {})
37 annotations
= cls
.__dict
__['__annotations__']
38 for k
, v
in props
.items():
45 class ChangeRegionType
:
46 def __init__(self
, *_
, **kwargs
):
47 self
.region_type
= kwargs
.get('region_type', False)
49 def __call__(self
, cls
):
50 if check_version(2, 80, 0) >= 0:
53 cls
.bl_region_type
= self
.region_type
59 if check_version(2, 80, 0) < 0:
65 def layout_split(layout
, factor
=0.0, align
=False):
66 if check_version(2, 80, 0) < 0:
67 return layout
.split(percentage
=factor
, align
=align
)
69 return layout
.split(factor
=factor
, align
=align
)
72 def get_user_preferences(context
):
73 if hasattr(context
, "user_preferences"):
74 return context
.user_preferences
76 return context
.preferences
79 def get_object_select(obj
):
80 if check_version(2, 80, 0) < 0:
83 return obj
.select_get()
86 def set_object_select(obj
, select
):
87 if check_version(2, 80, 0) < 0:
90 obj
.select_set(select
)
93 def set_active_object(obj
):
94 if check_version(2, 80, 0) < 0:
95 bpy
.context
.scene
.objects
.active
= obj
97 bpy
.context
.view_layer
.objects
.active
= obj
100 def get_active_object(context
):
101 if check_version(2, 80, 0) < 0:
102 return context
.scene
.objects
.active
104 return context
.view_layer
.objects
.active
107 def object_has_uv_layers(obj
):
108 if check_version(2, 80, 0) < 0:
109 return hasattr(obj
.data
, "uv_textures")
111 return hasattr(obj
.data
, "uv_layers")
114 def get_object_uv_layers(obj
):
115 if check_version(2, 80, 0) < 0:
116 return obj
.data
.uv_textures
118 return obj
.data
.uv_layers
123 if check_version(2, 80, 0) < 0:
129 def set_blf_font_color(font_id
, r
, g
, b
, a
):
130 blf
.color(font_id
, r
, g
, b
, a
)
133 def set_blf_blur(font_id
, radius
):
134 if check_version(2, 80, 0) < 0:
135 blf
.blur(font_id
, radius
)
138 def get_all_space_types():
139 if check_version(2, 80, 0) >= 0:
141 'CLIP_EDITOR': bpy
.types
.SpaceClipEditor
,
142 'CONSOLE': bpy
.types
.SpaceConsole
,
143 'DOPESHEET_EDITOR': bpy
.types
.SpaceDopeSheetEditor
,
144 'FILE_BROWSER': bpy
.types
.SpaceFileBrowser
,
145 'GRAPH_EDITOR': bpy
.types
.SpaceGraphEditor
,
146 'IMAGE_EDITOR': bpy
.types
.SpaceImageEditor
,
147 'INFO': bpy
.types
.SpaceInfo
,
148 'NLA_EDITOR': bpy
.types
.SpaceNLA
,
149 'NODE_EDITOR': bpy
.types
.SpaceNodeEditor
,
150 'OUTLINER': bpy
.types
.SpaceOutliner
,
151 'PROPERTIES': bpy
.types
.SpaceProperties
,
152 'SEQUENCE_EDITOR': bpy
.types
.SpaceSequenceEditor
,
153 'TEXT_EDITOR': bpy
.types
.SpaceTextEditor
,
154 'USER_PREFERENCES': bpy
.types
.SpacePreferences
,
155 'VIEW_3D': bpy
.types
.SpaceView3D
,
159 'VIEW_3D': bpy
.types
.SpaceView3D
,
160 'TIMELINE': bpy
.types
.SpaceTimeline
,
161 'GRAPH_EDITOR': bpy
.types
.SpaceGraphEditor
,
162 'DOPESHEET_EDITOR': bpy
.types
.SpaceDopeSheetEditor
,
163 'NLA_EDITOR': bpy
.types
.SpaceNLA
,
164 'IMAGE_EDITOR': bpy
.types
.SpaceImageEditor
,
165 'SEQUENCE_EDITOR': bpy
.types
.SpaceSequenceEditor
,
166 'CLIP_EDITOR': bpy
.types
.SpaceClipEditor
,
167 'TEXT_EDITOR': bpy
.types
.SpaceTextEditor
,
168 'NODE_EDITOR': bpy
.types
.SpaceNodeEditor
,
169 'LOGIC_EDITOR': bpy
.types
.SpaceLogicEditor
,
170 'PROPERTIES': bpy
.types
.SpaceProperties
,
171 'OUTLINER': bpy
.types
.SpaceOutliner
,
172 'USER_PREFERENCES': bpy
.types
.SpaceUserPreferences
,
173 'INFO': bpy
.types
.SpaceInfo
,
174 'FILE_BROWSER': bpy
.types
.SpaceFileBrowser
,
175 'CONSOLE': bpy
.types
.SpaceConsole
,