diff options
author | Campbell Barton <campbell@blender.org> | 2022-03-11 06:44:02 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-03-11 06:44:02 +0300 |
commit | 231eac160ee394d41c84e0cc36845facb7594ba5 (patch) | |
tree | 54ad436f0cb7370a58ff526566e67a6f6d3d7a12 | |
parent | 1032f111d087e7ba77c16a4af78704019714bd6a (diff) |
PyAPI: use C/RNA API for Text.from_string/to_string
Use faster C code for getting the buffer from text.
-rw-r--r-- | release/scripts/modules/bpy_types.py | 9 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_text_api.c | 21 |
2 files changed, 21 insertions, 9 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 54fcc8faf46..e0e20d0f8c9 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -580,15 +580,6 @@ class MeshPolygon(StructRNA): class Text(bpy_types.ID): __slots__ = () - def as_string(self): - """Return the text as a string.""" - return "\n".join(line.body for line in self.lines) - - def from_string(self, string): - """Replace text with this string.""" - self.clear() - self.write(string) - def as_module(self): import bpy from os.path import splitext, join diff --git a/source/blender/makesrna/intern/rna_text_api.c b/source/blender/makesrna/intern/rna_text_api.c index 67e93add549..0c0b8a85023 100644 --- a/source/blender/makesrna/intern/rna_text_api.c +++ b/source/blender/makesrna/intern/rna_text_api.c @@ -32,6 +32,17 @@ static void rna_Text_write(Text *text, const char *str) WM_main_add_notifier(NC_TEXT | NA_EDITED, text); } +static void rna_Text_from_string(Text *text, const char *str) +{ + BKE_text_clear(text); + BKE_text_write(text, str); +} + +static void rna_Text_as_string(Text *text, int *r_result_len, const char **result) +{ + *result = txt_to_buf(text, r_result_len); +} + static void rna_Text_select_set(Text *text, int startl, int startc, int endl, int endc) { txt_sel_set(text, startl, startc, endl, endc); @@ -60,6 +71,16 @@ void RNA_api_text(StructRNA *srna) parm = RNA_def_string(func, "text", "Text", 0, "", "New text for this data-block"); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + func = RNA_def_function(srna, "from_string", "rna_Text_from_string"); + RNA_def_function_ui_description(func, "Replace text with this string."); + parm = RNA_def_string(func, "text", "Text", 0, "", ""); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + + func = RNA_def_function(srna, "as_string", "rna_Text_as_string"); + RNA_def_function_ui_description(func, "Return the text as a string"); + parm = RNA_def_string(func, "text", "Text", 0, "", ""); + RNA_def_parameter_flags(parm, PROP_DYNAMIC, PARM_OUTPUT); + func = RNA_def_function( srna, "is_syntax_highlight_supported", "ED_text_is_syntax_highlight_supported"); RNA_def_function_return(func, |