From aeb5365e841d610a3b9a0fde0520238909c25c49 Mon Sep 17 00:00:00 2001 From: Jean Jung Date: Wed, 29 Jun 2016 12:43:51 -0300 Subject: [PATCH] Adding support to get the raw text without formatting information from a RichTextLabel. --- doc/base/classes.xml | 19 +++++++++++++++++++ scene/gui/rich_text_label.cpp | 19 +++++++++++++++++++ scene/gui/rich_text_label.h | 1 + 3 files changed, 39 insertions(+) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 4b5c424d4bf..9ac5e0f5665 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -21631,6 +21631,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return [i]true[/i] if the "node" argument is a direct or indirect child of the current node, otherwise return [i]false[/i]. + + + + + + @@ -21750,6 +21756,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. + + + + + + @@ -31508,6 +31520,13 @@ A similar effect may be achieved moving this node's descendants. + + + + + Returns the raw text, stripping out the formatting information. + + diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 786ce27a0cd..6d7ac0e7f3a 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1941,11 +1941,30 @@ bool RichTextLabel::is_using_bbcode() const { return use_bbcode; } + +String RichTextLabel::get_text() { + String text = ""; + Item *it = main; + while (it) { + if (it->type == ITEM_TEXT) { + ItemText *t = static_cast(it); + text += t->text; + } else if (it->type == ITEM_NEWLINE) { + text += "\n"; + } else if (it->type == ITEM_INDENT) { + text += "\t"; + } + it=_get_next_item(it,true); + } + return text; +} + void RichTextLabel::_bind_methods() { ObjectTypeDB::bind_method(_MD("_input_event"),&RichTextLabel::_input_event); ObjectTypeDB::bind_method(_MD("_scroll_changed"),&RichTextLabel::_scroll_changed); + ObjectTypeDB::bind_method(_MD("get_text"),&RichTextLabel::get_text); ObjectTypeDB::bind_method(_MD("add_text","text"),&RichTextLabel::add_text); ObjectTypeDB::bind_method(_MD("add_image","image:Texture"),&RichTextLabel::add_image); ObjectTypeDB::bind_method(_MD("newline"),&RichTextLabel::add_newline); diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index 635fe87ad40..5147905a0eb 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -280,6 +280,7 @@ protected: public: + String get_text(); void add_text(const String& p_text); void add_image(const Ref& p_image); void add_newline();