From ec97183876faa5b18debc75fb64b024da41f9012 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 5 Feb 2013 05:09:19 +0000 Subject: [PATCH] add python api docstring for 'bpy.types.Operator.bl_property' --- doc/python_api/sphinx_doc_gen.py | 13 +++++ doc/python_api/sphinx_doc_gen_monkeypatch.py | 47 +++++++++++++++++++ .../blender/python/intern/bpy_operator_wrap.c | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 doc/python_api/sphinx_doc_gen_monkeypatch.py diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 7457ae02d6c..d36f25553ea 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -696,6 +696,8 @@ def pyprop2sphinx(ident, fw, identifier, py_prop): write_indented_lines(ident + " ", fw, py_prop.__doc__) if py_prop.fset is None: fw(ident + " (readonly)\n\n") + else: + fw("\n") def pymodule2sphinx(basepath, module_name, module, title): @@ -1814,8 +1816,19 @@ def refactor_sphinx_log(sphinx_logfile): refactored_logfile.write("%-12s %s\n %s\n" % log) +def monkey_patch(): + filepath = os.path.join(SCRIPT_DIR, "sphinx_doc_gen_monkeypatch.py") + global_namespace = {"__file__": filepath, "__name__": "__main__"} + file = open(filepath, 'rb') + exec(compile(file.read(), filepath, 'exec'), global_namespace) + file.close() + + def main(): + # first monkey patch to load in fake members + monkey_patch() + # eventually, create the dirs for dir_path in [ARGS.output_dir, SPHINX_IN]: if not os.path.exists(dir_path): diff --git a/doc/python_api/sphinx_doc_gen_monkeypatch.py b/doc/python_api/sphinx_doc_gen_monkeypatch.py new file mode 100644 index 00000000000..1167ece05b7 --- /dev/null +++ b/doc/python_api/sphinx_doc_gen_monkeypatch.py @@ -0,0 +1,47 @@ + # ***** 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + # + # Contributor(s): Campbell Barton + # + # #**** END GPL LICENSE BLOCK #**** + +# + +bpy_types_Operator_bl_property__doc__ = ( +""" +The name of a property to use as this operators primary property. +Currently this is only used to select the default property when +expanding an operator into a menu. +:type: string +""") + + +def main(): + import bpy + from bpy.types import Operator + + def dummy_func(test): + pass + + kw_dummy = dict(fget=dummy_func, fset=dummy_func, fdel=dummy_func) + + # bpy registration handles this, + # but its only checked for and not existing in the base class. + Operator.bl_property = property(doc=bpy_types_Operator_bl_property__doc__, **kw_dummy) + + +if __name__ == "__main__": + main() diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index e13dc6ecddd..9d92ff51213 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -88,12 +88,12 @@ static void operator_properties_init(wmOperatorType *ot) } } else { + /* fallback to hard-coded string (pre 2.66, could be deprecated) */ prop_id = "type"; prop_raise_error = false; } if (prop_id) { - /* fallback to hard-coded string */ PointerRNA ptr; PropertyRNA *prop;