From b278279c95c9396432a66ef50499e45389e9ec18 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 17 Aug 2010 14:32:14 +0000 Subject: [PATCH] document rna functions that have the no_self flag set as classmethods --- release/scripts/modules/rna_info.py | 1 + source/blender/makesrna/intern/rna_rna.c | 11 +++++++++++ source/blender/makesrna/intern/rna_ui.c | 2 +- source/blender/python/doc/sphinx_doc_gen.py | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 296ec87fcb4..41ed0ce6b12 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -302,6 +302,7 @@ class InfoFunctionRNA: self.identifier = rna_func.identifier # self.name = rna_func.name # functions have no name! self.description = rna_func.description.strip() + self.is_classmethod = rna_func.no_self self.args = [] self.return_values = () diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 6c7670907b7..0ee3990ef3f 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -811,6 +811,12 @@ static int rna_Function_registered_optional_get(PointerRNA *ptr) return func->flag & FUNC_REGISTER_OPTIONAL; } +static int rna_Function_no_self_get(PointerRNA *ptr) +{ + FunctionRNA *func= (FunctionRNA*)ptr->data; + return func->flag & FUNC_NO_SELF; +} + /* Blender RNA */ static void rna_BlenderRNA_structs_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) @@ -1049,6 +1055,11 @@ static void rna_def_function(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_boolean_funcs(prop, "rna_Function_registered_optional_get", NULL); RNA_def_property_ui_text(prop, "Registered Optionally", "Function is optionally registered as callback part of type registration"); + + prop= RNA_def_property(srna, "no_self", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_boolean_funcs(prop, "rna_Function_no_self_get", NULL); + RNA_def_property_ui_text(prop, "No Self", "Function does not pass its self as an argument (becomes a class method in python)"); } static void rna_def_number_property(StructRNA *srna, PropertyType type) diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index e13483bf87a..a9b2672e205 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -712,7 +712,7 @@ static void rna_def_menu(BlenderRNA *brna) /* poll */ func= RNA_def_function(srna, "poll", NULL); - RNA_def_function_ui_description(func, "If this method returns a non-null output, then the menu can be drawn. This is a static method, hence it is not possible to use 'self' in it."); + RNA_def_function_ui_description(func, "If this method returns a non-null output, then the menu can be drawn."); RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_REGISTER|FUNC_REGISTER_OPTIONAL); RNA_def_function_return(func, RNA_def_boolean(func, "visible", 1, "", "")); parm= RNA_def_pointer(func, "context", "Context", "", ""); diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 3beb17f194e..06d1a9021b8 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -594,7 +594,7 @@ def rna2sphinx(BASEPATH): for func in struct.functions: args_str = ", ".join([prop.get_arg_default(force=False) for prop in func.args]) - fw(" .. method:: %s(%s)\n\n" % (func.identifier, args_str)) + fw(" .. %s:: %s(%s)\n\n" % ("classmethod" if func.is_classmethod else "method", func.identifier, args_str)) fw(" %s\n\n" % func.description) for prop in func.args: