[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50201] trunk/blender/release/scripts: ability to register your own online manual callbacks - useful for 3rd party addon developers , who may want to link to their own URL's.

Campbell Barton ideasman42 at gmail.com
Sat Aug 25 16:07:52 CEST 2012


Revision: 50201
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50201
Author:   campbellbarton
Date:     2012-08-25 14:07:51 +0000 (Sat, 25 Aug 2012)
Log Message:
-----------
ability to register your own online manual callbacks - useful for 3rd party addon developers, who may want to link to their own URL's.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy/utils.py
    trunk/blender/release/scripts/startup/bl_operators/wm.py

Modified: trunk/blender/release/scripts/modules/bpy/utils.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy/utils.py	2012-08-25 12:55:14 UTC (rev 50200)
+++ trunk/blender/release/scripts/modules/bpy/utils.py	2012-08-25 14:07:51 UTC (rev 50201)
@@ -33,6 +33,7 @@
     "refresh_script_paths",
     "register_class",
     "register_module",
+    "register_manual_map",
     "resource_path",
     "script_path_user",
     "script_path_pref",
@@ -56,7 +57,6 @@
 
 _script_module_dirs = "startup", "modules"
 
-
 def _test_import(module_name, loaded_modules):
     use_time = _bpy.app.debug_python
 
@@ -595,3 +595,40 @@
             traceback.print_exc()
     if verbose:
         print("done.\n")
+
+
+# -----------------------------------------------------------------------------
+# Manual lookups, each function has to return a basepath and a sequence
+# of...
+
+# we start with the built-in default mapping
+def _blender_default_map():
+    import sys
+    import rna_wiki_reference as ref_mod
+    ret = (ref_mod.url_manual_prefix, ref_mod.url_manual_mapping)
+    # avoid storing in memory
+    del sys.modules["rna_wiki_reference"]
+    return ret
+
+# hooks for doc lookups
+_manual_map = [_blender_default_map]
+
+def register_manual_map(manual_hook):
+    _manual_map.append(manual_hook)
+
+def unregister_manual_map(manual_hook):
+    _manual_map.remove(manual_hook)
+
+def manual_map():
+    # reverse so default is called last
+    for cb in reversed(_manual_map):
+        try:
+            prefix, url_manual_mapping = cb()
+        except:
+            print("Error calling %r" % cb)
+            import traceback
+            traceback.print_exc()
+            continue
+
+        yield prefix, url_manual_mapping
+

Modified: trunk/blender/release/scripts/startup/bl_operators/wm.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/wm.py	2012-08-25 12:55:14 UTC (rev 50200)
+++ trunk/blender/release/scripts/startup/bl_operators/wm.py	2012-08-25 14:07:51 UTC (rev 50201)
@@ -862,28 +862,26 @@
         if rna_id is None:
             return {'PASS_THROUGH'}
 
-        import rna_wiki_reference
-        rna_ref = self._find_reference(rna_id, rna_wiki_reference.url_manual_mapping)
+        url = None
 
-        if rna_ref is None:
-            self.report({'WARNING'}, "No reference available '%s', "
-                                     "Update info in %r" %
-                                     (self.doc_id, rna_wiki_reference.__file__))
+        for prefix, url_manual_mapping in bpy.utils.manual_map():
+            rna_ref = self._find_reference(rna_id, url_manual_mapping)
+            if rna_ref is not None:
+                url = prefix + rna_ref
+                break
 
-        import sys
-        del sys.modules["rna_wiki_reference"]
-
-        if rna_ref is None:
+        if url is None:
+            self.report({'WARNING'}, "No reference available %r, "
+                                     "Update info in 'rna_wiki_reference.py' "
+                                     " or callback to bpy.utils.manual_map()" %
+                                     self.doc_id)
             return {'CANCELLED'}
         else:
-            url = rna_wiki_reference.url_manual_prefix + rna_ref
+            import webbrowser
+            webbrowser.open(url)
+            return {'FINISHED'}
 
-        import webbrowser
-        webbrowser.open(url)
 
-        return {'FINISHED'}
-
-
 class WM_OT_doc_view(Operator):
     """Load online reference docs"""
     bl_idname = "wm.doc_view"




More information about the Bf-blender-cvs mailing list