[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [723] trunk/py/scripts/addons/ space_view3d_property_chart.py: tool to display arbitrary properties of all selected objects

Campbell Barton ideasman42 at gmail.com
Thu Jun 10 11:08:51 CEST 2010


Revision: 723
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=723
Author:   campbellbarton
Date:     2010-06-10 11:08:51 +0200 (Thu, 10 Jun 2010)

Log Message:
-----------
tool to display arbitrary properties of all selected objects

Added Paths:
-----------
    trunk/py/scripts/addons/space_view3d_property_chart.py

Added: trunk/py/scripts/addons/space_view3d_property_chart.py
===================================================================
--- trunk/py/scripts/addons/space_view3d_property_chart.py	                        (rev 0)
+++ trunk/py/scripts/addons/space_view3d_property_chart.py	2010-06-10 09:08:51 UTC (rev 723)
@@ -0,0 +1,103 @@
+#
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+
+'''List properties of selected objects'''
+
+bl_addon_info = {
+    "name": "3D View: Object Property Chart",
+    "author": "Campbell Barton (ideasman42)",
+    "version": "0.1",
+    "blender": (2, 5, 3),
+    "location": "Tool Shelf",
+    "description": "Edit arbitrary selected properties for objects of the same type"}
+
+import bpy
+
+
+class View3DEditProps(bpy.types.Panel):
+    bl_space_type = 'VIEW_3D'
+    bl_region_type = 'UI'
+    
+    bl_label = "Property Chart"
+    bl_context = "objectmode"
+    
+    _PROP_STORAGE_ID = "view3d_edit_props"
+
+    def draw(self, context):
+        layout = self.layout
+        obj = context.object
+        
+        if obj is None:
+            return
+
+        obj_type_sel = [obj_sel for obj_sel in context.selected_objects if obj.type == obj_sel.type]
+
+        if not obj_type_sel:
+            return
+
+        # box = layout.separator()
+        
+        col = layout.column()
+        
+        id_storage = context.scene
+        
+        strings = id_storage.get(self._PROP_STORAGE_ID)
+        
+        if strings is None:
+            strings = id_storage[self._PROP_STORAGE_ID] = ""
+
+        if strings:
+            strings = strings.split()
+
+            row = col.row(align=True)
+            for attr_string in strings:
+                row.label(text=attr_string.rsplit(".", 1)[-1])
+
+            for obj in obj_type_sel:
+                row = col.row(align=True)
+                for attr_string in strings:
+
+                    attrs = attr_string.split(".")
+                    val_new = obj
+                    for i, attr in enumerate(attrs):
+                        val_old = val_new
+                        val_new = getattr(val_old, attr, Ellipsis)
+                        
+                        if val_new == Ellipsis:
+                            break
+
+                    if val_new is not Ellipsis:
+                        row.prop(val_old, attrs[-1], text="")
+                    else:
+                        row.label(text="")
+        
+        col.label(text="Display Properties")
+        col.prop(id_storage, '["%s"]' % self._PROP_STORAGE_ID, text="")
+
+
+def register():
+    bpy.types.register(View3DEditProps)
+
+
+def unregister():
+    bpy.types.unregister(View3DEditProps)
+
+if __name__ == "__main__":
+    register()




More information about the Bf-extensions-cvs mailing list