@tushar-br/editing-pack 1.0.188 → 1.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1216) hide show
  1. package/package.json +1 -1
  2. package/staging_area/Blender/blender.pdb.ts_part_0 +0 -0
  3. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__init__.py +0 -173
  4. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/__init__.cpython-311.pyc +0 -0
  5. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/camera.cpython-311.pyc +0 -0
  6. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/engine.cpython-311.pyc +0 -0
  7. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/operators.cpython-311.pyc +0 -0
  8. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/presets.cpython-311.pyc +0 -0
  9. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/properties.cpython-311.pyc +0 -0
  10. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/ui.cpython-311.pyc +0 -0
  11. package/staging_area/Blender/5.0/scripts/addons_core/cycles/__pycache__/version_update.cpython-311.pyc +0 -0
  12. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/geom/shader_data.h +0 -452
  13. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/geom/triangle.h +0 -278
  14. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/geom/triangle_intersect.h +0 -166
  15. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/geom/volume.h +0 -104
  16. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/globals.h +0 -13
  17. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/image.h +0 -12
  18. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/displacement_shader.h +0 -43
  19. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/guiding.h +0 -641
  20. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/init_from_bake.h +0 -344
  21. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/init_from_camera.h +0 -110
  22. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/intersect_closest.h +0 -443
  23. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/intersect_dedicated_light.h +0 -232
  24. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/intersect_shadow.h +0 -183
  25. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/intersect_subsurface.h +0 -24
  26. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/intersect_volume_stack.h +0 -250
  27. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/megakernel.h +0 -114
  28. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/mnee.h +0 -1123
  29. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/path_state.h +0 -425
  30. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shade_background.h +0 -210
  31. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shade_dedicated_light.h +0 -243
  32. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shade_light.h +0 -95
  33. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shade_shadow.h +0 -192
  34. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shade_surface.h +0 -885
  35. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shade_volume.h +0 -2947
  36. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shadow_catcher.h +0 -79
  37. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shadow_linking.h +0 -69
  38. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/shadow_state_template.h +0 -99
  39. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/state.h +0 -276
  40. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/state_flow.h +0 -255
  41. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/state_template.h +0 -152
  42. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/state_util.h +0 -602
  43. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/subsurface.h +0 -251
  44. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/subsurface_disk.h +0 -220
  45. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/subsurface_random_walk.h +0 -462
  46. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/surface_shader.h +0 -1198
  47. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/volume_shader.h +0 -539
  48. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/integrator/volume_stack.h +0 -258
  49. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/area.h +0 -537
  50. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/background.h +0 -500
  51. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/common.h +0 -86
  52. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/distant.h +0 -167
  53. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/distribution.h +0 -60
  54. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/light.h +0 -499
  55. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/point.h +0 -240
  56. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/sample.h +0 -545
  57. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/spot.h +0 -347
  58. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/tree.h +0 -951
  59. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/light/triangle.h +0 -339
  60. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/osl/camera.h +0 -81
  61. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/osl/closures_setup.h +0 -1259
  62. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/osl/closures_template.h +0 -277
  63. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/osl/osl.h +0 -287
  64. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/osl/services_gpu.h +0 -1327
  65. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/osl/types.h +0 -157
  66. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/lcg.h +0 -53
  67. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/mapping.h +0 -251
  68. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/mis.h +0 -41
  69. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/pattern.h +0 -188
  70. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/sobol_burley.h +0 -203
  71. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/tabulated_sobol.h +0 -178
  72. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/sample/util.h +0 -79
  73. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/ao.h +0 -148
  74. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/aov.h +0 -49
  75. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/attribute.h +0 -326
  76. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/bevel.h +0 -334
  77. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/blackbody.h +0 -35
  78. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/brick.h +0 -147
  79. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/brightness.h +0 -32
  80. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/bump.h +0 -72
  81. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/camera.h +0 -42
  82. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/checker.h +0 -54
  83. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/clamp.h +0 -40
  84. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/closure.h +0 -1559
  85. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/color_util.h +0 -409
  86. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/convert.h +0 -66
  87. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/displace.h +0 -240
  88. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/fractal_noise.h +0 -550
  89. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/fresnel.h +0 -80
  90. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/gabor.h +0 -392
  91. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/gamma.h +0 -27
  92. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/geometry.h +0 -280
  93. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/gradient.h +0 -80
  94. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/hsv.h +0 -54
  95. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/ies.h +0 -38
  96. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/image.h +0 -273
  97. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/invert.h +0 -33
  98. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/light_path.h +0 -150
  99. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/magic.h +0 -132
  100. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/map_range.h +0 -164
  101. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/mapping.h +0 -74
  102. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/mapping_util.h +0 -37
  103. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/math.h +0 -73
  104. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/math_util.h +0 -278
  105. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/mix.h +0 -125
  106. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/node_types_template.h +0 -115
  107. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/noise.h +0 -761
  108. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/noisetex.h +0 -370
  109. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/normal.h +0 -38
  110. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/radial_tiling.h +0 -81
  111. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/radial_tiling_shared.h +0 -1179
  112. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/ramp.h +0 -185
  113. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/ramp_util.h +0 -80
  114. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/sepcomb_color.h +0 -62
  115. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/sepcomb_vector.h +0 -45
  116. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/sky.h +0 -309
  117. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/svm.h +0 -492
  118. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/tex_coord.h +0 -506
  119. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/types.h +0 -530
  120. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/util.h +0 -160
  121. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/value.h +0 -34
  122. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/vector_rotate.h +0 -79
  123. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/vector_transform.h +0 -130
  124. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/vertex_color.h +0 -107
  125. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/voronoi.h +0 -1248
  126. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/wave.h +0 -137
  127. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/wavelength.h +0 -36
  128. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/white_noise.h +0 -74
  129. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/svm/wireframe.h +0 -116
  130. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/tables.h +0 -124
  131. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/types.h +0 -1923
  132. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/colorspace.h +0 -54
  133. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/differential.h +0 -169
  134. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/ies.h +0 -145
  135. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/lookup_table.h +0 -74
  136. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/nanovdb.h +0 -436
  137. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/profiler.h +0 -28
  138. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/kernel/util/texture_3d.h +0 -232
  139. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/atomic.h +0 -315
  140. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/color.h +0 -439
  141. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/defines.h +0 -131
  142. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/guiding.h +0 -40
  143. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/half.h +0 -178
  144. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/hash.h +0 -650
  145. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math.h +0 -24
  146. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_base.h +0 -953
  147. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_dual.h +0 -59
  148. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_fast.h +0 -650
  149. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_float2.h +0 -274
  150. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_float3.h +0 -847
  151. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_float4.h +0 -666
  152. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_float8.h +0 -471
  153. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_int2.h +0 -59
  154. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_int3.h +0 -117
  155. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_int4.h +0 -296
  156. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_int8.h +0 -353
  157. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/math_intersect.h +0 -452
  158. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/projection.h +0 -308
  159. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/projection_inverse.h +0 -95
  160. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/rect.h +0 -61
  161. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/static_assert.h +0 -21
  162. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/texture.h +0 -100
  163. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/transform.h +0 -650
  164. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types.h +0 -32
  165. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_base.h +0 -94
  166. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_dual.h +0 -134
  167. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_float2.h +0 -71
  168. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_float3.h +0 -200
  169. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_float4.h +0 -134
  170. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_float8.h +0 -134
  171. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_int2.h +0 -44
  172. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_int3.h +0 -158
  173. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_int4.h +0 -91
  174. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_int8.h +0 -94
  175. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_rgbe.h +0 -109
  176. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_spectrum.h +0 -28
  177. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_uchar2.h +0 -39
  178. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_uchar3.h +0 -39
  179. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_uchar4.h +0 -45
  180. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_uint2.h +0 -37
  181. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_uint3.h +0 -91
  182. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_uint4.h +0 -37
  183. package/staging_area/Blender/5.0/scripts/addons_core/cycles/source/util/types_ushort4.h +0 -19
  184. package/staging_area/Blender/5.0/scripts/addons_core/cycles/ui.py +0 -2645
  185. package/staging_area/Blender/5.0/scripts/addons_core/cycles/version_update.py +0 -330
  186. package/staging_area/Blender/5.0/scripts/addons_core/hydra_storm/__init__.py +0 -33
  187. package/staging_area/Blender/5.0/scripts/addons_core/hydra_storm/engine.py +0 -47
  188. package/staging_area/Blender/5.0/scripts/addons_core/hydra_storm/properties.py +0 -62
  189. package/staging_area/Blender/5.0/scripts/addons_core/hydra_storm/ui.py +0 -280
  190. package/staging_area/Blender/5.0/scripts/addons_core/io_anim_bvh/__init__.py +0 -397
  191. package/staging_area/Blender/5.0/scripts/addons_core/io_anim_bvh/__pycache__/__init__.cpython-311.pyc +0 -0
  192. package/staging_area/Blender/5.0/scripts/addons_core/io_anim_bvh/export_bvh.py +0 -294
  193. package/staging_area/Blender/5.0/scripts/addons_core/io_anim_bvh/import_bvh.py +0 -795
  194. package/staging_area/Blender/5.0/scripts/addons_core/io_curve_svg/__init__.py +0 -115
  195. package/staging_area/Blender/5.0/scripts/addons_core/io_curve_svg/__pycache__/__init__.cpython-311.pyc +0 -0
  196. package/staging_area/Blender/5.0/scripts/addons_core/io_curve_svg/import_svg.py +0 -1911
  197. package/staging_area/Blender/5.0/scripts/addons_core/io_curve_svg/svg_colors.py +0 -153
  198. package/staging_area/Blender/5.0/scripts/addons_core/io_curve_svg/svg_util.py +0 -107
  199. package/staging_area/Blender/5.0/scripts/addons_core/io_curve_svg/svg_util_test.py +0 -166
  200. package/staging_area/Blender/5.0/scripts/addons_core/io_mesh_uv_layout/__init__.py +0 -302
  201. package/staging_area/Blender/5.0/scripts/addons_core/io_mesh_uv_layout/__pycache__/__init__.cpython-311.pyc +0 -0
  202. package/staging_area/Blender/5.0/scripts/addons_core/io_mesh_uv_layout/export_uv_eps.py +0 -82
  203. package/staging_area/Blender/5.0/scripts/addons_core/io_mesh_uv_layout/export_uv_png.py +0 -119
  204. package/staging_area/Blender/5.0/scripts/addons_core/io_mesh_uv_layout/export_uv_svg.py +0 -54
  205. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/__init__.py +0 -740
  206. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/__pycache__/__init__.cpython-311.pyc +0 -0
  207. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/data_types.py +0 -62
  208. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/encode_bin.py +0 -434
  209. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/export_fbx_bin.py +0 -3819
  210. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/fbx2json.py +0 -341
  211. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/fbx_utils.py +0 -1931
  212. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/fbx_utils_threading.py +0 -194
  213. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/import_fbx.py +0 -4045
  214. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/json2fbx.py +0 -165
  215. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_fbx/parse_fbx.py +0 -274
  216. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/__init__.py +0 -2250
  217. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/__pycache__/__init__.cpython-311.pyc +0 -0
  218. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/__init__.py +0 -3
  219. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/__pycache__/__init__.cpython-311.pyc +0 -0
  220. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/blender_default.cpython-311.pyc +0 -0
  221. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/conversion.cpython-311.pyc +0 -0
  222. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/data_path.cpython-311.pyc +0 -0
  223. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/extras.cpython-311.pyc +0 -0
  224. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/gltf2_blender_math.cpython-311.pyc +0 -0
  225. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/gltf2_blender_ui.cpython-311.pyc +0 -0
  226. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/gltf2_blender_utils.cpython-311.pyc +0 -0
  227. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/json_util.cpython-311.pyc +0 -0
  228. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/__pycache__/material_helpers.cpython-311.pyc +0 -0
  229. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/blender_default.py +0 -15
  230. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/conversion.py +0 -229
  231. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/data_path.py +0 -110
  232. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/extras.py +0 -89
  233. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/gltf2_blender_math.py +0 -209
  234. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/gltf2_blender_ui.py +0 -751
  235. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/gltf2_blender_utils.py +0 -70
  236. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/json_util.py +0 -27
  237. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/com/material_helpers.py +0 -32
  238. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/__pycache__/cache.cpython-311.pyc +0 -0
  239. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/__pycache__/sampler.cpython-311.pyc +0 -0
  240. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/accessors.py +0 -189
  241. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/action.py +0 -1062
  242. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/anim_utils.py +0 -321
  243. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/animations.py +0 -22
  244. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/drivers.py +0 -83
  245. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/fcurves/animation.py +0 -35
  246. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/fcurves/channel_target.py +0 -53
  247. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/fcurves/channels.py +0 -378
  248. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/fcurves/keyframes.py +0 -207
  249. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/fcurves/sampler.py +0 -231
  250. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/keyframes.py +0 -127
  251. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/armature/action_sampled.py +0 -55
  252. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/armature/channel_target.py +0 -54
  253. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/armature/channels.py +0 -236
  254. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/armature/keyframes.py +0 -95
  255. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/armature/sampler.py +0 -230
  256. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/data/channel_target.py +0 -48
  257. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/data/channels.py +0 -118
  258. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/data/keyframes.py +0 -152
  259. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/data/sampler.py +0 -135
  260. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/object/action_sampled.py +0 -58
  261. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/object/channel_target.py +0 -51
  262. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/object/channels.py +0 -136
  263. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/object/keyframes.py +0 -88
  264. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/object/sampler.py +0 -171
  265. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/sampling_cache.py +0 -754
  266. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/shapekeys/action_sampled.py +0 -43
  267. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/shapekeys/channel_target.py +0 -38
  268. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/shapekeys/channels.py +0 -79
  269. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/shapekeys/keyframes.py +0 -145
  270. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/sampled/shapekeys/sampler.py +0 -111
  271. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/scene_animation.py +0 -244
  272. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/animation/tracks.py +0 -846
  273. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/cache.py +0 -182
  274. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/cameras.py +0 -152
  275. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/export.py +0 -412
  276. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/exporter.py +0 -536
  277. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/gather.py +0 -157
  278. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/joints.py +0 -110
  279. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/light_spots.py +0 -47
  280. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/lights.py +0 -212
  281. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/__pycache__/encode_image.cpython-311.pyc +0 -0
  282. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/__pycache__/image.cpython-311.pyc +0 -0
  283. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/__pycache__/search_node_tree.cpython-311.pyc +0 -0
  284. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/__pycache__/texture.cpython-311.pyc +0 -0
  285. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/__pycache__/texture_info.cpython-311.pyc +0 -0
  286. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/__pycache__/unlit.cpython-311.pyc +0 -0
  287. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/encode_image.py +0 -491
  288. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/anisotropy.py +0 -259
  289. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/clearcoat.py +0 -156
  290. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/emission.py +0 -115
  291. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/ior.py +0 -45
  292. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/sheen.py +0 -129
  293. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/specular.py +0 -140
  294. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/transmission.py +0 -76
  295. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/variants.py +0 -19
  296. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/extensions/volume.py +0 -118
  297. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/image.py +0 -514
  298. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/material_utils.py +0 -13
  299. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/material_viewport.py +0 -32
  300. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/materials.py +0 -714
  301. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/pbr_metallic_roughness.py +0 -257
  302. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/search_node_tree.py +0 -1120
  303. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/texture.py +0 -248
  304. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/texture_info.py +0 -291
  305. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/material/unlit.py +0 -191
  306. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/mesh.py +0 -160
  307. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/nodes.py +0 -577
  308. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/primitive_attributes.py +0 -252
  309. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/primitive_extract.py +0 -1662
  310. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/primitives.py +0 -366
  311. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/sampler.py +0 -187
  312. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/skins.py +0 -148
  313. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/exp/tree.py +0 -976
  314. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/KHR_materials_anisotropy.py +0 -116
  315. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/KHR_materials_pbrSpecularGlossiness.py +0 -203
  316. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/KHR_materials_unlit.py +0 -56
  317. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/KHR_materials_anisotropy.cpython-311.pyc +0 -0
  318. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/KHR_materials_pbrSpecularGlossiness.cpython-311.pyc +0 -0
  319. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/KHR_materials_unlit.cpython-311.pyc +0 -0
  320. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/animation.cpython-311.pyc +0 -0
  321. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/animation_node.cpython-311.pyc +0 -0
  322. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/animation_pointer.cpython-311.pyc +0 -0
  323. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/animation_utils.cpython-311.pyc +0 -0
  324. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/animation_weight.cpython-311.pyc +0 -0
  325. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/blender_gltf.cpython-311.pyc +0 -0
  326. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/camera.cpython-311.pyc +0 -0
  327. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/draco_compression_extension.cpython-311.pyc +0 -0
  328. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/image.cpython-311.pyc +0 -0
  329. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/light.cpython-311.pyc +0 -0
  330. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/material.cpython-311.pyc +0 -0
  331. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/material_utils.cpython-311.pyc +0 -0
  332. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/mesh.cpython-311.pyc +0 -0
  333. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/node.cpython-311.pyc +0 -0
  334. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/pbrMetallicRoughness.cpython-311.pyc +0 -0
  335. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/scene.cpython-311.pyc +0 -0
  336. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/texture.cpython-311.pyc +0 -0
  337. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/__pycache__/vnode.cpython-311.pyc +0 -0
  338. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/animation.py +0 -170
  339. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/animation_node.py +0 -170
  340. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/animation_pointer.py +0 -787
  341. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/animation_utils.py +0 -174
  342. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/animation_weight.py +0 -95
  343. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/blender_gltf.py +0 -633
  344. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/camera.py +0 -75
  345. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/draco_compression_extension.py +0 -138
  346. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/image.py +0 -102
  347. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/light.py +0 -143
  348. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/material.py +0 -113
  349. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/material_utils.py +0 -196
  350. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/mesh.py +0 -920
  351. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/node.py +0 -348
  352. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/pbrMetallicRoughness.py +0 -903
  353. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/scene.py +0 -133
  354. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/texture.py +0 -233
  355. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/blender/imp/vnode.py +0 -661
  356. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/extern_draco.dll +0 -0
  357. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/__init__.py +0 -5
  358. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/__pycache__/__init__.cpython-311.pyc +0 -0
  359. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/__pycache__/constants.cpython-311.pyc +0 -0
  360. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/__pycache__/debug.cpython-311.pyc +0 -0
  361. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/__pycache__/draco.cpython-311.pyc +0 -0
  362. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/__pycache__/gltf2_io.cpython-311.pyc +0 -0
  363. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/__pycache__/gltf2_io_extensions.cpython-311.pyc +0 -0
  364. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/__pycache__/path.cpython-311.pyc +0 -0
  365. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/constants.py +0 -159
  366. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/debug.py +0 -129
  367. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/draco.py +0 -46
  368. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/gltf2_io.py +0 -1217
  369. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/gltf2_io_extensions.py +0 -30
  370. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/lights_punctual.py +0 -68
  371. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/path.py +0 -19
  372. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/com/variants.py +0 -32
  373. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/__pycache__/binary_data.cpython-311.pyc +0 -0
  374. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/__pycache__/image_data.cpython-311.pyc +0 -0
  375. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/__pycache__/user_extensions.cpython-311.pyc +0 -0
  376. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/binary_data.py +0 -35
  377. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/buffer.py +0 -54
  378. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/draco.py +0 -174
  379. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/export.py +0 -122
  380. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/image_data.py +0 -80
  381. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/exp/user_extensions.py +0 -17
  382. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/__init__.py +0 -5
  383. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/__pycache__/__init__.cpython-311.pyc +0 -0
  384. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/__pycache__/gltf2_io_binary.cpython-311.pyc +0 -0
  385. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/__pycache__/gltf2_io_gltf.cpython-311.pyc +0 -0
  386. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/__pycache__/user_extensions.cpython-311.pyc +0 -0
  387. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/gltf2_io_binary.py +0 -215
  388. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/gltf2_io_gltf.py +0 -198
  389. package/staging_area/Blender/5.0/scripts/addons_core/io_scene_gltf2/io/imp/user_extensions.py +0 -13
  390. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/README.md +0 -5
  391. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/__init__.py +0 -64
  392. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/interface.py +0 -526
  393. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/operators.py +0 -2421
  394. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/preferences.py +0 -398
  395. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/utils/constants.py +0 -192
  396. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/utils/draw.py +0 -219
  397. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/utils/nodes.py +0 -299
  398. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/utils/paths.py +0 -169
  399. package/staging_area/Blender/5.0/scripts/addons_core/node_wrangler/utils/paths_test.py +0 -290
  400. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__init__.py +0 -56
  401. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/__init__.cpython-311.pyc +0 -0
  402. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/asset_browser.cpython-311.pyc +0 -0
  403. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/functions.cpython-311.pyc +0 -0
  404. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/gui.cpython-311.pyc +0 -0
  405. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/keymaps.cpython-311.pyc +0 -0
  406. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/operators.cpython-311.pyc +0 -0
  407. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/pose_creation.cpython-311.pyc +0 -0
  408. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/__pycache__/pose_usage.cpython-311.pyc +0 -0
  409. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/asset_browser.py +0 -99
  410. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/functions.py +0 -57
  411. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/gui.py +0 -229
  412. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/keymaps.py +0 -29
  413. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/operators.py +0 -299
  414. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/pose_creation.py +0 -413
  415. package/staging_area/Blender/5.0/scripts/addons_core/pose_library/pose_usage.py +0 -85
  416. package/staging_area/Blender/5.0/scripts/addons_core/rigify/__init__.py +0 -907
  417. package/staging_area/Blender/5.0/scripts/addons_core/rigify/base_generate.py +0 -536
  418. package/staging_area/Blender/5.0/scripts/addons_core/rigify/base_rig.py +0 -351
  419. package/staging_area/Blender/5.0/scripts/addons_core/rigify/feature_set_list.py +0 -357
  420. package/staging_area/Blender/5.0/scripts/addons_core/rigify/feature_sets/__init__.py +0 -16
  421. package/staging_area/Blender/5.0/scripts/addons_core/rigify/generate.py +0 -762
  422. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarig_menu.py +0 -271
  423. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Animals/__init__.py +0 -0
  424. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Animals/bird.py +0 -1397
  425. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Animals/cat.py +0 -2854
  426. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Animals/horse.py +0 -1401
  427. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Animals/shark.py +0 -692
  428. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Animals/wolf.py +0 -3088
  429. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Basic/basic_human.py +0 -618
  430. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/Basic/basic_quadruped.py +0 -715
  431. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/__init__.py +0 -0
  432. package/staging_area/Blender/5.0/scripts/addons_core/rigify/metarigs/human.py +0 -2625
  433. package/staging_area/Blender/5.0/scripts/addons_core/rigify/operators/__init__.py +0 -34
  434. package/staging_area/Blender/5.0/scripts/addons_core/rigify/operators/action_layers.py +0 -658
  435. package/staging_area/Blender/5.0/scripts/addons_core/rigify/operators/copy_mirror_parameters.py +0 -316
  436. package/staging_area/Blender/5.0/scripts/addons_core/rigify/operators/generic_ui_list.py +0 -191
  437. package/staging_area/Blender/5.0/scripts/addons_core/rigify/operators/upgrade_face.py +0 -457
  438. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rig_lists.py +0 -116
  439. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rig_ui_template.py +0 -1445
  440. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/__init__.py +0 -0
  441. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/basic/__init__.py +0 -0
  442. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/basic/copy_chain.py +0 -167
  443. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/basic/pivot.py +0 -242
  444. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/basic/raw_copy.py +0 -228
  445. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/basic/super_copy.py +0 -191
  446. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/chain_rigs.py +0 -388
  447. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/experimental/__init__.py +0 -0
  448. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/experimental/super_chain.py +0 -853
  449. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/face/basic_tongue.py +0 -195
  450. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/face/skin_eye.py +0 -843
  451. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/face/skin_jaw.py +0 -880
  452. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/faces/__init__.py +0 -0
  453. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/faces/super_face.py +0 -2378
  454. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/__init__.py +0 -0
  455. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/arm.py +0 -209
  456. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/front_paw.py +0 -270
  457. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/leg.py +0 -746
  458. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/limb_rigs.py +0 -1287
  459. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/limb_utils.py +0 -78
  460. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/paw.py +0 -360
  461. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/rear_paw.py +0 -172
  462. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/simple_tentacle.py +0 -169
  463. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/spline_tentacle.py +0 -1486
  464. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/super_finger.py +0 -699
  465. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/super_limb.py +0 -46
  466. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/limbs/super_palm.py +0 -426
  467. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/anchor.py +0 -142
  468. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/basic_chain.py +0 -565
  469. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/glue.py +0 -325
  470. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/skin_nodes.py +0 -604
  471. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/skin_parents.py +0 -505
  472. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/skin_rigs.py +0 -250
  473. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/stretchy_chain.py +0 -422
  474. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/skin/transform/basic.py +0 -141
  475. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/spines/__init__.py +0 -0
  476. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/spines/basic_spine.py +0 -387
  477. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/spines/basic_tail.py +0 -242
  478. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/spines/spine_rigs.py +0 -295
  479. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/spines/super_head.py +0 -424
  480. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/spines/super_spine.py +0 -150
  481. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/utils.py +0 -175
  482. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rigs/widgets.py +0 -483
  483. package/staging_area/Blender/5.0/scripts/addons_core/rigify/rot_mode.py +0 -311
  484. package/staging_area/Blender/5.0/scripts/addons_core/rigify/ui.py +0 -1834
  485. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/__init__.py +0 -40
  486. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/action_layers.py +0 -454
  487. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/animation.py +0 -1024
  488. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/bones.py +0 -742
  489. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/collections.py +0 -83
  490. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/components.py +0 -102
  491. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/errors.py +0 -28
  492. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/layers.py +0 -396
  493. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/mechanism.py +0 -669
  494. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/metaclass.py +0 -170
  495. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/misc.py +0 -533
  496. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/naming.py +0 -366
  497. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/node_merger.py +0 -345
  498. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/objects.py +0 -206
  499. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/rig.py +0 -747
  500. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/switch_parent.py +0 -533
  501. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/widgets.py +0 -531
  502. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/widgets_basic.py +0 -305
  503. package/staging_area/Blender/5.0/scripts/addons_core/rigify/utils/widgets_special.py +0 -226
  504. package/staging_area/Blender/5.0/scripts/addons_core/ui_translate/__init__.py +0 -60
  505. package/staging_area/Blender/5.0/scripts/addons_core/ui_translate/settings.py +0 -194
  506. package/staging_area/Blender/5.0/scripts/addons_core/ui_translate/update_addon.py +0 -378
  507. package/staging_area/Blender/5.0/scripts/addons_core/ui_translate/update_repo.py +0 -248
  508. package/staging_area/Blender/5.0/scripts/addons_core/ui_translate/update_ui.py +0 -267
  509. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/__init__.py +0 -55
  510. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/action_map.py +0 -177
  511. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/action_map_io.py +0 -346
  512. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/configs/default.py +0 -434
  513. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/defaults.py +0 -1587
  514. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/gui.py +0 -295
  515. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/operators.py +0 -540
  516. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/preferences.py +0 -67
  517. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/properties.py +0 -228
  518. package/staging_area/Blender/5.0/scripts/addons_core/viewport_vr_preview/versioning.py +0 -38
  519. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/__init__.py +0 -14
  520. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/chainingiterators.py +0 -644
  521. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/functions.py +0 -313
  522. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/predicates.py +0 -670
  523. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/shaders.py +0 -1248
  524. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/types.py +0 -159
  525. package/staging_area/Blender/5.0/scripts/freestyle/modules/freestyle/utils.py +0 -541
  526. package/staging_area/Blender/5.0/scripts/freestyle/modules/parameter_editor.py +0 -1589
  527. package/staging_area/Blender/5.0/scripts/freestyle/styles/anisotropic_diffusion.py +0 -41
  528. package/staging_area/Blender/5.0/scripts/freestyle/styles/apriori_and_causal_density.py +0 -34
  529. package/staging_area/Blender/5.0/scripts/freestyle/styles/apriori_density.py +0 -33
  530. package/staging_area/Blender/5.0/scripts/freestyle/styles/backbone_stretcher.py +0 -28
  531. package/staging_area/Blender/5.0/scripts/freestyle/styles/blueprint_circles.py +0 -39
  532. package/staging_area/Blender/5.0/scripts/freestyle/styles/blueprint_ellipses.py +0 -39
  533. package/staging_area/Blender/5.0/scripts/freestyle/styles/blueprint_squares.py +0 -40
  534. package/staging_area/Blender/5.0/scripts/freestyle/styles/cartoon.py +0 -32
  535. package/staging_area/Blender/5.0/scripts/freestyle/styles/contour.py +0 -33
  536. package/staging_area/Blender/5.0/scripts/freestyle/styles/curvature2d.py +0 -29
  537. package/staging_area/Blender/5.0/scripts/freestyle/styles/external_contour.py +0 -33
  538. package/staging_area/Blender/5.0/scripts/freestyle/styles/external_contour_sketchy.py +0 -39
  539. package/staging_area/Blender/5.0/scripts/freestyle/styles/external_contour_smooth.py +0 -37
  540. package/staging_area/Blender/5.0/scripts/freestyle/styles/haloing.py +0 -43
  541. package/staging_area/Blender/5.0/scripts/freestyle/styles/ignore_small_occlusions.py +0 -30
  542. package/staging_area/Blender/5.0/scripts/freestyle/styles/invisible_lines.py +0 -32
  543. package/staging_area/Blender/5.0/scripts/freestyle/styles/japanese_bigbrush.py +0 -53
  544. package/staging_area/Blender/5.0/scripts/freestyle/styles/long_anisotropically_dense.py +0 -67
  545. package/staging_area/Blender/5.0/scripts/freestyle/styles/multiple_parameterization.py +0 -41
  546. package/staging_area/Blender/5.0/scripts/freestyle/styles/nature.py +0 -32
  547. package/staging_area/Blender/5.0/scripts/freestyle/styles/near_lines.py +0 -32
  548. package/staging_area/Blender/5.0/scripts/freestyle/styles/occluded_by_specific_object.py +0 -36
  549. package/staging_area/Blender/5.0/scripts/freestyle/styles/polygonalize.py +0 -32
  550. package/staging_area/Blender/5.0/scripts/freestyle/styles/qi0.py +0 -31
  551. package/staging_area/Blender/5.0/scripts/freestyle/styles/qi0_not_external_contour.py +0 -38
  552. package/staging_area/Blender/5.0/scripts/freestyle/styles/qi1.py +0 -32
  553. package/staging_area/Blender/5.0/scripts/freestyle/styles/qi2.py +0 -32
  554. package/staging_area/Blender/5.0/scripts/freestyle/styles/sequentialsplit_sketchy.py +0 -39
  555. package/staging_area/Blender/5.0/scripts/freestyle/styles/sketchy_multiple_parameterization.py +0 -37
  556. package/staging_area/Blender/5.0/scripts/freestyle/styles/sketchy_topology_broken.py +0 -39
  557. package/staging_area/Blender/5.0/scripts/freestyle/styles/sketchy_topology_preserved.py +0 -36
  558. package/staging_area/Blender/5.0/scripts/freestyle/styles/split_at_highest_2d_curvatures.py +0 -34
  559. package/staging_area/Blender/5.0/scripts/freestyle/styles/split_at_tvertices.py +0 -33
  560. package/staging_area/Blender/5.0/scripts/freestyle/styles/suggestive.py +0 -33
  561. package/staging_area/Blender/5.0/scripts/freestyle/styles/thickness_fof_depth_discontinuity.py +0 -32
  562. package/staging_area/Blender/5.0/scripts/freestyle/styles/tipremover.py +0 -32
  563. package/staging_area/Blender/5.0/scripts/freestyle/styles/tvertex_remover.py +0 -32
  564. package/staging_area/Blender/5.0/scripts/freestyle/styles/uniformpruning_zsort.py +0 -31
  565. package/staging_area/Blender/5.0/scripts/modules/__pycache__/_bpy_restrict_state.cpython-311.pyc +0 -0
  566. package/staging_area/Blender/5.0/scripts/modules/__pycache__/_bpy_types.cpython-311.pyc +0 -0
  567. package/staging_area/Blender/5.0/scripts/modules/__pycache__/_console_python.cpython-311.pyc +0 -0
  568. package/staging_area/Blender/5.0/scripts/modules/__pycache__/_keyingsets_utils.cpython-311.pyc +0 -0
  569. package/staging_area/Blender/5.0/scripts/modules/__pycache__/_rna_xml.cpython-311.pyc +0 -0
  570. package/staging_area/Blender/5.0/scripts/modules/__pycache__/addon_utils.cpython-311.pyc +0 -0
  571. package/staging_area/Blender/5.0/scripts/modules/__pycache__/bl_app_template_utils.cpython-311.pyc +0 -0
  572. package/staging_area/Blender/5.0/scripts/modules/__pycache__/nodeitems_utils.cpython-311.pyc +0 -0
  573. package/staging_area/Blender/5.0/scripts/modules/__pycache__/rna_keymap_ui.cpython-311.pyc +0 -0
  574. package/staging_area/Blender/5.0/scripts/modules/__pycache__/rna_prop_ui.cpython-311.pyc +0 -0
  575. package/staging_area/Blender/5.0/scripts/modules/_animsys_refactor.py +0 -230
  576. package/staging_area/Blender/5.0/scripts/modules/_bl_console_utils/__init__.py +0 -7
  577. package/staging_area/Blender/5.0/scripts/modules/_bl_console_utils/autocomplete/__init__.py +0 -7
  578. package/staging_area/Blender/5.0/scripts/modules/_bl_console_utils/autocomplete/complete_calltip.py +0 -174
  579. package/staging_area/Blender/5.0/scripts/modules/_bl_console_utils/autocomplete/complete_import.py +0 -180
  580. package/staging_area/Blender/5.0/scripts/modules/_bl_console_utils/autocomplete/complete_namespace.py +0 -192
  581. package/staging_area/Blender/5.0/scripts/modules/_bl_console_utils/autocomplete/intellisense.py +0 -138
  582. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/__init__.py +0 -5
  583. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/bl_extract_messages.py +0 -1363
  584. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/merge_po.py +0 -132
  585. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/settings.py +0 -824
  586. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/settings_user.py +0 -7
  587. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/utils.py +0 -1709
  588. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/utils_cli.py +0 -144
  589. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/utils_languages_menu.py +0 -68
  590. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/utils_rtl.py +0 -179
  591. package/staging_area/Blender/5.0/scripts/modules/_bl_i18n_utils/utils_spell_check.py +0 -955
  592. package/staging_area/Blender/5.0/scripts/modules/_bl_previews_utils/bl_previews_render.py +0 -537
  593. package/staging_area/Blender/5.0/scripts/modules/_bl_rna_utils/__init__.py +0 -0
  594. package/staging_area/Blender/5.0/scripts/modules/_bl_rna_utils/__pycache__/__init__.cpython-311.pyc +0 -0
  595. package/staging_area/Blender/5.0/scripts/modules/_bl_rna_utils/__pycache__/data_path.cpython-311.pyc +0 -0
  596. package/staging_area/Blender/5.0/scripts/modules/_bl_rna_utils/data_path.py +0 -76
  597. package/staging_area/Blender/5.0/scripts/modules/_bl_text_utils/__init__.py +0 -0
  598. package/staging_area/Blender/5.0/scripts/modules/_bl_text_utils/external_editor.py +0 -54
  599. package/staging_area/Blender/5.0/scripts/modules/_bl_ui_utils/__init__.py +0 -0
  600. package/staging_area/Blender/5.0/scripts/modules/_bl_ui_utils/__pycache__/__init__.cpython-311.pyc +0 -0
  601. package/staging_area/Blender/5.0/scripts/modules/_bl_ui_utils/__pycache__/layout.cpython-311.pyc +0 -0
  602. package/staging_area/Blender/5.0/scripts/modules/_bl_ui_utils/layout.py +0 -21
  603. package/staging_area/Blender/5.0/scripts/modules/_blendfile_header.py +0 -234
  604. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/__init__.py +0 -3
  605. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/__pycache__/__init__.cpython-311.pyc +0 -0
  606. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/addons/__init__.py +0 -3
  607. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/addons/cli.py +0 -42
  608. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/assets/__init__.py +0 -3
  609. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/assets/remote_library_listing/__init__.py +0 -3
  610. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/assets/remote_library_listing/blender_asset_library_openapi.py +0 -98
  611. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/assets/remote_library_listing/blender_asset_library_openapi.yaml +0 -83
  612. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/__init__.py +0 -3
  613. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/__pycache__/__init__.cpython-311.pyc +0 -0
  614. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/__pycache__/junction_module.cpython-311.pyc +0 -0
  615. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/__pycache__/wheel_manager.cpython-311.pyc +0 -0
  616. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/junction_module.py +0 -165
  617. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/permissions.py +0 -16
  618. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/stale_file_manager.py +0 -417
  619. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/tags.py +0 -54
  620. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/extensions/wheel_manager.py +0 -686
  621. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/freedesktop.py +0 -598
  622. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/grease_pencil/__init__.py +0 -3
  623. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/grease_pencil/stroke.py +0 -402
  624. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/http/__init__.py +0 -3
  625. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/http/downloader.py +0 -1348
  626. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/system_info/text_generate_runtime.py +0 -256
  627. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/system_info/url_prefill_runtime.py +0 -60
  628. package/staging_area/Blender/5.0/scripts/modules/_bpy_internal/system_info/url_prefill_startup.py +0 -107
  629. package/staging_area/Blender/5.0/scripts/modules/_bpy_restrict_state.py +0 -50
  630. package/staging_area/Blender/5.0/scripts/modules/_bpy_types.py +0 -1563
  631. package/staging_area/Blender/5.0/scripts/modules/_console_python.py +0 -368
  632. package/staging_area/Blender/5.0/scripts/modules/_console_shell.py +0 -73
  633. package/staging_area/Blender/5.0/scripts/modules/_graphviz_export.py +0 -194
  634. package/staging_area/Blender/5.0/scripts/modules/_keyingsets_utils.py +0 -355
  635. package/staging_area/Blender/5.0/scripts/modules/_rna_info.py +0 -984
  636. package/staging_area/Blender/5.0/scripts/modules/_rna_manual_reference.py +0 -4446
  637. package/staging_area/Blender/5.0/scripts/modules/_rna_xml.py +0 -422
  638. package/staging_area/Blender/5.0/scripts/modules/addon_utils.py +0 -1992
  639. package/staging_area/Blender/5.0/scripts/modules/bl_app_override/__init__.py +0 -211
  640. package/staging_area/Blender/5.0/scripts/modules/bl_app_override/helpers.py +0 -153
  641. package/staging_area/Blender/5.0/scripts/modules/bl_app_template_utils.py +0 -177
  642. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/__init__.py +0 -9
  643. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/__pycache__/__init__.cpython-311.pyc +0 -0
  644. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/__pycache__/io.cpython-311.pyc +0 -0
  645. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/__pycache__/keymap_from_toolbar.cpython-311.pyc +0 -0
  646. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/__pycache__/keymap_hierarchy.cpython-311.pyc +0 -0
  647. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/io.py +0 -308
  648. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py +0 -394
  649. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/keymap_hierarchy.py +0 -247
  650. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/platform_helpers.py +0 -55
  651. package/staging_area/Blender/5.0/scripts/modules/bl_keymap_utils/versioning.py +0 -328
  652. package/staging_area/Blender/5.0/scripts/modules/blend_render_info.py +0 -123
  653. package/staging_area/Blender/5.0/scripts/modules/bpy/__init__.py +0 -75
  654. package/staging_area/Blender/5.0/scripts/modules/bpy/__pycache__/__init__.cpython-311.pyc +0 -0
  655. package/staging_area/Blender/5.0/scripts/modules/bpy/__pycache__/ops.cpython-311.pyc +0 -0
  656. package/staging_area/Blender/5.0/scripts/modules/bpy/__pycache__/path.cpython-311.pyc +0 -0
  657. package/staging_area/Blender/5.0/scripts/modules/bpy/ops.py +0 -184
  658. package/staging_area/Blender/5.0/scripts/modules/bpy/path.py +0 -459
  659. package/staging_area/Blender/5.0/scripts/modules/bpy/utils/__init__.py +0 -1382
  660. package/staging_area/Blender/5.0/scripts/modules/bpy/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  661. package/staging_area/Blender/5.0/scripts/modules/bpy/utils/__pycache__/previews.cpython-311.pyc +0 -0
  662. package/staging_area/Blender/5.0/scripts/modules/bpy/utils/previews.py +0 -136
  663. package/staging_area/Blender/5.0/scripts/modules/bpy/utils/toolsystem.py +0 -11
  664. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/__init__.py +0 -20
  665. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/__pycache__/__init__.cpython-311.pyc +0 -0
  666. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/__pycache__/asset_utils.cpython-311.pyc +0 -0
  667. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/__pycache__/io_utils.cpython-311.pyc +0 -0
  668. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/__pycache__/node_utils.cpython-311.pyc +0 -0
  669. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/__pycache__/object_utils.cpython-311.pyc +0 -0
  670. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/anim_utils.py +0 -1038
  671. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/asset_utils.py +0 -50
  672. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/bmesh_utils.py +0 -56
  673. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/id_map_utils.py +0 -53
  674. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/image_utils.py +0 -194
  675. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/io_utils.py +0 -620
  676. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/keyconfig_utils.py +0 -141
  677. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/mesh_utils.py +0 -464
  678. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/node_shader_utils.py +0 -829
  679. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/node_utils.py +0 -88
  680. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/object_utils.py +0 -289
  681. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/view3d_utils.py +0 -181
  682. package/staging_area/Blender/5.0/scripts/modules/bpy_extras/wm_utils/progress_report.py +0 -160
  683. package/staging_area/Blender/5.0/scripts/modules/gpu_extras/__init__.py +0 -8
  684. package/staging_area/Blender/5.0/scripts/modules/gpu_extras/__pycache__/__init__.cpython-311.pyc +0 -0
  685. package/staging_area/Blender/5.0/scripts/modules/gpu_extras/__pycache__/presets.cpython-311.pyc +0 -0
  686. package/staging_area/Blender/5.0/scripts/modules/gpu_extras/batch.py +0 -80
  687. package/staging_area/Blender/5.0/scripts/modules/gpu_extras/presets.py +0 -102
  688. package/staging_area/Blender/5.0/scripts/modules/nodeitems_utils.py +0 -178
  689. package/staging_area/Blender/5.0/scripts/modules/rna_keymap_ui.py +0 -505
  690. package/staging_area/Blender/5.0/scripts/modules/rna_prop_ui.py +0 -269
  691. package/staging_area/Blender/5.0/scripts/presets/camera/1_inch.py +0 -4
  692. package/staging_area/Blender/5.0/scripts/presets/camera/1_slash_1.8_inch.py +0 -4
  693. package/staging_area/Blender/5.0/scripts/presets/camera/1_slash_2.3_inch.py +0 -4
  694. package/staging_area/Blender/5.0/scripts/presets/camera/1_slash_2.5_inch.py +0 -4
  695. package/staging_area/Blender/5.0/scripts/presets/camera/1_slash_2.7_inch.py +0 -4
  696. package/staging_area/Blender/5.0/scripts/presets/camera/1_slash_3.2_inch.py +0 -4
  697. package/staging_area/Blender/5.0/scripts/presets/camera/2_slash_3_inch.py +0 -4
  698. package/staging_area/Blender/5.0/scripts/presets/camera/APS-C.py +0 -4
  699. package/staging_area/Blender/5.0/scripts/presets/camera/APS-C_(Canon).py +0 -4
  700. package/staging_area/Blender/5.0/scripts/presets/camera/APS-H_(Canon).py +0 -4
  701. package/staging_area/Blender/5.0/scripts/presets/camera/Analog_16mm.py +0 -4
  702. package/staging_area/Blender/5.0/scripts/presets/camera/Analog_35mm.py +0 -4
  703. package/staging_area/Blender/5.0/scripts/presets/camera/Analog_65mm.py +0 -4
  704. package/staging_area/Blender/5.0/scripts/presets/camera/Analog_IMAX.py +0 -4
  705. package/staging_area/Blender/5.0/scripts/presets/camera/Analog_Super_16.py +0 -4
  706. package/staging_area/Blender/5.0/scripts/presets/camera/Analog_Super_35.py +0 -4
  707. package/staging_area/Blender/5.0/scripts/presets/camera/Arri_Alexa_65.py +0 -4
  708. package/staging_area/Blender/5.0/scripts/presets/camera/Arri_Alexa_LF.py +0 -4
  709. package/staging_area/Blender/5.0/scripts/presets/camera/Arri_Alexa_Mini_&_SXT.py +0 -4
  710. package/staging_area/Blender/5.0/scripts/presets/camera/Blackmagic_Pocket_&_Studio.py +0 -4
  711. package/staging_area/Blender/5.0/scripts/presets/camera/Blackmagic_Pocket_4K.py +0 -4
  712. package/staging_area/Blender/5.0/scripts/presets/camera/Blackmagic_Pocket_6k.py +0 -4
  713. package/staging_area/Blender/5.0/scripts/presets/camera/Blackmagic_URSA_4.6K.py +0 -4
  714. package/staging_area/Blender/5.0/scripts/presets/camera/Foveon_(Sigma).py +0 -4
  715. package/staging_area/Blender/5.0/scripts/presets/camera/Fullframe.py +0 -4
  716. package/staging_area/Blender/5.0/scripts/presets/camera/MFT.py +0 -4
  717. package/staging_area/Blender/5.0/scripts/presets/camera/Medium-format_(Hasselblad).py +0 -4
  718. package/staging_area/Blender/5.0/scripts/presets/camera/RED_Dragon_5K.py +0 -4
  719. package/staging_area/Blender/5.0/scripts/presets/camera/RED_Dragon_6K.py +0 -4
  720. package/staging_area/Blender/5.0/scripts/presets/camera/RED_Helium_8K.py +0 -4
  721. package/staging_area/Blender/5.0/scripts/presets/camera/RED_Monstro_8K.py +0 -4
  722. package/staging_area/Blender/5.0/scripts/presets/cloth/Cotton.py +0 -25
  723. package/staging_area/Blender/5.0/scripts/presets/cloth/Denim.py +0 -25
  724. package/staging_area/Blender/5.0/scripts/presets/cloth/Leather.py +0 -25
  725. package/staging_area/Blender/5.0/scripts/presets/cloth/Rubber.py +0 -25
  726. package/staging_area/Blender/5.0/scripts/presets/cloth/Silk.py +0 -25
  727. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_A.py +0 -5
  728. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_B.py +0 -5
  729. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_C.py +0 -5
  730. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_D50.py +0 -5
  731. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_D55.py +0 -5
  732. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_D65.py +0 -5
  733. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_D75.py +0 -5
  734. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_D93.py +0 -5
  735. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_E.py +0 -5
  736. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F1.py +0 -5
  737. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F10.py +0 -5
  738. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F11.py +0 -5
  739. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F12.py +0 -5
  740. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F2.py +0 -5
  741. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F3.py +0 -5
  742. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F4.py +0 -5
  743. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F5.py +0 -5
  744. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F6.py +0 -5
  745. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F7.py +0 -5
  746. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F8.py +0 -5
  747. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_F9.py +0 -5
  748. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-B1.py +0 -5
  749. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-B2.py +0 -5
  750. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-B3.py +0 -5
  751. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-B4.py +0 -5
  752. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-B5.py +0 -5
  753. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-BH1.py +0 -5
  754. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-RGB1.py +0 -5
  755. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-V1.py +0 -5
  756. package/staging_area/Blender/5.0/scripts/presets/color_management/white_balance/Illuminant_LED-V2.py +0 -5
  757. package/staging_area/Blender/5.0/scripts/presets/cycles/integrator/Default.py +0 -14
  758. package/staging_area/Blender/5.0/scripts/presets/cycles/integrator/Direct_Light.py +0 -14
  759. package/staging_area/Blender/5.0/scripts/presets/cycles/integrator/Fast_Global_Illumination.py +0 -14
  760. package/staging_area/Blender/5.0/scripts/presets/cycles/integrator/Full_Global_Illumination.py +0 -14
  761. package/staging_area/Blender/5.0/scripts/presets/cycles/integrator/Limited_Global_Illumination.py +0 -14
  762. package/staging_area/Blender/5.0/scripts/presets/cycles/performance/Default.py +0 -11
  763. package/staging_area/Blender/5.0/scripts/presets/cycles/performance/Faster_Render.py +0 -11
  764. package/staging_area/Blender/5.0/scripts/presets/cycles/performance/Lower_Memory.py +0 -11
  765. package/staging_area/Blender/5.0/scripts/presets/cycles/sampling/Final.py +0 -12
  766. package/staging_area/Blender/5.0/scripts/presets/cycles/sampling/Preview.py +0 -12
  767. package/staging_area/Blender/5.0/scripts/presets/cycles/viewport_sampling/Final.py +0 -11
  768. package/staging_area/Blender/5.0/scripts/presets/cycles/viewport_sampling/Preview.py +0 -11
  769. package/staging_area/Blender/5.0/scripts/presets/eevee/raytracing/Default.py +0 -22
  770. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/DVD_(note_colon__this_changes_render_resolution).py +0 -24
  771. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/H264_in_MP4.py +0 -18
  772. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/H264_in_Matroska.py +0 -17
  773. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/H264_in_Matroska_for_scrubbing.py +0 -14
  774. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/Ogg_Theora.py +0 -18
  775. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/WebM_(VP9+Opus).py +0 -9
  776. package/staging_area/Blender/5.0/scripts/presets/ffmpeg/Xvid.py +0 -18
  777. package/staging_area/Blender/5.0/scripts/presets/fluid/Honey.py +0 -3
  778. package/staging_area/Blender/5.0/scripts/presets/fluid/Oil.py +0 -3
  779. package/staging_area/Blender/5.0/scripts/presets/fluid/Water.py +0 -3
  780. package/staging_area/Blender/5.0/scripts/presets/framerate/12.py +0 -3
  781. package/staging_area/Blender/5.0/scripts/presets/framerate/120.py +0 -3
  782. package/staging_area/Blender/5.0/scripts/presets/framerate/23.98.py +0 -3
  783. package/staging_area/Blender/5.0/scripts/presets/framerate/24.py +0 -3
  784. package/staging_area/Blender/5.0/scripts/presets/framerate/240.py +0 -3
  785. package/staging_area/Blender/5.0/scripts/presets/framerate/25.py +0 -3
  786. package/staging_area/Blender/5.0/scripts/presets/framerate/29.97.py +0 -3
  787. package/staging_area/Blender/5.0/scripts/presets/framerate/30.py +0 -3
  788. package/staging_area/Blender/5.0/scripts/presets/framerate/50.py +0 -3
  789. package/staging_area/Blender/5.0/scripts/presets/framerate/59.94.py +0 -3
  790. package/staging_area/Blender/5.0/scripts/presets/framerate/6.py +0 -3
  791. package/staging_area/Blender/5.0/scripts/presets/framerate/60.py +0 -3
  792. package/staging_area/Blender/5.0/scripts/presets/framerate/8.py +0 -3
  793. package/staging_area/Blender/5.0/scripts/presets/framerate/Custom.py +0 -1
  794. package/staging_area/Blender/5.0/scripts/presets/framerate/__pycache__/30.cpython-311.pyc +0 -0
  795. package/staging_area/Blender/5.0/scripts/presets/gpencil_material/Fill_Only.py +0 -25
  796. package/staging_area/Blender/5.0/scripts/presets/gpencil_material/Stroke_Only.py +0 -25
  797. package/staging_area/Blender/5.0/scripts/presets/gpencil_material/Stroke_and_Fill.py +0 -25
  798. package/staging_area/Blender/5.0/scripts/presets/hair_dynamics/Default.py +0 -17
  799. package/staging_area/Blender/5.0/scripts/presets/interface_theme/Blender_Dark.xml +0 -6
  800. package/staging_area/Blender/5.0/scripts/presets/interface_theme/Blender_Light.xml +0 -1246
  801. package/staging_area/Blender/5.0/scripts/presets/keyconfig/Blender.py +0 -384
  802. package/staging_area/Blender/5.0/scripts/presets/keyconfig/Blender_27x.py +0 -106
  803. package/staging_area/Blender/5.0/scripts/presets/keyconfig/Industry_Compatible.py +0 -41
  804. package/staging_area/Blender/5.0/scripts/presets/keyconfig/__pycache__/Blender.cpython-311.pyc +0 -0
  805. package/staging_area/Blender/5.0/scripts/presets/keyconfig/keymap_data/__pycache__/blender_default.cpython-311.pyc +0 -0
  806. package/staging_area/Blender/5.0/scripts/presets/keyconfig/keymap_data/blender_default.py +0 -9083
  807. package/staging_area/Blender/5.0/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +0 -3896
  808. package/staging_area/Blender/5.0/scripts/presets/pixel_density/Custom.py +0 -1
  809. package/staging_area/Blender/5.0/scripts/presets/pixel_density/Pixels_slash_Centimeter.py +0 -2
  810. package/staging_area/Blender/5.0/scripts/presets/pixel_density/Pixels_slash_Inch.py +0 -2
  811. package/staging_area/Blender/5.0/scripts/presets/pixel_density/Pixels_slash_Meter.py +0 -2
  812. package/staging_area/Blender/5.0/scripts/presets/render/4K_DCI_2160p.py +0 -8
  813. package/staging_area/Blender/5.0/scripts/presets/render/4K_UHDTV_2160p.py +0 -8
  814. package/staging_area/Blender/5.0/scripts/presets/render/4K_UW_1600p.py +0 -8
  815. package/staging_area/Blender/5.0/scripts/presets/render/DVCPRO_HD_1080p.py +0 -8
  816. package/staging_area/Blender/5.0/scripts/presets/render/DVCPRO_HD_720p.py +0 -8
  817. package/staging_area/Blender/5.0/scripts/presets/render/HDTV_1080p.py +0 -8
  818. package/staging_area/Blender/5.0/scripts/presets/render/HDTV_720p.py +0 -8
  819. package/staging_area/Blender/5.0/scripts/presets/render/HDV_1080p.py +0 -8
  820. package/staging_area/Blender/5.0/scripts/presets/render/HDV_NTSC_1080p.py +0 -8
  821. package/staging_area/Blender/5.0/scripts/presets/render/HDV_PAL_1080p.py +0 -8
  822. package/staging_area/Blender/5.0/scripts/presets/render/TV_NTSC_16_colon_9.py +0 -8
  823. package/staging_area/Blender/5.0/scripts/presets/render/TV_NTSC_4_colon_3.py +0 -8
  824. package/staging_area/Blender/5.0/scripts/presets/render/TV_PAL_16_colon_9.py +0 -8
  825. package/staging_area/Blender/5.0/scripts/presets/render/TV_PAL_4_colon_3.py +0 -8
  826. package/staging_area/Blender/5.0/scripts/presets/safe_areas/14_colon_9_in_16_colon_9.py +0 -7
  827. package/staging_area/Blender/5.0/scripts/presets/safe_areas/16_colon_9.py +0 -7
  828. package/staging_area/Blender/5.0/scripts/presets/safe_areas/4_colon_3_in_16_colon_9.py +0 -7
  829. package/staging_area/Blender/5.0/scripts/presets/text_editor/Internal.py +0 -6
  830. package/staging_area/Blender/5.0/scripts/presets/text_editor/Visual_Studio_Code.py +0 -12
  831. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/1_inch.py +0 -6
  832. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/1_slash_1.8_inch.py +0 -6
  833. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/1_slash_2.3_inch.py +0 -6
  834. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/1_slash_2.5_inch.py +0 -6
  835. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/1_slash_2.7_inch.py +0 -6
  836. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/1_slash_3.2_inch.py +0 -6
  837. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/2_slash_3_inch.py +0 -6
  838. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/APS-C.py +0 -6
  839. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/APS-C_(Canon).py +0 -6
  840. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/APS-H_(Canon).py +0 -6
  841. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Analog_16mm.py +0 -6
  842. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Analog_35mm.py +0 -6
  843. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Analog_65mm.py +0 -6
  844. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Analog_IMAX.py +0 -6
  845. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Analog_Super_16.py +0 -6
  846. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Analog_Super_35.py +0 -6
  847. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Arri_Alexa_65.py +0 -6
  848. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Arri_Alexa_LF.py +0 -6
  849. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py +0 -6
  850. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py +0 -6
  851. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py +0 -6
  852. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py +0 -6
  853. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py +0 -6
  854. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Foveon_(Sigma).py +0 -6
  855. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Fullframe.py +0 -6
  856. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/MFT.py +0 -6
  857. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py +0 -6
  858. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/RED_Dragon_5K.py +0 -6
  859. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/RED_Dragon_6K.py +0 -6
  860. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/RED_Helium_8K.py +0 -6
  861. package/staging_area/Blender/5.0/scripts/presets/tracking_camera/RED_Monstro_8K.py +0 -6
  862. package/staging_area/Blender/5.0/scripts/presets/tracking_settings/Blurry_Footage.py +0 -18
  863. package/staging_area/Blender/5.0/scripts/presets/tracking_settings/Default.py +0 -18
  864. package/staging_area/Blender/5.0/scripts/presets/tracking_settings/Fast_Motion.py +0 -18
  865. package/staging_area/Blender/5.0/scripts/presets/tracking_settings/Planar.py +0 -18
  866. package/staging_area/Blender/5.0/scripts/presets/tracking_track_color/Default.py +0 -5
  867. package/staging_area/Blender/5.0/scripts/presets/tracking_track_color/Far_Plane.py +0 -5
  868. package/staging_area/Blender/5.0/scripts/presets/tracking_track_color/Near_Plane.py +0 -5
  869. package/staging_area/Blender/5.0/scripts/presets/tracking_track_color/Object.py +0 -5
  870. package/staging_area/Blender/5.0/scripts/startup/__pycache__/keyingsets_builtins.cpython-311.pyc +0 -0
  871. package/staging_area/Blender/5.0/scripts/startup/__pycache__/nodeitems_builtins.cpython-311.pyc +0 -0
  872. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/2D_Animation/__init__.py +0 -56
  873. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/2D_Animation/__pycache__/__init__.cpython-311.pyc +0 -0
  874. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/2D_Animation/startup.blend +0 -0
  875. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Sculpting/__init__.py +0 -30
  876. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Sculpting/startup.blend +0 -0
  877. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Storyboarding/__init__.py +0 -51
  878. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Storyboarding/__pycache__/__init__.cpython-311.pyc +0 -0
  879. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Storyboarding/startup.blend +0 -0
  880. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/VFX/startup.blend +0 -0
  881. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Video_Editing/__init__.py +0 -51
  882. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Video_Editing/__pycache__/__init__.cpython-311.pyc +0 -0
  883. package/staging_area/Blender/5.0/scripts/startup/bl_app_templates_system/Video_Editing/startup.blend +0 -0
  884. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__init__.py +0 -88
  885. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/__init__.cpython-311.pyc +0 -0
  886. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/add_mesh_torus.cpython-311.pyc +0 -0
  887. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/anim.cpython-311.pyc +0 -0
  888. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/assets.cpython-311.pyc +0 -0
  889. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/bone_selection_sets.cpython-311.pyc +0 -0
  890. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/clip.cpython-311.pyc +0 -0
  891. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/connect_to_output.cpython-311.pyc +0 -0
  892. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/console.cpython-311.pyc +0 -0
  893. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/constraint.cpython-311.pyc +0 -0
  894. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/copy_global_transform.cpython-311.pyc +0 -0
  895. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/file.cpython-311.pyc +0 -0
  896. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/freestyle.cpython-311.pyc +0 -0
  897. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/geometry_nodes.cpython-311.pyc +0 -0
  898. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/grease_pencil.cpython-311.pyc +0 -0
  899. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/image.cpython-311.pyc +0 -0
  900. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/image_as_planes.cpython-311.pyc +0 -0
  901. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/mesh.cpython-311.pyc +0 -0
  902. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/node.cpython-311.pyc +0 -0
  903. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/object.cpython-311.pyc +0 -0
  904. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/object_align.cpython-311.pyc +0 -0
  905. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/object_quick_effects.cpython-311.pyc +0 -0
  906. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/object_randomize_transform.cpython-311.pyc +0 -0
  907. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/presets.cpython-311.pyc +0 -0
  908. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/rigidbody.cpython-311.pyc +0 -0
  909. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/screen_play_rendered_anim.cpython-311.pyc +0 -0
  910. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/sequencer.cpython-311.pyc +0 -0
  911. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/spreadsheet.cpython-311.pyc +0 -0
  912. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/userpref.cpython-311.pyc +0 -0
  913. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/uvcalc_follow_active.cpython-311.pyc +0 -0
  914. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/uvcalc_lightmap.cpython-311.pyc +0 -0
  915. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/uvcalc_transform.cpython-311.pyc +0 -0
  916. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/vertexpaint_dirt.cpython-311.pyc +0 -0
  917. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/view3d.cpython-311.pyc +0 -0
  918. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/wm.cpython-311.pyc +0 -0
  919. package/staging_area/Blender/5.0/scripts/startup/bl_operators/__pycache__/world.cpython-311.pyc +0 -0
  920. package/staging_area/Blender/5.0/scripts/startup/bl_operators/add_mesh_torus.py +0 -262
  921. package/staging_area/Blender/5.0/scripts/startup/bl_operators/anim.py +0 -924
  922. package/staging_area/Blender/5.0/scripts/startup/bl_operators/assets.py +0 -157
  923. package/staging_area/Blender/5.0/scripts/startup/bl_operators/bmesh/find_adjacent.py +0 -341
  924. package/staging_area/Blender/5.0/scripts/startup/bl_operators/bone_selection_sets.py +0 -439
  925. package/staging_area/Blender/5.0/scripts/startup/bl_operators/clip.py +0 -1044
  926. package/staging_area/Blender/5.0/scripts/startup/bl_operators/connect_to_output.py +0 -360
  927. package/staging_area/Blender/5.0/scripts/startup/bl_operators/console.py +0 -156
  928. package/staging_area/Blender/5.0/scripts/startup/bl_operators/constraint.py +0 -121
  929. package/staging_area/Blender/5.0/scripts/startup/bl_operators/copy_global_transform.py +0 -823
  930. package/staging_area/Blender/5.0/scripts/startup/bl_operators/file.py +0 -308
  931. package/staging_area/Blender/5.0/scripts/startup/bl_operators/freestyle.py +0 -226
  932. package/staging_area/Blender/5.0/scripts/startup/bl_operators/geometry_nodes.py +0 -394
  933. package/staging_area/Blender/5.0/scripts/startup/bl_operators/grease_pencil.py +0 -63
  934. package/staging_area/Blender/5.0/scripts/startup/bl_operators/image.py +0 -322
  935. package/staging_area/Blender/5.0/scripts/startup/bl_operators/image_as_planes.py +0 -1216
  936. package/staging_area/Blender/5.0/scripts/startup/bl_operators/mesh.py +0 -61
  937. package/staging_area/Blender/5.0/scripts/startup/bl_operators/node.py +0 -1340
  938. package/staging_area/Blender/5.0/scripts/startup/bl_operators/node_editor/__pycache__/node_functions.cpython-311.pyc +0 -0
  939. package/staging_area/Blender/5.0/scripts/startup/bl_operators/node_editor/node_functions.py +0 -97
  940. package/staging_area/Blender/5.0/scripts/startup/bl_operators/object.py +0 -1014
  941. package/staging_area/Blender/5.0/scripts/startup/bl_operators/object_align.py +0 -407
  942. package/staging_area/Blender/5.0/scripts/startup/bl_operators/object_quick_effects.py +0 -680
  943. package/staging_area/Blender/5.0/scripts/startup/bl_operators/object_randomize_transform.py +0 -181
  944. package/staging_area/Blender/5.0/scripts/startup/bl_operators/presets.py +0 -1057
  945. package/staging_area/Blender/5.0/scripts/startup/bl_operators/rigidbody.py +0 -323
  946. package/staging_area/Blender/5.0/scripts/startup/bl_operators/screen_play_rendered_anim.py +0 -219
  947. package/staging_area/Blender/5.0/scripts/startup/bl_operators/sequencer.py +0 -438
  948. package/staging_area/Blender/5.0/scripts/startup/bl_operators/spreadsheet.py +0 -46
  949. package/staging_area/Blender/5.0/scripts/startup/bl_operators/userpref.py +0 -1324
  950. package/staging_area/Blender/5.0/scripts/startup/bl_operators/uvcalc_follow_active.py +0 -313
  951. package/staging_area/Blender/5.0/scripts/startup/bl_operators/uvcalc_lightmap.py +0 -688
  952. package/staging_area/Blender/5.0/scripts/startup/bl_operators/uvcalc_transform.py +0 -551
  953. package/staging_area/Blender/5.0/scripts/startup/bl_operators/vertexpaint_dirt.py +0 -198
  954. package/staging_area/Blender/5.0/scripts/startup/bl_operators/view3d.py +0 -316
  955. package/staging_area/Blender/5.0/scripts/startup/bl_operators/wm.py +0 -3722
  956. package/staging_area/Blender/5.0/scripts/startup/bl_operators/world.py +0 -168
  957. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__init__.py +0 -299
  958. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/__init__.cpython-311.pyc +0 -0
  959. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/anim.cpython-311.pyc +0 -0
  960. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/asset_shelf.cpython-311.pyc +0 -0
  961. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/generic_ui_list.cpython-311.pyc +0 -0
  962. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/node_add_menu.cpython-311.pyc +0 -0
  963. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/node_add_menu_compositor.cpython-311.pyc +0 -0
  964. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/node_add_menu_geometry.cpython-311.pyc +0 -0
  965. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/node_add_menu_shader.cpython-311.pyc +0 -0
  966. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/node_add_menu_texture.cpython-311.pyc +0 -0
  967. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_animviz.cpython-311.pyc +0 -0
  968. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_collection.cpython-311.pyc +0 -0
  969. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_constraint.cpython-311.pyc +0 -0
  970. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_armature.cpython-311.pyc +0 -0
  971. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_bone.cpython-311.pyc +0 -0
  972. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_camera.cpython-311.pyc +0 -0
  973. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_curve.cpython-311.pyc +0 -0
  974. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_curves.cpython-311.pyc +0 -0
  975. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_empty.cpython-311.pyc +0 -0
  976. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_grease_pencil.cpython-311.pyc +0 -0
  977. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_lattice.cpython-311.pyc +0 -0
  978. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_light.cpython-311.pyc +0 -0
  979. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_lightprobe.cpython-311.pyc +0 -0
  980. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_mesh.cpython-311.pyc +0 -0
  981. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_metaball.cpython-311.pyc +0 -0
  982. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_modifier.cpython-311.pyc +0 -0
  983. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_pointcloud.cpython-311.pyc +0 -0
  984. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_shaderfx.cpython-311.pyc +0 -0
  985. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_speaker.cpython-311.pyc +0 -0
  986. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_data_volume.cpython-311.pyc +0 -0
  987. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_freestyle.cpython-311.pyc +0 -0
  988. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_grease_pencil_common.cpython-311.pyc +0 -0
  989. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_mask_common.cpython-311.pyc +0 -0
  990. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_material.cpython-311.pyc +0 -0
  991. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_material_gpencil.cpython-311.pyc +0 -0
  992. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_object.cpython-311.pyc +0 -0
  993. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_output.cpython-311.pyc +0 -0
  994. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_paint_common.cpython-311.pyc +0 -0
  995. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_particle.cpython-311.pyc +0 -0
  996. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_cloth.cpython-311.pyc +0 -0
  997. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_common.cpython-311.pyc +0 -0
  998. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_dynamicpaint.cpython-311.pyc +0 -0
  999. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_field.cpython-311.pyc +0 -0
  1000. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_fluid.cpython-311.pyc +0 -0
  1001. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_geometry_nodes.cpython-311.pyc +0 -0
  1002. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_rigidbody.cpython-311.pyc +0 -0
  1003. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_rigidbody_constraint.cpython-311.pyc +0 -0
  1004. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_physics_softbody.cpython-311.pyc +0 -0
  1005. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_render.cpython-311.pyc +0 -0
  1006. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_scene.cpython-311.pyc +0 -0
  1007. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_strip.cpython-311.pyc +0 -0
  1008. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_strip_modifier.cpython-311.pyc +0 -0
  1009. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_texture.cpython-311.pyc +0 -0
  1010. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_view_layer.cpython-311.pyc +0 -0
  1011. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_workspace.cpython-311.pyc +0 -0
  1012. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/properties_world.cpython-311.pyc +0 -0
  1013. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_clip.cpython-311.pyc +0 -0
  1014. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_console.cpython-311.pyc +0 -0
  1015. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_dopesheet.cpython-311.pyc +0 -0
  1016. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_filebrowser.cpython-311.pyc +0 -0
  1017. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_graph.cpython-311.pyc +0 -0
  1018. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_image.cpython-311.pyc +0 -0
  1019. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_info.cpython-311.pyc +0 -0
  1020. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_nla.cpython-311.pyc +0 -0
  1021. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_node.cpython-311.pyc +0 -0
  1022. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_outliner.cpython-311.pyc +0 -0
  1023. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_properties.cpython-311.pyc +0 -0
  1024. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_sequencer.cpython-311.pyc +0 -0
  1025. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_spreadsheet.cpython-311.pyc +0 -0
  1026. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_statusbar.cpython-311.pyc +0 -0
  1027. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_text.cpython-311.pyc +0 -0
  1028. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_time.cpython-311.pyc +0 -0
  1029. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_toolsystem_common.cpython-311.pyc +0 -0
  1030. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_toolsystem_toolbar.cpython-311.pyc +0 -0
  1031. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_topbar.cpython-311.pyc +0 -0
  1032. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_userpref.cpython-311.pyc +0 -0
  1033. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_view3d.cpython-311.pyc +0 -0
  1034. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_view3d_sidebar.cpython-311.pyc +0 -0
  1035. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/space_view3d_toolbar.cpython-311.pyc +0 -0
  1036. package/staging_area/Blender/5.0/scripts/startup/bl_ui/__pycache__/utils.cpython-311.pyc +0 -0
  1037. package/staging_area/Blender/5.0/scripts/startup/bl_ui/anim.py +0 -62
  1038. package/staging_area/Blender/5.0/scripts/startup/bl_ui/asset_shelf.py +0 -41
  1039. package/staging_area/Blender/5.0/scripts/startup/bl_ui/generic_ui_list.py +0 -262
  1040. package/staging_area/Blender/5.0/scripts/startup/bl_ui/node_add_menu.py +0 -505
  1041. package/staging_area/Blender/5.0/scripts/startup/bl_ui/node_add_menu_compositor.py +0 -437
  1042. package/staging_area/Blender/5.0/scripts/startup/bl_ui/node_add_menu_geometry.py +0 -1158
  1043. package/staging_area/Blender/5.0/scripts/startup/bl_ui/node_add_menu_shader.py +0 -511
  1044. package/staging_area/Blender/5.0/scripts/startup/bl_ui/node_add_menu_texture.py +0 -167
  1045. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_animviz.py +0 -123
  1046. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_collection.py +0 -146
  1047. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_constraint.py +0 -1793
  1048. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_armature.py +0 -436
  1049. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_bone.py +0 -625
  1050. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_camera.py +0 -603
  1051. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_curve.py +0 -461
  1052. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_curves.py +0 -219
  1053. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_empty.py +0 -84
  1054. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_grease_pencil.py +0 -536
  1055. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_lattice.py +0 -105
  1056. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_light.py +0 -315
  1057. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_lightprobe.py +0 -413
  1058. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_mesh.py +0 -744
  1059. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_metaball.py +0 -137
  1060. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_modifier.py +0 -323
  1061. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_pointcloud.py +0 -175
  1062. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_shaderfx.py +0 -31
  1063. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_speaker.py +0 -157
  1064. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_data_volume.py +0 -239
  1065. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_freestyle.py +0 -1343
  1066. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_grease_pencil_common.py +0 -607
  1067. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_mask_common.py +0 -461
  1068. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_material.py +0 -460
  1069. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_material_gpencil.py +0 -272
  1070. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_object.py +0 -656
  1071. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_output.py +0 -736
  1072. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_paint_common.py +0 -1904
  1073. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_particle.py +0 -2308
  1074. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_cloth.py +0 -524
  1075. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_common.py +0 -360
  1076. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_dynamicpaint.py +0 -974
  1077. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_field.py +0 -487
  1078. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_fluid.py +0 -1629
  1079. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_geometry_nodes.py +0 -64
  1080. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_rigidbody.py +0 -345
  1081. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py +0 -554
  1082. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_physics_softbody.py +0 -471
  1083. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_render.py +0 -1180
  1084. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_scene.py +0 -495
  1085. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_strip.py +0 -1056
  1086. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_strip_modifier.py +0 -49
  1087. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_texture.py +0 -997
  1088. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_view_layer.py +0 -348
  1089. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_workspace.py +0 -195
  1090. package/staging_area/Blender/5.0/scripts/startup/bl_ui/properties_world.py +0 -282
  1091. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_clip.py +0 -2112
  1092. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_console.py +0 -157
  1093. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_dopesheet.py +0 -1123
  1094. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_filebrowser.py +0 -950
  1095. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_graph.py +0 -615
  1096. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_image.py +0 -1896
  1097. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_info.py +0 -117
  1098. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_nla.py +0 -429
  1099. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_node.py +0 -1247
  1100. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_outliner.py +0 -559
  1101. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_properties.py +0 -205
  1102. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_sequencer.py +0 -2097
  1103. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_spreadsheet.py +0 -83
  1104. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_statusbar.py +0 -41
  1105. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_text.py +0 -479
  1106. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_time.py +0 -364
  1107. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_toolsystem_common.py +0 -1256
  1108. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_toolsystem_toolbar.py +0 -4123
  1109. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_topbar.py +0 -891
  1110. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_userpref.py +0 -3108
  1111. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_view3d.py +0 -9421
  1112. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_view3d_sidebar.py +0 -183
  1113. package/staging_area/Blender/5.0/scripts/startup/bl_ui/space_view3d_toolbar.py +0 -2438
  1114. package/staging_area/Blender/5.0/scripts/startup/bl_ui/utils.py +0 -40
  1115. package/staging_area/Blender/5.0/scripts/startup/keyingsets_builtins.py +0 -686
  1116. package/staging_area/Blender/5.0/scripts/startup/nodeitems_builtins.py +0 -54
  1117. package/staging_area/Blender/5.0/scripts/templates_osl/advanced_camera.osl +0 -76
  1118. package/staging_area/Blender/5.0/scripts/templates_osl/basic_camera.osl +0 -14
  1119. package/staging_area/Blender/5.0/scripts/templates_osl/basic_shader.osl +0 -10
  1120. package/staging_area/Blender/5.0/scripts/templates_osl/cubemap_camera.osl +0 -42
  1121. package/staging_area/Blender/5.0/scripts/templates_osl/empty_shader.osl +0 -6
  1122. package/staging_area/Blender/5.0/scripts/templates_osl/gabor_noise.osl +0 -17
  1123. package/staging_area/Blender/5.0/scripts/templates_osl/lyapunov_texture.osl +0 -141
  1124. package/staging_area/Blender/5.0/scripts/templates_osl/noise.osl +0 -27
  1125. package/staging_area/Blender/5.0/scripts/templates_osl/ramp_closure.osl +0 -20
  1126. package/staging_area/Blender/5.0/scripts/templates_py/addon_add_object.py +0 -84
  1127. package/staging_area/Blender/5.0/scripts/templates_py/background_job.py +0 -118
  1128. package/staging_area/Blender/5.0/scripts/templates_py/batch_export.py +0 -42
  1129. package/staging_area/Blender/5.0/scripts/templates_py/bmesh_simple.py +0 -22
  1130. package/staging_area/Blender/5.0/scripts/templates_py/bmesh_simple_editmode.py +0 -23
  1131. package/staging_area/Blender/5.0/scripts/templates_py/builtin_keyingset.py +0 -37
  1132. package/staging_area/Blender/5.0/scripts/templates_py/custom_nodes.py +0 -172
  1133. package/staging_area/Blender/5.0/scripts/templates_py/driver_functions.py +0 -35
  1134. package/staging_area/Blender/5.0/scripts/templates_py/external_script_stub.py +0 -13
  1135. package/staging_area/Blender/5.0/scripts/templates_py/gizmo_custom_geometry.py +0 -157
  1136. package/staging_area/Blender/5.0/scripts/templates_py/gizmo_operator.py +0 -235
  1137. package/staging_area/Blender/5.0/scripts/templates_py/gizmo_operator_target.py +0 -50
  1138. package/staging_area/Blender/5.0/scripts/templates_py/gizmo_simple_2d.py +0 -59
  1139. package/staging_area/Blender/5.0/scripts/templates_py/gizmo_simple_3d.py +0 -47
  1140. package/staging_area/Blender/5.0/scripts/templates_py/image_processing.py +0 -35
  1141. package/staging_area/Blender/5.0/scripts/templates_py/operator_file_export.py +0 -76
  1142. package/staging_area/Blender/5.0/scripts/templates_py/operator_file_import.py +0 -79
  1143. package/staging_area/Blender/5.0/scripts/templates_py/operator_mesh_add.py +0 -116
  1144. package/staging_area/Blender/5.0/scripts/templates_py/operator_mesh_uv.py +0 -56
  1145. package/staging_area/Blender/5.0/scripts/templates_py/operator_modal.py +0 -58
  1146. package/staging_area/Blender/5.0/scripts/templates_py/operator_modal_draw.py +0 -83
  1147. package/staging_area/Blender/5.0/scripts/templates_py/operator_modal_timer.py +0 -54
  1148. package/staging_area/Blender/5.0/scripts/templates_py/operator_modal_view3d.py +0 -77
  1149. package/staging_area/Blender/5.0/scripts/templates_py/operator_modal_view3d_raycast.py +0 -115
  1150. package/staging_area/Blender/5.0/scripts/templates_py/operator_node.py +0 -66
  1151. package/staging_area/Blender/5.0/scripts/templates_py/operator_simple.py +0 -42
  1152. package/staging_area/Blender/5.0/scripts/templates_py/ui_asset_shelf.py +0 -29
  1153. package/staging_area/Blender/5.0/scripts/templates_py/ui_list.py +0 -44
  1154. package/staging_area/Blender/5.0/scripts/templates_py/ui_list_generic.py +0 -47
  1155. package/staging_area/Blender/5.0/scripts/templates_py/ui_list_simple.py +0 -70
  1156. package/staging_area/Blender/5.0/scripts/templates_py/ui_menu.py +0 -50
  1157. package/staging_area/Blender/5.0/scripts/templates_py/ui_menu_simple.py +0 -27
  1158. package/staging_area/Blender/5.0/scripts/templates_py/ui_panel.py +0 -73
  1159. package/staging_area/Blender/5.0/scripts/templates_py/ui_panel_simple.py +0 -38
  1160. package/staging_area/Blender/5.0/scripts/templates_py/ui_pie_menu.py +0 -31
  1161. package/staging_area/Blender/5.0/scripts/templates_py/ui_previews_custom_icon.py +0 -76
  1162. package/staging_area/Blender/5.0/scripts/templates_py/ui_previews_dynamic_enum.py +0 -141
  1163. package/staging_area/Blender/5.0/scripts/templates_py/ui_tool_simple.py +0 -91
  1164. package/staging_area/Blender/5.0/scripts/templates_toml/blender_manifest.toml +0 -75
  1165. package/staging_area/Blender/blender-launcher.exe +0 -0
  1166. package/staging_area/Blender/blender.crt/api-ms-win-core-console-l1-1-0.dll +0 -0
  1167. package/staging_area/Blender/blender.crt/api-ms-win-core-console-l1-2-0.dll +0 -0
  1168. package/staging_area/Blender/blender.crt/api-ms-win-core-datetime-l1-1-0.dll +0 -0
  1169. package/staging_area/Blender/blender.crt/api-ms-win-core-debug-l1-1-0.dll +0 -0
  1170. package/staging_area/Blender/blender.crt/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
  1171. package/staging_area/Blender/blender.crt/api-ms-win-core-fibers-l1-1-0.dll +0 -0
  1172. package/staging_area/Blender/blender.crt/api-ms-win-core-file-l1-1-0.dll +0 -0
  1173. package/staging_area/Blender/blender.crt/api-ms-win-core-file-l1-2-0.dll +0 -0
  1174. package/staging_area/Blender/blender.crt/api-ms-win-core-file-l2-1-0.dll +0 -0
  1175. package/staging_area/Blender/blender.crt/api-ms-win-core-handle-l1-1-0.dll +0 -0
  1176. package/staging_area/Blender/blender.crt/api-ms-win-core-heap-l1-1-0.dll +0 -0
  1177. package/staging_area/Blender/blender.crt/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
  1178. package/staging_area/Blender/blender.crt/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
  1179. package/staging_area/Blender/blender.crt/api-ms-win-core-localization-l1-2-0.dll +0 -0
  1180. package/staging_area/Blender/blender.crt/api-ms-win-core-memory-l1-1-0.dll +0 -0
  1181. package/staging_area/Blender/blender.crt/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
  1182. package/staging_area/Blender/blender.crt/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
  1183. package/staging_area/Blender/blender.crt/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
  1184. package/staging_area/Blender/blender.crt/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
  1185. package/staging_area/Blender/blender.crt/api-ms-win-core-profile-l1-1-0.dll +0 -0
  1186. package/staging_area/Blender/blender.crt/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
  1187. package/staging_area/Blender/blender.crt/api-ms-win-core-string-l1-1-0.dll +0 -0
  1188. package/staging_area/Blender/blender.crt/api-ms-win-core-synch-l1-1-0.dll +0 -0
  1189. package/staging_area/Blender/blender.crt/api-ms-win-core-synch-l1-2-0.dll +0 -0
  1190. package/staging_area/Blender/blender.crt/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
  1191. package/staging_area/Blender/blender.crt/api-ms-win-core-timezone-l1-1-0.dll +0 -0
  1192. package/staging_area/Blender/blender.crt/api-ms-win-core-util-l1-1-0.dll +0 -0
  1193. package/staging_area/Blender/blender.crt/api-ms-win-crt-conio-l1-1-0.dll +0 -0
  1194. package/staging_area/Blender/blender.crt/api-ms-win-crt-convert-l1-1-0.dll +0 -0
  1195. package/staging_area/Blender/blender.crt/api-ms-win-crt-environment-l1-1-0.dll +0 -0
  1196. package/staging_area/Blender/blender.crt/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
  1197. package/staging_area/Blender/blender.crt/api-ms-win-crt-heap-l1-1-0.dll +0 -0
  1198. package/staging_area/Blender/blender.crt/api-ms-win-crt-locale-l1-1-0.dll +0 -0
  1199. package/staging_area/Blender/blender.crt/api-ms-win-crt-math-l1-1-0.dll +0 -0
  1200. package/staging_area/Blender/blender.crt/api-ms-win-crt-multibyte-l1-1-0.dll +0 -0
  1201. package/staging_area/Blender/blender.crt/api-ms-win-crt-private-l1-1-0.dll +0 -0
  1202. package/staging_area/Blender/blender.crt/api-ms-win-crt-process-l1-1-0.dll +0 -0
  1203. package/staging_area/Blender/blender.crt/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
  1204. package/staging_area/Blender/blender.crt/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
  1205. package/staging_area/Blender/blender.crt/api-ms-win-crt-string-l1-1-0.dll +0 -0
  1206. package/staging_area/Blender/blender.crt/api-ms-win-crt-time-l1-1-0.dll +0 -0
  1207. package/staging_area/Blender/blender.crt/api-ms-win-crt-utility-l1-1-0.dll +0 -0
  1208. package/staging_area/Blender/blender.crt/blender.crt.manifest +0 -54
  1209. package/staging_area/Blender/blender.crt/concrt140.dll +0 -0
  1210. package/staging_area/Blender/blender.crt/msvcp140.dll +0 -0
  1211. package/staging_area/Blender/blender.crt/msvcp140_1.dll +0 -0
  1212. package/staging_area/Blender/blender.crt/msvcp140_2.dll +0 -0
  1213. package/staging_area/Blender/blender.crt/msvcp140_atomic_wait.dll +0 -0
  1214. package/staging_area/Blender/blender.crt/msvcp140_codecvt_ids.dll +0 -0
  1215. package/staging_area/Blender/blender.crt/vcruntime140.dll +0 -0
  1216. package/staging_area/Blender/blender.crt/vcruntime140_1.dll +0 -0
