[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24132] trunk/blender/release/scripts/ modules/bpy_ops.py: viewing docs for nested classes would fail, expects bpy .types.Scene.SceneGameData-class.html rather then bpy.types. SceneGameData-class.html

Campbell Barton ideasman42 at gmail.com
Wed Oct 28 10:03:08 CET 2009


Revision: 24132
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24132
Author:   campbellbarton
Date:     2009-10-28 10:03:08 +0100 (Wed, 28 Oct 2009)

Log Message:
-----------
viewing docs for nested classes would fail, expects bpy.types.Scene.SceneGameData-class.html rather then bpy.types.SceneGameData-class.html

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

Modified: trunk/blender/release/scripts/modules/bpy_ops.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_ops.py	2009-10-28 07:15:01 UTC (rev 24131)
+++ trunk/blender/release/scripts/modules/bpy_ops.py	2009-10-28 09:03:08 UTC (rev 24132)
@@ -317,12 +317,22 @@
 doc_id = bpy.props.StringProperty(attr="doc_id", name="Doc ID", description="ID for the documentation", maxlen= 1024, default= "")
 doc_new = bpy.props.StringProperty(attr="doc_new", name="Doc New", description="", maxlen= 1024, default= "")
 
+
 class WM_OT_doc_view(bpy.types.Operator):
 	'''Load online reference docs'''
 	__idname__ = "wm.doc_view"
 	__label__ = "View Documentation"
 	__props__ = [doc_id]
 	_prefix = 'http://www.blender.org/documentation/250PythonDoc'
+	
+	def _nested_class_string(self, class_string):
+		ls = []
+		class_obj = getattr(bpy.types, class_string, None).__rna__
+		while class_obj:
+			ls.insert(0, class_obj)
+			class_obj = class_obj.nested
+		return '.'.join([class_obj.identifier for class_obj in ls])
+	
 	def execute(self, context):
 		id_split = self.doc_id.split('.')
 		# Example url, http://www.graphicall.org/ftp/ideasman42/html/bpy.types.Space3DView-class.html#background_image
@@ -332,10 +342,12 @@
 		elif len(id_split) == 2: # rna, class.prop
 			class_name, class_prop = id_split
 			
+			class_name_full = self._nested_class_string(class_name) # It so happens that epydoc nests these
+			
 			if hasattr(bpy.types, class_name.upper() + '_OT_' + class_prop):
-				url= '%s/bpy.ops.%s-module.html#%s' % (self._prefix, class_name, class_prop)
+				url= '%s/bpy.ops.%s-module.html#%s' % (self._prefix, class_name_full, class_prop)
 			else:
-				url= '%s/bpy.types.%s-class.html#%s' % (self._prefix, class_name, class_prop)
+				url= '%s/bpy.types.%s-class.html#%s' % (self._prefix, class_name_full, class_prop)
 			
 		else:
 			return ('PASS_THROUGH',)





More information about the Bf-blender-cvs mailing list