[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21662] branches/blender2.5/blender: python access to operators now hides the _OT_ syntax, eg.
Campbell Barton
ideasman42 at gmail.com
Fri Jul 17 14:26:40 CEST 2009
Revision: 21662
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21662
Author: campbellbarton
Date: 2009-07-17 14:26:40 +0200 (Fri, 17 Jul 2009)
Log Message:
-----------
python access to operators now hides the _OT_ syntax, eg. SOME_OT_operator -> some.operator
this works for the calling operators from python and using the RNA api.
bpy.ops.CONSOLE_exec() is now bpy.ops.console.exec()
eg.
split.itemO("PARTICLE_OT_editable_set", text="Free Edit") becomes... split.itemO("particle.editable_set", text="Free Edit")
For now any operator thats called checks if its missing _OT_ and assumes its python syntax and converts it before doing the lookup.
bpy.ops is a python class in release/ui/bpy_ops.py which does the fake submodules and conversion, the C operator api is at bpy.__ops__
personally Id still rather rename C id-names not to contain the _OT_ text which would avoid the conversion, its called a lot since the UI has to convert the operators.
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/buttons_data_lattice.py
branches/blender2.5/blender/release/ui/buttons_data_mesh.py
branches/blender2.5/blender/release/ui/buttons_data_modifier.py
branches/blender2.5/blender/release/ui/buttons_material.py
branches/blender2.5/blender/release/ui/buttons_object_constraint.py
branches/blender2.5/blender/release/ui/buttons_objects.py
branches/blender2.5/blender/release/ui/buttons_particle.py
branches/blender2.5/blender/release/ui/buttons_physics_cloth.py
branches/blender2.5/blender/release/ui/buttons_physics_fluid.py
branches/blender2.5/blender/release/ui/buttons_physics_softbody.py
branches/blender2.5/blender/release/ui/buttons_scene.py
branches/blender2.5/blender/release/ui/buttons_texture.py
branches/blender2.5/blender/release/ui/buttons_world.py
branches/blender2.5/blender/release/ui/space_console.py
branches/blender2.5/blender/release/ui/space_filebrowser.py
branches/blender2.5/blender/release/ui/space_image.py
branches/blender2.5/blender/release/ui/space_info.py
branches/blender2.5/blender/release/ui/space_outliner.py
branches/blender2.5/blender/release/ui/space_sequencer.py
branches/blender2.5/blender/release/ui/space_text.py
branches/blender2.5/blender/release/ui/space_view3d.py
branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c
branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c
Added Paths:
-----------
branches/blender2.5/blender/release/ui/bpy_ops.py
Added: branches/blender2.5/blender/release/ui/bpy_ops.py
===================================================================
--- branches/blender2.5/blender/release/ui/bpy_ops.py (rev 0)
+++ branches/blender2.5/blender/release/ui/bpy_ops.py 2009-07-17 12:26:40 UTC (rev 21662)
@@ -0,0 +1,107 @@
+import bpy
+
+# This class is used for bpy.ops
+#
+
+class bpy_ops(object):
+ '''
+ Fake module like class.
+
+ bpy.ops
+ '''
+ def add(self, pyop):
+ bpy.__ops__.add(pyop)
+
+ def remove(self, pyop):
+ bpy.__ops__.remove(pyop)
+
+ def __getattr__(self, module):
+ '''
+ gets a bpy.ops submodule
+ '''
+ return bpy_ops_submodule(module)
+
+ def __dir__(self):
+
+ submodules = set()
+
+ for id_name in dir(bpy.__ops__):
+
+ if id_name.startswith('__'):
+ continue
+
+ id_split = id_name.split('_OT_', 1)
+
+ if len(id_split) == 2:
+ submodules.add(id_split[0].lower())
+ else:
+ submodules.add(id_split[0])
+
+ return list(submodules)
+
+ def __repr__(self):
+ return "<module like class 'bpy.ops'>"
+
+
+class bpy_ops_submodule(object):
+ '''
+ Utility class to fake submodules.
+
+ eg. bpy.ops.object
+ '''
+ __keys__ = ('module',)
+
+ def __init__(self, module):
+ self.module = module
+
+ def __getattr__(self, func):
+ '''
+ gets a bpy.ops.submodule function
+ '''
+ return bpy_ops_submodule_op(self.module, func)
+
+ def __dir__(self):
+
+ functions = set()
+
+ module_upper = self.module.upper()
+
+ for id_name in dir(bpy.__ops__):
+
+ if id_name.startswith('__'):
+ continue
+
+ id_split = id_name.split('_OT_', 1)
+ if len(id_split) == 2 and module_upper == id_split[0]:
+ functions.add(id_split[1])
+
+ return list(functions)
+
+ def __repr__(self):
+ return "<module like class 'bpy.ops.%s'>" % self.module
+
+class bpy_ops_submodule_op(object):
+ '''
+ Utility class to fake submodule operators.
+
+ eg. bpy.ops.object.somefunc
+ '''
+ __keys__ = ('module', 'func')
+ def __init__(self, module, func):
+ self.module = module
+ self.func = func
+
+ def __call__(self, **kw):
+ # submod.foo -> SUBMOD_OT_foo
+ id_name = self.module.upper() + '_OT_' + self.func
+
+ # Get the operator from
+ internal_op = getattr(bpy.__ops__, id_name)
+
+ # Call the op
+ return internal_op(**kw)
+
+ def __repr__(self):
+ return "<function bpy.ops.%s.%s at 0x%x'>" % (self.module, self.func, id(self))
+
+bpy.ops = bpy_ops()
Modified: branches/blender2.5/blender/release/ui/buttons_data_lattice.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_lattice.py 2009-07-17 11:28:44 UTC (rev 21661)
+++ branches/blender2.5/blender/release/ui/buttons_data_lattice.py 2009-07-17 12:26:40 UTC (rev 21662)
@@ -52,7 +52,7 @@
row.itemR(lat, "interpolation_type_w", expand=True)
row = layout.row()
- row.itemO("LATTICE_OT_make_regular")
+ row.itemO("lattice.make_regular")
row.itemR(lat, "outside")
bpy.types.register(DATA_PT_context_lattice)
Modified: branches/blender2.5/blender/release/ui/buttons_data_mesh.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_mesh.py 2009-07-17 11:28:44 UTC (rev 21661)
+++ branches/blender2.5/blender/release/ui/buttons_data_mesh.py 2009-07-17 12:26:40 UTC (rev 21662)
@@ -68,15 +68,15 @@
row.template_list(ob, "materials", ob, "active_material_index")
col = row.column(align=True)
- col.itemO("OBJECT_OT_material_slot_add", icon="ICON_ZOOMIN", text="")
- col.itemO("OBJECT_OT_material_slot_remove", icon="ICON_ZOOMOUT", text="")
+ col.itemO("object.material_slot_add", icon="ICON_ZOOMIN", text="")
+ col.itemO("object.material_slot_remove", icon="ICON_ZOOMOUT", text="")
if context.edit_object:
row = layout.row(align=True)
- row.itemO("OBJECT_OT_material_slot_assign", text="Assign")
- row.itemO("OBJECT_OT_material_slot_select", text="Select")
- row.itemO("OBJECT_OT_material_slot_deselect", text="Deselect")
+ row.itemO("object.material_slot_assign", text="Assign")
+ row.itemO("object.material_slot_select", text="Select")
+ row.itemO("object.material_slot_deselect", text="Deselect")
"""
layout.itemS()
@@ -87,8 +87,8 @@
row.template_list(ob, "materials", ob, "active_material_index", compact=True)
subrow = row.row(align=True)
- subrow.itemO("OBJECT_OT_material_slot_add", icon="ICON_ZOOMIN", text="")
- subrow.itemO("OBJECT_OT_material_slot_remove", icon="ICON_ZOOMOUT", text="")
+ subrow.itemO("object.material_slot_add", icon="ICON_ZOOMIN", text="")
+ subrow.itemO("object.material_slot_remove", icon="ICON_ZOOMOUT", text="")
"""
class DATA_PT_vertex_groups(DataButtonsPanel):
@@ -107,20 +107,20 @@
row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index")
col = row.column(align=True)
- col.itemO("OBJECT_OT_vertex_group_add", icon="ICON_ZOOMIN", text="")
- col.itemO("OBJECT_OT_vertex_group_remove", icon="ICON_ZOOMOUT", text="")
+ col.itemO("object.vertex_group_add", icon="ICON_ZOOMIN", text="")
+ col.itemO("object.vertex_group_remove", icon="ICON_ZOOMOUT", text="")
- col.itemO("OBJECT_OT_vertex_group_copy", icon="ICON_BLANK1", text="")
+ col.itemO("object.vertex_group_copy", icon="ICON_BLANK1", text="")
if ob.data.users > 1:
- col.itemO("OBJECT_OT_vertex_group_copy_to_linked", icon="ICON_BLANK1", text="")
+ col.itemO("object.vertex_group_copy_to_linked", icon="ICON_BLANK1", text="")
if context.edit_object:
row = layout.row(align=True)
- row.itemO("OBJECT_OT_vertex_group_assign", text="Assign")
- row.itemO("OBJECT_OT_vertex_group_remove_from", text="Remove")
- row.itemO("OBJECT_OT_vertex_group_select", text="Select")
- row.itemO("OBJECT_OT_vertex_group_deselect", text="Deselect")
+ row.itemO("object.vertex_group_assign", text="Assign")
+ row.itemO("object.vertex_group_remove_from", text="Remove")
+ row.itemO("object.vertex_group_select", text="Select")
+ row.itemO("object.vertex_group_deselect", text="Deselect")
layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight")
@@ -143,8 +143,8 @@
col = row.column()
subcol = col.column(align=True)
- subcol.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", text="")
- subcol.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", text="")
+ subcol.itemO("object.shape_key_add", icon="ICON_ZOOMIN", text="")
+ subcol.itemO("object.shape_key_remove", icon="ICON_ZOOMOUT", text="")
if kb:
col.itemS()
@@ -189,8 +189,8 @@
row.template_list(me, "uv_textures", me, "active_uv_texture_index")
col = row.column(align=True)
- col.itemO("MESH_OT_uv_texture_add", icon="ICON_ZOOMIN", text="")
- col.itemO("MESH_OT_uv_texture_remove", icon="ICON_ZOOMOUT", text="")
+ col.itemO("mesh.uv_texture_add", icon="ICON_ZOOMIN", text="")
+ col.itemO("mesh.uv_texture_remove", icon="ICON_ZOOMOUT", text="")
class DATA_PT_vertex_colors(DataButtonsPanel):
__idname__ = "DATA_PT_vertex_colors"
@@ -205,8 +205,8 @@
row.template_list(me, "vertex_colors", me, "active_vertex_color_index")
col = row.column(align=True)
- col.itemO("MESH_OT_vertex_color_add", icon="ICON_ZOOMIN", text="")
- col.itemO("MESH_OT_vertex_color_remove", icon="ICON_ZOOMOUT", text="")
+ col.itemO("mesh.vertex_color_add", icon="ICON_ZOOMIN", text="")
+ col.itemO("mesh.vertex_color_remove", icon="ICON_ZOOMOUT", text="")
bpy.types.register(DATA_PT_context_mesh)
bpy.types.register(DATA_PT_mesh)
Modified: branches/blender2.5/blender/release/ui/buttons_data_modifier.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_modifier.py 2009-07-17 11:28:44 UTC (rev 21661)
+++ branches/blender2.5/blender/release/ui/buttons_data_modifier.py 2009-07-17 12:26:40 UTC (rev 21662)
@@ -15,7 +15,7 @@
layout = self.layout
row = layout.row()
- row.item_menu_enumO("OBJECT_OT_modifier_add", "type")
+ row.item_menu_enumO("object.modifier_add", "type")
row.itemL();
for md in ob.modifiers:
@@ -264,7 +264,7 @@
layout.itemR(md, "invert")
layout.itemS()
- layout.itemO("OBJECT_OT_modifier_mdef_bind", text="Bind")
+ layout.itemO("object.modifier_mdef_bind", text="Bind")
row = layout.row()
row.itemR(md, "precision")
row.itemR(md, "dynamic")
@@ -289,7 +289,7 @@
def multires(self, layout, ob, md):
layout.itemR(md, "subdivision_type")
- layout.itemO("OBJECT_OT_multires_subdivide", text="Subdivide")
+ layout.itemO("object.multires_subdivide", text="Subdivide")
layout.itemR(md, "level")
def particleinstance(self, layout, ob, md):
Modified: branches/blender2.5/blender/release/ui/buttons_material.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_material.py 2009-07-17 11:28:44 UTC (rev 21661)
+++ branches/blender2.5/blender/release/ui/buttons_material.py 2009-07-17 12:26:40 UTC (rev 21662)
@@ -40,13 +40,13 @@
row.template_list(ob, "materials", ob, "active_material_index")
col = row.column(align=True)
- col.itemO("OBJECT_OT_material_slot_add", icon="ICON_ZOOMIN", text="")
- col.itemO("OBJECT_OT_material_slot_remove", icon="ICON_ZOOMOUT", text="")
+ col.itemO("object.material_slot_add", icon="ICON_ZOOMIN", text="")
+ col.itemO("object.material_slot_remove", icon="ICON_ZOOMOUT", text="")
split = layout.split(percentage=0.65)
if ob and slot:
- split.template_ID(slot, "material", new="MATERIAL_OT_new")
+ split.template_ID(slot, "material", new="material.new")
row = split.row()
row.itemR(slot, "link", expand=True)
elif mat:
Modified: branches/blender2.5/blender/release/ui/buttons_object_constraint.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_object_constraint.py 2009-07-17 11:28:44 UTC (rev 21661)
+++ branches/blender2.5/blender/release/ui/buttons_object_constraint.py 2009-07-17 12:26:40 UTC (rev 21662)
@@ -110,8 +110,8 @@
sub.itemR(con, "sizez", text="Z")
row = layout.row()
- row.itemO("CONSTRAINT_OT_childof_set_inverse")
- row.itemO("CONSTRAINT_OT_childof_clear_inverse")
+ row.itemO("constraint.childof_set_inverse")
+ row.itemO("constraint.childof_clear_inverse")
def track_to(self, layout, con):
self.target_template(layout, con)
@@ -521,7 +521,7 @@
layout = self.layout
row = layout.row()
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list