[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24194] trunk/blender: pep8 compliance for bpy_ops.py
Campbell Barton
ideasman42 at gmail.com
Sat Oct 31 02:23:50 CET 2009
Revision: 24194
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24194
Author: campbellbarton
Date: 2009-10-31 02:23:49 +0100 (Sat, 31 Oct 2009)
Log Message:
-----------
pep8 compliance for bpy_ops.py
add bpy.props to the modules so you can do...
from bpy.props import *
Modified Paths:
--------------
trunk/blender/release/scripts/modules/bpy_ops.py
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/release/scripts/modules/bpy_ops.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_ops.py 2009-10-30 21:56:09 UTC (rev 24193)
+++ trunk/blender/release/scripts/modules/bpy_ops.py 2009-10-31 01:23:49 UTC (rev 24194)
@@ -1,424 +1,509 @@
# for slightly faster access
-from bpy.__ops__ import add as op_add
-from bpy.__ops__ import remove as op_remove
-from bpy.__ops__ import dir as op_dir
-from bpy.__ops__ import call as op_call
-from bpy.__ops__ import as_string as op_as_string
-from bpy.__ops__ import get_rna as op_get_rna
+from bpy.__ops__ import add as op_add
+from bpy.__ops__ import remove as op_remove
+from bpy.__ops__ import dir as op_dir
+from bpy.__ops__ import call as op_call
+from bpy.__ops__ import as_string as op_as_string
+from bpy.__ops__ import get_rna as op_get_rna
# Keep in sync with WM_types.h
context_dict = {
- 'INVOKE_DEFAULT':0,
- 'INVOKE_REGION_WIN':1,
- 'INVOKE_AREA':2,
- 'INVOKE_SCREEN':3,
- 'EXEC_DEFAULT':4,
- 'EXEC_REGION_WIN':5,
- 'EXEC_AREA':6,
- 'EXEC_SCREEN':7,
+ 'INVOKE_DEFAULT': 0,
+ 'INVOKE_REGION_WIN': 1,
+ 'INVOKE_AREA': 2,
+ 'INVOKE_SCREEN': 3,
+ 'EXEC_DEFAULT': 4,
+ 'EXEC_REGION_WIN': 5,
+ 'EXEC_AREA': 6,
+ 'EXEC_SCREEN': 7,
}
+
class bpy_ops(object):
- '''
- Fake module like class.
+ '''
+ Fake module like class.
- bpy.ops
- '''
+ bpy.ops
+ '''
- def __getattr__(self, module):
- '''
- gets a bpy.ops submodule
- '''
- if module.startswith('__'):
- raise AttributeError(module)
- return bpy_ops_submodule(module)
-
- def add(self, pyop):
- op_add(pyop)
-
- def remove(self, pyop):
- op_remove(pyop)
-
- def __dir__(self):
-
- submodules = set()
-
- # add this classes functions
- for id_name in dir(self.__class__):
- if not id_name.startswith('__'):
- submodules.add(id_name)
-
- for id_name in op_dir():
- 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'>"
+ def __getattr__(self, module):
+ '''
+ gets a bpy.ops submodule
+ '''
+ if module.startswith('__'):
+ raise AttributeError(module)
+ return bpy_ops_submodule(module)
+ def add(self, pyop):
+ op_add(pyop)
+ def remove(self, pyop):
+ op_remove(pyop)
+
+ def __dir__(self):
+
+ submodules = set()
+
+ # add this classes functions
+ for id_name in dir(self.__class__):
+ if not id_name.startswith('__'):
+ submodules.add(id_name)
+
+ for id_name in op_dir():
+ 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 op_dir():
- 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
+ '''
+ 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 op_dir():
+ 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 idname(self):
- # submod.foo -> SUBMOD_OT_foo
- return self.module.upper() + '_OT_' + self.func
-
- def __call__(self, *args, **kw):
-
- # Get the operator from blender
- if len(args) > 2:
- raise ValueError("only 1 or 2 arguments for the execution context is supported")
-
- C_dict = None
-
- if args:
-
- C_exec = 'EXEC_DEFAULT'
-
- if len(args) == 2:
- C_exec = args[0]
- C_dict = args[1]
- else:
- if type(args[0]) != str:
- C_dict= args[0]
- else:
- C_exec= args[0]
-
- try:
- context = context_dict[C_exec]
- except:
- raise ValueError("Expected a single context argument in: " + str(list(context_dict.keys())))
-
- if len(args) == 2:
- C_dict= args[1]
-
- return op_call(self.idname() , C_dict, kw, context)
-
- else:
- return op_call(self.idname(), C_dict, kw)
-
- def get_rna(self):
- '''
- currently only used for '__rna__'
- '''
- return op_get_rna(self.idname())
-
-
- def __repr__(self): # useful display, repr(op)
- return op_as_string(self.idname())
-
- def __str__(self): # used for print(...)
- return "<function bpy.ops.%s.%s at 0x%x'>" % (self.module, self.func, id(self))
+ '''
+ 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 idname(self):
+ # submod.foo -> SUBMOD_OT_foo
+ return self.module.upper() + '_OT_' + self.func
+
+ def __call__(self, *args, **kw):
+
+ # Get the operator from blender
+ if len(args) > 2:
+ raise ValueError("1 or 2 args execution context is supported")
+
+ C_dict = None
+
+ if args:
+
+ C_exec = 'EXEC_DEFAULT'
+
+ if len(args) == 2:
+ C_exec = args[0]
+ C_dict = args[1]
+ else:
+ if type(args[0]) != str:
+ C_dict = args[0]
+ else:
+ C_exec = args[0]
+
+ try:
+ context = context_dict[C_exec]
+ except:
+ raise ValueError("Expected a single context argument in: " + \
+ str(list(context_dict.keys())))
+
+ if len(args) == 2:
+ C_dict = args[1]
+
+ return op_call(self.idname(), C_dict, kw, context)
+
+ else:
+ return op_call(self.idname(), C_dict, kw)
+
+ def get_rna(self):
+ '''
+ currently only used for '__rna__'
+ '''
+ return op_get_rna(self.idname())
+
+ def __repr__(self): # useful display, repr(op)
+ return op_as_string(self.idname())
+
+ def __str__(self): # used for print(...)
+ return "<function bpy.ops.%s.%s at 0x%x'>" % \
+ (self.module, self.func, id(self))
+
import bpy
bpy.ops = bpy_ops()
# TODO, C macro's cant define settings :|
+from bpy.props import *
+
+
class MESH_OT_delete_edgeloop(bpy.types.Operator):
- '''Export a single object as a stanford PLY with normals, colours and texture coordinates.'''
- __idname__ = "mesh.delete_edgeloop"
- __label__ = "Delete Edge Loop"
-
- def execute(self, context):
- bpy.ops.tfm.edge_slide(value=1.0)
- bpy.ops.mesh.select_more()
- bpy.ops.mesh.remove_doubles()
- return ('FINISHED',)
+ '''Export a single object as a stanford PLY with normals,
+ colours and texture coordinates.'''
+ __idname__ = "mesh.delete_edgeloop"
+ __label__ = "Delete Edge Loop"
-rna_path_prop = bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= "")
-rna_reverse_prop = bpy.props.BoolProperty(attr="reverse", name="Reverse", description="Cycle backwards", default= False)
+ def execute(self, context):
+ bpy.ops.tfm.edge_slide(value=1.0)
+ bpy.ops.mesh.select_more()
+ bpy.ops.mesh.remove_doubles()
+ return ('FINISHED',)
+rna_path_prop = StringProperty(attr="path", name="Context Attributes",
+ description="rna context string", maxlen=1024, default="")
+
+rna_reverse_prop = BoolProperty(attr="reverse", name="Reverse",
+ description="Cycle backwards", default=False)
+
+
class NullPathMember:
- pass
+ pass
+
def context_path_validate(context, path):
- import sys
- try:
- value = eval("context.%s" % path)
- except AttributeError:
- if "'NoneType'" in str(sys.exc_info()[1]):
- # One of the items in the rna path is None, just ignore this
- value = NullPathMember
- else:
- # We have a real error in the rna path, dont ignore that
- raise
-
- return value
-
-
+ import sys
+ try:
+ value = eval("context.%s" % path)
+ except AttributeError:
+ if "'NoneType'" in str(sys.exc_info()[1]):
+ # One of the items in the rna path is None, just ignore this
+ value = NullPathMember
+ else:
+ # We have a real error in the rna path, dont ignore that
+ raise
+ return value
+
+
def execute_context_assign(self, context):
- if context_path_validate(context, self.path) == NullPathMember:
- return ('PASS_THROUGH',)
-
- exec("context.%s=self.value" % self.path)
- return ('FINISHED',)
+ if context_path_validate(context, self.path) == NullPathMember:
+ return ('PASS_THROUGH',)
+ exec("context.%s=self.value" % self.path)
+ return ('FINISHED',)
+
+
class WM_OT_context_set_boolean(bpy.types.Operator):
- '''Set a context value.'''
- __idname__ = "wm.context_set_boolean"
- __label__ = "Context Set"
- __props__ = [rna_path_prop, bpy.props.BoolProperty(attr="value", name="Value", description="Assignment value", default= True)]
- execute = execute_context_assign
+ '''Set a context value.'''
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list