@@ -1,3722 +0,0 @@
1
- # SPDX-FileCopyrightText: 2009-2023 Blender Authors
2
- #
3
- # SPDX-License-Identifier: GPL-2.0-or-later
4
-
5
- from __future__ import annotations
6
-
7
- import bpy
8
- from bpy.types import (
9
- Menu,
10
- Operator,
11
- )
12
- from bpy.props import (
13
- BoolProperty,
14
- CollectionProperty,
15
- EnumProperty,
16
- FloatProperty,
17
- IntProperty,
18
- StringProperty,
19
- BoolVectorProperty,
20
- IntVectorProperty,
21
- FloatVectorProperty,
22
- )
23
- from bpy.app.translations import (
24
- pgettext_iface as iface_,
25
- pgettext_n as n_,
26
- pgettext_tip as tip_,
27
- pgettext_rpt as rpt_,
28
- contexts as i18n_contexts,
29
- )
30
-
31
-
32
- def _rna_path_prop_search_for_context_impl(context, edit_text, unique_attrs):
33
- # Use the same logic as auto-completing in the Python console to expand the data-path.
34
- from _bl_console_utils.autocomplete import intellisense
35
- context_prefix = "context."
36
- line = context_prefix + edit_text
37
- cursor = len(line)
38
- namespace = {"context": context}
39
- comp_prefix, _, comp_options = intellisense.expand(line=line, cursor=cursor, namespace=namespace, private=False)
40
- prefix = comp_prefix[len(context_prefix):] # Strip "context."
41
- for attr in comp_options.split("\n"):
42
- if attr.endswith((
43
- # Exclude function calls because they are generally not part of data-paths.
44
- "(", ")",
45
- # RNA properties for introspection, not useful to expand.
46
- ".bl_rna", ".rna_type",
47
- )):
48
- continue
49
- # If we type/paste in complete attributes, intellisense expands with a ".", remove that again (see #134092)
50
- attr_full = (prefix + attr.lstrip()).removesuffix(".")
51
- if attr_full in unique_attrs:
52
- continue
53
- unique_attrs.add(attr_full)
54
- yield attr_full
55
-
56
-
57
- def rna_path_prop_search_for_context(self, context, edit_text):
58
- # NOTE(@campbellbarton): Limiting data-path expansion is rather arbitrary.
59
- # It's possible for example that someone would want to set a shortcut in the preferences or
60
- # in other region types than those currently expanded. Unless there is a reasonable likelihood
61
- # users might expand these space-type/region-type combinations - exclude them from this search.
62
- # After all, this list is mainly intended as a hint, users are not prevented from constructing
63
- # the data-paths themselves.
64
- unique_attrs = set()
65
-
66
- for window in context.window_manager.windows:
67
- for area in window.screen.areas:
68
- # Users are very unlikely to be setting shortcuts in the preferences, skip this.
69
- if area.type == 'PREFERENCES':
70
- continue
71
- # Ignore the same region type multiple times in an area.
72
- # Prevents the 3D-viewport quad-view from attempting to expand 3 extra times for example
73
- region_type_unique = set()
74
- for region in area.regions:
75
- if region.type not in {'WINDOW', 'PREVIEW'}:
76
- continue
77
- if region.type in region_type_unique:
78
- continue
79
- region_type_unique.add(region.type)
80
- with context.temp_override(window=window, area=area, region=region):
81
- yield from _rna_path_prop_search_for_context_impl(context, edit_text, unique_attrs)
82
-
83
- if not unique_attrs:
84
- # Users *might* only have a preferences area shown, in that case just expand the current context.
85
- yield from _rna_path_prop_search_for_context_impl(context, edit_text, unique_attrs)
86
-
87
-
88
- rna_path_prop = StringProperty(
89
- name="Context Attributes",
90
- description="Context data-path (expanded using visible windows in the current .blend file)",
91
- maxlen=1024,
92
- search=rna_path_prop_search_for_context,
93
- )
94
-
95
- rna_reverse_prop = BoolProperty(
96
- name="Reverse",
97
- description="Cycle backwards",
98
- default=False,
99
- options={'SKIP_SAVE'},
100
- )
101
-
102
- rna_wrap_prop = BoolProperty(
103
- name="Wrap",
104
- description="Wrap back to the first/last values",
105
- default=False,
106
- options={'SKIP_SAVE'},
107
- )
108
-
109
- rna_relative_prop = BoolProperty(
110
- name="Relative",
111
- description="Apply relative to the current value (delta)",
112
- default=False,
113
- options={'SKIP_SAVE'},
114
- )
115
-
116
- rna_space_type_prop = EnumProperty(
117
- name="Type",
118
- items=tuple(
119
- (e.identifier, e.name, "", e. value)
120
- for e in bpy.types.Space.bl_rna.properties["type"].enum_items
121
- ),
122
- default='EMPTY',
123
- )
124
-
125
- # Note, this can be used for more operators,
126
- # currently not used for all "WM_OT_context_" operators.
127
- rna_module_prop = StringProperty(
128
- name="Module",
129
- description="Optionally override the context with a module",
130
- maxlen=1024,
131
- )
132
-
133
-
134
- def context_path_validate(context, data_path):
135
- try:
136
- value = eval("context.{:s}".format(data_path)) if data_path else Ellipsis
137
- except AttributeError as ex:
138
- if str(ex).startswith("'NoneType'"):
139
- # One of the items in the rna path is None, just ignore this
140
- value = Ellipsis
141
- else:
142
- # Print invalid path, but don't show error to the users and fully
143
- # break the UI if the operator is bound to an event like left click.
144
- print("context_path_validate error: context.{:s} not found (invalid keymap entry?)".format(data_path))
145
- value = Ellipsis
146
-
147
- return value
148
-
149
-
150
- def context_path_to_rna_property(context, data_path):
151
- from _bl_rna_utils.data_path import property_definition_from_data_path
152
- rna_prop = property_definition_from_data_path(context, "." + data_path)
153
- if rna_prop is not None:
154
- return rna_prop
155
- return None
156
-
157
-
158
- def context_path_decompose(data_path):
159
- # Decompose a data_path into 3 components:
160
- # base_path, prop_attr, prop_item, where:
161
- # `"foo.bar["baz"].fiz().bob.buz[10][2]"`, returns...
162
- # `("foo.bar["baz"].fiz().bob", "buz", "[10][2]")`
163
- #
164
- # This is useful as we often want the base and the property, ignoring any item access.
165
- # Note that item access includes function calls since these aren't properties.
166
- #
167
- # Note that the `.` is removed from the start of the first and second values,
168
- # this is done because `.attr` isn't convenient to use as an argument,
169
- # also the convention is not to include this within the data paths or the operator logic for `bpy.ops.wm.*`.
170
- from _bl_rna_utils.data_path import decompose_data_path
171
- path_split = decompose_data_path("." + data_path)
172
-
173
- # Find the last property that isn't a function call.
174
- value_prev = ""
175
- i = len(path_split)
176
- while (i := i - 1) >= 0:
177
- value = path_split[i]
178
- if value.startswith("."):
179
- if not value_prev.startswith("("):
180
- break
181
- value_prev = value
182
-
183
- if i != -1:
184
- base_path = "".join(path_split[:i])
185
- prop_attr = path_split[i]
186
- prop_item = "".join(path_split[i + 1:])
187
-
188
- if base_path:
189
- assert base_path.startswith(".")
190
- base_path = base_path[1:]
191
- if prop_attr:
192
- assert prop_attr.startswith(".")
193
- prop_attr = prop_attr[1:]
194
- else:
195
- # If there are no properties, everything is an item.
196
- # Note that should not happen in practice with values which are added onto `context`,
197
- # include since it's correct to account for this case and not doing so will create a confusing exception.
198
- base_path = ""
199
- prop_attr = ""
200
- prop_item = "".join(path_split)
201
-
202
- return (base_path, prop_attr, prop_item)
203
-
204
-
205
- def description_from_data_path(base, data_path, *, prefix, value=Ellipsis):
206
- if context_path_validate(base, data_path) is Ellipsis:
207
- return None
208
-
209
- if (
210
- (rna_prop := context_path_to_rna_property(base, data_path)) and
211
- (description := tip_(rna_prop.description))
212
- ):
213
- description = tip_("{:s}: {:s}").format(prefix, description)
214
- if value != Ellipsis:
215
- description = "{:s}\n{:s}: {:s}".format(description, tip_("Value"), str(value))
216
- return description
217
- return None
218
-
219
-
220
- def operator_value_is_undo(value):
221
- if value in {None, Ellipsis}:
222
- return False
223
-
224
- # typical properties or objects
225
- id_data = getattr(value, "id_data", Ellipsis)
226
-
227
- if id_data is None:
228
- return False
229
- elif id_data is Ellipsis:
230
- # handle mathutils types
231
- id_data = getattr(getattr(value, "owner", None), "id_data", None)
232
-
233
- if id_data is None:
234
- return False
235
-
236
- # return True if its a non window ID type
237
- return (
238
- isinstance(id_data, bpy.types.ID) and
239
- (not isinstance(id_data, (
240
- bpy.types.WindowManager,
241
- bpy.types.Screen,
242
- bpy.types.Brush,
243
- )))
244
- )
245
-
246
-
247
- def operator_path_is_undo(context, data_path):
248
- data_path_head, _, _ = context_path_decompose(data_path)
249
-
250
- # When we can't find the data owner assume no undo is needed.
251
- if not data_path_head:
252
- return False
253
-
254
- value = context_path_validate(context, data_path_head)
255
-
256
- return operator_value_is_undo(value)
257
-
258
-
259
- def operator_path_undo_return(context, data_path):
260
- return {'FINISHED'} if operator_path_is_undo(context, data_path) else {'CANCELLED'}
261
-
262
-
263
- def operator_value_undo_return(value):
264
- return {'FINISHED'} if operator_value_is_undo(value) else {'CANCELLED'}
265
-
266
-
267
- def execute_context_assign(self, context):
268
- data_path = self.data_path
269
- if context_path_validate(context, data_path) is Ellipsis:
270
- return {'PASS_THROUGH'}
271
-
272
- if getattr(self, "relative", False):
273
- exec("context.{:s} += self.value".format(data_path))
274
- else:
275
- exec("context.{:s} = self.value".format(data_path))
276
-
277
- return operator_path_undo_return(context, data_path)
278
-
279
-
280
- class WM_OT_context_set_boolean(Operator):
281
- """Set a context value"""
282
- bl_idname = "wm.context_set_boolean"
283
- bl_label = "Context Set Boolean"
284
- bl_options = {'UNDO', 'INTERNAL'}
285
-
286
- data_path: rna_path_prop
287
- value: BoolProperty(
288
- name="Value",
289
- description="Assignment value",
290
- default=True,
291
- )
292
-
293
- @classmethod
294
- def description(cls, context, props):
295
- return description_from_data_path(context, props.data_path, prefix=tip_("Assign"), value=props.value)
296
-
297
- execute = execute_context_assign
298
-
299
-
300
- class WM_OT_context_set_int(Operator): # same as enum
301
- """Set a context value"""
302
- bl_idname = "wm.context_set_int"
303
- bl_label = "Context Set"
304
- bl_options = {'UNDO', 'INTERNAL'}
305
-
306
- data_path: rna_path_prop
307
- value: IntProperty(
308
- name="Value",
309
- description="Assign value",
310
- default=0,
311
- )
312
- relative: rna_relative_prop
313
-
314
- @classmethod
315
- def description(cls, context, props):
316
- return description_from_data_path(context, props.data_path, prefix=tip_("Assign"), value=props.value)
317
-
318
- execute = execute_context_assign
319
-
320
-
321
- class WM_OT_context_scale_float(Operator):
322
- """Scale a float context value"""
323
- bl_idname = "wm.context_scale_float"
324
- bl_label = "Context Scale Float"
325
- bl_options = {'UNDO', 'INTERNAL'}
326
-
327
- data_path: rna_path_prop
328
- value: FloatProperty(
329
- name="Value",
330
- description="Assign value",
331
- default=1.0,
332
- )
333
-
334
- @classmethod
335
- def description(cls, context, props):
336
- return description_from_data_path(context, props.data_path, prefix=tip_("Scale"), value=props.value)
337
-
338
- def execute(self, context):
339
- data_path = self.data_path
340
- if context_path_validate(context, data_path) is Ellipsis:
341
- return {'PASS_THROUGH'}
342
-
343
- value = self.value
344
-
345
- if value == 1.0: # nothing to do
346
- return {'CANCELLED'}
347
-
348
- exec("context.{:s} *= value".format(data_path))
349
-
350
- return operator_path_undo_return(context, data_path)
351
-
352
-
353
- class WM_OT_context_scale_int(Operator):
354
- """Scale an int context value"""
355
- bl_idname = "wm.context_scale_int"
356
- bl_label = "Context Scale Int"
357
- bl_options = {'UNDO', 'INTERNAL'}
358
-
359
- data_path: rna_path_prop
360
- value: FloatProperty(
361
- name="Value",
362
- description="Assign value",
363
- default=1.0,
364
- )
365
- always_step: BoolProperty(
366
- name="Always Step",
367
- description="Always adjust the value by a minimum of 1 when 'value' is not 1.0",
368
- default=True,
369
- options={'SKIP_SAVE'},
370
- )
371
-
372
- @classmethod
373
- def description(cls, context, props):
374
- return description_from_data_path(context, props.data_path, prefix=tip_("Scale"), value=props.value)
375
-
376
- def execute(self, context):
377
- data_path = self.data_path
378
- if context_path_validate(context, data_path) is Ellipsis:
379
- return {'PASS_THROUGH'}
380
-
381
- value = self.value
382
-
383
- if value == 1.0: # nothing to do
384
- return {'CANCELLED'}
385
-
386
- if getattr(self, "always_step", False):
387
- if value > 1.0:
388
- add = "1"
389
- func = "max"
390
- else:
391
- add = "-1"
392
- func = "min"
393
- exec("context.{:s} = {:s}(round(context.{:s} * value), context.{:s} + {:s})".format(
394
- data_path, func, data_path, data_path, add,
395
- ))
396
- else:
397
- exec("context.{:s} *= value".format(data_path))
398
-
399
- return operator_path_undo_return(context, data_path)
400
-
401
-
402
- class WM_OT_context_set_float(Operator): # same as enum
403
- """Set a context value"""
404
- bl_idname = "wm.context_set_float"
405
- bl_label = "Context Set Float"
406
- bl_options = {'UNDO', 'INTERNAL'}
407
-
408
- data_path: rna_path_prop
409
- value: FloatProperty(
410
- name="Value",
411
- description="Assignment value",
412
- default=0.0,
413
- )
414
- relative: rna_relative_prop
415
-
416
- @classmethod
417
- def description(cls, context, props):
418
- return description_from_data_path(context, props.data_path, prefix=tip_("Assign"), value=props.value)
419
-
420
- execute = execute_context_assign
421
-
422
-
423
- class WM_OT_context_set_string(Operator): # same as enum
424
- """Set a context value"""
425
- bl_idname = "wm.context_set_string"
426
- bl_label = "Context Set String"
427
- bl_options = {'UNDO', 'INTERNAL'}
428
-
429
- data_path: rna_path_prop
430
- value: StringProperty(
431
- name="Value",
432
- description="Assign value",
433
- maxlen=1024,
434
- )
435
-
436
- @classmethod
437
- def description(cls, context, props):
438
- return description_from_data_path(context, props.data_path, prefix=tip_("Assign"), value=props.value)
439
-
440
- execute = execute_context_assign
441
-
442
-
443
- class WM_OT_context_set_enum(Operator):
444
- """Set a context value"""
445
- bl_idname = "wm.context_set_enum"
446
- bl_label = "Context Set Enum"
447
- bl_options = {'UNDO', 'INTERNAL'}
448
-
449
- data_path: rna_path_prop
450
- value: StringProperty(
451
- name="Value",
452
- description="Assignment value (as a string)",
453
- maxlen=1024,
454
- )
455
-
456
- @classmethod
457
- def description(cls, context, props):
458
- return description_from_data_path(context, props.data_path, prefix=tip_("Assign"), value=props.value)
459
-
460
- execute = execute_context_assign
461
-
462
-
463
- class WM_OT_context_set_value(Operator):
464
- """Set a context value"""
465
- bl_idname = "wm.context_set_value"
466
- bl_label = "Context Set Value"
467
- bl_options = {'UNDO', 'INTERNAL'}
468
-
469
- data_path: rna_path_prop
470
- value: StringProperty(
471
- name="Value",
472
- description="Assignment value (as a string)",
473
- maxlen=1024,
474
- )
475
-
476
- @classmethod
477
- def description(cls, context, props):
478
- return description_from_data_path(context, props.data_path, prefix=tip_("Assign"), value=props.value)
479
-
480
- def execute(self, context):
481
- data_path = self.data_path
482
- if context_path_validate(context, data_path) is Ellipsis:
483
- return {'PASS_THROUGH'}
484
- exec("context.{:s} = {:s}".format(data_path, self.value))
485
- return operator_path_undo_return(context, data_path)
486
-
487
-
488
- class WM_OT_context_toggle(Operator):
489
- """Toggle a context value"""
490
- bl_idname = "wm.context_toggle"
491
- bl_label = "Context Toggle"
492
- bl_options = {'UNDO', 'INTERNAL'}
493
-
494
- data_path: rna_path_prop
495
- module: rna_module_prop
496
-
497
- @classmethod
498
- def description(cls, context, props):
499
- # Currently unsupported, it might be possible to extract this.
500
- if props.module:
501
- return None
502
- return description_from_data_path(context, props.data_path, prefix=tip_("Toggle"))
503
-
504
- def execute(self, context):
505
- data_path = self.data_path
506
-
507
- module = self.module
508
- if not module:
509
- base = context
510
- else:
511
- from importlib import import_module
512
- base = import_module(self.module)
513
-
514
- if context_path_validate(base, data_path) is Ellipsis:
515
- return {'PASS_THROUGH'}
516
-
517
- exec("base.{:s} = not (base.{:s})".format(data_path, data_path))
518
-
519
- return operator_path_undo_return(base, data_path)
520
-
521
-
522
- class WM_OT_context_toggle_enum(Operator):
523
- """Toggle a context value"""
524
- bl_idname = "wm.context_toggle_enum"
525
- bl_label = "Context Toggle Values"
526
- bl_options = {'UNDO', 'INTERNAL'}
527
-
528
- data_path: rna_path_prop
529
- value_1: StringProperty(
530
- name="Value",
531
- description="Toggle enum",
532
- maxlen=1024,
533
- )
534
- value_2: StringProperty(
535
- name="Value",
536
- description="Toggle enum",
537
- maxlen=1024,
538
- )
539
-
540
- @classmethod
541
- def description(cls, context, props):
542
- value = "({!r}, {!r})".format(props.value_1, props.value_2)
543
- return description_from_data_path(context, props.data_path, prefix=tip_("Toggle"), value=value)
544
-
545
- def execute(self, context):
546
- data_path = self.data_path
547
-
548
- if context_path_validate(context, data_path) is Ellipsis:
549
- return {'PASS_THROUGH'}
550
-
551
- # failing silently is not ideal, but we don't want errors for shortcut
552
- # keys that some values that are only available in a particular context
553
- try:
554
- exec(
555
- "context.{:s} = {!r} if (context.{:s} != {!r}) else {!r}".format(
556
- data_path,
557
- self.value_2,
558
- data_path,
559
- self.value_2,
560
- self.value_1,
561
- )
562
- )
563
- except Exception:
564
- return {'PASS_THROUGH'}
565
-
566
- return operator_path_undo_return(context, data_path)
567
-
568
-
569
- class WM_OT_context_cycle_int(Operator):
570
- """Set a context value (useful for cycling active material, """ \
571
- """shape keys, groups, etc.)"""
572
- bl_idname = "wm.context_cycle_int"
573
- bl_label = "Context Int Cycle"
574
- bl_options = {'UNDO', 'INTERNAL'}
575
-
576
- data_path: rna_path_prop
577
- reverse: rna_reverse_prop
578
- wrap: rna_wrap_prop
579
-
580
- @classmethod
581
- def description(cls, context, props):
582
- return description_from_data_path(context, props.data_path, prefix=tip_("Cycle"))
583
-
584
- def execute(self, context):
585
- data_path = self.data_path
586
- value = context_path_validate(context, data_path)
587
- if value is Ellipsis:
588
- return {'PASS_THROUGH'}
589
-
590
- if self.reverse:
591
- value -= 1
592
- else:
593
- value += 1
594
-
595
- exec("context.{:s} = value".format(data_path))
596
-
597
- if self.wrap:
598
- if value != eval("context.{:s}".format(data_path)):
599
- # relies on rna clamping integers out of the range
600
- if self.reverse:
601
- value = (1 << 31) - 1
602
- else:
603
- value = -1 << 31
604
-
605
- exec("context.{:s} = value".format(data_path))
606
-
607
- return operator_path_undo_return(context, data_path)
608
-
609
-
610
- class WM_OT_context_cycle_enum(Operator):
611
- """Toggle a context value"""
612
- bl_idname = "wm.context_cycle_enum"
613
- bl_label = "Context Enum Cycle"
614
- bl_options = {'UNDO', 'INTERNAL'}
615
-
616
- data_path: rna_path_prop
617
- reverse: rna_reverse_prop
618
- wrap: rna_wrap_prop
619
-
620
- @classmethod
621
- def description(cls, context, props):
622
- return description_from_data_path(context, props.data_path, prefix=tip_("Cycle"))
623
-
624
- def execute(self, context):
625
- data_path = self.data_path
626
- value = context_path_validate(context, data_path)
627
- if value is Ellipsis:
628
- return {'PASS_THROUGH'}
629
-
630
- orig_value = value
631
-
632
- rna_prop = context_path_to_rna_property(context, data_path)
633
- if type(rna_prop) != bpy.types.EnumProperty:
634
- raise Exception("expected an enum property")
635
-
636
- enums = rna_prop.enum_items.keys()
637
- orig_index = enums.index(orig_value)
638
-
639
- # Have the info we need, advance to the next item.
640
- #
641
- # When wrap's disabled we may set the value to itself,
642
- # this is done to ensure update callbacks run.
643
- if self.reverse:
644
- if orig_index == 0:
645
- advance_enum = enums[-1] if self.wrap else enums[0]
646
- else:
647
- advance_enum = enums[orig_index - 1]
648
- else:
649
- if orig_index == len(enums) - 1:
650
- advance_enum = enums[0] if self.wrap else enums[-1]
651
- else:
652
- advance_enum = enums[orig_index + 1]
653
-
654
- # set the new value
655
- exec("context.{:s} = advance_enum".format(data_path))
656
- return operator_path_undo_return(context, data_path)
657
-
658
-
659
- class WM_OT_context_cycle_array(Operator):
660
- """Set a context array value """ \
661
- """(useful for cycling the active mesh edit mode)"""
662
- bl_idname = "wm.context_cycle_array"
663
- bl_label = "Context Array Cycle"
664
- bl_options = {'UNDO', 'INTERNAL'}
665
-
666
- data_path: rna_path_prop
667
- reverse: rna_reverse_prop
668
-
669
- @classmethod
670
- def description(cls, context, props):
671
- return description_from_data_path(context, props.data_path, prefix=tip_("Cycle"))
672
-
673
- def execute(self, context):
674
- data_path = self.data_path
675
- value = context_path_validate(context, data_path)
676
- if value is Ellipsis:
677
- return {'PASS_THROUGH'}
678
-
679
- def cycle(array):
680
- if self.reverse:
681
- array.insert(0, array.pop())
682
- else:
683
- array.append(array.pop(0))
684
- return array
685
-
686
- exec("context.{:s} = cycle(context.{:s}[:])".format(data_path, data_path))
687
-
688
- return operator_path_undo_return(context, data_path)
689
-
690
-
691
- class WM_OT_context_menu_enum(Operator):
692
- bl_idname = "wm.context_menu_enum"
693
- bl_label = "Context Enum Menu"
694
- # The menu items & UI logic handles undo.
695
- bl_options = {'INTERNAL'}
696
-
697
- data_path: rna_path_prop
698
-
699
- @classmethod
700
- def description(cls, context, props):
701
- return description_from_data_path(context, props.data_path, prefix=tip_("Menu"))
702
-
703
- def execute(self, context):
704
- data_path = self.data_path
705
- value = context_path_validate(context, data_path)
706
-
707
- if value is Ellipsis:
708
- return {'PASS_THROUGH'}
709
-
710
- base_path, prop_attr, _ = context_path_decompose(data_path)
711
- value_base = context_path_validate(context, base_path)
712
- rna_prop = context_path_to_rna_property(context, data_path)
713
-
714
- def draw_cb(self, context):
715
- layout = self.layout
716
- layout.prop(value_base, prop_attr, expand=True)
717
-
718
- context.window_manager.popup_menu(draw_func=draw_cb, title=rna_prop.name, icon=rna_prop.icon)
719
-
720
- return {'FINISHED'}
721
-
722
-
723
- class WM_OT_context_pie_enum(Operator):
724
- bl_idname = "wm.context_pie_enum"
725
- bl_label = "Context Enum Pie"
726
- # The menu items & UI logic handles undo.
727
- bl_options = {'INTERNAL'}
728
-
729
- data_path: rna_path_prop
730
-
731
- @classmethod
732
- def description(cls, context, props):
733
- return description_from_data_path(context, props.data_path, prefix=tip_("Pie Menu"))
734
-
735
- def invoke(self, context, event):
736
- wm = context.window_manager
737
- data_path = self.data_path
738
- value = context_path_validate(context, data_path)
739
-
740
- if value is Ellipsis:
741
- return {'PASS_THROUGH'}
742
-
743
- base_path, prop_attr, _ = context_path_decompose(data_path)
744
- value_base = context_path_validate(context, base_path)
745
- rna_prop = context_path_to_rna_property(context, data_path)
746
-
747
- def draw_cb(self, context):
748
- layout = self.layout
749
- layout.prop(value_base, prop_attr, expand=True)
750
-
751
- wm.popup_menu_pie(draw_func=draw_cb, title=rna_prop.name, icon=rna_prop.icon, event=event)
752
-
753
- return {'FINISHED'}
754
-
755
-
756
- class WM_OT_operator_pie_enum(Operator):
757
- bl_idname = "wm.operator_pie_enum"
758
- bl_label = "Operator Enum Pie"
759
- # The menu items & UI logic handles undo.
760
- bl_options = {'INTERNAL'}
761
-
762
- data_path: StringProperty(
763
- name="Operator",
764
- description="Operator name (in Python as string)",
765
- maxlen=1024,
766
- )
767
- prop_string: StringProperty(
768
- name="Property",
769
- description="Property name (as a string)",
770
- maxlen=1024,
771
- )
772
-
773
- @classmethod
774
- def description(cls, context, props):
775
- return description_from_data_path(context, props.data_path, prefix=tip_("Pie Menu"))
776
-
777
- def invoke(self, context, event):
778
- wm = context.window_manager
779
-
780
- data_path = self.data_path
781
- prop_attr = self.prop_string
782
-
783
- # same as eval("bpy.ops." + data_path)
784
- op_mod_str, ob_id_str = data_path.split(".", 1)
785
- op = getattr(getattr(bpy.ops, op_mod_str), ob_id_str)
786
- del op_mod_str, ob_id_str
787
-
788
- try:
789
- op_rna = op.get_rna_type()
790
- except KeyError:
791
- self.report({'ERROR'}, rpt_("Operator not found: bpy.ops.{:s}").format(data_path))
792
- return {'CANCELLED'}
793
-
794
- def draw_cb(self, context):
795
- layout = self.layout
796
- pie = layout.menu_pie()
797
- pie.operator_enum(data_path, prop_attr)
798
-
799
- wm.popup_menu_pie(draw_func=draw_cb, title=op_rna.name, event=event)
800
-
801
- return {'FINISHED'}
802
-
803
-
804
- class WM_OT_context_set_id(Operator):
805
- """Set a context value to an ID data-block"""
806
- bl_idname = "wm.context_set_id"
807
- bl_label = "Set Library ID"
808
- bl_options = {'UNDO', 'INTERNAL'}
809
-
810
- data_path: rna_path_prop
811
- value: StringProperty(
812
- name="Value",
813
- description="Assign value",
814
- maxlen=1024,
815
- )
816
-
817
- def execute(self, context):
818
- value = self.value
819
- data_path = self.data_path
820
-
821
- # Match the pointer type from the target property to `bpy.data.*`
822
- # so we lookup the correct list.
823
-
824
- rna_prop = context_path_to_rna_property(context, data_path)
825
- rna_prop_fixed_type = rna_prop.fixed_type
826
-
827
- id_iter = None
828
-
829
- for prop in bpy.data.rna_type.properties:
830
- if prop.rna_type.identifier == "CollectionProperty":
831
- if prop.fixed_type == rna_prop_fixed_type:
832
- id_iter = prop.identifier
833
- break
834
-
835
- if id_iter:
836
- value_id = getattr(bpy.data, id_iter).get(value)
837
- exec("context.{:s} = value_id".format(data_path))
838
-
839
- return operator_path_undo_return(context, data_path)
840
-
841
-
842
- doc_id = StringProperty(
843
- name="Doc ID",
844
- maxlen=1024,
845
- options={'HIDDEN'},
846
- )
847
-
848
- data_path_iter = StringProperty(
849
- description="The data path relative to the context, must point to an iterable",
850
- )
851
-
852
- data_path_item = StringProperty(
853
- description="The data path from each iterable to the value (int or float)",
854
- )
855
-
856
-
857
- class WM_OT_context_collection_boolean_set(Operator):
858
- """Set boolean values for a collection of items"""
859
- bl_idname = "wm.context_collection_boolean_set"
860
- bl_label = "Context Collection Boolean Set"
861
- bl_options = {'UNDO', 'REGISTER', 'INTERNAL'}
862
-
863
- data_path_iter: data_path_iter
864
- data_path_item: data_path_item
865
-
866
- type: EnumProperty(
867
- name="Type",
868
- items=(
869
- ('TOGGLE', "Toggle", ""),
870
- ('ENABLE', "Enable", ""),
871
- ('DISABLE', "Disable", ""),
872
- ),
873
- )
874
-
875
- def execute(self, context):
876
- data_path_iter = self.data_path_iter
877
- data_path_item = self.data_path_item
878
-
879
- items = list(getattr(context, data_path_iter))
880
- items_ok = []
881
- is_set = False
882
- for item in items:
883
- try:
884
- value_orig = eval("item." + data_path_item)
885
- except Exception:
886
- continue
887
-
888
- if value_orig is True:
889
- is_set = True
890
- elif value_orig is False:
891
- pass
892
- else:
893
- self.report(
894
- {'WARNING'},
895
- rpt_("Non boolean value found: {:s}[ ].{:s}").format(data_path_iter, data_path_item),
896
- )
897
- return {'CANCELLED'}
898
-
899
- items_ok.append(item)
900
-
901
- # avoid undo push when nothing to do
902
- if not items_ok:
903
- return {'CANCELLED'}
904
-
905
- if self.type == 'ENABLE':
906
- is_set = True
907
- elif self.type == 'DISABLE':
908
- is_set = False
909
- else:
910
- is_set = not is_set
911
-
912
- exec_str = "item.{:s} = {:s}".format(data_path_item, str(is_set))
913
- for item in items_ok:
914
- exec(exec_str)
915
-
916
- return operator_value_undo_return(item)
917
-
918
-
919
- class WM_OT_context_modal_mouse(Operator):
920
- """Adjust arbitrary values with mouse input"""
921
- bl_idname = "wm.context_modal_mouse"
922
- bl_label = "Context Modal Mouse"
923
- bl_options = {'GRAB_CURSOR', 'BLOCKING', 'UNDO', 'INTERNAL'}
924
-
925
- data_path_iter: data_path_iter
926
- data_path_item: data_path_item
927
- header_text: StringProperty(
928
- name="Header Text",
929
- description="Text to display in header during scale",
930
- )
931
-
932
- input_scale: FloatProperty(
933
- description="Scale the mouse movement by this value before applying the delta",
934
- default=0.01,
935
- options={'SKIP_SAVE'},
936
- )
937
- invert: BoolProperty(
938
- description="Invert the mouse input",
939
- default=False,
940
- options={'SKIP_SAVE'},
941
- )
942
- initial_x: IntProperty(options={'HIDDEN'})
943
-
944
- def _values_store(self, context):
945
- data_path_iter = self.data_path_iter
946
- data_path_item = self.data_path_item
947
-
948
- self._values = values = {}
949
-
950
- for item in getattr(context, data_path_iter):
951
- try:
952
- value_orig = eval("item." + data_path_item)
953
- except Exception:
954
- continue
955
-
956
- # check this can be set, maybe this is library data.
957
- try:
958
- exec("item.{:s} = {:s}".format(data_path_item, str(value_orig)))
959
- except Exception:
960
- continue
961
-
962
- values[item] = value_orig
963
-
964
- def _values_delta(self, delta):
965
- delta *= self.input_scale
966
- if self.invert:
967
- delta = - delta
968
-
969
- data_path_item = self.data_path_item
970
- for item, value_orig in self._values.items():
971
- if type(value_orig) == int:
972
- exec("item.{:s} = int({:d})".format(data_path_item, round(value_orig + delta)))
973
- else:
974
- exec("item.{:s} = {:f}".format(data_path_item, value_orig + delta))
975
-
976
- def _values_restore(self):
977
- data_path_item = self.data_path_item
978
- for item, value_orig in self._values.items():
979
- exec("item.{:s} = {:s}".format(data_path_item, str(value_orig)))
980
-
981
- self._values.clear()
982
-
983
- def _values_clear(self):
984
- self._values.clear()
985
-
986
- def modal(self, context, event):
987
- event_type = event.type
988
-
989
- if event_type == 'MOUSEMOVE':
990
- delta = event.mouse_x - self.initial_x
991
- self._values_delta(delta)
992
- header_text = self.header_text
993
- if header_text:
994
- if len(self._values) == 1:
995
- (item, ) = self._values.keys()
996
- header_text = header_text % eval("item.{:s}".format(self.data_path_item))
997
- else:
998
- header_text = (self.header_text % delta) + rpt_(" (delta)")
999
- context.area.header_text_set(header_text)
1000
-
1001
- elif 'LEFTMOUSE' == event_type:
1002
- item = next(iter(self._values.keys()))
1003
- self._values_clear()
1004
- context.area.header_text_set(None)
1005
- return operator_value_undo_return(item)
1006
-
1007
- elif event_type in {'RIGHTMOUSE', 'ESC'}:
1008
- self._values_restore()
1009
- context.area.header_text_set(None)
1010
- return {'CANCELLED'}
1011
-
1012
- return {'RUNNING_MODAL'}
1013
-
1014
- def invoke(self, context, event):
1015
- self._values_store(context)
1016
-
1017
- if not self._values:
1018
- self.report(
1019
- {'WARNING'},
1020
- rpt_("Nothing to operate on: {:s}[ ].{:s}").format(
1021
- self.data_path_iter, self.data_path_item,
1022
- ),
1023
- )
1024
- return {'CANCELLED'}
1025
- else:
1026
- self.initial_x = event.mouse_x
1027
-
1028
- context.window_manager.modal_handler_add(self)
1029
- return {'RUNNING_MODAL'}
1030
-
1031
-
1032
- class WM_OT_url_open(Operator):
1033
- """Open a website in the web browser"""
1034
- bl_idname = "wm.url_open"
1035
- bl_label = ""
1036
- bl_options = {'INTERNAL'}
1037
-
1038
- url: StringProperty(
1039
- name="URL",
1040
- description="URL to open",
1041
- )
1042
-
1043
- @staticmethod
1044
- def _add_utm_param_to_url(url, utm_source):
1045
- import urllib.parse
1046
-
1047
- # Parse the URL to get its domain and query parameters.
1048
- if not urllib.parse.urlparse(url).scheme:
1049
- url = "https://" + url
1050
- parsed_url = urllib.parse.urlparse(url)
1051
-
1052
- # Only add a utm source if it points to a blender.org domain.
1053
- domain = parsed_url.netloc
1054
- if not (domain.endswith(".blender.org") or domain == "blender.org"):
1055
- return url
1056
-
1057
- # Parse the query parameters and add or update the utm_source parameter.
1058
- query_params = urllib.parse.parse_qs(parsed_url.query)
1059
- query_params["utm_source"] = utm_source
1060
- new_query = urllib.parse.urlencode(query_params, doseq=True)
1061
-
1062
- # Create a new URL with the updated query parameters.
1063
- new_url_parts = list(parsed_url)
1064
- new_url_parts[4] = new_query
1065
- new_url = urllib.parse.urlunparse(new_url_parts)
1066
-
1067
- return new_url
1068
-
1069
- @staticmethod
1070
- def _get_utm_source():
1071
- version = bpy.app.version_string
1072
- return "blender-" + version.replace(" ", "-").lower()
1073
-
1074
- def execute(self, _context):
1075
- import webbrowser
1076
- complete_url = self._add_utm_param_to_url(self.url, self._get_utm_source())
1077
- webbrowser.open(complete_url)
1078
- return {'FINISHED'}
1079
-
1080
-
1081
- class WM_OT_url_open_preset(Operator):
1082
- """Open a preset website in the web browser"""
1083
- bl_idname = "wm.url_open_preset"
1084
- bl_label = "Open Preset Website"
1085
- bl_options = {'INTERNAL'}
1086
- bl_property = "type"
1087
-
1088
- @staticmethod
1089
- def _wm_url_open_preset_type_items(_self, _context):
1090
- return [item for (item, _) in WM_OT_url_open_preset.preset_items]
1091
-
1092
- type: EnumProperty(
1093
- name="Site",
1094
- items=WM_OT_url_open_preset._wm_url_open_preset_type_items,
1095
- )
1096
-
1097
- def _url_from_bug(self, _context):
1098
- from _bpy_internal.system_info.url_prefill_runtime import url_from_blender
1099
- return url_from_blender()
1100
-
1101
- def _url_from_release_notes(self, _context):
1102
- return "https://www.blender.org/download/releases/{:d}-{:d}/".format(*bpy.app.version[:2])
1103
-
1104
- def _url_from_manual(self, _context):
1105
- return "https://docs.blender.org/manual/{:s}/{:d}.{:d}/".format(
1106
- bpy.utils.manual_language_code(), *bpy.app.version[:2],
1107
- )
1108
-
1109
- def _url_from_api(self, _context):
1110
- return "https://docs.blender.org/api/{:d}.{:d}/".format(*bpy.app.version[:2])
1111
-
1112
- # This list is: (enum_item, url) pairs.
1113
- # Allow dynamically extending.
1114
- preset_items = [
1115
- # Dynamic URL's.
1116
- (('BUG', iface_("Bug"),
1117
- tip_("Report a bug with pre-filled version information")),
1118
- _url_from_bug),
1119
- (('RELEASE_NOTES', iface_("Release Notes"),
1120
- tip_("Read about what's new in this version of Blender")),
1121
- _url_from_release_notes),
1122
- (('MANUAL', iface_("User Manual"),
1123
- tip_("The reference manual for this version of Blender")),
1124
- _url_from_manual),
1125
- (('API', iface_("Python API Reference"),
1126
- tip_("The API reference manual for this version of Blender")),
1127
- _url_from_api),
1128
-
1129
- # Static URL's.
1130
- (('FUND', iface_("Development Fund"),
1131
- tip_("The donation program to support maintenance and improvements")),
1132
- "https://fund.blender.org"),
1133
- (('BLENDER', "blender.org",
1134
- tip_("Blender's official web-site")),
1135
- "https://www.blender.org"),
1136
- (('CREDITS', iface_("Credits"),
1137
- tip_("Lists committers to Blender's source code")),
1138
- "https://www.blender.org/about/credits/"),
1139
- (('EXTENSIONS', iface_("Extensions Platform"),
1140
- tip_("Online directory of free and open source extensions")),
1141
- "https://extensions.blender.org/"),
1142
- ]
1143
-
1144
- def execute(self, context):
1145
- url = None
1146
- type = self.type
1147
- for (item_id, _, _), url in self.preset_items:
1148
- if item_id == type:
1149
- if callable(url):
1150
- url = url(self, context)
1151
- break
1152
-
1153
- return bpy.ops.wm.url_open(url=url)
1154
-
1155
-
1156
- class WM_OT_path_open(Operator):
1157
- """Open a path in a file browser"""
1158
- bl_idname = "wm.path_open"
1159
- bl_label = ""
1160
- bl_options = {'INTERNAL'}
1161
-
1162
- filepath: StringProperty(
1163
- subtype='FILE_PATH',
1164
- options={'SKIP_SAVE'},
1165
- )
1166
-
1167
- def execute(self, _context):
1168
- import sys
1169
- import os
1170
- import subprocess
1171
-
1172
- filepath = self.filepath
1173
-
1174
- if not filepath:
1175
- self.report({'ERROR'}, "File path was not set")
1176
- return {'CANCELLED'}
1177
-
1178
- filepath = bpy.path.abspath(filepath)
1179
- filepath = os.path.normpath(filepath)
1180
-
1181
- if not os.path.exists(filepath):
1182
- self.report({'ERROR'}, rpt_("File '{:s}' not found").format(filepath))
1183
- return {'CANCELLED'}
1184
-
1185
- if sys.platform[:3] == "win":
1186
- os.startfile(filepath)
1187
- elif sys.platform == "darwin":
1188
- subprocess.check_call(["open", filepath])
1189
- else:
1190
- try:
1191
- subprocess.check_call(["xdg-open", filepath])
1192
- except Exception:
1193
- # `xdg-open` *should* be supported by recent Gnome, KDE, XFCE.
1194
- import traceback
1195
- traceback.print_exc()
1196
-
1197
- return {'FINISHED'}
1198
-
1199
-
1200
- def _wm_doc_get_id(doc_id, *, do_url=True, url_prefix="", report=None):
1201
-
1202
- def operator_exists_pair(a, b):
1203
- # Not fast, this is only for docs.
1204
- return b in dir(getattr(bpy.ops, a))
1205
-
1206
- def operator_exists_single(a):
1207
- a, b = a.partition("_OT_")[::2]
1208
- return operator_exists_pair(a.lower(), b)
1209
-
1210
- id_split = doc_id.split(".")
1211
- url = rna = None
1212
-
1213
- if len(id_split) == 1: # rna, class
1214
- if do_url:
1215
- url = "{:s}/bpy.types.{:s}.html".format(url_prefix, id_split[0])
1216
- else:
1217
- rna = "bpy.types.{:s}".format(id_split[0])
1218
-
1219
- elif len(id_split) == 2: # rna, class.prop
1220
- class_name, class_prop = id_split
1221
-
1222
- # an operator (common case - just button referencing an op)
1223
- if operator_exists_pair(class_name, class_prop):
1224
- if do_url:
1225
- url = "{:s}/bpy.ops.{:s}.html#bpy.ops.{:s}.{:s}".format(url_prefix, class_name, class_name, class_prop)
1226
- else:
1227
- rna = "bpy.ops.{:s}.{:s}".format(class_name, class_prop)
1228
- elif operator_exists_single(class_name):
1229
- # note: ignore the prop name since we don't have a way to link into it
1230
- class_name, class_prop = class_name.split("_OT_", 1)
1231
- class_name = class_name.lower()
1232
- if do_url:
1233
- url = "{:s}/bpy.ops.{:s}.html#bpy.ops.{:s}.{:s}".format(url_prefix, class_name, class_name, class_prop)
1234
- else:
1235
- rna = "bpy.ops.{:s}.{:s}".format(class_name, class_prop)
1236
- else:
1237
- # An RNA setting, common case.
1238
-
1239
- # Check the built-in RNA types.
1240
- rna_class = getattr(bpy.types, class_name, None)
1241
- if rna_class is None:
1242
- # Check class for dynamically registered types.
1243
- rna_class = bpy.types.PropertyGroup.bl_rna_get_subclass_py(class_name)
1244
-
1245
- if rna_class is None:
1246
- rna_class = bpy.types.AddonPreferences.bl_rna_get_subclass_py(class_name)
1247
-
1248
- if rna_class is None:
1249
- if report is not None:
1250
- report({'ERROR'}, rpt_("Type \"{:s}\" cannot be found").format(class_name))
1251
- return None
1252
-
1253
- # Detect if this is a inherited member and use that name instead.
1254
- rna_parent = rna_class.bl_rna
1255
- rna_prop = rna_parent.properties.get(class_prop)
1256
- if rna_prop:
1257
- rna_parent = rna_parent.base
1258
- while rna_parent and rna_prop == rna_parent.properties.get(class_prop):
1259
- class_name = rna_parent.identifier
1260
- rna_parent = rna_parent.base
1261
-
1262
- if do_url:
1263
- url = "{:s}/bpy.types.{:s}.html#bpy.types.{:s}.{:s}".format(
1264
- url_prefix, class_name, class_name, class_prop,
1265
- )
1266
- else:
1267
- rna = "bpy.types.{:s}.{:s}".format(class_name, class_prop)
1268
- else:
1269
- # We assume this is custom property, only try to generate generic url/rna_id...
1270
- if do_url:
1271
- url = ("{:s}/bpy.types.bpy_struct.html#bpy.types.bpy_struct.items".format(url_prefix))
1272
- else:
1273
- rna = "bpy.types.bpy_struct"
1274
-
1275
- return url if do_url else rna
1276
-
1277
-
1278
- class WM_OT_doc_view_manual(Operator):
1279
- """Load online manual"""
1280
- bl_idname = "wm.doc_view_manual"
1281
- bl_label = "View Manual"
1282
-
1283
- doc_id: doc_id
1284
-
1285
- @staticmethod
1286
- def _find_reference(rna_id, url_mapping, *, verbose=True):
1287
- if verbose:
1288
- print("online manual check for: '{:s}'... ".format(rna_id))
1289
- from fnmatch import fnmatchcase
1290
- # XXX, for some reason all RNA ID's are stored lowercase
1291
- # Adding case into all ID's isn't worth the hassle so force lowercase.
1292
- rna_id = rna_id.lower()
1293
-
1294
- # NOTE: `fnmatch` in Python is slow as it translates the string to a regular-expression
1295
- # which needs to be compiled (as of Python 3.11), this is slow enough to cause a noticeable
1296
- # delay when opening manual links (approaching half a second).
1297
- #
1298
- # Resolve by matching characters that have a special meaning to `fnmatch`.
1299
- # The characters that can occur as the first special character are `*?[`.
1300
- # If any of these are used we must let `fnmatch` run its own matching logic.
1301
- # However, in most cases a literal prefix is used making it considerably faster
1302
- # to do a simple `startswith` check before performing a full match.
1303
- # An alternative solution could be to use `fnmatch` from C which is significantly
1304
- # faster than Python's, see !104581 for details.
1305
- import re
1306
- re_match_non_special = re.compile(r"^[^?\*\[]+").match
1307
-
1308
- for pattern, url_suffix in url_mapping:
1309
-
1310
- # Simple optimization, makes a big difference (over 50x speedup).
1311
- # Even when `non_special.end()` is zero (resulting in an empty-string),
1312
- # the `startswith` check succeeds so there is no need to check for an empty match.
1313
- non_special = re_match_non_special(pattern)
1314
- if non_special is None or not rna_id.startswith(pattern[:non_special.end()]):
1315
- continue
1316
- # End simple optimization.
1317
-
1318
- if fnmatchcase(rna_id, pattern):
1319
- if verbose:
1320
- print(" match found: '{:s}' --> '{:s}'".format(pattern, url_suffix))
1321
- return url_suffix
1322
- if verbose:
1323
- print("match not found")
1324
- return None
1325
-
1326
- @staticmethod
1327
- def _lookup_rna_url(rna_id, verbose=True):
1328
- for prefix, url_manual_mapping in bpy.utils.manual_map():
1329
- rna_ref = WM_OT_doc_view_manual._find_reference(rna_id, url_manual_mapping, verbose=verbose)
1330
- if rna_ref is not None:
1331
- url = prefix + rna_ref
1332
- return url
1333
-
1334
- def execute(self, _context):
1335
- rna_id = _wm_doc_get_id(self.doc_id, do_url=False, report=self.report)
1336
- if rna_id is None:
1337
- return {'CANCELLED'}
1338
-
1339
- url = self._lookup_rna_url(rna_id)
1340
-
1341
- if url is None:
1342
- self.report(
1343
- {'WARNING'},
1344
- rpt_("No reference available {!r}, "
1345
- "update info in '_rna_manual_reference.py' "
1346
- "or callback to bpy.utils.manual_map()").format(self.doc_id)
1347
- )
1348
- return {'CANCELLED'}
1349
- else:
1350
- return bpy.ops.wm.url_open(url=url)
1351
-
1352
-
1353
- class WM_OT_doc_view(Operator):
1354
- """Open online reference docs in a web browser"""
1355
- bl_idname = "wm.doc_view"
1356
- bl_label = "View Documentation"
1357
-
1358
- doc_id: doc_id
1359
- _prefix = "https://docs.blender.org/api/{:d}.{:d}".format(*bpy.app.version[:2])
1360
-
1361
- def execute(self, _context):
1362
- url = _wm_doc_get_id(self.doc_id, do_url=True, url_prefix=self._prefix, report=self.report)
1363
- if url is None:
1364
- return {'CANCELLED'}
1365
-
1366
- return bpy.ops.wm.url_open(url=url)
1367
-
1368
-
1369
- rna_path = StringProperty(
1370
- name="Property Edit",
1371
- description="Property data_path edit",
1372
- maxlen=1024,
1373
- options={'HIDDEN'},
1374
- )
1375
-
1376
- rna_custom_property_name = StringProperty(
1377
- name="Property Name",
1378
- description="Property name edit",
1379
- # Match `MAX_IDPROP_NAME - 1` in Blender's source.
1380
- maxlen=63,
1381
- )
1382
-
1383
- # Most useful entries of rna_enum_property_subtype_items:
1384
- rna_custom_property_type_items = (
1385
- ('FLOAT', "Float", "A single floating-point value"),
1386
- ('FLOAT_ARRAY', "Float Array", "An array of floating-point values"),
1387
- ('INT', "Integer", "A single integer"),
1388
- ('INT_ARRAY', "Integer Array", "An array of integers"),
1389
- ('BOOL', "Boolean", "A true or false value"),
1390
- ('BOOL_ARRAY', "Boolean Array", "An array of true or false values"),
1391
- ('STRING', "String", "A string value"),
1392
- ('DATA_BLOCK', "Data-Block", "A data-block value"),
1393
- ('PYTHON', "Python", "Edit a Python value directly, for unsupported property types"),
1394
- )
1395
-
1396
- rna_custom_property_subtype_none_item = (
1397
- 'NONE', n_("Plain Data", i18n_contexts.unit), n_("Data values without special behavior")
1398
- )
1399
-
1400
- rna_custom_property_subtype_number_items = (
1401
- rna_custom_property_subtype_none_item,
1402
- ('PIXEL', n_("Pixel", i18n_contexts.unit), n_("A distance on screen")),
1403
- ('PERCENTAGE', n_("Percentage", i18n_contexts.unit), n_("A percentage between 0 and 100")),
1404
- ('FACTOR', n_("Factor", i18n_contexts.unit), n_("A factor between 0.0 and 1.0")),
1405
- ('ANGLE', n_("Angle", i18n_contexts.unit), n_("A rotational value specified in radians")),
1406
- ('TIME_ABSOLUTE', n_("Time", i18n_contexts.unit), n_("Time specified in seconds")),
1407
- ('DISTANCE', n_("Distance", i18n_contexts.unit), n_("A distance between two points")),
1408
- ('POWER', n_("Power", i18n_contexts.unit), ""),
1409
- ('TEMPERATURE', n_("Temperature", i18n_contexts.unit), ""),
1410
- )
1411
-
1412
- rna_custom_property_subtype_vector_items = (
1413
- rna_custom_property_subtype_none_item,
1414
- ('COLOR', n_("Linear Color", i18n_contexts.unit), n_("Color in the linear space")),
1415
- ('COLOR_GAMMA', n_("Gamma-Corrected Color", i18n_contexts.unit), n_("Color in the gamma corrected space")),
1416
- ('TRANSLATION', n_("Translation", i18n_contexts.unit), ""),
1417
- ('DIRECTION', n_("Direction", i18n_contexts.unit), ""),
1418
- ('VELOCITY', n_("Velocity", i18n_contexts.unit), ""),
1419
- ('ACCELERATION', n_("Acceleration", i18n_contexts.unit), ""),
1420
- ('EULER', n_("Euler Angles", i18n_contexts.unit), n_("Euler rotation angles in radians")),
1421
- ('QUATERNION', n_("Quaternion Rotation", i18n_contexts.unit), n_("Quaternion rotation (affects NLA blending)")),
1422
- ('AXISANGLE', n_("Axis-Angle", i18n_contexts.unit), n_("Angle and axis to rotate around")),
1423
- ('XYZ', n_("XYZ", i18n_contexts.unit), ""),
1424
- )
1425
-
1426
- rna_id_type_items = tuple(
1427
- (item.identifier, item.name, item.description, item.icon, item.value)
1428
- for item in bpy.types.ID.bl_rna.properties["id_type"].enum_items
1429
- )
1430
-
1431
-
1432
- class WM_OT_properties_edit(Operator):
1433
- """Change a custom property's type, or adjust how it is displayed in the interface"""
1434
- bl_idname = "wm.properties_edit"
1435
- bl_label = "Edit Property"
1436
- # register only because invoke_props_popup requires.
1437
- bl_options = {'REGISTER', 'INTERNAL'}
1438
-
1439
- def subtype_items_cb(self, context):
1440
- match self.property_type:
1441
- case 'FLOAT':
1442
- return rna_custom_property_subtype_number_items
1443
- case 'FLOAT_ARRAY':
1444
- return rna_custom_property_subtype_vector_items
1445
- case _:
1446
- # Needed so 'NONE' can always be assigned.
1447
- return (
1448
- rna_custom_property_subtype_none_item,
1449
- )
1450
-
1451
- def property_type_update_cb(self, context):
1452
- self.subtype = 'NONE'
1453
-
1454
- # Common settings used for all property types. Generally, separate properties are used for each
1455
- # type to improve the experience when choosing UI data values.
1456
-
1457
- data_path: rna_path
1458
- property_name: rna_custom_property_name
1459
- property_type: EnumProperty(
1460
- name="Type",
1461
- items=rna_custom_property_type_items,
1462
- update=property_type_update_cb,
1463
- )
1464
- is_overridable_library: BoolProperty(
1465
- name="Library Overridable",
1466
- description="Allow the property to be overridden when the data-block is linked",
1467
- default=False,
1468
- )
1469
- description: StringProperty(
1470
- name="Description",
1471
- )
1472
-
1473
- # Shared for integer and string properties.
1474
-
1475
- use_soft_limits: BoolProperty(
1476
- name="Soft Limits",
1477
- description=(
1478
- "Limits the Property Value slider to a range, "
1479
- "values outside the range must be inputted numerically"
1480
- ),
1481
- )
1482
- array_length: IntProperty(
1483
- name="Array Length",
1484
- default=3,
1485
- min=1,
1486
- # 32 is the maximum size for RNA array properties.
1487
- max=32,
1488
- )
1489
-
1490
- # Integer properties.
1491
-
1492
- # This property stores values for both array and non-array properties.
1493
- default_int: IntVectorProperty(
1494
- name="Default Value",
1495
- size=32,
1496
- )
1497
- min_int: IntProperty(
1498
- name="Min",
1499
- default=-10000,
1500
- )
1501
- max_int: IntProperty(
1502
- name="Max",
1503
- default=10000,
1504
- )
1505
- soft_min_int: IntProperty(
1506
- name="Soft Min",
1507
- default=-10000,
1508
- )
1509
- soft_max_int: IntProperty(
1510
- name="Soft Max",
1511
- default=10000,
1512
- )
1513
- step_int: IntProperty(
1514
- name="Step",
1515
- min=1,
1516
- default=1,
1517
- )
1518
-
1519
- # Boolean properties.
1520
-
1521
- # This property stores values for both array and non-array properties.
1522
- default_bool: BoolVectorProperty(
1523
- name="Default Value",
1524
- size=32,
1525
- )
1526
-
1527
- # Float properties.
1528
-
1529
- # This property stores values for both array and non-array properties.
1530
- default_float: FloatVectorProperty(
1531
- name="Default Value",
1532
- size=32,
1533
- )
1534
- min_float: FloatProperty(
1535
- name="Min",
1536
- default=-10000.0,
1537
- )
1538
- max_float: FloatProperty(
1539
- name="Max",
1540
- default=-10000.0,
1541
- )
1542
- soft_min_float: FloatProperty(
1543
- name="Soft Min",
1544
- default=-10000.0,
1545
- )
1546
- soft_max_float: FloatProperty(
1547
- name="Soft Max",
1548
- default=-10000.0,
1549
- )
1550
- precision: IntProperty(
1551
- name="Precision",
1552
- default=3,
1553
- min=0,
1554
- max=8,
1555
- )
1556
- step_float: FloatProperty(
1557
- name="Step",
1558
- default=0.1,
1559
- min=0.001,
1560
- )
1561
- subtype: EnumProperty(
1562
- name="Subtype",
1563
- items=subtype_items_cb,
1564
- translation_context=i18n_contexts.unit,
1565
- )
1566
-
1567
- # String properties.
1568
-
1569
- default_string: StringProperty(
1570
- name="Default Value",
1571
- maxlen=1024,
1572
- )
1573
-
1574
- # Data-block properties.
1575
-
1576
- id_type: EnumProperty(
1577
- name="ID Type",
1578
- items=rna_id_type_items,
1579
- translation_context=i18n_contexts.id_id,
1580
- default='OBJECT',
1581
- )
1582
-
1583
- # Store the value converted to a string as a fallback for otherwise unsupported types.
1584
- eval_string: StringProperty(
1585
- name="Value",
1586
- description="Python value for unsupported custom property types",
1587
- )
1588
-
1589
- # Helper method to avoid repetitive code to retrieve a single value from sequences and non-sequences.
1590
- @staticmethod
1591
- def _convert_new_value_single(old_value, new_type):
1592
- if hasattr(old_value, "__len__") and len(old_value) > 0:
1593
- return new_type(old_value[0])
1594
- return new_type(old_value)
1595
-
1596
- # Helper method to create a list of a given value and type, using a sequence or non-sequence old value.
1597
- @staticmethod
1598
- def _convert_new_value_array(old_value, new_type, new_len):
1599
- if hasattr(old_value, "__len__"):
1600
- new_array = [new_type()] * new_len
1601
- for i in range(min(len(old_value), new_len)):
1602
- new_array[i] = new_type(old_value[i])
1603
- return new_array
1604
- return [new_type(old_value)] * new_len
1605
-
1606
- # Convert an old property for a string, avoiding unhelpful string representations for custom list types.
1607
- @staticmethod
1608
- def convert_custom_property_to_string(item, name):
1609
- # The IDProperty group view API currently doesn't have a "lookup" method.
1610
- for key, value in item.items():
1611
- if key == name:
1612
- old_value = value
1613
- break
1614
-
1615
- # In order to get a better string conversion, convert the property to a builtin sequence type first.
1616
- to_dict = getattr(old_value, "to_dict", None)
1617
- to_list = getattr(old_value, "to_list", None)
1618
- if to_dict:
1619
- old_value = to_dict()
1620
- elif to_list:
1621
- old_value = to_list()
1622
-
1623
- return str(old_value)
1624
-
1625
- # Retrieve the current type of the custom property on the RNA struct. Some properties like group properties
1626
- # can be created in the UI, but editing their meta-data isn't supported. In that case, return 'PYTHON'.
1627
- @staticmethod
1628
- def get_property_type(item, property_name):
1629
- from rna_prop_ui import (
1630
- rna_idprop_value_item_type,
1631
- )
1632
-
1633
- prop_value = item[property_name]
1634
-
1635
- prop_type, is_array = rna_idprop_value_item_type(prop_value)
1636
- if prop_type == int:
1637
- if is_array:
1638
- return 'INT_ARRAY'
1639
- return 'INT'
1640
- elif prop_type == float:
1641
- if is_array:
1642
- return 'FLOAT_ARRAY'
1643
- return 'FLOAT'
1644
- elif prop_type == bool:
1645
- if is_array:
1646
- return 'BOOL_ARRAY'
1647
- return 'BOOL'
1648
- elif prop_type == str:
1649
- if is_array:
1650
- return 'PYTHON'
1651
- return 'STRING'
1652
- elif prop_type == type(None) or issubclass(prop_type, bpy.types.ID):
1653
- if is_array:
1654
- return 'PYTHON'
1655
- return 'DATA_BLOCK'
1656
-
1657
- return 'PYTHON'
1658
-
1659
- # For `DATA_BLOCK` types, return the `id_type` or an empty string for non data-block types.
1660
- @staticmethod
1661
- def get_property_id_type(item, property_name):
1662
- ui_data = item.id_properties_ui(property_name)
1663
- rna_data = ui_data.as_dict()
1664
- # For non `DATA_BLOCK` types, the `id_type` wont exist.
1665
- return rna_data.get("id_type", "")
1666
-
1667
- def _init_subtype(self, subtype):
1668
- self.subtype = subtype or 'NONE'
1669
-
1670
- # Fill the operator's properties with the UI data properties from the existing custom property.
1671
- # Note that if the UI data doesn't exist yet, the access will create it and use those default values.
1672
- def _fill_old_ui_data(self, item, name):
1673
- ui_data = item.id_properties_ui(name)
1674
- rna_data = ui_data.as_dict()
1675
-
1676
- if self.property_type in {'FLOAT', 'FLOAT_ARRAY'}:
1677
- self.min_float = rna_data["min"]
1678
- self.max_float = rna_data["max"]
1679
- self.soft_min_float = rna_data["soft_min"]
1680
- self.soft_max_float = rna_data["soft_max"]
1681
- self.precision = rna_data["precision"]
1682
- self.step_float = rna_data["step"]
1683
- if rna_data["subtype"] in [item[0] for item in self.subtype_items_cb(None)]:
1684
- self.subtype = rna_data["subtype"]
1685
- self.use_soft_limits = (
1686
- self.min_float != self.soft_min_float or
1687
- self.max_float != self.soft_max_float
1688
- )
1689
- default = self._convert_new_value_array(rna_data["default"], float, 32)
1690
- self.default_float = default if isinstance(default, list) else [default] * 32
1691
- elif self.property_type in {'INT', 'INT_ARRAY'}:
1692
- self.min_int = rna_data["min"]
1693
- self.max_int = rna_data["max"]
1694
- self.soft_min_int = rna_data["soft_min"]
1695
- self.soft_max_int = rna_data["soft_max"]
1696
- self.step_int = rna_data["step"]
1697
- self.use_soft_limits = (
1698
- self.min_int != self.soft_min_int or
1699
- self.max_int != self.soft_max_int
1700
- )
1701
- self.default_int = self._convert_new_value_array(rna_data["default"], int, 32)
1702
- elif self.property_type == 'STRING':
1703
- self.default_string = rna_data["default"]
1704
- elif self.property_type in {'BOOL', 'BOOL_ARRAY'}:
1705
- self.default_bool = self._convert_new_value_array(rna_data["default"], bool, 32)
1706
- elif self.property_type == 'DATA_BLOCK':
1707
- self.id_type = rna_data["id_type"]
1708
-
1709
- if self.property_type in {'FLOAT_ARRAY', 'INT_ARRAY', 'BOOL_ARRAY'}:
1710
- self.array_length = len(item[name])
1711
-
1712
- # The dictionary does not contain the description if it was empty.
1713
- self.description = rna_data.get("description", "")
1714
-
1715
- self._init_subtype(self.subtype)
1716
- escaped_name = bpy.utils.escape_identifier(name)
1717
- self.is_overridable_library = bool(item.is_property_overridable_library('["{:s}"]'.format(escaped_name)))
1718
-
1719
- # When the operator chooses a different type than the original property,
1720
- # attempt to convert the old value to the new type for continuity and speed.
1721
- def _get_converted_value(self, item, name_old, prop_type_new, id_type_old, id_type_new):
1722
- if prop_type_new == 'INT':
1723
- return self._convert_new_value_single(item[name_old], int)
1724
- elif prop_type_new == 'FLOAT':
1725
- return self._convert_new_value_single(item[name_old], float)
1726
- elif prop_type_new == 'BOOL':
1727
- return self._convert_new_value_single(item[name_old], bool)
1728
- elif prop_type_new == 'INT_ARRAY':
1729
- prop_type_old = self.get_property_type(item, name_old)
1730
- if prop_type_old in {'INT', 'FLOAT', 'INT_ARRAY', 'FLOAT_ARRAY', 'BOOL_ARRAY'}:
1731
- return self._convert_new_value_array(item[name_old], int, self.array_length)
1732
- elif prop_type_new == 'FLOAT_ARRAY':
1733
- prop_type_old = self.get_property_type(item, name_old)
1734
- if prop_type_old in {'INT', 'FLOAT', 'FLOAT_ARRAY', 'INT_ARRAY', 'BOOL_ARRAY'}:
1735
- return self._convert_new_value_array(item[name_old], float, self.array_length)
1736
- elif prop_type_new == 'BOOL_ARRAY':
1737
- prop_type_old = self.get_property_type(item, name_old)
1738
- if prop_type_old in {'INT', 'FLOAT', 'FLOAT_ARRAY', 'INT_ARRAY', 'BOOL_ARRAY'}:
1739
- return self._convert_new_value_array(item[name_old], bool, self.array_length)
1740
- else:
1741
- return [False] * self.array_length
1742
- elif prop_type_new == 'STRING':
1743
- return self.convert_custom_property_to_string(item, name_old)
1744
- elif prop_type_new == 'DATA_BLOCK':
1745
- if id_type_old != id_type_new:
1746
- return None
1747
- old_value = item[name_old]
1748
- if not isinstance(old_value, bpy.types.ID):
1749
- return None
1750
- return old_value
1751
-
1752
- # If all else fails, create an empty string property. That should avoid errors later on anyway.
1753
- return ""
1754
-
1755
- # Any time the target type is changed in the dialog, it's helpful to convert the UI data values
1756
- # to the new type as well, when possible, currently this only applies for floats and ints.
1757
- def _convert_old_ui_data_to_new_type(self, prop_type_old, prop_type_new):
1758
- if prop_type_new in {'INT', 'INT_ARRAY'} and prop_type_old in {'FLOAT', 'FLOAT_ARRAY'}:
1759
- self.min_int = int(self.min_float)
1760
- self.max_int = int(self.max_float)
1761
- self.soft_min_int = int(self.soft_min_float)
1762
- self.soft_max_int = int(self.soft_max_float)
1763
- self.default_int = self._convert_new_value_array(self.default_float, int, 32)
1764
- elif prop_type_new in {'FLOAT', 'FLOAT_ARRAY'} and prop_type_old in {'INT', 'INT_ARRAY'}:
1765
- self.min_float = float(self.min_int)
1766
- self.max_float = float(self.max_int)
1767
- self.soft_min_float = float(self.soft_min_int)
1768
- self.soft_max_float = float(self.soft_max_int)
1769
- self.default_float = self._convert_new_value_array(self.default_int, float, 32)
1770
- elif prop_type_new in {'BOOL', 'BOOL_ARRAY'} and prop_type_old in {'INT', 'INT_ARRAY'}:
1771
- self.default_bool = self._convert_new_value_array(self.default_int, bool, 32)
1772
-
1773
- # Don't convert between string and float/int defaults here, it's not expected like the other conversions.
1774
-
1775
- # Fill the property's UI data with the values chosen in the operator.
1776
- def _create_ui_data_for_new_prop(self, item, name, prop_type_new):
1777
- if prop_type_new in {'INT', 'INT_ARRAY'}:
1778
- ui_data = item.id_properties_ui(name)
1779
- ui_data.update(
1780
- min=self.min_int,
1781
- max=self.max_int,
1782
- soft_min=self.soft_min_int if self.use_soft_limits else self.min_int,
1783
- soft_max=self.soft_max_int if self.use_soft_limits else self.max_int,
1784
- step=self.step_int,
1785
- default=self.default_int[0] if prop_type_new == 'INT' else self.default_int[:self.array_length],
1786
- description=self.description,
1787
- )
1788
- elif prop_type_new in {'BOOL', 'BOOL_ARRAY'}:
1789
- ui_data = item.id_properties_ui(name)
1790
- ui_data.update(
1791
- default=self.default_bool[0] if prop_type_new == 'BOOL' else self.default_bool[:self.array_length],
1792
- description=self.description,
1793
- )
1794
- elif prop_type_new in {'FLOAT', 'FLOAT_ARRAY'}:
1795
- ui_data = item.id_properties_ui(name)
1796
- ui_data.update(
1797
- min=self.min_float,
1798
- max=self.max_float,
1799
- soft_min=self.soft_min_float if self.use_soft_limits else self.min_float,
1800
- soft_max=self.soft_max_float if self.use_soft_limits else self.max_float,
1801
- step=self.step_float,
1802
- precision=self.precision,
1803
- default=self.default_float[0] if prop_type_new == 'FLOAT' else self.default_float[:self.array_length],
1804
- description=self.description,
1805
- subtype=self.subtype,
1806
- )
1807
- elif prop_type_new == 'STRING':
1808
- ui_data = item.id_properties_ui(name)
1809
- ui_data.update(
1810
- default=self.default_string,
1811
- description=self.description,
1812
- )
1813
- elif prop_type_new == 'DATA_BLOCK':
1814
- ui_data = item.id_properties_ui(name)
1815
- ui_data.update(
1816
- description=self.description,
1817
- id_type=self.id_type,
1818
- )
1819
-
1820
- escaped_name = bpy.utils.escape_identifier(name)
1821
- item.property_overridable_library_set('["{:s}"]'.format(escaped_name), self.is_overridable_library)
1822
-
1823
- def _update_blender_for_prop_change(self, context, item, name, prop_type_old, prop_type_new):
1824
- from bpy_extras import anim_utils
1825
- from rna_prop_ui import (
1826
- rna_idprop_ui_prop_update,
1827
- )
1828
-
1829
- rna_idprop_ui_prop_update(item, name)
1830
-
1831
- # If we have changed the type of the property, update its potential anim curves!
1832
- if prop_type_old != prop_type_new:
1833
- escaped_name = bpy.utils.escape_identifier(name)
1834
- data_path = '["{:s}"]'.format(escaped_name)
1835
- done = set()
1836
-
1837
- def _update(fcurves):
1838
- for fcu in fcurves:
1839
- if fcu not in done and fcu.data_path == data_path:
1840
- fcu.update_autoflags(item)
1841
- done.add(fcu)
1842
-
1843
- def _update_strips(strips):
1844
- for st in strips:
1845
- if st.type == 'CLIP':
1846
- channelbag = anim_utils.action_get_channelbag_for_slot(st.action, st.action_slot)
1847
- if not channelbag:
1848
- continue
1849
- _update(channelbag.fcurves)
1850
- elif st.type == 'META':
1851
- _update_strips(st.strips)
1852
-
1853
- adt = getattr(item, "animation_data", None)
1854
- if adt is not None:
1855
- channelbag = anim_utils.action_get_channelbag_for_slot(adt.action, adt.action_slot)
1856
- if channelbag:
1857
- _update(channelbag.fcurves)
1858
- if adt.drivers:
1859
- _update(adt.drivers)
1860
- if adt.nla_tracks:
1861
- for nt in adt.nla_tracks:
1862
- _update_strips(nt.strips)
1863
-
1864
- # Otherwise existing buttons which reference freed memory may crash Blender (#26510).
1865
- for win in context.window_manager.windows:
1866
- for area in win.screen.areas:
1867
- area.tag_redraw()
1868
-
1869
- def execute(self, context):
1870
- name_old = getattr(self, "_old_prop_name", [None])[0]
1871
- if name_old is None:
1872
- self.report({'ERROR'}, "Direct execution not supported")
1873
- return {'CANCELLED'}
1874
-
1875
- data_path = self.data_path
1876
- name = self.property_name
1877
-
1878
- item = eval("context.{:s}".format(data_path))
1879
- if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference):
1880
- self.report({'ERROR'}, "Cannot edit properties from override data")
1881
- return {'CANCELLED'}
1882
-
1883
- prop_type_old = self.get_property_type(item, name_old)
1884
- prop_type_new = self.property_type
1885
- self._old_prop_name[:] = [name]
1886
-
1887
- id_type_old = self.get_property_id_type(item, name_old)
1888
- id_type_new = self.id_type
1889
-
1890
- if prop_type_new == 'PYTHON':
1891
- try:
1892
- new_value = eval(self.eval_string)
1893
- except Exception as ex:
1894
- self.report({'WARNING'}, rpt_("Python evaluation failed: {:s}").format(str(ex)))
1895
- return {'CANCELLED'}
1896
- try:
1897
- item[name] = new_value
1898
- except Exception as ex:
1899
- self.report({'ERROR'}, rpt_("Failed to assign value: {:s}").format(str(ex)))
1900
- return {'CANCELLED'}
1901
- if name_old != name:
1902
- del item[name_old]
1903
- else:
1904
- new_value = self._get_converted_value(item, name_old, prop_type_new, id_type_old, id_type_new)
1905
- del item[name_old]
1906
- item[name] = new_value
1907
-
1908
- self._create_ui_data_for_new_prop(item, name, prop_type_new)
1909
-
1910
- self._update_blender_for_prop_change(context, item, name, prop_type_old, prop_type_new)
1911
-
1912
- if name_old != name:
1913
- adt = getattr(item, "animation_data", None)
1914
- if adt is not None:
1915
- adt.fix_paths_rename_all(prefix="", old_name=name_old, new_name=name)
1916
-
1917
- return {'FINISHED'}
1918
-
1919
- def invoke(self, context, _event):
1920
- data_path = self.data_path
1921
- if not data_path:
1922
- self.report({'ERROR'}, "Data path not set")
1923
- return {'CANCELLED'}
1924
-
1925
- name = self.property_name
1926
-
1927
- self._old_prop_name = [name]
1928
-
1929
- item = eval("context.{:s}".format(data_path))
1930
- if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference):
1931
- self.report({'ERROR'}, "Properties from override data cannot be edited")
1932
- return {'CANCELLED'}
1933
-
1934
- # Set operator's property type with the type of the existing property, to display the right settings.
1935
- old_type = self.get_property_type(item, name)
1936
- self.property_type = old_type
1937
- self.last_property_type = old_type
1938
-
1939
- # So that the operator can do something for unsupported properties, change the property into
1940
- # a string, just for editing in the dialog. When the operator executes, it will be converted back
1941
- # into a python value. Always do this conversion, in case the Python property edit type is selected.
1942
- self.eval_string = self.convert_custom_property_to_string(item, name)
1943
-
1944
- if old_type != 'PYTHON':
1945
- self._fill_old_ui_data(item, name)
1946
-
1947
- wm = context.window_manager
1948
- return wm.invoke_props_dialog(self)
1949
-
1950
- def check(self, context):
1951
- changed = False
1952
-
1953
- # In order to convert UI data between types for type changes before the operator has actually executed,
1954
- # compare against the type the last time the check method was called (the last time a value was edited).
1955
- if self.property_type != self.last_property_type:
1956
- self._convert_old_ui_data_to_new_type(self.last_property_type, self.property_type)
1957
- changed = True
1958
-
1959
- # Make sure that min is less than max, soft range is inside hard range, etc.
1960
- if self.property_type in {'FLOAT', 'FLOAT_ARRAY'}:
1961
- if self.min_float > self.max_float:
1962
- self.min_float, self.max_float = self.max_float, self.min_float
1963
- changed = True
1964
- if self.use_soft_limits:
1965
- if self.soft_min_float > self.soft_max_float:
1966
- self.soft_min_float, self.soft_max_float = self.soft_max_float, self.soft_min_float
1967
- changed = True
1968
- if self.soft_max_float > self.max_float:
1969
- self.soft_max_float = self.max_float
1970
- changed = True
1971
- if self.soft_min_float < self.min_float:
1972
- self.soft_min_float = self.min_float
1973
- changed = True
1974
- elif self.property_type in {'INT', 'INT_ARRAY'}:
1975
- if self.min_int > self.max_int:
1976
- self.min_int, self.max_int = self.max_int, self.min_int
1977
- changed = True
1978
- if self.use_soft_limits:
1979
- if self.soft_min_int > self.soft_max_int:
1980
- self.soft_min_int, self.soft_max_int = self.soft_max_int, self.soft_min_int
1981
- changed = True
1982
- if self.soft_max_int > self.max_int:
1983
- self.soft_max_int = self.max_int
1984
- changed = True
1985
- if self.soft_min_int < self.min_int:
1986
- self.soft_min_int = self.min_int
1987
- changed = True
1988
-
1989
- self.last_property_type = self.property_type
1990
-
1991
- return changed
1992
-
1993
- def draw(self, _context):
1994
- layout = self.layout
1995
-
1996
- layout.use_property_split = True
1997
- layout.use_property_decorate = False
1998
-
1999
- layout.prop(self, "property_type")
2000
- layout.prop(self, "property_name")
2001
-
2002
- if self.property_type in {'FLOAT', 'FLOAT_ARRAY'}:
2003
- if self.property_type == 'FLOAT_ARRAY':
2004
- layout.prop(self, "array_length")
2005
- col = layout.column(align=True)
2006
- col.prop(self, "default_float", index=0, text="Default")
2007
- for i in range(1, self.array_length):
2008
- col.prop(self, "default_float", index=i, text=" ")
2009
- else:
2010
- layout.prop(self, "default_float", index=0)
2011
-
2012
- col = layout.column(align=True)
2013
- col.prop(self, "min_float")
2014
- col.prop(self, "max_float")
2015
-
2016
- col = layout.column()
2017
- col.prop(self, "use_soft_limits")
2018
-
2019
- col = layout.column(align=True)
2020
- col.enabled = self.use_soft_limits
2021
- col.prop(self, "soft_min_float", text="Soft Min")
2022
- col.prop(self, "soft_max_float", text="Max")
2023
-
2024
- layout.prop(self, "step_float")
2025
- layout.prop(self, "precision")
2026
-
2027
- layout.prop(self, "subtype")
2028
- elif self.property_type in {'INT', 'INT_ARRAY'}:
2029
- if self.property_type == 'INT_ARRAY':
2030
- layout.prop(self, "array_length")
2031
- col = layout.column(align=True)
2032
- col.prop(self, "default_int", index=0, text="Default")
2033
- for i in range(1, self.array_length):
2034
- col.prop(self, "default_int", index=i, text=" ")
2035
- else:
2036
- layout.prop(self, "default_int", index=0)
2037
-
2038
- col = layout.column(align=True)
2039
- col.prop(self, "min_int")
2040
- col.prop(self, "max_int")
2041
-
2042
- col = layout.column()
2043
- col.prop(self, "use_soft_limits")
2044
-
2045
- col = layout.column(align=True)
2046
- col.enabled = self.use_soft_limits
2047
- col.prop(self, "soft_min_int", text="Soft Min")
2048
- col.prop(self, "soft_max_int", text="Max")
2049
-
2050
- layout.prop(self, "step_int")
2051
- elif self.property_type in {'BOOL', 'BOOL_ARRAY'}:
2052
- if self.property_type == 'BOOL_ARRAY':
2053
- layout.prop(self, "array_length")
2054
- col = layout.column(align=True)
2055
- col.prop(self, "default_bool", index=0, text="Default")
2056
- for i in range(1, self.array_length):
2057
- col.prop(self, "default_bool", index=i, text=" ")
2058
- else:
2059
- layout.prop(self, "default_bool", index=0)
2060
- elif self.property_type == 'STRING':
2061
- layout.prop(self, "default_string")
2062
- elif self.property_type == 'DATA_BLOCK':
2063
- layout.prop(self, "id_type")
2064
-
2065
- if self.property_type == 'PYTHON':
2066
- layout.prop(self, "eval_string")
2067
- else:
2068
- layout.prop(self, "description")
2069
-
2070
- layout.prop(self, "is_overridable_library")
2071
-
2072
-
2073
- # Edit the value of a custom property with the given name on the RNA struct at the given data path.
2074
- # For supported types, this simply acts as a convenient way to create a popup for a specific property
2075
- # and draws the custom property value directly in the popup. For types like groups which can't be edited
2076
- # directly with buttons, instead convert the value to a string, evaluate the changed string when executing.
2077
- class WM_OT_properties_edit_value(Operator):
2078
- """Edit the value of a custom property"""
2079
- bl_idname = "wm.properties_edit_value"
2080
- bl_label = "Edit Property Value"
2081
- # register only because invoke_props_popup requires.
2082
- bl_options = {'REGISTER', 'INTERNAL'}
2083
-
2084
- data_path: rna_path
2085
- property_name: rna_custom_property_name
2086
-
2087
- # Store the value converted to a string as a fallback for otherwise unsupported types.
2088
- eval_string: StringProperty(
2089
- name="Value",
2090
- description="Value for custom property types that can only be edited as a Python expression",
2091
- )
2092
-
2093
- def execute(self, context):
2094
- if self.eval_string:
2095
- rna_item = eval("context.{:s}".format(self.data_path))
2096
- try:
2097
- new_value = eval(self.eval_string)
2098
- except Exception as ex:
2099
- self.report({'WARNING'}, "Python evaluation failed: " + str(ex))
2100
- return {'CANCELLED'}
2101
- rna_item[self.property_name] = new_value
2102
- return {'FINISHED'}
2103
-
2104
- def invoke(self, context, _event):
2105
- rna_item = eval("context.{:s}".format(self.data_path))
2106
-
2107
- if WM_OT_properties_edit.get_property_type(rna_item, self.property_name) == 'PYTHON':
2108
- self.eval_string = WM_OT_properties_edit.convert_custom_property_to_string(rna_item, self.property_name)
2109
- else:
2110
- self.eval_string = ""
2111
-
2112
- wm = context.window_manager
2113
- return wm.invoke_props_dialog(self)
2114
-
2115
- def draw(self, context):
2116
- from bpy.utils import escape_identifier
2117
-
2118
- rna_item = eval("context.{:s}".format(self.data_path))
2119
-
2120
- layout = self.layout
2121
- if WM_OT_properties_edit.get_property_type(rna_item, self.property_name) == 'PYTHON':
2122
- layout.prop(self, "eval_string")
2123
- else:
2124
- col = layout.column(align=True)
2125
- col.prop(rna_item, '["{:s}"]'.format(escape_identifier(self.property_name)), text="")
2126
-
2127
-
2128
- class WM_OT_properties_add(Operator):
2129
- """Add your own property to the data-block"""
2130
- bl_idname = "wm.properties_add"
2131
- bl_label = "Add Property"
2132
- bl_options = {'UNDO', 'INTERNAL'}
2133
-
2134
- data_path: rna_path
2135
-
2136
- def execute(self, context):
2137
- from rna_prop_ui import (
2138
- rna_idprop_ui_create,
2139
- )
2140
-
2141
- data_path = self.data_path
2142
- item = eval("context.{:s}".format(data_path))
2143
-
2144
- if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference):
2145
- self.report({'ERROR'}, "Cannot add properties to override data")
2146
- return {'CANCELLED'}
2147
-
2148
- def unique_name(names):
2149
- prop = "prop"
2150
- prop_new = prop
2151
- i = 1
2152
- while prop_new in names:
2153
- prop_new = prop + str(i)
2154
- i += 1
2155
-
2156
- return prop_new
2157
-
2158
- prop = unique_name({
2159
- *item.keys(),
2160
- *type(item).bl_rna.properties.keys(),
2161
- })
2162
-
2163
- rna_idprop_ui_create(item, prop, default=1.0)
2164
-
2165
- return {'FINISHED'}
2166
-
2167
-
2168
- class WM_OT_properties_context_change(Operator):
2169
- """Jump to a different tab inside the properties editor"""
2170
- bl_idname = "wm.properties_context_change"
2171
- bl_label = ""
2172
- bl_options = {'INTERNAL'}
2173
-
2174
- context: StringProperty(
2175
- name="Context",
2176
- maxlen=64,
2177
- )
2178
-
2179
- def execute(self, context):
2180
- context.space_data.context = self.context
2181
- return {'FINISHED'}
2182
-
2183
-
2184
- class WM_OT_properties_remove(Operator):
2185
- """Internal use (edit a property data_path)"""
2186
- bl_idname = "wm.properties_remove"
2187
- bl_label = "Remove Property"
2188
- bl_options = {'UNDO', 'INTERNAL'}
2189
-
2190
- data_path: rna_path
2191
- property_name: rna_custom_property_name
2192
-
2193
- def execute(self, context):
2194
- from rna_prop_ui import (
2195
- rna_idprop_ui_prop_update,
2196
- )
2197
- data_path = self.data_path
2198
- item = eval("context.{:s}".format(data_path))
2199
-
2200
- if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference):
2201
- self.report({'ERROR'}, "Cannot remove properties from override data")
2202
- return {'CANCELLED'}
2203
-
2204
- name = self.property_name
2205
- rna_idprop_ui_prop_update(item, name)
2206
- del item[name]
2207
-
2208
- return {'FINISHED'}
2209
-
2210
-
2211
- class WM_OT_sysinfo(Operator):
2212
- """Generate system information, saved into a text file"""
2213
-
2214
- bl_idname = "wm.sysinfo"
2215
- bl_label = "Save System Info"
2216
-
2217
- filepath: StringProperty(
2218
- subtype='FILE_PATH',
2219
- options={'SKIP_SAVE'},
2220
- )
2221
-
2222
- def execute(self, _context):
2223
- from _bpy_internal.system_info.text_generate_runtime import write
2224
- with open(self.filepath, "w", encoding="utf-8") as output:
2225
- try:
2226
- write(output)
2227
- except Exception as ex:
2228
- # Not expected to occur, simply forward the exception.
2229
- self.report({'ERROR'}, str(ex))
2230
-
2231
- # Also write into the file (to avoid confusion).
2232
- output.write("ERROR: {:s}\n".format(str(ex)))
2233
- return {'CANCELLED'}
2234
-
2235
- return {'FINISHED'}
2236
-
2237
- def invoke(self, context, _event):
2238
- import os
2239
-
2240
- if not self.filepath:
2241
- self.filepath = os.path.join(
2242
- os.path.expanduser("~"), "system-info.txt")
2243
-
2244
- wm = context.window_manager
2245
- wm.fileselect_add(self)
2246
- return {'RUNNING_MODAL'}
2247
-
2248
-
2249
- class WM_OT_operator_cheat_sheet(Operator):
2250
- """List all the operators in a text-block, useful for scripting"""
2251
- bl_idname = "wm.operator_cheat_sheet"
2252
- bl_label = "Operator Cheat Sheet"
2253
-
2254
- def execute(self, _context):
2255
- op_strings = []
2256
- tot = 0
2257
- for op_module_name in dir(bpy.ops):
2258
- op_module = getattr(bpy.ops, op_module_name)
2259
- for op_submodule_name in dir(op_module):
2260
- op = getattr(op_module, op_submodule_name)
2261
- text = repr(op)
2262
- if text.split("\n")[-1].startswith("bpy.ops."):
2263
- op_strings.append(text)
2264
- tot += 1
2265
-
2266
- op_strings.append('')
2267
-
2268
- textblock = bpy.data.texts.new("OperatorList.txt")
2269
- textblock.write("# {:d} Operators\n\n".format(tot))
2270
- textblock.write("\n".join(op_strings))
2271
- self.report({'INFO'}, "See OperatorList.txt text block")
2272
- return {'FINISHED'}
2273
-
2274
-
2275
- # -----------------------------------------------------------------------------
2276
- # Add-on Operators
2277
-
2278
- class WM_OT_owner_enable(Operator):
2279
- """Enable add-on for workspace"""
2280
- bl_idname = "wm.owner_enable"
2281
- bl_label = "Enable Add-on"
2282
-
2283
- owner_id: StringProperty(
2284
- name="UI Tag",
2285
- )
2286
-
2287
- def execute(self, context):
2288
- workspace = context.workspace
2289
- workspace.owner_ids.new(self.owner_id)
2290
- return {'FINISHED'}
2291
-
2292
-
2293
- class WM_OT_owner_disable(Operator):
2294
- """Disable add-on for workspace"""
2295
- bl_idname = "wm.owner_disable"
2296
- bl_label = "Disable Add-on"
2297
-
2298
- owner_id: StringProperty(
2299
- name="UI Tag",
2300
- )
2301
-
2302
- def execute(self, context):
2303
- workspace = context.workspace
2304
- owner_id = workspace.owner_ids[self.owner_id]
2305
- workspace.owner_ids.remove(owner_id)
2306
- return {'FINISHED'}
2307
-
2308
-
2309
- class WM_OT_tool_set_by_id(Operator):
2310
- """Set the tool by name (for key-maps)"""
2311
- bl_idname = "wm.tool_set_by_id"
2312
- bl_label = "Set Tool by Name"
2313
-
2314
- name: StringProperty(
2315
- name="Identifier",
2316
- description="Identifier of the tool",
2317
- )
2318
- cycle: BoolProperty(
2319
- name="Cycle",
2320
- description="Cycle through tools in this group",
2321
- default=False,
2322
- options={'SKIP_SAVE'},
2323
- )
2324
- as_fallback: BoolProperty(
2325
- name="Set Fallback",
2326
- description="Set the fallback tool instead of the primary tool",
2327
- default=False,
2328
- options={'SKIP_SAVE', 'HIDDEN'},
2329
- )
2330
-
2331
- space_type: rna_space_type_prop
2332
-
2333
- @staticmethod
2334
- def space_type_from_operator(op, context):
2335
- if op.properties.is_property_set("space_type"):
2336
- space_type = op.space_type
2337
- else:
2338
- space = context.space_data
2339
- if space is None:
2340
- op.report({'WARNING'}, rpt_("Tool cannot be set with an empty space"))
2341
- return None
2342
- space_type = space.type
2343
- return space_type
2344
-
2345
- def execute(self, context):
2346
- from bl_ui.space_toolsystem_common import (
2347
- activate_by_id,
2348
- activate_by_id_or_cycle,
2349
- )
2350
-
2351
- if (space_type := WM_OT_tool_set_by_id.space_type_from_operator(self, context)) is None:
2352
- return {'CANCELLED'}
2353
-
2354
- fn = activate_by_id_or_cycle if self.cycle else activate_by_id
2355
- if fn(context, space_type, self.name, as_fallback=self.as_fallback):
2356
- if self.as_fallback:
2357
- tool_settings = context.tool_settings
2358
- tool_settings.workspace_tool_type = 'FALLBACK'
2359
- return {'FINISHED'}
2360
- else:
2361
- self.report({'WARNING'}, rpt_("Tool {!r} not found for space {!r}").format(self.name, space_type))
2362
- return {'CANCELLED'}
2363
-
2364
-
2365
- class WM_OT_tool_set_by_index(Operator):
2366
- """Set the tool by index (for key-maps)"""
2367
- bl_idname = "wm.tool_set_by_index"
2368
- bl_label = "Set Tool by Index"
2369
- index: IntProperty(
2370
- name="Index in Toolbar",
2371
- default=0,
2372
- )
2373
- cycle: BoolProperty(
2374
- name="Cycle",
2375
- description="Cycle through tools in this group",
2376
- default=False,
2377
- options={'SKIP_SAVE'},
2378
- )
2379
-
2380
- expand: BoolProperty(
2381
- description="Include tool subgroups",
2382
- default=True,
2383
- options={'SKIP_SAVE'},
2384
- )
2385
-
2386
- as_fallback: BoolProperty(
2387
- name="Set Fallback",
2388
- description="Set the fallback tool instead of the primary",
2389
- default=False,
2390
- options={'SKIP_SAVE', 'HIDDEN'},
2391
- )
2392
-
2393
- space_type: rna_space_type_prop
2394
-
2395
- def execute(self, context):
2396
- from bl_ui.space_toolsystem_common import (
2397
- activate_by_id,
2398
- activate_by_id_or_cycle,
2399
- item_from_index_active,
2400
- item_from_flat_index,
2401
- )
2402
-
2403
- if (space_type := WM_OT_tool_set_by_id.space_type_from_operator(self, context)) is None:
2404
- return {'CANCELLED'}
2405
-
2406
- fn = item_from_flat_index if self.expand else item_from_index_active
2407
- item = fn(context, space_type, self.index)
2408
- if item is None:
2409
- # Don't report, since the number of tools may change.
2410
- return {'CANCELLED'}
2411
-
2412
- # Same as: WM_OT_tool_set_by_id
2413
- fn = activate_by_id_or_cycle if self.cycle else activate_by_id
2414
- if fn(context, space_type, item.idname, as_fallback=self.as_fallback):
2415
- if self.as_fallback:
2416
- tool_settings = context.tool_settings
2417
- tool_settings.workspace_tool_type = 'FALLBACK'
2418
- return {'FINISHED'}
2419
- else:
2420
- # Since we already have the tool, this can't happen.
2421
- raise Exception("Internal error setting tool")
2422
-
2423
-
2424
- class WM_OT_tool_set_by_brush_type(Operator):
2425
- """Look up the most appropriate tool for the given brush type and activate that"""
2426
- bl_idname = "wm.tool_set_by_brush_type"
2427
- bl_label = "Set Tool by Brush Type"
2428
-
2429
- brush_type: StringProperty(
2430
- name="Brush Type",
2431
- description="Brush type identifier for which the most appropriate tool will be looked up",
2432
- )
2433
-
2434
- space_type: rna_space_type_prop
2435
-
2436
- def execute(self, context):
2437
- from bl_ui.space_toolsystem_common import (
2438
- ToolSelectPanelHelper,
2439
- activate_by_id
2440
- )
2441
-
2442
- if (space_type := WM_OT_tool_set_by_id.space_type_from_operator(self, context)) is None:
2443
- return {'CANCELLED'}
2444
-
2445
- tool_helper_cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
2446
- # Lookup a tool with a matching brush type (ignoring some specific ones).
2447
- tool_id = "builtin.brush"
2448
- for item in ToolSelectPanelHelper._tools_flatten(
2449
- tool_helper_cls.tools_from_context(context, mode=context.mode),
2450
- ):
2451
- if item is None:
2452
- continue
2453
-
2454
- # Never automatically activate these tools, they use a brush type that we want to use
2455
- # the main brush for (e.g. grease pencil primitive tools use 'DRAW' brush type, which
2456
- # is the most general one).
2457
- if item.idname in {
2458
- "builtin.arc",
2459
- "builtin.curve",
2460
- "builtin.line",
2461
- "builtin.box",
2462
- "builtin.circle",
2463
- "builtin.polyline",
2464
- }:
2465
- continue
2466
-
2467
- if item.options is not None and ('USE_BRUSHES' in item.options) and item.brush_type is not None:
2468
- if item.brush_type == self.brush_type:
2469
- tool_id = item.idname
2470
- break
2471
-
2472
- if activate_by_id(context, space_type, tool_id):
2473
- return {'FINISHED'}
2474
- else:
2475
- self.report({'WARNING'}, rpt_("Tool {!r} not found for space {!r}").format(tool_id, space_type))
2476
- return {'CANCELLED'}
2477
-
2478
-
2479
- class WM_OT_toolbar(Operator):
2480
- bl_idname = "wm.toolbar"
2481
- bl_label = "Toolbar"
2482
-
2483
- @classmethod
2484
- def poll(cls, context):
2485
- return context.space_data is not None
2486
-
2487
- @staticmethod
2488
- def keymap_from_toolbar(context, space_type, *, use_fallback_keys=True, use_reset=True):
2489
- from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
2490
- from bl_keymap_utils import keymap_from_toolbar
2491
-
2492
- cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
2493
- if cls is None:
2494
- return None, None
2495
-
2496
- return cls, keymap_from_toolbar.generate(
2497
- context,
2498
- space_type,
2499
- use_fallback_keys=use_fallback_keys,
2500
- use_reset=use_reset,
2501
- )
2502
-
2503
- def execute(self, context):
2504
- space_type = context.space_data.type
2505
- cls, keymap = self.keymap_from_toolbar(context, space_type)
2506
- if keymap is None:
2507
- return {'CANCELLED'}
2508
-
2509
- def draw_menu(popover, context):
2510
- layout = popover.layout
2511
- layout.operator_context = 'INVOKE_REGION_WIN'
2512
- cls.draw_cls(layout, context, detect_layout=False, scale_y=1.0)
2513
-
2514
- wm = context.window_manager
2515
- wm.popover(draw_menu, ui_units_x=8, keymap=keymap)
2516
- return {'FINISHED'}
2517
-
2518
-
2519
- class WM_OT_toolbar_fallback_pie(Operator):
2520
- bl_idname = "wm.toolbar_fallback_pie"
2521
- bl_label = "Fallback Tool Pie Menu"
2522
-
2523
- @classmethod
2524
- def poll(cls, context):
2525
- return context.space_data is not None
2526
-
2527
- def invoke(self, context, event):
2528
- from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
2529
- space_type = context.space_data.type
2530
- cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
2531
- if cls is None:
2532
- return {'PASS_THROUGH'}
2533
-
2534
- # It's possible we don't have the fallback tool available.
2535
- # This can happen in the image editor for example when there is no selection
2536
- # in painting modes.
2537
- item, _ = cls._tool_get_by_id(context, cls.tool_fallback_id)
2538
- if item is None:
2539
- print("Tool", cls.tool_fallback_id, "not active in", cls)
2540
- return {'PASS_THROUGH'}
2541
-
2542
- def draw_cb(self, context):
2543
- from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
2544
- ToolSelectPanelHelper.draw_fallback_tool_items_for_pie_menu(self.layout, context)
2545
-
2546
- wm = context.window_manager
2547
- wm.popup_menu_pie(draw_func=draw_cb, title=iface_("Fallback Tool"), event=event)
2548
- return {'FINISHED'}
2549
-
2550
-
2551
- class WM_OT_toolbar_prompt(Operator):
2552
- """Leader key like functionality for accessing tools"""
2553
- bl_idname = "wm.toolbar_prompt"
2554
- bl_label = "Toolbar Prompt"
2555
-
2556
- @staticmethod
2557
- def _status_items_generate(cls, keymap, context):
2558
- from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
2559
-
2560
- # The keymap doesn't have the same order the tools are declared in,
2561
- # while we could support this, it's simpler to apply order here.
2562
- tool_map_id_to_order = {}
2563
- # Map the
2564
- tool_map_id_to_label = {}
2565
- for item in ToolSelectPanelHelper._tools_flatten(cls.tools_from_context(context)):
2566
- if item is not None:
2567
- tool_map_id_to_label[item.idname] = item.label
2568
- tool_map_id_to_order[item.idname] = len(tool_map_id_to_order)
2569
-
2570
- status_items = []
2571
-
2572
- for item in keymap.keymap_items:
2573
- name = item.name
2574
- key_str = item.to_string()
2575
- # These are duplicated from regular numbers.
2576
- if key_str.startswith("Numpad "):
2577
- continue
2578
- properties = item.properties
2579
- idname = item.idname
2580
- if idname == "wm.tool_set_by_id":
2581
- tool_idname = properties["name"]
2582
- name = tool_map_id_to_label[tool_idname]
2583
- name = name.replace("Annotate ", "")
2584
- else:
2585
- continue
2586
-
2587
- status_items.append((tool_idname, name, item))
2588
-
2589
- status_items.sort(
2590
- key=lambda a: tool_map_id_to_order[a[0]]
2591
- )
2592
- return status_items
2593
-
2594
- def modal(self, context, event):
2595
- event_type = event.type
2596
- event_value = event.value
2597
-
2598
- if event_type in {
2599
- 'LEFTMOUSE', 'RIGHTMOUSE', 'MIDDLEMOUSE',
2600
- 'WHEELDOWNMOUSE', 'WHEELUPMOUSE', 'WHEELINMOUSE', 'WHEELOUTMOUSE',
2601
- 'ESC',
2602
- }:
2603
- context.workspace.status_text_set(None)
2604
- return {'CANCELLED', 'PASS_THROUGH'}
2605
-
2606
- keymap = self._keymap
2607
- item = keymap.keymap_items.match_event(event)
2608
- if item is not None:
2609
- idname = item.idname
2610
- properties = item.properties
2611
- if idname == "wm.tool_set_by_id":
2612
- tool_idname = properties["name"]
2613
- bpy.ops.wm.tool_set_by_id(name=tool_idname)
2614
-
2615
- context.workspace.status_text_set(None)
2616
- return {'FINISHED'}
2617
-
2618
- # Pressing entry even again exists, as long as it's not mapped to a key (for convenience).
2619
- if event_type == self._init_event_type:
2620
- if event_value == 'RELEASE':
2621
- if not (event.ctrl or event.alt or event.shift or event.oskey or event.hyper):
2622
- context.workspace.status_text_set(None)
2623
- return {'CANCELLED'}
2624
-
2625
- return {'RUNNING_MODAL'}
2626
-
2627
- def invoke(self, context, event):
2628
- space_data = context.space_data
2629
- if space_data is None:
2630
- return {'CANCELLED'}
2631
-
2632
- space_type = space_data.type
2633
- cls, keymap = WM_OT_toolbar.keymap_from_toolbar(
2634
- context,
2635
- space_type,
2636
- use_fallback_keys=False,
2637
- use_reset=False,
2638
- )
2639
- if (keymap is None) or (not keymap.keymap_items):
2640
- return {'CANCELLED'}
2641
-
2642
- self._init_event_type = event.type
2643
-
2644
- # Strip Left/Right, since "Left Alt" isn't especially useful.
2645
- init_event_type_as_text = self._init_event_type.title().split("_")
2646
- if init_event_type_as_text[0] in {"Left", "Right"}:
2647
- del init_event_type_as_text[0]
2648
- init_event_type_as_text = " ".join(init_event_type_as_text)
2649
-
2650
- status_items = self._status_items_generate(cls, keymap, context)
2651
-
2652
- def status_text_fn(self, context):
2653
-
2654
- layout = self.layout
2655
- if True:
2656
- box = layout.row(align=True).box()
2657
- box.scale_x = 0.8
2658
- box.label(text=init_event_type_as_text)
2659
-
2660
- flow = layout.grid_flow(columns=len(status_items), align=True, row_major=True)
2661
- for _, name, item in status_items:
2662
- row = flow.row(align=True)
2663
- row.template_event_from_keymap_item(
2664
- item, text=name, text_ctxt=i18n_contexts.operator_default
2665
- )
2666
-
2667
- self._keymap = keymap
2668
-
2669
- context.workspace.status_text_set(status_text_fn)
2670
-
2671
- context.window_manager.modal_handler_add(self)
2672
- return {'RUNNING_MODAL'}
2673
-
2674
-
2675
- class BatchRenameAction(bpy.types.PropertyGroup):
2676
- __slots__ = ()
2677
-
2678
- # category: StringProperty()
2679
- type: EnumProperty(
2680
- name="Operation",
2681
- items=(
2682
- ('REPLACE', "Find/Replace", "Replace text in the name"),
2683
- ('SET', "Set Name", "Set a new name or prefix/suffix the existing one"),
2684
- ('STRIP', "Strip Characters", "Strip leading/trailing text from the name"),
2685
- ('CASE', "Change Case", "Change case of each name"),
2686
- ),
2687
- )
2688
-
2689
- # We could split these into sub-properties, however it's not so important.
2690
-
2691
- # Used when `type == 'SET'`.
2692
- set_name: StringProperty(name="Name")
2693
- set_method: EnumProperty(
2694
- name="Method",
2695
- items=(
2696
- ('NEW', "New", ""),
2697
- ('PREFIX', "Prefix", ""),
2698
- ('SUFFIX', "Suffix", ""),
2699
- ),
2700
- default='SUFFIX',
2701
- )
2702
-
2703
- # Used when `type == 'STRIP'`.
2704
- strip_chars: EnumProperty(
2705
- name="Strip Characters",
2706
- translation_context=i18n_contexts.id_text,
2707
- options={'ENUM_FLAG'},
2708
- items=(
2709
- ('SPACE', "Spaces", ""),
2710
- ('DIGIT', "Digits", ""),
2711
- ('PUNCT', "Punctuation", ""),
2712
- ),
2713
- )
2714
-
2715
- # Used when `type == 'STRIP'`.
2716
- strip_part: EnumProperty(
2717
- name="Strip Part",
2718
- options={'ENUM_FLAG'},
2719
- items=(
2720
- ('START', "Start", ""),
2721
- ('END', "End", ""),
2722
- ),
2723
- )
2724
-
2725
- # Used when `type == 'REPLACE'`.
2726
- replace_src: StringProperty(name="Find")
2727
- replace_dst: StringProperty(name="Replace")
2728
- replace_match_case: BoolProperty(name="Case Sensitive")
2729
- use_replace_regex_src: BoolProperty(
2730
- name="Regular Expression Find",
2731
- description="Use regular expressions to match text in the 'Find' field",
2732
- )
2733
- use_replace_regex_dst: BoolProperty(
2734
- name="Regular Expression Replace",
2735
- description="Use regular expression for the replacement text (supporting groups)",
2736
- )
2737
-
2738
- # Used when `type == 'CASE'`.
2739
- case_method: EnumProperty(
2740
- name="Case",
2741
- items=(
2742
- ('UPPER', "Upper Case", ""),
2743
- ('LOWER', "Lower Case", ""),
2744
- ('TITLE', "Title Case", ""),
2745
- ),
2746
- )
2747
-
2748
- # Weak, add/remove as properties.
2749
- op_add: BoolProperty(name="Add", translation_context=i18n_contexts.operator_default)
2750
- op_remove: BoolProperty(name="Remove", translation_context=i18n_contexts.operator_default)
2751
-
2752
-
2753
- class WM_OT_batch_rename(Operator):
2754
- """Rename multiple items at once"""
2755
-
2756
- bl_idname = "wm.batch_rename"
2757
- bl_label = "Batch Rename"
2758
-
2759
- bl_options = {'UNDO'}
2760
-
2761
- data_type: EnumProperty(
2762
- name="Type",
2763
- items=(
2764
- ('OBJECT', "Objects", "", 'OBJECT_DATA', 0),
2765
- ('COLLECTION', "Collections", "", 'OUTLINER_COLLECTION', 1),
2766
- ('MATERIAL', "Materials", "", 'MATERIAL_DATA', 2),
2767
- None,
2768
- # Enum identifiers are compared with `object.type`.
2769
- # Follow order in "Add" menu.
2770
- ('MESH', "Meshes", "", 'MESH_DATA', 3),
2771
- ('CURVE', "Curves", "", 'CURVE_DATA', 4),
2772
- ('META', "Metaballs", "", 'META_DATA', 5),
2773
- ('VOLUME', "Volumes", "", 'VOLUME_DATA', 6),
2774
- ('GREASEPENCIL', "Grease Pencils", "", 'OUTLINER_DATA_GREASEPENCIL', 7),
2775
- ('ARMATURE', "Armatures", "", 'ARMATURE_DATA', 8),
2776
- ('LATTICE', "Lattices", "", 'LATTICE_DATA', 9),
2777
- ('LIGHT', "Lights", "", 'LIGHT_DATA', 10),
2778
- ('LIGHT_PROBE', "Light Probes", "", 'OUTLINER_DATA_LIGHTPROBE', 11),
2779
- ('CAMERA', "Cameras", "", 'CAMERA_DATA', 12),
2780
- ('SPEAKER', "Speakers", "", 'OUTLINER_DATA_SPEAKER', 13),
2781
- None,
2782
- ('BONE', "Bones", "", 'BONE_DATA', 14),
2783
- ('NODE', "Nodes", "", 'NODETREE', 15),
2784
- ('SEQUENCE_STRIP', "Sequence Strips", "", 'SEQ_SEQUENCER', 16),
2785
- ('ACTION_CLIP', "Action Clips", "", 'ACTION', 17),
2786
- None,
2787
- ('SCENE', "Scenes", "", 'SCENE_DATA', 18),
2788
- ('BRUSH', "Brushes", "", 'BRUSH_DATA', 19),
2789
- ),
2790
- translation_context=i18n_contexts.id_id,
2791
- description="Type of data to rename",
2792
- )
2793
-
2794
- data_source: EnumProperty(
2795
- name="Source",
2796
- items=(
2797
- ('SELECT', "Selected", ""),
2798
- ('ALL', "All", ""),
2799
- ),
2800
- )
2801
-
2802
- actions: CollectionProperty(type=BatchRenameAction)
2803
-
2804
- @staticmethod
2805
- def _selected_ids_from_outliner_by_type(context, ty):
2806
- return [
2807
- id for id in context.selected_ids
2808
- if isinstance(id, ty)
2809
- if id.is_editable
2810
- ]
2811
-
2812
- @staticmethod
2813
- def _selected_ids_from_outliner_by_type_for_object_data(context, ty):
2814
- # Include selected object-data as well as the selected ID's.
2815
- from bpy.types import Object
2816
- # De-duplicate the result as object-data may cause duplicates.
2817
- return tuple(set([
2818
- id for id_base in context.selected_ids
2819
- if isinstance(id := id_base.data if isinstance(id_base, Object) else id_base, ty)
2820
- if id.is_editable
2821
- ]))
2822
-
2823
- @staticmethod
2824
- def _selected_actions_from_outliner(context):
2825
- # Actions are a special case because they can be accessed directly or via animation-data.
2826
- from bpy.types import Action
2827
-
2828
- def action_from_any_id(id_data):
2829
- if isinstance(id_data, Action):
2830
- return id_data
2831
- # Not all ID's have animation data.
2832
- if (animation_data := getattr(id_data, "animation_data", None)) is not None:
2833
- return animation_data.action
2834
- return None
2835
-
2836
- return tuple(set(
2837
- action for id in context.selected_ids
2838
- if (action := action_from_any_id(id)) is not None
2839
- if action.is_editable
2840
- ))
2841
-
2842
- @classmethod
2843
- def _data_from_context(cls, context, data_type, only_selected, *, check_context=False):
2844
- def _is_editable(data):
2845
- return data.id_data.is_editable and not data.id_data.override_library
2846
-
2847
- mode = context.mode
2848
- scene = context.scene
2849
- space = context.space_data
2850
- space_type = None if (space is None) else space.type
2851
-
2852
- data = None
2853
- if space_type == 'SEQUENCE_EDITOR':
2854
- data_type_test = 'SEQUENCE_STRIP'
2855
- if check_context:
2856
- return data_type_test
2857
- if data_type == data_type_test:
2858
- data = (
2859
- context.selected_strips
2860
- if only_selected else
2861
- scene.sequence_editor.strips_all,
2862
- "name",
2863
- iface_("Strip(s)"),
2864
- )
2865
- elif space_type == 'NODE_EDITOR':
2866
- data_type_test = 'NODE'
2867
- if check_context:
2868
- return data_type_test
2869
- if data_type == data_type_test:
2870
- data = (
2871
- context.selected_nodes
2872
- if only_selected else
2873
- list(space.node_tree.nodes),
2874
- "name",
2875
- iface_("Node(s)"),
2876
- )
2877
- elif space_type == 'OUTLINER':
2878
- data_type_test = 'COLLECTION'
2879
- if check_context:
2880
- return data_type_test
2881
- if data_type == data_type_test:
2882
- data = (
2883
- cls._selected_ids_from_outliner_by_type(context, bpy.types.Collection)
2884
- if only_selected else
2885
- scene.collection.children_recursive,
2886
- "name",
2887
- iface_("Collection(s)"),
2888
- )
2889
- else:
2890
- if mode == 'POSE' or (mode == 'WEIGHT_PAINT' and context.pose_object):
2891
- data_type_test = 'BONE'
2892
- if check_context:
2893
- return data_type_test
2894
- if data_type == data_type_test:
2895
- data = (
2896
- [pchan.bone for pchan in context.selected_pose_bones]
2897
- if only_selected else
2898
- [pbone.bone for ob in context.objects_in_mode_unique_data for pbone in ob.pose.bones],
2899
- "name",
2900
- iface_("Bone(s)"),
2901
- )
2902
- elif mode == 'EDIT_ARMATURE':
2903
- data_type_test = 'BONE'
2904
- if check_context:
2905
- return data_type_test
2906
- if data_type == data_type_test:
2907
- data = (
2908
- context.selected_editable_bones
2909
- if only_selected else
2910
- [ebone for ob in context.objects_in_mode_unique_data for ebone in ob.data.edit_bones],
2911
- "name",
2912
- iface_("Edit Bone(s)"),
2913
- )
2914
-
2915
- if check_context:
2916
- return 'OBJECT'
2917
-
2918
- object_data_type_attrs_map = {
2919
- 'MESH': ("meshes", iface_("Mesh(es)"), bpy.types.Mesh),
2920
- 'CURVE': ("curves", iface_("Curve(s)"), bpy.types.Curve),
2921
- 'META': ("metaballs", iface_("Metaball(s)"), bpy.types.MetaBall),
2922
- 'VOLUME': ("volumes", iface_("Volume(s)"), bpy.types.Volume),
2923
- 'GREASEPENCIL': ("grease_pencils", iface_("Grease Pencil(s)"), bpy.types.GreasePencil),
2924
- 'ARMATURE': ("armatures", iface_("Armature(s)"), bpy.types.Armature),
2925
- 'LATTICE': ("lattices", iface_("Lattice(s)"), bpy.types.Lattice),
2926
- 'LIGHT': ("lights", iface_("Light(s)"), bpy.types.Light),
2927
- 'LIGHT_PROBE': ("lightprobes", iface_("Light Probe(s)"), bpy.types.LightProbe),
2928
- 'CAMERA': ("cameras", iface_("Camera(s)"), bpy.types.Camera),
2929
- 'SPEAKER': ("speakers", iface_("Speaker(s)"), bpy.types.Speaker),
2930
- }
2931
-
2932
- # Finish with space types.
2933
- if data is None:
2934
-
2935
- if data_type == 'OBJECT':
2936
- data = (
2937
- (
2938
- # Outliner.
2939
- cls._selected_ids_from_outliner_by_type(context, bpy.types.Object)
2940
- if space_type == 'OUTLINER' else
2941
- # 3D View (default).
2942
- context.selected_editable_objects
2943
- )
2944
- if only_selected else
2945
- [id for id in bpy.data.objects if id.is_editable],
2946
- "name",
2947
- iface_("Object(s)"),
2948
- )
2949
- elif data_type == 'COLLECTION':
2950
- data = (
2951
- # Outliner case is handled already.
2952
- tuple(set(
2953
- ob.instance_collection
2954
- for ob in context.selected_objects
2955
- if ((ob.instance_type == 'COLLECTION') and
2956
- (collection := ob.instance_collection) is not None and
2957
- (collection.is_editable))
2958
- ))
2959
- if only_selected else
2960
- [id for id in bpy.data.collections if id.is_editable],
2961
- "name",
2962
- iface_("Collection(s)"),
2963
- )
2964
- elif data_type == 'MATERIAL':
2965
- data = (
2966
- (
2967
- # Outliner.
2968
- cls._selected_ids_from_outliner_by_type(context, bpy.types.Material)
2969
- if space_type == 'OUTLINER' else
2970
- # 3D View (default).
2971
- tuple(set(
2972
- id
2973
- for ob in context.selected_objects
2974
- for slot in ob.material_slots
2975
- if (id := slot.material) is not None and id.is_editable
2976
- ))
2977
- )
2978
- if only_selected else
2979
- [id for id in bpy.data.materials if id.is_editable],
2980
- "name",
2981
- iface_("Material(s)"),
2982
- )
2983
- elif data_type == 'ACTION_CLIP':
2984
- data = (
2985
- (
2986
- # Outliner.
2987
- cls._selected_actions_from_outliner(context)
2988
- if space_type == 'OUTLINER' else
2989
- # 3D View (default).
2990
- tuple(set(
2991
- action for ob in context.selected_objects
2992
- if (((animation_data := ob.animation_data) is not None) and
2993
- ((action := animation_data.action) is not None) and
2994
- (action.is_editable))
2995
- ))
2996
- )
2997
- if only_selected else
2998
- [id for id in bpy.data.actions if id.is_editable],
2999
- "name",
3000
- iface_("Action(s)"),
3001
- )
3002
- elif data_type == 'SCENE':
3003
- data = (
3004
- (
3005
- # Outliner.
3006
- cls._selected_ids_from_outliner_by_type(context, bpy.types.Scene)
3007
- if ((space_type == 'OUTLINER') and only_selected) else
3008
- [id for id in bpy.data.scenes if id.is_editable]
3009
- ),
3010
- "name",
3011
- iface_("Scene(s)"),
3012
- )
3013
- elif data_type == 'BRUSH':
3014
- data = (
3015
- (
3016
- # Outliner.
3017
- cls._selected_ids_from_outliner_by_type(context, bpy.types.Brush)
3018
- if ((space_type == 'OUTLINER') and only_selected) else
3019
- [id for id in bpy.data.brushes if id.is_editable]
3020
- ),
3021
- "name",
3022
- iface_("Brush(es)"),
3023
- )
3024
- elif data_type in object_data_type_attrs_map.keys():
3025
- attr, descr, ty = object_data_type_attrs_map[data_type]
3026
- data = (
3027
- (
3028
- # Outliner.
3029
- cls._selected_ids_from_outliner_by_type_for_object_data(context, ty)
3030
- if space_type == 'OUTLINER' else
3031
- # 3D View (default).
3032
- tuple(set(
3033
- id
3034
- for ob in context.selected_objects
3035
- if ob.type == data_type
3036
- if (id := ob.data) is not None and id.is_editable
3037
- ))
3038
- )
3039
- if only_selected else
3040
- [id for id in getattr(bpy.data, attr) if id.is_editable],
3041
- "name",
3042
- descr,
3043
- )
3044
-
3045
- if data is None:
3046
- return None
3047
-
3048
- data = ([it for it in data[0] if _is_editable(it)], data[1], data[2])
3049
-
3050
- return data
3051
-
3052
- @staticmethod
3053
- def _apply_actions(actions, name):
3054
- import string
3055
- import re
3056
-
3057
- for action in actions:
3058
- ty = action.type
3059
- if ty == 'SET':
3060
- text = action.set_name
3061
- method = action.set_method
3062
- if method == 'NEW':
3063
- name = text
3064
- elif method == 'PREFIX':
3065
- name = text + name
3066
- elif method == 'SUFFIX':
3067
- name = name + text
3068
- else:
3069
- assert False, "unreachable"
3070
-
3071
- elif ty == 'STRIP':
3072
- chars = action.strip_chars
3073
- chars_strip = (
3074
- "{:s}{:s}{:s}"
3075
- ).format(
3076
- string.punctuation if 'PUNCT' in chars else "",
3077
- string.digits if 'DIGIT' in chars else "",
3078
- " " if 'SPACE' in chars else "",
3079
- )
3080
- part = action.strip_part
3081
- if 'START' in part:
3082
- name = name.lstrip(chars_strip)
3083
- if 'END' in part:
3084
- name = name.rstrip(chars_strip)
3085
-
3086
- elif ty == 'REPLACE':
3087
- if action.use_replace_regex_src:
3088
- replace_src = action.replace_src
3089
- if action.use_replace_regex_dst:
3090
- replace_dst = action.replace_dst
3091
- else:
3092
- replace_dst = action.replace_dst.replace("\\", "\\\\")
3093
- else:
3094
- replace_src = re.escape(action.replace_src)
3095
- replace_dst = action.replace_dst.replace("\\", "\\\\")
3096
- name = re.sub(
3097
- replace_src,
3098
- replace_dst,
3099
- name,
3100
- flags=(
3101
- 0 if action.replace_match_case else
3102
- re.IGNORECASE
3103
- ),
3104
- )
3105
- elif ty == 'CASE':
3106
- method = action.case_method
3107
- if method == 'UPPER':
3108
- name = name.upper()
3109
- elif method == 'LOWER':
3110
- name = name.lower()
3111
- elif method == 'TITLE':
3112
- name = name.title()
3113
- else:
3114
- assert False, "unreachable"
3115
- else:
3116
- assert False, "unreachable"
3117
- return name
3118
-
3119
- def _data_update(self, context):
3120
- only_selected = self.data_source == 'SELECT'
3121
-
3122
- self._data = self._data_from_context(context, self.data_type, only_selected)
3123
- if self._data is None:
3124
- self.data_type = self._data_from_context(context, None, False, check_context=True)
3125
- self._data = self._data_from_context(context, self.data_type, only_selected)
3126
-
3127
- self._data_source_prev = self.data_source
3128
- self._data_type_prev = self.data_type
3129
-
3130
- def draw(self, context):
3131
- import re
3132
-
3133
- layout = self.layout
3134
-
3135
- split = layout.split(align=True)
3136
- split.row(align=True).prop(self, "data_source", expand=True)
3137
- split.prop(self, "data_type", text="")
3138
-
3139
- for action in self.actions:
3140
- box = layout.box()
3141
- split = box.split(factor=0.87)
3142
-
3143
- # Column 1: main content.
3144
- col = split.column()
3145
-
3146
- # Label's width.
3147
- fac = 0.25
3148
-
3149
- # Row 1: type.
3150
- row = col.split(factor=fac)
3151
- row.alignment = 'RIGHT'
3152
- row.label(text="Type")
3153
- row.prop(action, "type", text="")
3154
-
3155
- ty = action.type
3156
- if ty == 'SET':
3157
- # Row 2: method.
3158
- row = col.split(factor=fac)
3159
- row.alignment = 'RIGHT'
3160
- row.label(text="Method")
3161
- row.row().prop(action, "set_method", expand=True)
3162
-
3163
- # Row 3: name.
3164
- row = col.split(factor=fac)
3165
- row.alignment = 'RIGHT'
3166
- row.label(text="Name")
3167
- row.prop(action, "set_name", text="")
3168
-
3169
- elif ty == 'STRIP':
3170
- # Row 2: chars.
3171
- row = col.split(factor=fac)
3172
- row.alignment = 'RIGHT'
3173
- row.label(text="Characters")
3174
- row.row().prop(action, "strip_chars")
3175
-
3176
- # Row 3: part.
3177
- row = col.split(factor=fac)
3178
- row.alignment = 'RIGHT'
3179
- row.label(text="Strip From")
3180
- row.row().prop(action, "strip_part")
3181
-
3182
- elif ty == 'REPLACE':
3183
- # Row 2: find.
3184
- row = col.split(factor=fac)
3185
-
3186
- re_error_src = None
3187
- if action.use_replace_regex_src:
3188
- try:
3189
- re.compile(action.replace_src)
3190
- except Exception as ex:
3191
- re_error_src = str(ex)
3192
- row.alert = True
3193
-
3194
- row.alignment = 'RIGHT'
3195
- row.label(text="Find")
3196
- sub = row.row(align=True)
3197
- sub.prop(action, "replace_src", text="")
3198
- sub.prop(action, "use_replace_regex_src", text="", icon='SORTBYEXT')
3199
-
3200
- # Row.
3201
- if re_error_src is not None:
3202
- row = col.split(factor=fac)
3203
- row.label(text="")
3204
- row.alert = True
3205
- row.label(text=re_error_src)
3206
-
3207
- # Row 3: replace.
3208
- row = col.split(factor=fac)
3209
-
3210
- re_error_dst = None
3211
- if action.use_replace_regex_src:
3212
- if action.use_replace_regex_dst:
3213
- if re_error_src is None:
3214
- try:
3215
- re.sub(action.replace_src, action.replace_dst, "")
3216
- except Exception as ex:
3217
- re_error_dst = str(ex)
3218
- row.alert = True
3219
-
3220
- row.alignment = 'RIGHT'
3221
- row.label(text="Replace")
3222
- sub = row.row(align=True)
3223
- sub.prop(action, "replace_dst", text="")
3224
- subsub = sub.row(align=True)
3225
- subsub.active = action.use_replace_regex_src
3226
- subsub.prop(action, "use_replace_regex_dst", text="", icon='SORTBYEXT')
3227
-
3228
- # Row.
3229
- if re_error_dst is not None:
3230
- row = col.split(factor=fac)
3231
- row.label(text="")
3232
- row.alert = True
3233
- row.label(text=re_error_dst)
3234
-
3235
- # Row 4: case.
3236
- row = col.split(factor=fac)
3237
- row.label(text="")
3238
- row.prop(action, "replace_match_case")
3239
-
3240
- elif ty == 'CASE':
3241
- # Row 2: method.
3242
- row = col.split(factor=fac)
3243
- row.alignment = 'RIGHT'
3244
- row.label(text="Convert To")
3245
- row.row().prop(action, "case_method", expand=True)
3246
-
3247
- # Column 2: add-remove.
3248
- row = split.split(align=True)
3249
- row.prop(action, "op_remove", text="", icon='REMOVE')
3250
- row.prop(action, "op_add", text="", icon='ADD')
3251
-
3252
- layout.label(text=iface_("Rename {:d} {:s}").format(len(self._data[0]), self._data[2]), translate=False)
3253
-
3254
- def check(self, context):
3255
- changed = False
3256
- for i, action in enumerate(self.actions):
3257
- if action.op_add:
3258
- action.op_add = False
3259
- self.actions.add()
3260
- if i + 2 != len(self.actions):
3261
- self.actions.move(len(self.actions) - 1, i + 1)
3262
- changed = True
3263
- break
3264
- if action.op_remove:
3265
- action.op_remove = False
3266
- if len(self.actions) > 1:
3267
- self.actions.remove(i)
3268
- changed = True
3269
- break
3270
-
3271
- if (
3272
- (self._data_source_prev != self.data_source) or
3273
- (self._data_type_prev != self.data_type)
3274
- ):
3275
- self._data_update(context)
3276
- changed = True
3277
-
3278
- return changed
3279
-
3280
- def execute(self, context):
3281
- import re
3282
-
3283
- seq, attr, descr = self._data
3284
-
3285
- actions = self.actions
3286
-
3287
- # Sanitize actions.
3288
- for action in actions:
3289
- if action.use_replace_regex_src:
3290
- try:
3291
- re.compile(action.replace_src)
3292
- except Exception as ex:
3293
- self.report({'ERROR'}, rpt_("Invalid regular expression (find): {:s}").format(str(ex)))
3294
- return {'CANCELLED'}
3295
-
3296
- if action.use_replace_regex_dst:
3297
- try:
3298
- re.sub(action.replace_src, action.replace_dst, "")
3299
- except Exception as ex:
3300
- self.report({'ERROR'}, rpt_("Invalid regular expression (replace): {:s}").format(str(ex)))
3301
- return {'CANCELLED'}
3302
-
3303
- total_len = 0
3304
- change_len = 0
3305
- for item in seq:
3306
- name_src = getattr(item, attr)
3307
- name_dst = self._apply_actions(actions, name_src)
3308
- if name_src != name_dst:
3309
- setattr(item, attr, name_dst)
3310
- change_len += 1
3311
- total_len += 1
3312
-
3313
- self.report({'INFO'}, rpt_("Renamed {:d} of {:d} {:s}").format(change_len, total_len, descr))
3314
-
3315
- return {'FINISHED'}
3316
-
3317
- def invoke(self, context, event):
3318
-
3319
- self._data_update(context)
3320
-
3321
- if not self.actions:
3322
- self.actions.add()
3323
- wm = context.window_manager
3324
- return wm.invoke_props_dialog(self, width=400)
3325
-
3326
-
3327
- class WM_MT_splash_quick_setup(Menu):
3328
- bl_label = "Quick Setup"
3329
-
3330
- def draw(self, context):
3331
- layout = self.layout
3332
-
3333
- wm = context.window_manager
3334
- prefs = context.preferences
3335
-
3336
- layout.operator_context = 'EXEC_DEFAULT'
3337
-
3338
- old_version = bpy.types.PREFERENCES_OT_copy_prev.previous_version()
3339
- can_import = bpy.types.PREFERENCES_OT_copy_prev.poll(context) and old_version
3340
-
3341
- if can_import:
3342
- layout.label(text="Import Preferences From Previous Version")
3343
- split = layout.split(factor=0.20) # Left margin.
3344
- split.label()
3345
-
3346
- split = split.split(factor=0.73) # Content width.
3347
- col = split.column()
3348
- col.operator(
3349
- "preferences.copy_prev",
3350
- text=iface_("Import Blender {:d}.{:d} Preferences", "Operator").format(*old_version),
3351
- icon='NONE',
3352
- translate=False,
3353
- )
3354
- layout.separator()
3355
- layout.separator(type='LINE')
3356
-
3357
- if can_import:
3358
- layout.label(text="Create New Preferences")
3359
- else:
3360
- layout.label(text="Quick Setup")
3361
-
3362
- split = layout.split(factor=0.20) # Left margin.
3363
- split.label()
3364
- split = split.split(factor=0.73) # Content width.
3365
- col = split.column()
3366
- col.use_property_split = True
3367
- col.use_property_decorate = False
3368
-
3369
- # Languages.
3370
- if bpy.app.build_options.international:
3371
- col.prop(prefs.view, "language")
3372
-
3373
- # Themes.
3374
- sub = col.column(heading="Theme")
3375
- label = bpy.types.USERPREF_MT_interface_theme_presets.bl_label
3376
- if label == "Presets":
3377
- label = "Blender Dark"
3378
- sub.menu("USERPREF_MT_interface_theme_presets", text=label)
3379
-
3380
- col.separator()
3381
-
3382
- # Shortcuts.
3383
- kc = wm.keyconfigs.active
3384
- kc_prefs = kc.preferences
3385
-
3386
- sub = col.column(heading="Keymap")
3387
- text = bpy.path.display_name(kc.name)
3388
- if not text:
3389
- text = "Blender"
3390
- sub.menu("USERPREF_MT_keyconfigs", text=text)
3391
-
3392
- if hasattr(kc_prefs, "select_mouse"):
3393
- col.row().prop(kc_prefs, "select_mouse", text="Mouse Select", expand=True)
3394
-
3395
- if hasattr(kc_prefs, "spacebar_action"):
3396
- col.row().prop(kc_prefs, "spacebar_action", text="Spacebar Action")
3397
-
3398
- # Save Preferences.
3399
- sub = col.column()
3400
- sub.separator(factor=2)
3401
-
3402
- if can_import:
3403
- sub.operator("wm.save_userpref", text="Save New Preferences", icon='NONE')
3404
- else:
3405
- sub.operator("wm.save_userpref", text="Continue")
3406
-
3407
- layout.separator(factor=2.0)
3408
-
3409
-
3410
- class WM_MT_splash(Menu):
3411
- bl_label = "Splash"
3412
-
3413
- def draw(self, context):
3414
- layout = self.layout
3415
- layout.operator_context = 'EXEC_DEFAULT'
3416
- layout.emboss = 'PULLDOWN_MENU'
3417
-
3418
- split = layout.split()
3419
-
3420
- # Templates
3421
- col1 = split.column()
3422
- col1.label(text="New File")
3423
-
3424
- bpy.types.TOPBAR_MT_file_new.draw_ex(col1, context, use_splash=True)
3425
-
3426
- # Recent
3427
- col2 = split.column()
3428
- col2_title = col2.row()
3429
-
3430
- found_recent = col2.template_recent_files(rows=5)
3431
-
3432
- if found_recent:
3433
- col2_title.label(text="Recent Files")
3434
-
3435
- col_more = col2.column()
3436
- col_more.operator_context = 'INVOKE_DEFAULT'
3437
- more_props = col_more.operator("wm.search_single_menu", text="More...", icon='VIEWZOOM')
3438
- more_props.menu_idname = "TOPBAR_MT_file_open_recent"
3439
- else:
3440
- # Links if no recent files.
3441
- col2_title.label(text="Getting Started")
3442
-
3443
- col2.operator("wm.url_open_preset", text="Manual", icon='URL').type = 'MANUAL'
3444
- col2.operator("wm.url_open", text="Support", icon='URL').url = "https://www.blender.org/support/"
3445
- col2.operator("wm.url_open", text="User Communities", icon='URL').url = "https://www.blender.org/community/"
3446
- col2.operator("wm.url_open", text="Get Involved", icon='URL').url = "https://www.blender.org/get-involved/"
3447
- col2.operator("wm.url_open_preset", text="Blender Website", icon='URL').type = 'BLENDER'
3448
-
3449
- col_sep = layout.column()
3450
- col_sep.separator()
3451
- col_sep.separator(type='LINE')
3452
- col_sep.separator()
3453
-
3454
- split = layout.split()
3455
-
3456
- col1 = split.column()
3457
- sub = col1.row()
3458
- sub.operator_context = 'INVOKE_DEFAULT'
3459
- sub.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
3460
- col1.operator("wm.recover_last_session", icon='RECOVER_LAST')
3461
-
3462
- col2 = split.column()
3463
-
3464
- col2.operator("wm.url_open_preset", text="What's New", icon='URL').type = 'RELEASE_NOTES'
3465
- col2.operator("wm.url_open_preset", text="Donate to Blender", icon='FUND').type = 'FUND'
3466
-
3467
- layout.separator()
3468
-
3469
- if (not bpy.app.online_access) and bpy.app.online_access_override:
3470
- self.layout.label(text="Running in Offline Mode", icon='INTERNET_OFFLINE')
3471
-
3472
- layout.separator()
3473
-
3474
-
3475
- class WM_MT_splash_about(Menu):
3476
- bl_label = "About"
3477
-
3478
- def draw(self, context):
3479
-
3480
- layout = self.layout
3481
- layout.operator_context = 'EXEC_DEFAULT'
3482
-
3483
- split = layout.split(factor=0.65)
3484
-
3485
- col = split.column(align=True)
3486
- col.scale_y = 0.8
3487
- col.label(text=iface_("Version: {:s}").format(bpy.app.version_string), translate=False)
3488
- col.separator(factor=2.5)
3489
- col.label(text=iface_("Date: {:s} {:s}").format(
3490
- bpy.app.build_commit_date.decode("utf-8", "replace"),
3491
- bpy.app.build_commit_time.decode("utf-8", "replace")),
3492
- translate=False,
3493
- )
3494
- col.label(text=iface_("Hash: {:s}").format(bpy.app.build_hash.decode("ascii")), translate=False)
3495
- col.label(text=iface_("Branch: {:s}").format(bpy.app.build_branch.decode("utf-8", "replace")), translate=False)
3496
-
3497
- # This isn't useful information on MS-Windows or Apple systems as dynamically switching
3498
- # between windowing systems is only supported between X11/WAYLAND.
3499
- from _bpy import _ghost_backend
3500
- ghost_backend = _ghost_backend()
3501
- if ghost_backend not in {'NONE', 'DEFAULT'}:
3502
- col.label(text=iface_("Windowing Environment: {:s}").format(_ghost_backend()), translate=False)
3503
- del _ghost_backend, ghost_backend
3504
-
3505
- col.separator(factor=2.0)
3506
- col.label(text="Blender is free software")
3507
- col.label(text="Licensed under the GNU General Public License")
3508
-
3509
- col = split.column(align=True)
3510
- col.emboss = 'PULLDOWN_MENU'
3511
- col.operator("wm.url_open_preset", text="Donate", icon='FUND').type = 'FUND'
3512
- col.operator("wm.url_open_preset", text="What's New", icon='URL').type = 'RELEASE_NOTES'
3513
- col.separator(factor=2.0)
3514
- col.operator("wm.url_open_preset", text="Credits", icon='URL').type = 'CREDITS'
3515
- col.operator("wm.url_open", text="License", icon='URL').url = "https://www.blender.org/about/license/"
3516
- col.operator("wm.url_open", text="Blender Store", icon='URL').url = "https://store.blender.org"
3517
- col.operator("wm.url_open_preset", text="Blender Website", icon='URL').type = 'BLENDER'
3518
-
3519
-
3520
- class WM_MT_region_toggle_pie(Menu):
3521
- bl_label = "Region Toggle"
3522
-
3523
- # Map the `region.type` to the `space_data` attribute & text label.
3524
- # The order of items defines priority, so for example in the sequencer
3525
- # when there is both a toolbar and channels, the toolbar gets the
3526
- # axis-aligned pie, and the channels don't.
3527
- _region_info = {
3528
- 'TOOLS': "show_region_toolbar",
3529
- 'UI': "show_region_ui",
3530
- # Note that the tool header is enabled/disabled along with the header,
3531
- # no need to include both in this list.
3532
- 'HEADER': "show_region_header",
3533
- 'FOOTER': "show_region_footer",
3534
- 'ASSET_SHELF': "show_region_asset_shelf",
3535
- 'CHANNELS': "show_region_channels",
3536
- }
3537
- # Map the `region.alignment` to the axis-aligned pie position.
3538
- _region_align_pie = {
3539
- 'LEFT': 0,
3540
- 'RIGHT': 1,
3541
- 'BOTTOM': 2,
3542
- 'TOP': 3,
3543
- }
3544
- # Map the axis-aligned pie to alternative directions, see `ui_radial_dir_order` in C++ source.
3545
- # The value is the preferred direction in order of priority, two diagonals, then the flipped direction.
3546
- _region_dir_pie_alternatives = {
3547
- 0: (4, 6, 1),
3548
- 1: (5, 7, 0),
3549
- 2: (6, 7, 3),
3550
- 3: (4, 5, 2),
3551
- }
3552
-
3553
- @classmethod
3554
- def poll(cls, context):
3555
- return context.space_data is not None
3556
-
3557
- @classmethod
3558
- def _draw_pie_regions_from_alignment(cls, context, pie):
3559
- space_data = context.space_data
3560
- # Store each region by it's type.
3561
- region_by_type = {}
3562
-
3563
- for region in context.area.regions:
3564
- region_type = region.type
3565
- # If the attribute doesn't exist, the RNA definition is outdated.
3566
- # See: #134339 and its fix for reference.
3567
- attr = cls._region_info.get(region_type, None)
3568
- if attr is None:
3569
- continue
3570
- # In some cases channels exists but can't be toggled.
3571
- assert hasattr(space_data, attr)
3572
-
3573
- if space_data.is_property_readonly(attr):
3574
- continue
3575
-
3576
- # Technically possible these double-up, in practice this should never happen.
3577
- if region_type in region_by_type:
3578
- print("{:s}: Unexpected double-up of region types {!r}".format(cls.__name__, region_type))
3579
- region_by_type[region_type] = region
3580
-
3581
- # Axis aligned pie menu items to populate.
3582
- items = [[], [], [], [], [], [], [], []]
3583
-
3584
- # Use predictable ordering.
3585
- for region_type in cls._region_info.keys():
3586
- region = region_by_type.get(region_type)
3587
- if region is None:
3588
- continue
3589
- index = cls._region_align_pie[region.alignment]
3590
- items[index].append(region_type)
3591
-
3592
- # Handle any overflow (two or more regions with the same alignment).
3593
- # This happens in the sequencer (channels + toolbar),
3594
- # otherwise it should not be that common.
3595
- items_overflow = []
3596
- for index in range(4):
3597
- if len(items[index]) <= 1:
3598
- continue
3599
- for index_other in cls._region_dir_pie_alternatives[index]:
3600
- if not items[index_other]:
3601
- items[index_other].append(items[index].pop(1))
3602
- if len(items[index]) <= 1:
3603
- break
3604
- del index_other
3605
-
3606
- for index in range(4):
3607
- if len(items[index]) <= 1:
3608
- continue
3609
- for index_other in range(4, 8):
3610
- if not items[index_other]:
3611
- items[index_other].append(items[index].pop(1))
3612
- if len(items[index]) <= 1:
3613
- break
3614
- # Only happens when there are more than 8 regions - practically never!
3615
- for index in range(4):
3616
- while len(items[index]) > 1:
3617
- items_overflow.append([items[index].pop(1)])
3618
-
3619
- # Use to access the labels.
3620
- enum_items = bpy.types.Region.bl_rna.properties["type"].enum_items_static_ui
3621
-
3622
- for region_type_list in (items + items_overflow):
3623
- if not region_type_list:
3624
- pie.separator()
3625
- continue
3626
- assert len(region_type_list) == 1
3627
- region_type = region_type_list[0]
3628
- text = enum_items[region_type].name
3629
- attr = cls._region_info[region_type]
3630
- value = getattr(space_data, attr)
3631
- props = pie.operator(
3632
- "wm.context_toggle",
3633
- text=text,
3634
- text_ctxt=i18n_contexts.default,
3635
- icon='CHECKBOX_HLT' if value else 'CHECKBOX_DEHLT',
3636
- )
3637
- props.data_path = "space_data." + attr
3638
-
3639
- def draw(self, context):
3640
- layout = self.layout
3641
- pie = layout.menu_pie()
3642
- self._draw_pie_regions_from_alignment(context, pie)
3643
-
3644
-
3645
- class WM_OT_drop_blend_file(Operator):
3646
- bl_idname = "wm.drop_blend_file"
3647
- bl_label = "Handle dropped .blend file"
3648
- bl_options = {'INTERNAL'}
3649
-
3650
- filepath: StringProperty(
3651
- subtype='FILE_PATH',
3652
- options={'SKIP_SAVE'},
3653
- )
3654
-
3655
- def invoke(self, context, _event):
3656
- context.window_manager.popup_menu(self.draw_menu, title=bpy.path.basename(self.filepath), icon='QUESTION')
3657
- return {'FINISHED'}
3658
-
3659
- def draw_menu(self, menu, _context):
3660
- layout = menu.layout
3661
-
3662
- col = layout.column()
3663
- col.operator_context = 'INVOKE_DEFAULT'
3664
- props = col.operator("wm.open_mainfile", text="Open", icon='FILE_FOLDER')
3665
- props.filepath = self.filepath
3666
- props.display_file_selector = False
3667
-
3668
- layout.separator()
3669
- col = layout.column()
3670
- col.operator_context = 'INVOKE_DEFAULT'
3671
- col.operator("wm.link", text="Link...", icon='LINK_BLEND').filepath = self.filepath
3672
- col.operator("wm.append", text="Append...", icon='APPEND_BLEND').filepath = self.filepath
3673
-
3674
-
3675
- classes = (
3676
- WM_OT_context_collection_boolean_set,
3677
- WM_OT_context_cycle_array,
3678
- WM_OT_context_cycle_enum,
3679
- WM_OT_context_cycle_int,
3680
- WM_OT_context_menu_enum,
3681
- WM_OT_context_modal_mouse,
3682
- WM_OT_context_pie_enum,
3683
- WM_OT_context_scale_float,
3684
- WM_OT_context_scale_int,
3685
- WM_OT_context_set_boolean,
3686
- WM_OT_context_set_enum,
3687
- WM_OT_context_set_float,
3688
- WM_OT_context_set_id,
3689
- WM_OT_context_set_int,
3690
- WM_OT_context_set_string,
3691
- WM_OT_context_set_value,
3692
- WM_OT_context_toggle,
3693
- WM_OT_context_toggle_enum,
3694
- WM_OT_doc_view,
3695
- WM_OT_doc_view_manual,
3696
- WM_OT_drop_blend_file,
3697
- WM_OT_operator_cheat_sheet,
3698
- WM_OT_operator_pie_enum,
3699
- WM_OT_path_open,
3700
- WM_OT_properties_add,
3701
- WM_OT_properties_context_change,
3702
- WM_OT_properties_edit,
3703
- WM_OT_properties_edit_value,
3704
- WM_OT_properties_remove,
3705
- WM_OT_sysinfo,
3706
- WM_OT_owner_disable,
3707
- WM_OT_owner_enable,
3708
- WM_OT_url_open,
3709
- WM_OT_url_open_preset,
3710
- WM_OT_tool_set_by_id,
3711
- WM_OT_tool_set_by_index,
3712
- WM_OT_tool_set_by_brush_type,
3713
- WM_OT_toolbar,
3714
- WM_OT_toolbar_fallback_pie,
3715
- WM_OT_toolbar_prompt,
3716
- BatchRenameAction,
3717
- WM_OT_batch_rename,
3718
- WM_MT_splash_quick_setup,
3719
- WM_MT_splash,
3720
- WM_MT_splash_about,
3721
- WM_MT_region_toggle_pie,
3722
- )