[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24823] trunk/blender/release/scripts/ modules/bpy_types.py: use decorators for python attributes, added bone. length

Campbell Barton ideasman42 at gmail.com
Mon Nov 23 17:04:20 CET 2009


Revision: 24823
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24823
Author:   campbellbarton
Date:     2009-11-23 17:04:19 +0100 (Mon, 23 Nov 2009)

Log Message:
-----------
use decorators for python attributes, added bone.length

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_types.py

Modified: trunk/blender/release/scripts/modules/bpy_types.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_types.py	2009-11-23 15:41:57 UTC (rev 24822)
+++ trunk/blender/release/scripts/modules/bpy_types.py	2009-11-23 16:04:19 UTC (rev 24823)
@@ -35,23 +35,36 @@
 
 class Object(bpy_types.ID):
 
-    def _get_children(self):
+    @property
+    def children(self):
         import bpy
         return [child for child in bpy.data.objects if child.parent == self]
 
-    children = property(_get_children)
 
-
 class PoseBone(StructRNA):
 
-    def _get_children(self):
+    def parent_index(self, parent_test):
+        '''
+        The same as 'bone in other_bone.parent_recursive' but saved generating a list.
+        '''
+        parent = self.parent
+        i = 1
+        while parent:
+            if parent == parent_test:
+                return i
+            parent = parent.parent
+            i += 1
+        
+        return 0
+
+    @property
+    def children(self):
         import bpy
         obj = self.id_data
         return [child for child in obj.pose.bones if child.parent == self]
 
-    children = property(_get_children)
-
-    def _get_parent_recursive(self):
+    @property
+    def parent_recursive(self):
         parent_list = []
         parent = self.parent
         
@@ -62,24 +75,9 @@
             parent = parent.parent
         
         return parent_list
-
-    parent_recursive = property(_get_parent_recursive)
     
-    def parent_index(self, parent_test):
-        '''
-        The same as 'bone in other_bone.parent_recursive' but saved generating a list.
-        '''
-        parent = self.parent
-        i = 1
-        while parent:
-            if parent == parent_test:
-                return i
-            parent = parent.parent
-            i += 1
-        
-        return 0
-    
-    def _get_children_recursive(self):
+    @property
+    def children_recursive(self):
         obj = self.id_data
         bones_children = []
         for bone in obj.pose.bones:
@@ -91,21 +89,25 @@
         bones_children.sort(key=lambda bone_pair: bone_pair[0])
         return [bone for index, bone in bones_children]
 
-    children_recursive = property(_get_children_recursive)
 
+class Bone(StructRNA):
+    @property
+    def length(self):
+        return (self.head - self.tail).length
 
+
 def ord_ind(i1,i2):
     if i1<i2: return i1,i2
     return i2,i1
 
 class Mesh(bpy_types.ID):
 
-    def _get_edge_keys(self):
+    @property
+    def edge_keys(self):
         return [edge_key for face in self.faces for edge_key in face.edge_keys]
 
-    edge_keys = property(_get_edge_keys)
-
-    def _get_edge_face_count_dict(self):
+    @property
+    def edge_face_count_dict(self):
         face_edge_keys = [face.edge_keys for face in self.faces]
         face_edge_count = {}
         for face_keys in face_edge_keys:
@@ -117,35 +119,30 @@
 
         return face_edge_count
 
-    edge_face_count_dict = property(_get_edge_face_count_dict)
-
-    def _get_edge_face_count(self):
+    @property
+    def edge_face_count(self):
         edge_face_count_dict = self.edge_face_count_dict
         return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges]
 
-    edge_face_count = property(_get_edge_face_count)
 
-
 class MeshEdge(StructRNA):
 
-    def _get_key(self):
+    @property
+    def key(self):
         return ord_ind(*tuple(self.verts))
 
-    key = property(_get_key)
 
-
 class MeshFace(StructRNA):
 
-    def _get_edge_keys(self):
+    @property
+    def edge_keys(self):
         verts = tuple(self.verts)
         if len(verts)==3:
             return ord_ind(verts[0], verts[1]),  ord_ind(verts[1], verts[2]),  ord_ind(verts[2], verts[0])
 
         return ord_ind(verts[0], verts[1]),  ord_ind(verts[1], verts[2]),  ord_ind(verts[2], verts[3]),  ord_ind(verts[3], verts[0])
 
-    edge_keys = property(_get_edge_keys)
 
-
 import collections
 class OrderedMeta(type):
     def __init__(cls, name, bases, attributes):





More information about the Bf-blender-cvs mailing list