change python scripts so modules which register with blender have a register() function rather then making import automatically run the register functions (generally considered bad practice by python people)
This commit is contained in:
@@ -854,7 +854,6 @@ class PovrayRender(bpy.types.RenderEngine):
|
||||
|
||||
self._cleanup()
|
||||
|
||||
bpy.types.register(PovrayRender)
|
||||
|
||||
# Use some of the existing buttons.
|
||||
import properties_render
|
||||
@@ -944,4 +943,18 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel):
|
||||
col = split.column()
|
||||
col.prop(scene, "pov_radio_always_sample")
|
||||
|
||||
bpy.types.register(RENDER_PT_povray_radiosity)
|
||||
|
||||
classes = [
|
||||
PovrayRender,
|
||||
RENDER_PT_povray_radiosity]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -1136,11 +1136,17 @@ class Export3DS(bpy.types.Operator):
|
||||
def poll(self, context): # Poll isnt working yet
|
||||
return context.active_object != None
|
||||
|
||||
bpy.types.register(Export3DS)
|
||||
|
||||
# Add to a menu
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".3ds")
|
||||
self.layout.operator(Export3DS.bl_idname, text="Autodesk 3DS...").path = default_path
|
||||
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def register():
|
||||
bpy.types.register(Export3DS)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(Export3DS)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
@@ -3435,7 +3435,7 @@ class ExportFBX(bpy.types.Operator):
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
|
||||
bpy.types.register(ExportFBX)
|
||||
|
||||
|
||||
# if __name__ == "__main__":
|
||||
# bpy.ops.EXPORT_OT_ply(filename="/tmp/test.ply")
|
||||
@@ -3467,4 +3467,11 @@ def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".fbx")
|
||||
self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX...").path = default_path
|
||||
|
||||
menu_item = bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def register():
|
||||
bpy.types.register(ExportFBX)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(ExportFBX)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
@@ -181,14 +181,16 @@ class ExportMDD(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
bpy.types.register(ExportMDD)
|
||||
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".mdd")
|
||||
self.layout.operator(ExportMDD.bl_idname, text="Vertex Keyframe Animation (.mdd)...").path = default_path
|
||||
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
if __name__ == '__main__':
|
||||
bpy.ops.export.mdd(path="/tmp/test.mdd")
|
||||
def register():
|
||||
bpy.types.register(ExportMDD)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(ExportMDD)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
@@ -958,16 +958,20 @@ class ExportOBJ(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
bpy.types.register(ExportOBJ)
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".obj")
|
||||
self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)...").path = default_path
|
||||
|
||||
menu_item = bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.EXPORT_OT_obj(filename="/tmp/test.obj")
|
||||
def register():
|
||||
bpy.types.register(ExportOBJ)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(ExportOBJ)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
|
||||
# CONVERSION ISSUES
|
||||
# - matrix problem
|
||||
|
||||
@@ -313,14 +313,15 @@ class ExportPLY(bpy.types.Operator):
|
||||
row.prop(props, "use_colors")
|
||||
|
||||
|
||||
bpy.types.register(ExportPLY)
|
||||
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".ply")
|
||||
self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path
|
||||
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.export.ply(path="/tmp/test.ply")
|
||||
def register():
|
||||
bpy.types.register(ExportPLY)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(ExportPLY)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
@@ -1242,14 +1242,19 @@ class ExportX3D(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
bpy.types.register(ExportX3D)
|
||||
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".x3d")
|
||||
self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)...").path = default_path
|
||||
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def register():
|
||||
bpy.types.register(ExportX3D)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(ExportX3D)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
# NOTES
|
||||
# - blender version is hardcoded
|
||||
|
||||
@@ -895,7 +895,12 @@ class BvhImporter(bpy.types.Operator):
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
|
||||
bpy.types.register(BvhImporter)
|
||||
|
||||
menu_func = lambda self, context: self.layout.operator(BvhImporter.bl_idname, text="Motion Capture (.bvh)...")
|
||||
bpy.types.INFO_MT_file_import.append(menu_func)
|
||||
|
||||
def register():
|
||||
bpy.types.register(BvhImporter)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(BvhImporter)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
@@ -1031,10 +1031,17 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
bpy.types.register(IMPORT_OT_autodesk_3ds)
|
||||
|
||||
menu_func = lambda self, context: self.layout.operator(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...")
|
||||
bpy.types.INFO_MT_file_import.append(menu_func)
|
||||
|
||||
|
||||
def register():
|
||||
bpy.types.register(IMPORT_OT_autodesk_3ds)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(IMPORT_OT_autodesk_3ds)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
# NOTES:
|
||||
# why add 1 extra vertex? and remove it when done? - "Answer - eekadoodle - would need to re-order UV's without this since face order isnt always what we give blender, BMesh will solve :D"
|
||||
|
||||
@@ -1623,11 +1623,16 @@ class IMPORT_OT_obj(bpy.types.Operator):
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
|
||||
bpy.types.register(IMPORT_OT_obj)
|
||||
|
||||
|
||||
menu_func = lambda self, context: self.layout.operator(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...")
|
||||
menu_item = bpy.types.INFO_MT_file_import.append(menu_func)
|
||||
|
||||
|
||||
def register():
|
||||
bpy.types.register(IMPORT_OT_obj)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(IMPORT_OT_obj)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
|
||||
# NOTES (all line numbers refer to 2.4x import_obj.py, not this file)
|
||||
|
||||
@@ -35,3 +35,9 @@ blacklist = []
|
||||
init_file = ""
|
||||
init_data = True
|
||||
init_address = True
|
||||
|
||||
def register():
|
||||
pass # TODO
|
||||
|
||||
def unregister():
|
||||
pass # TODO
|
||||
|
||||
@@ -56,7 +56,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
||||
|
||||
def test_reload(module):
|
||||
try:
|
||||
reload(module)
|
||||
return reload(module)
|
||||
except:
|
||||
traceback.print_exc()
|
||||
|
||||
@@ -97,7 +97,15 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
||||
|
||||
if reload_scripts and mod:
|
||||
print("Reloading:", mod)
|
||||
test_reload(mod)
|
||||
mod = test_reload(mod)
|
||||
|
||||
if mod:
|
||||
register = getattr(mod, "register", None)
|
||||
if register:
|
||||
register()
|
||||
else:
|
||||
print("\nWarning! '%s%s%s' has no register function, this is now a requirement for registerable scripts." % (path, _os.sep, f))
|
||||
|
||||
|
||||
if _bpy.app.debug:
|
||||
print("Time %.4f" % (time.time() - t_main))
|
||||
|
||||
@@ -448,9 +448,9 @@ class _GenericUI:
|
||||
|
||||
if draw_funcs is None:
|
||||
|
||||
def draw_ls(*args):
|
||||
def draw_ls(self, context):
|
||||
for func in draw_ls._draw_funcs:
|
||||
func(*args)
|
||||
func(self, context)
|
||||
|
||||
draw_funcs = draw_ls._draw_funcs = [cls.draw]
|
||||
cls.draw = draw_ls
|
||||
@@ -469,6 +469,12 @@ class _GenericUI:
|
||||
draw_funcs = cls._dyn_ui_initialize()
|
||||
draw_funcs.insert(0, draw_func)
|
||||
|
||||
@classmethod
|
||||
def remove(cls, draw_func):
|
||||
"""Remove a draw function that has been added to this menu"""
|
||||
draw_funcs = cls._dyn_ui_initialize()
|
||||
draw_funcs.remove(draw_func)
|
||||
|
||||
|
||||
class Panel(StructRNA, _GenericUI):
|
||||
__slots__ = ()
|
||||
|
||||
@@ -600,14 +600,17 @@ class AddHuman(bpy.types.Operator):
|
||||
bpy.ops.object.mode_set(mode=mode_orig)
|
||||
return {'FINISHED'}
|
||||
|
||||
# Register the operator
|
||||
bpy.types.register(AddHuman)
|
||||
|
||||
# Add to a menu
|
||||
menu_func = (lambda self, context: self.layout.operator(AddHuman.bl_idname,
|
||||
icon='OUTLINER_OB_ARMATURE', text="Human (Meta-Rig)"))
|
||||
|
||||
bpy.types.INFO_MT_armature_add.append(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.mesh.armature_human_advanced_add()
|
||||
def register():
|
||||
bpy.types.register(AddHuman)
|
||||
bpy.types.INFO_MT_armature_add.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(AddHuman)
|
||||
bpy.types.INFO_MT_armature_add.remove(menu_func)
|
||||
|
||||
|
||||
@@ -157,14 +157,15 @@ class AddTorus(bpy.types.Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
# Register the operator
|
||||
bpy.types.register(AddTorus)
|
||||
|
||||
# Add to the menu
|
||||
menu_func = (lambda self, context: self.layout.operator(AddTorus.bl_idname,
|
||||
text="Torus", icon='MESH_DONUT'))
|
||||
|
||||
bpy.types.INFO_MT_mesh_add.append(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.mesh.primitive_torus_add()
|
||||
def register():
|
||||
bpy.types.register(AddTorus)
|
||||
bpy.types.INFO_MT_mesh_add.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(AddTorus)
|
||||
bpy.types.INFO_MT_mesh_add.remove(menu_func)
|
||||
|
||||
@@ -196,3 +196,9 @@ def banner(context):
|
||||
console.locals["C"] = bpy.context
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def register():
|
||||
pass
|
||||
|
||||
def unregister():
|
||||
pass
|
||||
|
||||
@@ -76,3 +76,10 @@ def banner(context):
|
||||
sc.prompt = os.getcwd() + PROMPT
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
def register():
|
||||
pass
|
||||
|
||||
def unregister():
|
||||
pass
|
||||
|
||||
@@ -55,7 +55,11 @@ class DiscontFilterOp(bpy.types.Operator):
|
||||
main(context)
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(DiscontFilterOp)
|
||||
def register():
|
||||
bpy.types.register(DiscontFilterOp)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(DiscontFilterOp)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.graph.discont_filter()
|
||||
|
||||
@@ -41,4 +41,9 @@ class SaveDirty(bpy.types.Operator):
|
||||
image.save(path=path)
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(SaveDirty)
|
||||
|
||||
def register():
|
||||
bpy.types.register(SaveDirty)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(SaveDirty)
|
||||
|
||||
@@ -173,10 +173,20 @@ class MeshMirrorUV(bpy.types.Operator):
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
# Register the operator
|
||||
bpy.types.register(MeshSelectInteriorFaces)
|
||||
bpy.types.register(MeshMirrorUV)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# bpy.ops.mesh.faces_select_interior()
|
||||
bpy.ops.mesh.faces_miror_uv()
|
||||
# Register the operator
|
||||
classes = [
|
||||
MeshSelectInteriorFaces,
|
||||
MeshMirrorUV]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
|
||||
@@ -466,13 +466,23 @@ class MakeDupliFace(bpy.types.Operator):
|
||||
self._main(context)
|
||||
return {'FINISHED'}
|
||||
|
||||
# if __name__ == "__main__":
|
||||
# bpy.ops.uv.simple_operator()
|
||||
|
||||
classes = [
|
||||
SelectPattern,
|
||||
SelectCamera,
|
||||
SubdivisionSet,
|
||||
ShapeTransfer,
|
||||
JoinUVs,
|
||||
MakeDupliFace]
|
||||
|
||||
|
||||
bpy.types.register(SelectPattern)
|
||||
bpy.types.register(SelectCamera)
|
||||
bpy.types.register(SubdivisionSet)
|
||||
bpy.types.register(ShapeTransfer)
|
||||
bpy.types.register(JoinUVs)
|
||||
bpy.types.register(MakeDupliFace)
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
|
||||
@@ -197,11 +197,16 @@ class AlignObjects(bpy.types.Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
bpy.types.register(AlignObjects)
|
||||
|
||||
def menu_func(self, context):
|
||||
if context.mode == 'OBJECT':
|
||||
self.layout.operator(AlignObjects.bl_idname,
|
||||
text="Align Objects")
|
||||
|
||||
bpy.types.VIEW3D_MT_transform.append(menu_func)
|
||||
|
||||
def register():
|
||||
bpy.types.register(AlignObjects)
|
||||
bpy.types.VIEW3D_MT_transform.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(AlignObjects)
|
||||
bpy.types.VIEW3D_MT_transform.remove(menu_func)
|
||||
|
||||
@@ -134,13 +134,17 @@ class RandomizeLocRotSize(bpy.types.Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
# Register the operator
|
||||
bpy.types.register(RandomizeLocRotSize)
|
||||
|
||||
|
||||
def menu_func(self, context):
|
||||
if context.mode == 'OBJECT':
|
||||
self.layout.operator(RandomizeLocRotSize.bl_idname,
|
||||
text="Randomize Transform")
|
||||
|
||||
bpy.types.VIEW3D_MT_transform.append(menu_func)
|
||||
|
||||
def register():
|
||||
bpy.types.register(RandomizeLocRotSize)
|
||||
bpy.types.VIEW3D_MT_transform.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(RandomizeLocRotSize)
|
||||
bpy.types.VIEW3D_MT_transform.remove(menu_func)
|
||||
|
||||
|
||||
@@ -158,7 +158,20 @@ class AddPresetSunSky(AddPresetBase):
|
||||
preset_subdir = "sunsky"
|
||||
|
||||
|
||||
bpy.types.register(AddPresetRender)
|
||||
bpy.types.register(AddPresetSSS)
|
||||
bpy.types.register(AddPresetCloth)
|
||||
bpy.types.register(AddPresetSunSky)
|
||||
classes = [
|
||||
AddPresetRender,
|
||||
AddPresetSSS,
|
||||
AddPresetCloth,
|
||||
AddPresetSunSky]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
|
||||
@@ -114,4 +114,9 @@ class PlayRenderedAnim(bpy.types.Operator):
|
||||
|
||||
return('FINISHED',)
|
||||
|
||||
bpy.types.register(PlayRenderedAnim)
|
||||
|
||||
def register():
|
||||
bpy.types.register(PlayRenderedAnim)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(PlayRenderedAnim)
|
||||
|
||||
@@ -70,7 +70,12 @@ class SequencerCrossfadeSounds(bpy.types.Operator):
|
||||
self.report({'ERROR'}, "The selected strips don't overlap.")
|
||||
return {'CANCELLED'}
|
||||
|
||||
bpy.types.register(SequencerCrossfadeSounds)
|
||||
|
||||
def register():
|
||||
bpy.types.register(SequencerCrossfadeSounds)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(SequencerCrossfadeSounds)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.sequencer.crossfade_sounds()
|
||||
|
||||
@@ -196,15 +196,16 @@ class ExportUVLayout(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
# Register the operator
|
||||
bpy.types.register(ExportUVLayout)
|
||||
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".svg")
|
||||
self.layout.operator(ExportUVLayout.bl_idname).path = default_path
|
||||
|
||||
bpy.types.IMAGE_MT_uvs.append(menu_func)
|
||||
|
||||
#if __name__ == "__main__":
|
||||
# bpy.ops.uv.export_layout(path="/home/ideasman42/foo.svg")
|
||||
def register():
|
||||
bpy.types.register(ExportUVLayout)
|
||||
bpy.types.IMAGE_MT_uvs.append(menu_func)
|
||||
|
||||
def unreguster():
|
||||
bpy.types.unregister(ExportUVLayout)
|
||||
bpy.types.IMAGE_MT_uvs.remove(menu_func)
|
||||
|
||||
@@ -259,11 +259,16 @@ class FollowActiveQuads(bpy.types.Operator):
|
||||
main(context, self)
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(FollowActiveQuads)
|
||||
|
||||
# Add to a menu
|
||||
menu_func = (lambda self, context: self.layout.operator(FollowActiveQuads.bl_idname))
|
||||
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
|
||||
|
||||
if __name__ == '__main__':
|
||||
bpy.ops.uv.follow_active_quads()
|
||||
|
||||
def register():
|
||||
bpy.types.register(FollowActiveQuads)
|
||||
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(FollowActiveQuads)
|
||||
bpy.types.VIEW3D_MT_uv_map.remove(menu_func)
|
||||
|
||||
|
||||
@@ -1134,13 +1134,16 @@ class SmartProject(bpy.types.Operator):
|
||||
main(context, self.properties.island_margin, self.properties.angle_limit)
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(SmartProject)
|
||||
|
||||
# Add to a menu
|
||||
menu_func = (lambda self, context: self.layout.operator(SmartProject.bl_idname,
|
||||
text="Smart Project"))
|
||||
|
||||
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
|
||||
|
||||
if __name__ == '__main__':
|
||||
bpy.ops.uv.smart_project()
|
||||
def register():
|
||||
bpy.types.register(SmartProject)
|
||||
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(SmartProject)
|
||||
bpy.types.VIEW3D_MT_uv_map.remove(menu_func)
|
||||
|
||||
@@ -174,7 +174,10 @@ class VertexPaintDirt(bpy.types.Operator):
|
||||
|
||||
return('FINISHED',)
|
||||
|
||||
bpy.types.register(VertexPaintDirt)
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.mesh.vertex_paint_dirt()
|
||||
def register():
|
||||
bpy.types.register(VertexPaintDirt)
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(VertexPaintDirt)
|
||||
|
||||
|
||||
@@ -418,26 +418,38 @@ class WM_OT_reload_scripts(bpy.types.Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
bpy.types.register(MESH_OT_delete_edgeloop)
|
||||
|
||||
bpy.types.register(WM_OT_context_set_boolean)
|
||||
bpy.types.register(WM_OT_context_set_int)
|
||||
bpy.types.register(WM_OT_context_set_float)
|
||||
bpy.types.register(WM_OT_context_set_string)
|
||||
bpy.types.register(WM_OT_context_set_enum)
|
||||
bpy.types.register(WM_OT_context_set_value)
|
||||
bpy.types.register(WM_OT_context_toggle)
|
||||
bpy.types.register(WM_OT_context_toggle_enum)
|
||||
bpy.types.register(WM_OT_context_cycle_enum)
|
||||
bpy.types.register(WM_OT_context_cycle_int)
|
||||
|
||||
bpy.types.register(WM_OT_doc_view)
|
||||
bpy.types.register(WM_OT_doc_edit)
|
||||
|
||||
bpy.types.register(WM_OT_reload_scripts)
|
||||
|
||||
# experemental!
|
||||
import rna_prop_ui
|
||||
bpy.types.register(rna_prop_ui.WM_OT_properties_edit)
|
||||
bpy.types.register(rna_prop_ui.WM_OT_properties_add)
|
||||
bpy.types.register(rna_prop_ui.WM_OT_properties_remove)
|
||||
|
||||
classes = [
|
||||
MESH_OT_delete_edgeloop,
|
||||
|
||||
WM_OT_context_set_boolean,
|
||||
WM_OT_context_set_int,
|
||||
WM_OT_context_set_float,
|
||||
WM_OT_context_set_string,
|
||||
WM_OT_context_set_enum,
|
||||
WM_OT_context_set_value,
|
||||
WM_OT_context_toggle,
|
||||
WM_OT_context_toggle_enum,
|
||||
WM_OT_context_cycle_enum,
|
||||
WM_OT_context_cycle_int,
|
||||
|
||||
WM_OT_doc_view,
|
||||
WM_OT_doc_edit,
|
||||
|
||||
WM_OT_reload_scripts,
|
||||
|
||||
# experemental!
|
||||
rna_prop_ui.WM_OT_properties_edit,
|
||||
rna_prop_ui.WM_OT_properties_add,
|
||||
rna_prop_ui.WM_OT_properties_remove]
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -157,8 +157,19 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel):
|
||||
col.operator("pose.paths_clear", text="Clear Paths")
|
||||
|
||||
|
||||
classes = [
|
||||
OBJECT_PT_motion_paths,
|
||||
DATA_PT_motion_paths]
|
||||
|
||||
#bpy.types.register(OBJECT_PT_onion_skinning)
|
||||
#bpy.types.register(DATA_PT_onion_skinning)
|
||||
bpy.types.register(OBJECT_PT_motion_paths)
|
||||
bpy.types.register(DATA_PT_motion_paths)
|
||||
# OBJECT_PT_onion_skinning
|
||||
# DATA_PT_onion_skinning
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -253,12 +253,22 @@ class DATA_PT_iksolver_itasc(DataButtonsPanel):
|
||||
row.prop(itasc, "dampmax", text="Damp", slider=True)
|
||||
row.prop(itasc, "dampeps", text="Eps", slider=True)
|
||||
|
||||
classes = [
|
||||
DATA_PT_context_arm,
|
||||
DATA_PT_skeleton,
|
||||
DATA_PT_display,
|
||||
DATA_PT_bone_groups,
|
||||
DATA_PT_ghost,
|
||||
DATA_PT_iksolver_itasc,
|
||||
|
||||
bpy.types.register(DATA_PT_context_arm)
|
||||
bpy.types.register(DATA_PT_skeleton)
|
||||
bpy.types.register(DATA_PT_display)
|
||||
bpy.types.register(DATA_PT_bone_groups)
|
||||
bpy.types.register(DATA_PT_ghost)
|
||||
bpy.types.register(DATA_PT_iksolver_itasc)
|
||||
DATA_PT_custom_props_arm]
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_arm)
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -327,24 +327,37 @@ class INFO_MT_armature_metarig_add(bpy.types.Menu):
|
||||
text = bpy.utils.display_name(submodule_type)
|
||||
layout.operator("pose.metarig_sample_add", text=text, icon='OUTLINER_OB_ARMATURE').metarig_type = submodule_type
|
||||
|
||||
bpy.types.register(DATA_PT_template)
|
||||
classes = [
|
||||
DATA_PT_template,
|
||||
|
||||
bpy.types.register(PoseTemplateSettings)
|
||||
bpy.types.register(PoseTemplate)
|
||||
PoseTemplateSettings,
|
||||
PoseTemplate,
|
||||
|
||||
bpy.types.register(Reload)
|
||||
bpy.types.register(Generate)
|
||||
bpy.types.register(Validate)
|
||||
bpy.types.register(Sample)
|
||||
bpy.types.register(Graph)
|
||||
bpy.types.register(AsScript)
|
||||
Reload,
|
||||
Generate,
|
||||
Validate,
|
||||
Sample,
|
||||
Graph,
|
||||
AsScript,
|
||||
|
||||
bpy.types.register(ActiveAssign)
|
||||
bpy.types.register(ActiveClear)
|
||||
ActiveAssign,
|
||||
ActiveClear,
|
||||
|
||||
INFO_MT_armature_metarig_add]
|
||||
|
||||
bpy.types.register(INFO_MT_armature_metarig_add)
|
||||
|
||||
import space_info
|
||||
menu_func = (lambda self, context: self.layout.menu("INFO_MT_armature_metarig_add", icon='OUTLINER_OB_ARMATURE'))
|
||||
space_info.INFO_MT_armature_add.append(menu_func)
|
||||
import space_info # ensure the menu is loaded first
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
space_info.INFO_MT_armature_add.append(menu_func)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
bpy.types.INFO_MT_armature_add.remove(menu_func)
|
||||
|
||||
@@ -387,13 +387,23 @@ class BONE_PT_deform(BoneButtonsPanel):
|
||||
col.label(text="Offset:")
|
||||
col.prop(bone, "cyclic_offset")
|
||||
|
||||
classes = [
|
||||
BONE_PT_context_bone,
|
||||
BONE_PT_transform,
|
||||
BONE_PT_transform_locks,
|
||||
BONE_PT_relations,
|
||||
BONE_PT_display,
|
||||
BONE_PT_inverse_kinematics,
|
||||
BONE_PT_deform,
|
||||
|
||||
bpy.types.register(BONE_PT_context_bone)
|
||||
bpy.types.register(BONE_PT_transform)
|
||||
bpy.types.register(BONE_PT_transform_locks)
|
||||
bpy.types.register(BONE_PT_relations)
|
||||
bpy.types.register(BONE_PT_display)
|
||||
bpy.types.register(BONE_PT_inverse_kinematics)
|
||||
bpy.types.register(BONE_PT_deform)
|
||||
BONE_PT_custom_props]
|
||||
|
||||
bpy.types.register(BONE_PT_custom_props)
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -150,8 +150,20 @@ class DATA_PT_camera_display(DataButtonsPanel):
|
||||
sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
|
||||
|
||||
|
||||
bpy.types.register(DATA_PT_context_camera)
|
||||
bpy.types.register(DATA_PT_camera)
|
||||
bpy.types.register(DATA_PT_camera_display)
|
||||
classes = [
|
||||
DATA_PT_context_camera,
|
||||
DATA_PT_camera,
|
||||
DATA_PT_camera_display,
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_camera)
|
||||
DATA_PT_custom_props_camera]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -383,13 +383,25 @@ class DATA_PT_textboxes(DataButtonsPanel):
|
||||
col.prop(box, "y", text="Y")
|
||||
|
||||
|
||||
bpy.types.register(DATA_PT_context_curve)
|
||||
bpy.types.register(DATA_PT_shape_curve)
|
||||
bpy.types.register(DATA_PT_geometry_curve)
|
||||
bpy.types.register(DATA_PT_pathanim)
|
||||
bpy.types.register(DATA_PT_active_spline)
|
||||
bpy.types.register(DATA_PT_font)
|
||||
bpy.types.register(DATA_PT_paragraph)
|
||||
bpy.types.register(DATA_PT_textboxes)
|
||||
classes = [
|
||||
DATA_PT_context_curve,
|
||||
DATA_PT_shape_curve,
|
||||
DATA_PT_geometry_curve,
|
||||
DATA_PT_pathanim,
|
||||
DATA_PT_active_spline,
|
||||
DATA_PT_font,
|
||||
DATA_PT_paragraph,
|
||||
DATA_PT_textboxes,
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_curve)
|
||||
DATA_PT_custom_props_curve]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -47,4 +47,16 @@ class DATA_PT_empty(DataButtonsPanel):
|
||||
|
||||
layout.prop(ob, "empty_draw_size", text="Size")
|
||||
|
||||
bpy.types.register(DATA_PT_empty)
|
||||
|
||||
classes = [
|
||||
DATA_PT_empty]
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -391,15 +391,27 @@ class DATA_PT_falloff_curve(DataButtonsPanel):
|
||||
self.layout.template_curve_mapping(lamp, "falloff_curve")
|
||||
|
||||
|
||||
bpy.types.register(LAMP_MT_sunsky_presets)
|
||||
classes = [
|
||||
LAMP_MT_sunsky_presets,
|
||||
|
||||
bpy.types.register(DATA_PT_context_lamp)
|
||||
bpy.types.register(DATA_PT_preview)
|
||||
bpy.types.register(DATA_PT_lamp)
|
||||
bpy.types.register(DATA_PT_falloff_curve)
|
||||
bpy.types.register(DATA_PT_area)
|
||||
bpy.types.register(DATA_PT_spot)
|
||||
bpy.types.register(DATA_PT_shadow)
|
||||
bpy.types.register(DATA_PT_sunsky)
|
||||
DATA_PT_context_lamp,
|
||||
DATA_PT_preview,
|
||||
DATA_PT_lamp,
|
||||
DATA_PT_falloff_curve,
|
||||
DATA_PT_area,
|
||||
DATA_PT_spot,
|
||||
DATA_PT_shadow,
|
||||
DATA_PT_sunsky,
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_lamp)
|
||||
DATA_PT_custom_props_lamp]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -96,7 +96,19 @@ class DATA_PT_lattice(DataButtonsPanel):
|
||||
layout.prop(lat, "outside")
|
||||
|
||||
|
||||
bpy.types.register(DATA_PT_context_lattice)
|
||||
bpy.types.register(DATA_PT_lattice)
|
||||
classes = [
|
||||
DATA_PT_context_lattice,
|
||||
DATA_PT_lattice,
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_lattice)
|
||||
DATA_PT_custom_props_lattice]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -304,15 +304,28 @@ class DATA_PT_vertex_colors(DataButtonsPanel):
|
||||
if lay:
|
||||
layout.prop(lay, "name")
|
||||
|
||||
bpy.types.register(MESH_MT_vertex_group_specials)
|
||||
bpy.types.register(MESH_MT_shape_key_specials)
|
||||
|
||||
bpy.types.register(DATA_PT_context_mesh)
|
||||
bpy.types.register(DATA_PT_normals)
|
||||
bpy.types.register(DATA_PT_settings)
|
||||
bpy.types.register(DATA_PT_vertex_groups)
|
||||
bpy.types.register(DATA_PT_shape_keys)
|
||||
bpy.types.register(DATA_PT_uv_texture)
|
||||
bpy.types.register(DATA_PT_vertex_colors)
|
||||
classes = [
|
||||
MESH_MT_vertex_group_specials,
|
||||
MESH_MT_shape_key_specials,
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_mesh)
|
||||
DATA_PT_context_mesh,
|
||||
DATA_PT_normals,
|
||||
DATA_PT_settings,
|
||||
DATA_PT_vertex_groups,
|
||||
DATA_PT_shape_keys,
|
||||
DATA_PT_uv_texture,
|
||||
DATA_PT_vertex_colors,
|
||||
|
||||
DATA_PT_custom_props_mesh]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -135,8 +135,21 @@ class DATA_PT_metaball_element(DataButtonsPanel):
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
col.prop(metaelem, "size_y", text="Y")
|
||||
|
||||
bpy.types.register(DATA_PT_context_metaball)
|
||||
bpy.types.register(DATA_PT_metaball)
|
||||
bpy.types.register(DATA_PT_metaball_element)
|
||||
|
||||
bpy.types.register(DATA_PT_custom_props_metaball)
|
||||
classes = [
|
||||
DATA_PT_context_metaball,
|
||||
DATA_PT_metaball,
|
||||
DATA_PT_metaball_element,
|
||||
|
||||
DATA_PT_custom_props_metaball]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -729,4 +729,17 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.prop(md, "width", slider=True)
|
||||
col.prop(md, "narrowness", slider=True)
|
||||
|
||||
bpy.types.register(DATA_PT_modifiers)
|
||||
|
||||
classes = [
|
||||
DATA_PT_modifiers]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -196,10 +196,6 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
|
||||
col.prop(game, "collision_compound", text="Compound")
|
||||
|
||||
|
||||
bpy.types.register(PHYSICS_PT_game_physics)
|
||||
bpy.types.register(PHYSICS_PT_game_collision_bounds)
|
||||
|
||||
|
||||
class RenderButtonsPanel(bpy.types.Panel):
|
||||
bl_space_type = 'PROPERTIES'
|
||||
bl_region_type = 'WINDOW'
|
||||
@@ -386,13 +382,6 @@ class RENDER_PT_game_sound(RenderButtonsPanel):
|
||||
layout.prop(scene, "speed_of_sound", text="Speed")
|
||||
layout.prop(scene, "doppler_factor")
|
||||
|
||||
bpy.types.register(RENDER_PT_game)
|
||||
bpy.types.register(RENDER_PT_game_player)
|
||||
bpy.types.register(RENDER_PT_game_stereo)
|
||||
bpy.types.register(RENDER_PT_game_shading)
|
||||
bpy.types.register(RENDER_PT_game_performance)
|
||||
bpy.types.register(RENDER_PT_game_sound)
|
||||
|
||||
|
||||
class WorldButtonsPanel(bpy.types.Panel):
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@@ -521,7 +510,30 @@ class WORLD_PT_game_physics(WorldButtonsPanel):
|
||||
col.label(text="Logic Steps:")
|
||||
col.prop(gs, "logic_step_max", text="Max")
|
||||
|
||||
bpy.types.register(WORLD_PT_game_context_world)
|
||||
bpy.types.register(WORLD_PT_game_world)
|
||||
bpy.types.register(WORLD_PT_game_mist)
|
||||
bpy.types.register(WORLD_PT_game_physics)
|
||||
|
||||
classes = [
|
||||
PHYSICS_PT_game_physics,
|
||||
PHYSICS_PT_game_collision_bounds,
|
||||
|
||||
RENDER_PT_game,
|
||||
RENDER_PT_game_player,
|
||||
RENDER_PT_game_stereo,
|
||||
RENDER_PT_game_shading,
|
||||
RENDER_PT_game_performance,
|
||||
RENDER_PT_game_sound,
|
||||
|
||||
WORLD_PT_game_context_world,
|
||||
WORLD_PT_game_world,
|
||||
WORLD_PT_game_mist,
|
||||
WORLD_PT_game_physics]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -773,22 +773,6 @@ class MATERIAL_PT_flare(MaterialButtonsPanel):
|
||||
col.prop(halo, "flares_sub", text="Subflares")
|
||||
col.prop(halo, "flare_subsize", text="Subsize")
|
||||
|
||||
bpy.types.register(MATERIAL_PT_context_material)
|
||||
bpy.types.register(MATERIAL_PT_preview)
|
||||
bpy.types.register(MATERIAL_PT_diffuse)
|
||||
bpy.types.register(MATERIAL_PT_specular)
|
||||
bpy.types.register(MATERIAL_PT_shading)
|
||||
bpy.types.register(MATERIAL_PT_transp)
|
||||
bpy.types.register(MATERIAL_PT_mirror)
|
||||
bpy.types.register(MATERIAL_PT_sss)
|
||||
bpy.types.register(MATERIAL_PT_halo)
|
||||
bpy.types.register(MATERIAL_PT_flare)
|
||||
bpy.types.register(MATERIAL_PT_physics)
|
||||
bpy.types.register(MATERIAL_PT_strand)
|
||||
bpy.types.register(MATERIAL_PT_options)
|
||||
bpy.types.register(MATERIAL_PT_shadow)
|
||||
bpy.types.register(MATERIAL_PT_transp_game)
|
||||
|
||||
|
||||
class VolumeButtonsPanel(bpy.types.Panel):
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@@ -927,14 +911,43 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel):
|
||||
col.label()
|
||||
col.prop(vol, "depth_cutoff")
|
||||
|
||||
bpy.types.register(MATERIAL_MT_sss_presets)
|
||||
bpy.types.register(MATERIAL_MT_specials)
|
||||
|
||||
bpy.types.register(MATERIAL_PT_volume_density)
|
||||
bpy.types.register(MATERIAL_PT_volume_shading)
|
||||
bpy.types.register(MATERIAL_PT_volume_lighting)
|
||||
bpy.types.register(MATERIAL_PT_volume_transp)
|
||||
classes = [
|
||||
MATERIAL_PT_context_material,
|
||||
MATERIAL_PT_preview,
|
||||
MATERIAL_PT_diffuse,
|
||||
MATERIAL_PT_specular,
|
||||
MATERIAL_PT_shading,
|
||||
MATERIAL_PT_transp,
|
||||
MATERIAL_PT_mirror,
|
||||
MATERIAL_PT_sss,
|
||||
MATERIAL_PT_halo,
|
||||
MATERIAL_PT_flare,
|
||||
MATERIAL_PT_physics,
|
||||
MATERIAL_PT_strand,
|
||||
MATERIAL_PT_options,
|
||||
MATERIAL_PT_shadow,
|
||||
MATERIAL_PT_transp_game,
|
||||
|
||||
bpy.types.register(MATERIAL_PT_volume_integration)
|
||||
MATERIAL_MT_sss_presets,
|
||||
MATERIAL_MT_specials,
|
||||
|
||||
bpy.types.register(MATERIAL_PT_custom_props)
|
||||
MATERIAL_PT_volume_density,
|
||||
MATERIAL_PT_volume_shading,
|
||||
MATERIAL_PT_volume_lighting,
|
||||
MATERIAL_PT_volume_transp,
|
||||
|
||||
MATERIAL_PT_volume_integration,
|
||||
|
||||
MATERIAL_PT_custom_props]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -305,13 +305,25 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
|
||||
row.active = (ob.parent is not None)
|
||||
|
||||
|
||||
bpy.types.register(OBJECT_PT_context_object)
|
||||
bpy.types.register(OBJECT_PT_transform)
|
||||
bpy.types.register(OBJECT_PT_transform_locks)
|
||||
bpy.types.register(OBJECT_PT_relations)
|
||||
bpy.types.register(OBJECT_PT_groups)
|
||||
bpy.types.register(OBJECT_PT_display)
|
||||
bpy.types.register(OBJECT_PT_duplication)
|
||||
bpy.types.register(OBJECT_PT_animation)
|
||||
classes = [
|
||||
OBJECT_PT_context_object,
|
||||
OBJECT_PT_transform,
|
||||
OBJECT_PT_transform_locks,
|
||||
OBJECT_PT_relations,
|
||||
OBJECT_PT_groups,
|
||||
OBJECT_PT_display,
|
||||
OBJECT_PT_duplication,
|
||||
OBJECT_PT_animation,
|
||||
|
||||
bpy.types.register(OBJECT_PT_custom_props)
|
||||
OBJECT_PT_custom_props]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -754,5 +754,18 @@ class BONE_PT_constraints(ConstraintButtonsPanel):
|
||||
for con in context.pose_bone.constraints:
|
||||
self.draw_constraint(context, con)
|
||||
|
||||
bpy.types.register(OBJECT_PT_constraints)
|
||||
bpy.types.register(BONE_PT_constraints)
|
||||
|
||||
classes = [
|
||||
OBJECT_PT_constraints,
|
||||
BONE_PT_constraints]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -998,19 +998,32 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel):
|
||||
row.prop_object(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
|
||||
row.prop(psys, "vertex_group_field_negate", text="")
|
||||
|
||||
bpy.types.register(PARTICLE_PT_context_particles)
|
||||
bpy.types.register(PARTICLE_PT_hair_dynamics)
|
||||
bpy.types.register(PARTICLE_PT_cache)
|
||||
bpy.types.register(PARTICLE_PT_emission)
|
||||
bpy.types.register(PARTICLE_PT_velocity)
|
||||
bpy.types.register(PARTICLE_PT_rotation)
|
||||
bpy.types.register(PARTICLE_PT_physics)
|
||||
bpy.types.register(PARTICLE_PT_boidbrain)
|
||||
bpy.types.register(PARTICLE_PT_render)
|
||||
bpy.types.register(PARTICLE_PT_draw)
|
||||
bpy.types.register(PARTICLE_PT_children)
|
||||
bpy.types.register(PARTICLE_PT_field_weights)
|
||||
bpy.types.register(PARTICLE_PT_force_fields)
|
||||
bpy.types.register(PARTICLE_PT_vertexgroups)
|
||||
|
||||
bpy.types.register(PARTICLE_PT_custom_props)
|
||||
classes = [
|
||||
PARTICLE_PT_context_particles,
|
||||
PARTICLE_PT_hair_dynamics,
|
||||
PARTICLE_PT_cache,
|
||||
PARTICLE_PT_emission,
|
||||
PARTICLE_PT_velocity,
|
||||
PARTICLE_PT_rotation,
|
||||
PARTICLE_PT_physics,
|
||||
PARTICLE_PT_boidbrain,
|
||||
PARTICLE_PT_render,
|
||||
PARTICLE_PT_draw,
|
||||
PARTICLE_PT_children,
|
||||
PARTICLE_PT_field_weights,
|
||||
PARTICLE_PT_force_fields,
|
||||
PARTICLE_PT_vertexgroups,
|
||||
|
||||
PARTICLE_PT_custom_props]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -228,10 +228,23 @@ class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel):
|
||||
cloth = context.cloth.settings
|
||||
effector_weights_ui(self, context, cloth.effector_weights)
|
||||
|
||||
bpy.types.register(CLOTH_MT_presets)
|
||||
|
||||
bpy.types.register(PHYSICS_PT_cloth)
|
||||
bpy.types.register(PHYSICS_PT_cloth_cache)
|
||||
bpy.types.register(PHYSICS_PT_cloth_collision)
|
||||
bpy.types.register(PHYSICS_PT_cloth_stiffness)
|
||||
bpy.types.register(PHYSICS_PT_cloth_field_weights)
|
||||
classes = [
|
||||
CLOTH_MT_presets,
|
||||
|
||||
PHYSICS_PT_cloth,
|
||||
PHYSICS_PT_cloth_cache,
|
||||
PHYSICS_PT_cloth_collision,
|
||||
PHYSICS_PT_cloth_stiffness,
|
||||
PHYSICS_PT_cloth_field_weights]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -210,3 +210,10 @@ def basic_force_field_falloff_ui(self, context, field):
|
||||
sub = col.column()
|
||||
sub.active = field.use_max_distance
|
||||
sub.prop(field, "maximum_distance", text="Distance")
|
||||
|
||||
|
||||
def register():
|
||||
pass
|
||||
|
||||
def unregister():
|
||||
pass
|
||||
|
||||
@@ -242,5 +242,18 @@ class PHYSICS_PT_collision(PhysicButtonsPanel):
|
||||
col.label(text="Force Fields:")
|
||||
col.prop(settings, "absorption", text="Absorption")
|
||||
|
||||
bpy.types.register(PHYSICS_PT_field)
|
||||
bpy.types.register(PHYSICS_PT_collision)
|
||||
|
||||
classes = [
|
||||
PHYSICS_PT_field,
|
||||
PHYSICS_PT_collision]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -291,7 +291,20 @@ class PHYSICS_PT_domain_particles(PhysicButtonsPanel):
|
||||
col.prop(fluid, "tracer_particles")
|
||||
col.prop(fluid, "generate_particles")
|
||||
|
||||
bpy.types.register(PHYSICS_PT_fluid)
|
||||
bpy.types.register(PHYSICS_PT_domain_gravity)
|
||||
bpy.types.register(PHYSICS_PT_domain_boundary)
|
||||
bpy.types.register(PHYSICS_PT_domain_particles)
|
||||
|
||||
classes = [
|
||||
PHYSICS_PT_fluid,
|
||||
PHYSICS_PT_domain_gravity,
|
||||
PHYSICS_PT_domain_boundary,
|
||||
PHYSICS_PT_domain_particles]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -238,9 +238,22 @@ class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel):
|
||||
domain = context.smoke.domain_settings
|
||||
effector_weights_ui(self, context, domain.effector_weights)
|
||||
|
||||
bpy.types.register(PHYSICS_PT_smoke)
|
||||
bpy.types.register(PHYSICS_PT_smoke_field_weights)
|
||||
bpy.types.register(PHYSICS_PT_smoke_cache)
|
||||
bpy.types.register(PHYSICS_PT_smoke_highres)
|
||||
bpy.types.register(PHYSICS_PT_smoke_groups)
|
||||
bpy.types.register(PHYSICS_PT_smoke_cache_highres)
|
||||
|
||||
classes = [
|
||||
PHYSICS_PT_smoke,
|
||||
PHYSICS_PT_smoke_field_weights,
|
||||
PHYSICS_PT_smoke_cache,
|
||||
PHYSICS_PT_smoke_highres,
|
||||
PHYSICS_PT_smoke_groups,
|
||||
PHYSICS_PT_smoke_cache_highres]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -280,10 +280,23 @@ class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel):
|
||||
|
||||
effector_weights_ui(self, context, softbody.effector_weights)
|
||||
|
||||
bpy.types.register(PHYSICS_PT_softbody)
|
||||
bpy.types.register(PHYSICS_PT_softbody_cache)
|
||||
bpy.types.register(PHYSICS_PT_softbody_goal)
|
||||
bpy.types.register(PHYSICS_PT_softbody_edge)
|
||||
bpy.types.register(PHYSICS_PT_softbody_collision)
|
||||
bpy.types.register(PHYSICS_PT_softbody_solver)
|
||||
bpy.types.register(PHYSICS_PT_softbody_field_weights)
|
||||
|
||||
classes = [
|
||||
PHYSICS_PT_softbody,
|
||||
PHYSICS_PT_softbody_cache,
|
||||
PHYSICS_PT_softbody_goal,
|
||||
PHYSICS_PT_softbody_edge,
|
||||
PHYSICS_PT_softbody_collision,
|
||||
PHYSICS_PT_softbody_solver,
|
||||
PHYSICS_PT_softbody_field_weights]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -624,16 +624,28 @@ class RENDER_PT_bake(RenderButtonsPanel):
|
||||
sub.prop(rd, "bake_bias")
|
||||
|
||||
|
||||
bpy.types.register(RENDER_MT_presets)
|
||||
bpy.types.register(RENDER_PT_render)
|
||||
bpy.types.register(RENDER_PT_layers)
|
||||
bpy.types.register(RENDER_PT_dimensions)
|
||||
bpy.types.register(RENDER_PT_antialiasing)
|
||||
bpy.types.register(RENDER_PT_motion_blur)
|
||||
bpy.types.register(RENDER_PT_shading)
|
||||
bpy.types.register(RENDER_PT_output)
|
||||
bpy.types.register(RENDER_PT_encoding)
|
||||
bpy.types.register(RENDER_PT_performance)
|
||||
bpy.types.register(RENDER_PT_post_processing)
|
||||
bpy.types.register(RENDER_PT_stamp)
|
||||
bpy.types.register(RENDER_PT_bake)
|
||||
classes = [
|
||||
RENDER_MT_presets,
|
||||
RENDER_PT_render,
|
||||
RENDER_PT_layers,
|
||||
RENDER_PT_dimensions,
|
||||
RENDER_PT_antialiasing,
|
||||
RENDER_PT_motion_blur,
|
||||
RENDER_PT_shading,
|
||||
RENDER_PT_output,
|
||||
RENDER_PT_encoding,
|
||||
RENDER_PT_performance,
|
||||
RENDER_PT_post_processing,
|
||||
RENDER_PT_stamp,
|
||||
RENDER_PT_bake]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -215,22 +215,11 @@ class SCENE_PT_simplify(SceneButtonsPanel):
|
||||
col = split.column()
|
||||
col.prop(rd, "simplify_shadow_samples", text="Shadow Samples")
|
||||
col.prop(rd, "simplify_ao_sss", text="AO and SSS")
|
||||
|
||||
|
||||
|
||||
bpy.types.register(SCENE_PT_scene)
|
||||
bpy.types.register(SCENE_PT_unit)
|
||||
bpy.types.register(SCENE_PT_keying_sets)
|
||||
bpy.types.register(SCENE_PT_keying_set_paths)
|
||||
bpy.types.register(SCENE_PT_physics)
|
||||
bpy.types.register(SCENE_PT_simplify)
|
||||
|
||||
bpy.types.register(SCENE_PT_custom_props)
|
||||
|
||||
################################
|
||||
|
||||
from bpy.props import *
|
||||
|
||||
|
||||
class ANIM_OT_keying_set_export(bpy.types.Operator):
|
||||
"Export Keying Set to a python script."
|
||||
bl_idname = "anim.keying_set_export"
|
||||
@@ -340,4 +329,17 @@ class ANIM_OT_keying_set_export(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
bpy.types.register(ANIM_OT_keying_set_export)
|
||||
|
||||
classes = [
|
||||
ANIM_OT_keying_set_export]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -956,29 +956,42 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
|
||||
col.prop(pd, "turbulence_depth")
|
||||
col.prop(pd, "turbulence_strength")
|
||||
|
||||
bpy.types.register(TEXTURE_PT_context_texture)
|
||||
bpy.types.register(TEXTURE_PT_preview)
|
||||
|
||||
bpy.types.register(TEXTURE_PT_clouds) # Texture Type Panels
|
||||
bpy.types.register(TEXTURE_PT_wood)
|
||||
bpy.types.register(TEXTURE_PT_marble)
|
||||
bpy.types.register(TEXTURE_PT_magic)
|
||||
bpy.types.register(TEXTURE_PT_blend)
|
||||
bpy.types.register(TEXTURE_PT_stucci)
|
||||
bpy.types.register(TEXTURE_PT_image)
|
||||
bpy.types.register(TEXTURE_PT_image_sampling)
|
||||
bpy.types.register(TEXTURE_PT_image_mapping)
|
||||
bpy.types.register(TEXTURE_PT_plugin)
|
||||
bpy.types.register(TEXTURE_PT_envmap)
|
||||
bpy.types.register(TEXTURE_PT_musgrave)
|
||||
bpy.types.register(TEXTURE_PT_voronoi)
|
||||
bpy.types.register(TEXTURE_PT_distortednoise)
|
||||
bpy.types.register(TEXTURE_PT_voxeldata)
|
||||
bpy.types.register(TEXTURE_PT_pointdensity)
|
||||
bpy.types.register(TEXTURE_PT_pointdensity_turbulence)
|
||||
classes = [
|
||||
TEXTURE_PT_context_texture,
|
||||
TEXTURE_PT_preview,
|
||||
|
||||
bpy.types.register(TEXTURE_PT_colors)
|
||||
bpy.types.register(TEXTURE_PT_mapping)
|
||||
bpy.types.register(TEXTURE_PT_influence)
|
||||
TEXTURE_PT_clouds, # Texture Type Panels
|
||||
TEXTURE_PT_wood,
|
||||
TEXTURE_PT_marble,
|
||||
TEXTURE_PT_magic,
|
||||
TEXTURE_PT_blend,
|
||||
TEXTURE_PT_stucci,
|
||||
TEXTURE_PT_image,
|
||||
TEXTURE_PT_image_sampling,
|
||||
TEXTURE_PT_image_mapping,
|
||||
TEXTURE_PT_plugin,
|
||||
TEXTURE_PT_envmap,
|
||||
TEXTURE_PT_musgrave,
|
||||
TEXTURE_PT_voronoi,
|
||||
TEXTURE_PT_distortednoise,
|
||||
TEXTURE_PT_voxeldata,
|
||||
TEXTURE_PT_pointdensity,
|
||||
TEXTURE_PT_pointdensity_turbulence,
|
||||
|
||||
bpy.types.register(TEXTURE_PT_custom_props)
|
||||
TEXTURE_PT_colors,
|
||||
TEXTURE_PT_mapping,
|
||||
TEXTURE_PT_influence,
|
||||
|
||||
TEXTURE_PT_custom_props]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -267,14 +267,27 @@ class WORLD_PT_gather(WorldButtonsPanel):
|
||||
col.prop(light, "pixel_cache")
|
||||
col.prop(light, "correction")
|
||||
|
||||
bpy.types.register(WORLD_PT_context_world)
|
||||
bpy.types.register(WORLD_PT_preview)
|
||||
bpy.types.register(WORLD_PT_world)
|
||||
bpy.types.register(WORLD_PT_ambient_occlusion)
|
||||
bpy.types.register(WORLD_PT_environment_lighting)
|
||||
bpy.types.register(WORLD_PT_indirect_lighting)
|
||||
bpy.types.register(WORLD_PT_gather)
|
||||
bpy.types.register(WORLD_PT_mist)
|
||||
bpy.types.register(WORLD_PT_stars)
|
||||
|
||||
bpy.types.register(WORLD_PT_custom_props)
|
||||
classes = [
|
||||
WORLD_PT_context_world,
|
||||
WORLD_PT_preview,
|
||||
WORLD_PT_world,
|
||||
WORLD_PT_ambient_occlusion,
|
||||
WORLD_PT_environment_lighting,
|
||||
WORLD_PT_indirect_lighting,
|
||||
WORLD_PT_gather,
|
||||
WORLD_PT_mist,
|
||||
WORLD_PT_stars,
|
||||
|
||||
WORLD_PT_custom_props]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -51,5 +51,18 @@ class Buttons_MT_view(bpy.types.Menu):
|
||||
col = layout.column()
|
||||
col.prop(so, "panel_alignment", expand=True)
|
||||
|
||||
bpy.types.register(Buttons_HT_header)
|
||||
bpy.types.register(Buttons_MT_view)
|
||||
|
||||
classes = [
|
||||
Buttons_HT_header,
|
||||
Buttons_MT_view]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -198,15 +198,27 @@ class ConsoleLanguage(bpy.types.Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
bpy.types.register(CONSOLE_HT_header)
|
||||
bpy.types.register(CONSOLE_MT_console)
|
||||
bpy.types.register(CONSOLE_MT_report)
|
||||
bpy.types.register(CONSOLE_MT_language)
|
||||
classes = [
|
||||
CONSOLE_HT_header,
|
||||
CONSOLE_MT_console,
|
||||
CONSOLE_MT_report,
|
||||
CONSOLE_MT_language,
|
||||
|
||||
# Stubs that call the language operators
|
||||
bpy.types.register(ConsoleExec)
|
||||
bpy.types.register(ConsoleAutocomplete)
|
||||
bpy.types.register(ConsoleBanner)
|
||||
# Stubs that call the language operators
|
||||
ConsoleExec,
|
||||
ConsoleAutocomplete,
|
||||
ConsoleBanner,
|
||||
|
||||
# Set the language and call the banner
|
||||
bpy.types.register(ConsoleLanguage)
|
||||
# Set the language and call the banner
|
||||
ConsoleLanguage]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -191,9 +191,21 @@ class DOPESHEET_MT_key_transform(bpy.types.Menu):
|
||||
layout.operator("transform.resize", text="Scale")
|
||||
|
||||
|
||||
bpy.types.register(DOPESHEET_HT_header) # header/menu classes
|
||||
bpy.types.register(DOPESHEET_MT_view)
|
||||
bpy.types.register(DOPESHEET_MT_select)
|
||||
bpy.types.register(DOPESHEET_MT_channel)
|
||||
bpy.types.register(DOPESHEET_MT_key)
|
||||
bpy.types.register(DOPESHEET_MT_key_transform)
|
||||
classes = [
|
||||
DOPESHEET_HT_header, # header/menu classes
|
||||
DOPESHEET_MT_view,
|
||||
DOPESHEET_MT_select,
|
||||
DOPESHEET_MT_channel,
|
||||
DOPESHEET_MT_key,
|
||||
DOPESHEET_MT_key_transform]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -64,4 +64,17 @@ class FILEBROWSER_HT_header(bpy.types.Header):
|
||||
row.prop(params, "filter_sound", text="")
|
||||
row.prop(params, "filter_text", text="")
|
||||
|
||||
bpy.types.register(FILEBROWSER_HT_header)
|
||||
|
||||
classes = [
|
||||
FILEBROWSER_HT_header]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -198,9 +198,21 @@ class GRAPH_MT_key_transform(bpy.types.Menu):
|
||||
layout.operator("transform.resize", text="Scale")
|
||||
|
||||
|
||||
bpy.types.register(GRAPH_HT_header) # header/menu classes
|
||||
bpy.types.register(GRAPH_MT_view)
|
||||
bpy.types.register(GRAPH_MT_select)
|
||||
bpy.types.register(GRAPH_MT_channel)
|
||||
bpy.types.register(GRAPH_MT_key)
|
||||
bpy.types.register(GRAPH_MT_key_transform)
|
||||
classes = [
|
||||
GRAPH_HT_header, # header/menu classes
|
||||
GRAPH_MT_view,
|
||||
GRAPH_MT_select,
|
||||
GRAPH_MT_channel,
|
||||
GRAPH_MT_key,
|
||||
GRAPH_MT_key_transform]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -570,20 +570,33 @@ class IMAGE_PT_paint_curve(bpy.types.Panel):
|
||||
layout.template_curve_mapping(brush, "curve")
|
||||
layout.operator_menu_enum("brush.curve_preset", property="shape")
|
||||
|
||||
bpy.types.register(IMAGE_MT_view)
|
||||
bpy.types.register(IMAGE_MT_select)
|
||||
bpy.types.register(IMAGE_MT_image)
|
||||
bpy.types.register(IMAGE_MT_uvs_showhide)
|
||||
bpy.types.register(IMAGE_MT_uvs_transform)
|
||||
bpy.types.register(IMAGE_MT_uvs_snap)
|
||||
bpy.types.register(IMAGE_MT_uvs_mirror)
|
||||
bpy.types.register(IMAGE_MT_uvs_weldalign)
|
||||
bpy.types.register(IMAGE_MT_uvs)
|
||||
bpy.types.register(IMAGE_HT_header)
|
||||
bpy.types.register(IMAGE_PT_image_properties)
|
||||
bpy.types.register(IMAGE_PT_paint)
|
||||
bpy.types.register(IMAGE_PT_paint_stroke)
|
||||
bpy.types.register(IMAGE_PT_paint_curve)
|
||||
bpy.types.register(IMAGE_PT_game_properties)
|
||||
bpy.types.register(IMAGE_PT_view_properties)
|
||||
bpy.types.register(IMAGE_PT_view_histogram)
|
||||
|
||||
classes = [
|
||||
IMAGE_MT_view,
|
||||
IMAGE_MT_select,
|
||||
IMAGE_MT_image,
|
||||
IMAGE_MT_uvs_showhide,
|
||||
IMAGE_MT_uvs_transform,
|
||||
IMAGE_MT_uvs_snap,
|
||||
IMAGE_MT_uvs_mirror,
|
||||
IMAGE_MT_uvs_weldalign,
|
||||
IMAGE_MT_uvs,
|
||||
IMAGE_HT_header,
|
||||
IMAGE_PT_image_properties,
|
||||
IMAGE_PT_paint,
|
||||
IMAGE_PT_paint_stroke,
|
||||
IMAGE_PT_paint_curve,
|
||||
IMAGE_PT_game_properties,
|
||||
IMAGE_PT_view_properties,
|
||||
IMAGE_PT_view_histogram]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -293,18 +293,6 @@ class INFO_MT_help(bpy.types.Menu):
|
||||
layout.operator("help.python_api", icon='URL')
|
||||
layout.operator("help.operator_cheat_sheet")
|
||||
|
||||
bpy.types.register(INFO_HT_header)
|
||||
bpy.types.register(INFO_MT_file)
|
||||
bpy.types.register(INFO_MT_file_open_recent)
|
||||
bpy.types.register(INFO_MT_file_import)
|
||||
bpy.types.register(INFO_MT_file_export)
|
||||
bpy.types.register(INFO_MT_file_external_data)
|
||||
bpy.types.register(INFO_MT_add)
|
||||
bpy.types.register(INFO_MT_mesh_add)
|
||||
bpy.types.register(INFO_MT_armature_add)
|
||||
bpy.types.register(INFO_MT_game)
|
||||
bpy.types.register(INFO_MT_render)
|
||||
bpy.types.register(INFO_MT_help)
|
||||
|
||||
# Help operators
|
||||
|
||||
@@ -397,12 +385,38 @@ class HELP_OT_operator_cheat_sheet(bpy.types.Operator):
|
||||
self.report({'INFO'}, "See OperatorList.txt textblock")
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(HELP_OT_manual)
|
||||
bpy.types.register(HELP_OT_release_logs)
|
||||
bpy.types.register(HELP_OT_blender_website)
|
||||
bpy.types.register(HELP_OT_blender_eshop)
|
||||
bpy.types.register(HELP_OT_developer_community)
|
||||
bpy.types.register(HELP_OT_user_community)
|
||||
bpy.types.register(HELP_OT_report_bug)
|
||||
bpy.types.register(HELP_OT_python_api)
|
||||
bpy.types.register(HELP_OT_operator_cheat_sheet)
|
||||
|
||||
classes = [
|
||||
INFO_HT_header,
|
||||
INFO_MT_file,
|
||||
INFO_MT_file_open_recent,
|
||||
INFO_MT_file_import,
|
||||
INFO_MT_file_export,
|
||||
INFO_MT_file_external_data,
|
||||
INFO_MT_add,
|
||||
INFO_MT_mesh_add,
|
||||
INFO_MT_armature_add,
|
||||
INFO_MT_game,
|
||||
INFO_MT_render,
|
||||
INFO_MT_help,
|
||||
|
||||
HELP_OT_manual,
|
||||
HELP_OT_release_logs,
|
||||
HELP_OT_blender_website,
|
||||
HELP_OT_blender_eshop,
|
||||
HELP_OT_developer_community,
|
||||
HELP_OT_user_community,
|
||||
HELP_OT_report_bug,
|
||||
HELP_OT_python_api,
|
||||
HELP_OT_operator_cheat_sheet]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -46,4 +46,17 @@ class LOGIC_PT_properties(bpy.types.Panel):
|
||||
row.prop(prop, "debug", text="", toggle=True, icon='INFO')
|
||||
row.operator("object.game_property_remove", text="", icon='X').index = i
|
||||
|
||||
bpy.types.register(LOGIC_PT_properties)
|
||||
|
||||
classes = [
|
||||
LOGIC_PT_properties]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -159,9 +159,21 @@ class NLA_MT_edit_transform(bpy.types.Menu):
|
||||
layout.operator("transform.resize", text="Scale")
|
||||
|
||||
|
||||
bpy.types.register(NLA_HT_header) # header/menu classes
|
||||
bpy.types.register(NLA_MT_view)
|
||||
bpy.types.register(NLA_MT_select)
|
||||
bpy.types.register(NLA_MT_edit)
|
||||
bpy.types.register(NLA_MT_add)
|
||||
bpy.types.register(NLA_MT_edit_transform)
|
||||
classes = [
|
||||
NLA_HT_header, # header/menu classes
|
||||
NLA_MT_view,
|
||||
NLA_MT_select,
|
||||
NLA_MT_edit,
|
||||
NLA_MT_add,
|
||||
NLA_MT_edit_transform]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -139,7 +139,20 @@ class NODE_MT_node(bpy.types.Menu):
|
||||
|
||||
layout.operator("node.show_cyclic_dependencies")
|
||||
|
||||
bpy.types.register(NODE_HT_header)
|
||||
bpy.types.register(NODE_MT_view)
|
||||
bpy.types.register(NODE_MT_select)
|
||||
bpy.types.register(NODE_MT_node)
|
||||
|
||||
classes = [
|
||||
NODE_HT_header,
|
||||
NODE_MT_view,
|
||||
NODE_MT_select,
|
||||
NODE_MT_node]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -99,6 +99,19 @@ class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
|
||||
col.operator("outliner.drivers_add_selected")
|
||||
col.operator("outliner.drivers_delete_selected")
|
||||
|
||||
bpy.types.register(OUTLINER_HT_header)
|
||||
bpy.types.register(OUTLINER_MT_view)
|
||||
bpy.types.register(OUTLINER_MT_edit_datablocks)
|
||||
|
||||
classes = [
|
||||
OUTLINER_HT_header,
|
||||
OUTLINER_MT_view,
|
||||
OUTLINER_MT_edit_datablocks]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -665,21 +665,34 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output):
|
||||
col.prop(st, "draw_overexposed") # text="Zebra"
|
||||
col.prop(st, "draw_safe_margin")
|
||||
|
||||
bpy.types.register(SEQUENCER_HT_header) # header/menu classes
|
||||
bpy.types.register(SEQUENCER_MT_view)
|
||||
bpy.types.register(SEQUENCER_MT_view_toggle)
|
||||
bpy.types.register(SEQUENCER_MT_select)
|
||||
bpy.types.register(SEQUENCER_MT_marker)
|
||||
bpy.types.register(SEQUENCER_MT_add)
|
||||
bpy.types.register(SEQUENCER_MT_add_effect)
|
||||
bpy.types.register(SEQUENCER_MT_strip)
|
||||
|
||||
bpy.types.register(SEQUENCER_PT_edit) # sequencer panels
|
||||
bpy.types.register(SEQUENCER_PT_effect)
|
||||
bpy.types.register(SEQUENCER_PT_input)
|
||||
bpy.types.register(SEQUENCER_PT_sound)
|
||||
bpy.types.register(SEQUENCER_PT_scene)
|
||||
bpy.types.register(SEQUENCER_PT_filter)
|
||||
bpy.types.register(SEQUENCER_PT_proxy)
|
||||
classes = [
|
||||
SEQUENCER_HT_header, # header/menu classes
|
||||
SEQUENCER_MT_view,
|
||||
SEQUENCER_MT_view_toggle,
|
||||
SEQUENCER_MT_select,
|
||||
SEQUENCER_MT_marker,
|
||||
SEQUENCER_MT_add,
|
||||
SEQUENCER_MT_add_effect,
|
||||
SEQUENCER_MT_strip,
|
||||
|
||||
bpy.types.register(SEQUENCER_PT_view) # view panels
|
||||
SEQUENCER_PT_edit, # sequencer panels
|
||||
SEQUENCER_PT_effect,
|
||||
SEQUENCER_PT_input,
|
||||
SEQUENCER_PT_sound,
|
||||
SEQUENCER_PT_scene,
|
||||
SEQUENCER_PT_filter,
|
||||
SEQUENCER_PT_proxy,
|
||||
|
||||
SEQUENCER_PT_view] # view panels
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -273,14 +273,27 @@ class TEXT_MT_edit(bpy.types.Menu):
|
||||
|
||||
layout.menu("TEXT_MT_edit_to3d")
|
||||
|
||||
bpy.types.register(TEXT_HT_header)
|
||||
bpy.types.register(TEXT_PT_properties)
|
||||
bpy.types.register(TEXT_PT_find)
|
||||
bpy.types.register(TEXT_MT_text)
|
||||
bpy.types.register(TEXT_MT_templates)
|
||||
bpy.types.register(TEXT_MT_format)
|
||||
bpy.types.register(TEXT_MT_edit)
|
||||
bpy.types.register(TEXT_MT_edit_view)
|
||||
bpy.types.register(TEXT_MT_edit_select)
|
||||
bpy.types.register(TEXT_MT_edit_markers)
|
||||
bpy.types.register(TEXT_MT_edit_to3d)
|
||||
|
||||
classes = [
|
||||
TEXT_HT_header,
|
||||
TEXT_PT_properties,
|
||||
TEXT_PT_find,
|
||||
TEXT_MT_text,
|
||||
TEXT_MT_templates,
|
||||
TEXT_MT_format,
|
||||
TEXT_MT_edit,
|
||||
TEXT_MT_edit_view,
|
||||
TEXT_MT_edit_select,
|
||||
TEXT_MT_edit_markers,
|
||||
TEXT_MT_edit_to3d]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -167,8 +167,20 @@ class TIME_MT_autokey(bpy.types.Menu):
|
||||
layout.prop_enum(tools, "autokey_mode", 'ADD_REPLACE_KEYS')
|
||||
layout.prop_enum(tools, "autokey_mode", 'REPLACE_KEYS')
|
||||
|
||||
bpy.types.register(TIME_HT_header)
|
||||
bpy.types.register(TIME_MT_view)
|
||||
bpy.types.register(TIME_MT_frame)
|
||||
bpy.types.register(TIME_MT_autokey)
|
||||
bpy.types.register(TIME_MT_playback)
|
||||
classes = [
|
||||
TIME_HT_header,
|
||||
TIME_MT_view,
|
||||
TIME_MT_frame,
|
||||
TIME_MT_autokey,
|
||||
TIME_MT_playback]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -1348,14 +1348,6 @@ class USERPREF_PT_input(bpy.types.Panel):
|
||||
|
||||
#print("runtime", time.time() - start)
|
||||
|
||||
bpy.types.register(USERPREF_HT_header)
|
||||
bpy.types.register(USERPREF_PT_tabs)
|
||||
bpy.types.register(USERPREF_PT_interface)
|
||||
bpy.types.register(USERPREF_PT_theme)
|
||||
bpy.types.register(USERPREF_PT_edit)
|
||||
bpy.types.register(USERPREF_PT_system)
|
||||
bpy.types.register(USERPREF_PT_file)
|
||||
bpy.types.register(USERPREF_PT_input)
|
||||
|
||||
from bpy.props import *
|
||||
|
||||
@@ -1755,12 +1747,34 @@ class WM_OT_keyconfig_remove(bpy.types.Operator):
|
||||
wm.remove_keyconfig(keyconfig)
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(WM_OT_keyconfig_export)
|
||||
bpy.types.register(WM_OT_keyconfig_import)
|
||||
bpy.types.register(WM_OT_keyconfig_test)
|
||||
bpy.types.register(WM_OT_keyconfig_remove)
|
||||
bpy.types.register(WM_OT_keymap_edit)
|
||||
bpy.types.register(WM_OT_keymap_restore)
|
||||
bpy.types.register(WM_OT_keyitem_add)
|
||||
bpy.types.register(WM_OT_keyitem_remove)
|
||||
bpy.types.register(WM_OT_keyitem_restore)
|
||||
|
||||
classes = [
|
||||
USERPREF_HT_header,
|
||||
USERPREF_PT_tabs,
|
||||
USERPREF_PT_interface,
|
||||
USERPREF_PT_theme,
|
||||
USERPREF_PT_edit,
|
||||
USERPREF_PT_system,
|
||||
USERPREF_PT_file,
|
||||
USERPREF_PT_input,
|
||||
|
||||
WM_OT_keyconfig_export,
|
||||
WM_OT_keyconfig_import,
|
||||
WM_OT_keyconfig_test,
|
||||
WM_OT_keyconfig_remove,
|
||||
WM_OT_keymap_edit,
|
||||
WM_OT_keymap_restore,
|
||||
WM_OT_keyitem_add,
|
||||
WM_OT_keyitem_remove,
|
||||
WM_OT_keyitem_restore]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -2101,105 +2101,115 @@ class VIEW3D_PT_context_properties(bpy.types.Panel):
|
||||
# Draw with no edit button
|
||||
rna_prop_ui.draw(self.layout, context, member, False)
|
||||
|
||||
classes = [
|
||||
VIEW3D_OT_edit_mesh_extrude_move, # detects constraints setup and extrude region
|
||||
VIEW3D_OT_edit_mesh_extrude_individual_move,
|
||||
|
||||
bpy.types.register(VIEW3D_OT_edit_mesh_extrude_move) # detects constraints setup and extrude region
|
||||
bpy.types.register(VIEW3D_OT_edit_mesh_extrude_individual_move)
|
||||
VIEW3D_HT_header, # Header
|
||||
|
||||
bpy.types.register(VIEW3D_HT_header) # Header
|
||||
VIEW3D_MT_view, #View Menus
|
||||
VIEW3D_MT_view_navigation,
|
||||
VIEW3D_MT_view_align,
|
||||
VIEW3D_MT_view_align_selected,
|
||||
VIEW3D_MT_view_cameras,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_view) #View Menus
|
||||
bpy.types.register(VIEW3D_MT_view_navigation)
|
||||
bpy.types.register(VIEW3D_MT_view_align)
|
||||
bpy.types.register(VIEW3D_MT_view_align_selected)
|
||||
bpy.types.register(VIEW3D_MT_view_cameras)
|
||||
VIEW3D_MT_select_object, # Select Menus
|
||||
VIEW3D_MT_select_pose,
|
||||
VIEW3D_MT_select_particle,
|
||||
VIEW3D_MT_select_edit_mesh,
|
||||
VIEW3D_MT_select_edit_curve,
|
||||
VIEW3D_MT_select_edit_surface,
|
||||
VIEW3D_MT_select_edit_metaball,
|
||||
VIEW3D_MT_select_edit_lattice,
|
||||
VIEW3D_MT_select_edit_armature,
|
||||
VIEW3D_MT_select_face, # XXX todo
|
||||
|
||||
bpy.types.register(VIEW3D_MT_select_object) # Select Menus
|
||||
bpy.types.register(VIEW3D_MT_select_pose)
|
||||
bpy.types.register(VIEW3D_MT_select_particle)
|
||||
bpy.types.register(VIEW3D_MT_select_edit_mesh)
|
||||
bpy.types.register(VIEW3D_MT_select_edit_curve)
|
||||
bpy.types.register(VIEW3D_MT_select_edit_surface)
|
||||
bpy.types.register(VIEW3D_MT_select_edit_metaball)
|
||||
bpy.types.register(VIEW3D_MT_select_edit_lattice)
|
||||
bpy.types.register(VIEW3D_MT_select_edit_armature)
|
||||
bpy.types.register(VIEW3D_MT_select_face) # XXX todo
|
||||
VIEW3D_MT_transform, # Object/Edit Menus
|
||||
VIEW3D_MT_mirror, # Object/Edit Menus
|
||||
VIEW3D_MT_snap, # Object/Edit Menus
|
||||
VIEW3D_MT_uv_map, # Edit Menus
|
||||
|
||||
bpy.types.register(VIEW3D_MT_transform) # Object/Edit Menus
|
||||
bpy.types.register(VIEW3D_MT_mirror) # Object/Edit Menus
|
||||
bpy.types.register(VIEW3D_MT_snap) # Object/Edit Menus
|
||||
bpy.types.register(VIEW3D_MT_uv_map) # Edit Menus
|
||||
VIEW3D_MT_object, # Object Menu
|
||||
VIEW3D_MT_object_apply,
|
||||
VIEW3D_MT_object_clear,
|
||||
VIEW3D_MT_object_parent,
|
||||
VIEW3D_MT_object_track,
|
||||
VIEW3D_MT_object_group,
|
||||
VIEW3D_MT_object_constraints,
|
||||
VIEW3D_MT_object_showhide,
|
||||
VIEW3D_MT_make_single_user,
|
||||
VIEW3D_MT_make_links,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_object) # Object Menu
|
||||
bpy.types.register(VIEW3D_MT_object_apply)
|
||||
bpy.types.register(VIEW3D_MT_object_clear)
|
||||
bpy.types.register(VIEW3D_MT_object_parent)
|
||||
bpy.types.register(VIEW3D_MT_object_track)
|
||||
bpy.types.register(VIEW3D_MT_object_group)
|
||||
bpy.types.register(VIEW3D_MT_object_constraints)
|
||||
bpy.types.register(VIEW3D_MT_object_showhide)
|
||||
bpy.types.register(VIEW3D_MT_make_single_user)
|
||||
bpy.types.register(VIEW3D_MT_make_links)
|
||||
VIEW3D_MT_hook,
|
||||
VIEW3D_MT_vertex_group,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_hook)
|
||||
bpy.types.register(VIEW3D_MT_vertex_group)
|
||||
VIEW3D_MT_sculpt, # Sculpt Menu
|
||||
VIEW3D_MT_paint_vertex,
|
||||
VIEW3D_MT_paint_weight,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_sculpt) # Sculpt Menu
|
||||
bpy.types.register(VIEW3D_MT_paint_vertex)
|
||||
bpy.types.register(VIEW3D_MT_paint_weight)
|
||||
VIEW3D_MT_particle, # Particle Menu
|
||||
VIEW3D_MT_particle_specials,
|
||||
VIEW3D_MT_particle_showhide,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_particle)# Particle Menu
|
||||
bpy.types.register(VIEW3D_MT_particle_specials)
|
||||
bpy.types.register(VIEW3D_MT_particle_showhide)
|
||||
VIEW3D_MT_pose, # POSE Menu
|
||||
VIEW3D_MT_pose_transform,
|
||||
VIEW3D_MT_pose_pose,
|
||||
VIEW3D_MT_pose_motion,
|
||||
VIEW3D_MT_pose_group,
|
||||
VIEW3D_MT_pose_ik,
|
||||
VIEW3D_MT_pose_constraints,
|
||||
VIEW3D_MT_pose_showhide,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_pose) # POSE Menu
|
||||
bpy.types.register(VIEW3D_MT_pose_transform)
|
||||
bpy.types.register(VIEW3D_MT_pose_pose)
|
||||
bpy.types.register(VIEW3D_MT_pose_motion)
|
||||
bpy.types.register(VIEW3D_MT_pose_group)
|
||||
bpy.types.register(VIEW3D_MT_pose_ik)
|
||||
bpy.types.register(VIEW3D_MT_pose_constraints)
|
||||
bpy.types.register(VIEW3D_MT_pose_showhide)
|
||||
VIEW3D_MT_edit_mesh,
|
||||
VIEW3D_MT_edit_mesh_specials, # Only as a menu for keybindings
|
||||
VIEW3D_MT_edit_mesh_selection_mode, # Only as a menu for keybindings
|
||||
VIEW3D_MT_edit_mesh_vertices,
|
||||
VIEW3D_MT_edit_mesh_edges,
|
||||
VIEW3D_MT_edit_mesh_faces,
|
||||
VIEW3D_MT_edit_mesh_normals,
|
||||
VIEW3D_MT_edit_mesh_showhide,
|
||||
VIEW3D_MT_edit_mesh_extrude, # use with VIEW3D_OT_edit_mesh_extrude_menu
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh)
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_specials) # Only as a menu for keybindings
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_selection_mode) # Only as a menu for keybindings
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_vertices)
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_edges)
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_faces)
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_normals)
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_showhide)
|
||||
bpy.types.register(VIEW3D_MT_edit_mesh_extrude) # use with VIEW3D_OT_edit_mesh_extrude_menu
|
||||
VIEW3D_MT_edit_curve,
|
||||
VIEW3D_MT_edit_curve_ctrlpoints,
|
||||
VIEW3D_MT_edit_curve_segments,
|
||||
VIEW3D_MT_edit_curve_specials,
|
||||
VIEW3D_MT_edit_curve_showhide,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_curve)
|
||||
bpy.types.register(VIEW3D_MT_edit_curve_ctrlpoints)
|
||||
bpy.types.register(VIEW3D_MT_edit_curve_segments)
|
||||
bpy.types.register(VIEW3D_MT_edit_curve_specials)
|
||||
bpy.types.register(VIEW3D_MT_edit_curve_showhide)
|
||||
VIEW3D_MT_edit_surface,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_surface)
|
||||
VIEW3D_MT_edit_text,
|
||||
VIEW3D_MT_edit_text_chars,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_text)
|
||||
bpy.types.register(VIEW3D_MT_edit_text_chars)
|
||||
VIEW3D_MT_edit_meta,
|
||||
VIEW3D_MT_edit_meta_showhide,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_meta)
|
||||
bpy.types.register(VIEW3D_MT_edit_meta_showhide)
|
||||
VIEW3D_MT_edit_lattice,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_lattice)
|
||||
VIEW3D_MT_edit_armature,
|
||||
VIEW3D_MT_edit_armature_parent,
|
||||
VIEW3D_MT_edit_armature_roll,
|
||||
|
||||
bpy.types.register(VIEW3D_MT_edit_armature)
|
||||
bpy.types.register(VIEW3D_MT_edit_armature_parent)
|
||||
bpy.types.register(VIEW3D_MT_edit_armature_roll)
|
||||
VIEW3D_MT_armature_specials, # Only as a menu for keybindings
|
||||
|
||||
bpy.types.register(VIEW3D_MT_armature_specials) # Only as a menu for keybindings
|
||||
# Panels
|
||||
VIEW3D_PT_3dview_properties,
|
||||
VIEW3D_PT_3dview_display,
|
||||
VIEW3D_PT_3dview_name,
|
||||
VIEW3D_PT_3dview_meshdisplay,
|
||||
VIEW3D_PT_3dview_curvedisplay,
|
||||
VIEW3D_PT_background_image,
|
||||
VIEW3D_PT_transform_orientations,
|
||||
VIEW3D_PT_etch_a_ton,
|
||||
VIEW3D_PT_context_properties]
|
||||
|
||||
# Panels
|
||||
bpy.types.register(VIEW3D_PT_3dview_properties)
|
||||
bpy.types.register(VIEW3D_PT_3dview_display)
|
||||
bpy.types.register(VIEW3D_PT_3dview_name)
|
||||
bpy.types.register(VIEW3D_PT_3dview_meshdisplay)
|
||||
bpy.types.register(VIEW3D_PT_3dview_curvedisplay)
|
||||
bpy.types.register(VIEW3D_PT_background_image)
|
||||
bpy.types.register(VIEW3D_PT_transform_orientations)
|
||||
bpy.types.register(VIEW3D_PT_etch_a_ton)
|
||||
|
||||
bpy.types.register(VIEW3D_PT_context_properties)
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -903,28 +903,27 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel):
|
||||
sub = col.column()
|
||||
sub.prop(ipaint, "seam_bleed")
|
||||
|
||||
class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu):
|
||||
bl_label = "Clone Layer"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
for i, tex in enumerate(context.active_object.data.uv_textures):
|
||||
prop = layout.operator("wm.context_set_int", text=tex.name)
|
||||
prop.path = "active_object.data.uv_texture_clone_index"
|
||||
prop.value = i
|
||||
class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu):
|
||||
bl_label = "Clone Layer"
|
||||
|
||||
class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu):
|
||||
bl_label = "Mask Layer"
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
for i, tex in enumerate(context.active_object.data.uv_textures):
|
||||
prop = layout.operator("wm.context_set_int", text=tex.name)
|
||||
prop.path = "active_object.data.uv_texture_clone_index"
|
||||
prop.value = i
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
for i, tex in enumerate(context.active_object.data.uv_textures):
|
||||
prop = layout.operator("wm.context_set_int", text=tex.name)
|
||||
prop.path = "active_object.data.uv_texture_stencil_index"
|
||||
prop.value = i
|
||||
|
||||
bpy.types.register(VIEW3D_MT_tools_projectpaint_clone)
|
||||
bpy.types.register(VIEW3D_MT_tools_projectpaint_stencil)
|
||||
class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu):
|
||||
bl_label = "Mask Layer"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
for i, tex in enumerate(context.active_object.data.uv_textures):
|
||||
prop = layout.operator("wm.context_set_int", text=tex.name)
|
||||
prop.path = "active_object.data.uv_texture_stencil_index"
|
||||
prop.value = i
|
||||
|
||||
|
||||
class VIEW3D_PT_tools_particlemode(View3DPanel):
|
||||
@@ -990,26 +989,43 @@ class VIEW3D_PT_tools_particlemode(View3DPanel):
|
||||
sub.active = pe.fade_time
|
||||
sub.prop(pe, "fade_frames", slider=True)
|
||||
|
||||
bpy.types.register(VIEW3D_PT_tools_weightpaint)
|
||||
bpy.types.register(VIEW3D_PT_tools_objectmode)
|
||||
bpy.types.register(VIEW3D_PT_tools_meshedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_meshedit_options)
|
||||
bpy.types.register(VIEW3D_PT_tools_curveedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_surfaceedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_textedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_armatureedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_armatureedit_options)
|
||||
bpy.types.register(VIEW3D_PT_tools_mballedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_latticeedit)
|
||||
bpy.types.register(VIEW3D_PT_tools_posemode)
|
||||
bpy.types.register(VIEW3D_PT_tools_posemode_options)
|
||||
bpy.types.register(VIEW3D_PT_tools_brush)
|
||||
bpy.types.register(VIEW3D_PT_tools_brush_texture)
|
||||
bpy.types.register(VIEW3D_PT_tools_brush_tool)
|
||||
bpy.types.register(VIEW3D_PT_tools_brush_stroke)
|
||||
bpy.types.register(VIEW3D_PT_tools_brush_curve)
|
||||
bpy.types.register(VIEW3D_PT_sculpt_options)
|
||||
bpy.types.register(VIEW3D_PT_tools_vertexpaint)
|
||||
bpy.types.register(VIEW3D_PT_tools_weightpaint_options)
|
||||
bpy.types.register(VIEW3D_PT_tools_projectpaint)
|
||||
bpy.types.register(VIEW3D_PT_tools_particlemode)
|
||||
|
||||
classes = [
|
||||
VIEW3D_PT_tools_weightpaint,
|
||||
VIEW3D_PT_tools_objectmode,
|
||||
VIEW3D_PT_tools_meshedit,
|
||||
VIEW3D_PT_tools_meshedit_options,
|
||||
VIEW3D_PT_tools_curveedit,
|
||||
VIEW3D_PT_tools_surfaceedit,
|
||||
VIEW3D_PT_tools_textedit,
|
||||
VIEW3D_PT_tools_armatureedit,
|
||||
VIEW3D_PT_tools_armatureedit_options,
|
||||
VIEW3D_PT_tools_mballedit,
|
||||
VIEW3D_PT_tools_latticeedit,
|
||||
VIEW3D_PT_tools_posemode,
|
||||
VIEW3D_PT_tools_posemode_options,
|
||||
VIEW3D_PT_tools_brush,
|
||||
VIEW3D_PT_tools_brush_texture,
|
||||
VIEW3D_PT_tools_brush_tool,
|
||||
VIEW3D_PT_tools_brush_stroke,
|
||||
VIEW3D_PT_tools_brush_curve,
|
||||
VIEW3D_PT_sculpt_options,
|
||||
VIEW3D_PT_tools_vertexpaint,
|
||||
VIEW3D_PT_tools_weightpaint_options,
|
||||
|
||||
VIEW3D_PT_tools_projectpaint,
|
||||
VIEW3D_MT_tools_projectpaint_clone,
|
||||
VIEW3D_MT_tools_projectpaint_stencil,
|
||||
|
||||
VIEW3D_PT_tools_particlemode]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
@@ -3881,7 +3881,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
|
||||
Py_DECREF(py_arg_count);
|
||||
|
||||
if (arg_count != func_arg_count) {
|
||||
PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class \"%.200s\" function to have %d args", class_type, py_class_name, RNA_function_identifier(func), func_arg_count);
|
||||
PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class \"%.200s\" function to have %d args, found %d", class_type, py_class_name, RNA_function_identifier(func), func_arg_count, arg_count);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -4165,6 +4165,11 @@ PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class)
|
||||
PyObject *item;
|
||||
const char *identifier= "";
|
||||
|
||||
if(PyDict_GetItemString(((PyTypeObject*)py_class)->tp_dict, "bl_rna")) {
|
||||
PyErr_SetString(PyExc_AttributeError, "Alredy registered as a subclass.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
srna= pyrna_struct_as_srna(py_class);
|
||||
if(srna==NULL)
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user