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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to