ability to register your own online manual callbacks - useful for 3rd party addon developers, who may want to link to their own URL's.
This commit is contained in:
@@ -33,6 +33,7 @@ __all__ = (
|
|||||||
"refresh_script_paths",
|
"refresh_script_paths",
|
||||||
"register_class",
|
"register_class",
|
||||||
"register_module",
|
"register_module",
|
||||||
|
"register_manual_map",
|
||||||
"resource_path",
|
"resource_path",
|
||||||
"script_path_user",
|
"script_path_user",
|
||||||
"script_path_pref",
|
"script_path_pref",
|
||||||
@@ -56,7 +57,6 @@ import addon_utils as _addon_utils
|
|||||||
|
|
||||||
_script_module_dirs = "startup", "modules"
|
_script_module_dirs = "startup", "modules"
|
||||||
|
|
||||||
|
|
||||||
def _test_import(module_name, loaded_modules):
|
def _test_import(module_name, loaded_modules):
|
||||||
use_time = _bpy.app.debug_python
|
use_time = _bpy.app.debug_python
|
||||||
|
|
||||||
@@ -595,3 +595,40 @@ def unregister_module(module, verbose=False):
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
if verbose:
|
if verbose:
|
||||||
print("done.\n")
|
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
|
||||||
|
|
||||||
|
|||||||
@@ -862,25 +862,23 @@ class WM_OT_doc_view_manual(Operator):
|
|||||||
if rna_id is None:
|
if rna_id is None:
|
||||||
return {'PASS_THROUGH'}
|
return {'PASS_THROUGH'}
|
||||||
|
|
||||||
import rna_wiki_reference
|
url = None
|
||||||
rna_ref = self._find_reference(rna_id, rna_wiki_reference.url_manual_mapping)
|
|
||||||
|
|
||||||
if rna_ref is None:
|
for prefix, url_manual_mapping in bpy.utils.manual_map():
|
||||||
self.report({'WARNING'}, "No reference available '%s', "
|
rna_ref = self._find_reference(rna_id, url_manual_mapping)
|
||||||
"Update info in %r" %
|
if rna_ref is not None:
|
||||||
(self.doc_id, rna_wiki_reference.__file__))
|
url = prefix + rna_ref
|
||||||
|
break
|
||||||
|
|
||||||
import sys
|
if url is None:
|
||||||
del sys.modules["rna_wiki_reference"]
|
self.report({'WARNING'}, "No reference available %r, "
|
||||||
|
"Update info in 'rna_wiki_reference.py' "
|
||||||
if rna_ref is None:
|
" or callback to bpy.utils.manual_map()" %
|
||||||
|
self.doc_id)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
else:
|
else:
|
||||||
url = rna_wiki_reference.url_manual_prefix + rna_ref
|
|
||||||
|
|
||||||
import webbrowser
|
import webbrowser
|
||||||
webbrowser.open(url)
|
webbrowser.open(url)
|
||||||
|
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user