RichTextLabel
Наследует: Control < CanvasItem < Node < Object
Элемент управления для отображения текста, который может содержать различные стили шрифтов, изображения и базовое форматирование.
Описание
Элемент управления для отображения текста, который может содержать пользовательские шрифты, изображения и базовое форматирование. RichTextLabel управляет ими как внутренним стеком тегов. Он также адаптируется к заданной ширине/высоте.
Примечание: newline(), push_paragraph(), "\n", "\r\n", тег p и теги выравнивания начинают новый абзац. Каждый абзац обрабатывается независимо, в своем собственном контексте BiDi. Если вы хотите принудительно перенести строку внутри абзаца, можно использовать любой другой символ разрыва строки, например, Form Feed (U+000C), Next Line (U+0085), Line Separator (U+2028).
Примечание: Присвоения text очищают стек тегов и восстанавливают его из содержимого свойства. Любые изменения, внесенные в text, удалят предыдущие изменения, внесенные из других ручных источников, таких как append_text() и методы push_* / pop().
Примечание: RichTextLabel не поддерживает переплетенные теги BBCode. Например, вместо использования [b]bold[i]bold italic[/b]italic[/i] используйте [b]bold[i]bold italic[/i][/b][i]italic[/i].
Примечание: Функции push_*/pop_* не повлияют на BBCode.
Примечание: Пока bbcode_enabled включен, теги выравнивания, такие как [center], будут иметь приоритет над настройкой horizontal_alignment, которая определяет выравнивание текста по умолчанию.
Обучающие материалы
Свойства
|
||
BitField[LineBreakFlag] |
|
|
|
||
clip_contents |
|
|
|
||
|
||
|
||
|
||
|
||
focus_mode |
|
|
|
||
|
||
BitField[JustificationFlag] |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
void |
add_hr(width: int = 90, height: int = 2, color: Color = Color(1, 1, 1, 1), alignment: HorizontalAlignment = 1, width_in_percent: bool = true, height_in_percent: bool = false) |
void |
add_image(image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), key: Variant = null, pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false, alt_text: String = "") |
void |
|
void |
append_text(bbcode: String) |
void |
clear() |
void |
deselect() |
get_character_line(character: int) |
|
get_character_paragraph(character: int) |
|
get_content_height() const |
|
get_content_width() const |
|
get_line_count() const |
|
get_line_height(line: int) const |
|
get_line_offset(line: int) |
|
get_line_range(line: int) |
|
get_line_width(line: int) const |
|
get_menu() const |
|
get_paragraph_count() const |
|
get_paragraph_offset(paragraph: int) |
|
get_parsed_text() const |
|
get_selected_text() const |
|
get_selection_from() const |
|
get_selection_line_offset() const |
|
get_selection_to() const |
|
get_total_character_count() const |
|
get_visible_content_rect() const |
|
get_visible_line_count() const |
|
get_visible_paragraph_count() const |
|
void |
install_effect(effect: Variant) |
invalidate_paragraph(paragraph: int) |
|
is_finished() const |
|
is_menu_visible() const |
|
is_ready() const |
|
void |
menu_option(option: int) |
void |
newline() |
void |
parse_bbcode(bbcode: String) |
parse_expressions_for_values(expressions: PackedStringArray) |
|
void |
pop() |
void |
pop_all() |
void |
|
void |
push_bgcolor(bgcolor: Color) |
void |
|
void |
|
void |
|
void |
push_color(color: Color) |
void |
|
void |
push_customfx(effect: RichTextEffect, env: Dictionary) |
void |
push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2 = Rect2(0, 0, 0, 0), color: Color = Color(1, 1, 1, 1), outline_size: int = 0, outline_color: Color = Color(0, 0, 0, 0)) |
void |
push_fgcolor(fgcolor: Color) |
void |
|
void |
push_font_size(font_size: int) |
void |
|
void |
push_indent(level: int) |
void |
|
void |
push_language(language: String) |
void |
push_list(level: int, type: ListType, capitalize: bool, bullet: String = "•") |
void |
push_meta(data: Variant, underline_mode: MetaUnderline = 1, tooltip: String = "") |
void |
|
void |
|
void |
push_outline_color(color: Color) |
void |
push_outline_size(outline_size: int) |
void |
push_paragraph(alignment: HorizontalAlignment, base_direction: TextDirection = 0, language: String = "", st_parser: StructuredTextParser = 0, justification_flags: BitField[JustificationFlag] = 163, tab_stops: PackedFloat32Array = PackedFloat32Array()) |
void |
push_strikethrough(color: Color = Color(0, 0, 0, 0)) |
void |
push_table(columns: int, inline_align: InlineAlignment = 0, align_to_row: int = -1, name: String = "") |
void |
push_underline(color: Color = Color(0, 0, 0, 0)) |
void |
|
remove_paragraph(paragraph: int, no_invalidate: bool = false) |
|
void |
scroll_to_line(line: int) |
void |
scroll_to_paragraph(paragraph: int) |
void |
|
void |
|
void |
set_cell_border_color(color: Color) |
void |
set_cell_padding(padding: Rect2) |
void |
set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color) |
void |
set_cell_size_override(min_size: Vector2, max_size: Vector2) |
void |
set_table_column_expand(column: int, expand: bool, ratio: int = 1, shrink: bool = true) |
void |
set_table_column_name(column: int, name: String) |
void |
update_image(key: Variant, mask: BitField[ImageUpdateMask], image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false) |
Свойства темы
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Сигналы
finished() 🔗
Срабатывает, когда документ полностью загружен.
Примечание: Это может произойти до того, как текст будет обработан для рисования. Значения прокрутки могут быть недействительны, пока документ не будет отрисован в первый раз после этого сигнала.
Срабатывает, когда пользователь нажимает на содержимое между метатегами (URL). Если мета определена в BBCode, например. codeskip-lintText[/code], то параметр для этого сигнала всегда будет типа [String]. Если требуется определенный тип или объект, необходимо использовать метод [method push_meta] для ручной вставки данных в стек тегов. В качестве альтернативы можно преобразовать входные данные [String] в нужный тип на основе их содержимого (например, вызвав [method JSON.parse] для него).
Например, следующий метод можно подключить к [signal meta_clicked], чтобы открывать нажатые URL-адреса с помощью веб-браузера пользователя по умолчанию:
[codeblocks] [gdscript]
# Это предполагает, что сигнал meta_clicked RichTextLabel был подключен # к функции ниже с помощью диалогового окна подключения сигнала. func _richtextlabel_on_meta_clicked(meta):
# meta имеет тип Variant, поэтому преобразуйте его в String, чтобы избежать ошибок скрипта во время выполнения. OS.shell_open(str(meta))[/gdscript]
[/codeblocks]
meta_hover_ended(meta: Variant) 🔗
Срабатывает, когда указатель мыши покидает мета-тег.
meta_hover_started(meta: Variant) 🔗
Срабатывает при попадании мыши на мета-тег.
Перечисления
enum ListType: 🔗
ListType LIST_NUMBERS = 0
Каждый элемент списка имеет числовой маркер.
ListType LIST_LETTERS = 1
Каждый элемент списка имеет буквенный маркер.
ListType LIST_ROMAN = 2
Каждый пункт списка имеет римский номер-маркер.
ListType LIST_DOTS = 3
Каждый элемент списка имеет маркер в виде заполненного круга.
Копирует выделенный текст.
Выделяет весь текст RichTextLabel.
Представляет размер перечисления MenuItems.
enum MetaUnderline: 🔗
MetaUnderline META_UNDERLINE_NEVER = 0
Метатег не отображает подчеркивание, даже если meta_underlined имеет значение true.
MetaUnderline META_UNDERLINE_ALWAYS = 1
Если meta_underlined имеет значение true, метатег всегда отображает подчеркивание.
MetaUnderline META_UNDERLINE_ON_HOVER = 2
Если meta_underlined имеет значение true, метатег отображает подчеркивание при наведении на него курсора мыши.
flags ImageUpdateMask: 🔗
ImageUpdateMask UPDATE_TEXTURE = 1
Если этот бит установлен, update_image() изменяет текстуру изображения.
ImageUpdateMask UPDATE_SIZE = 2
Если этот бит установлен, update_image() изменяет размер изображения.
ImageUpdateMask UPDATE_COLOR = 4
Если этот бит установлен, update_image() изменяет цвет изображения.
ImageUpdateMask UPDATE_ALIGNMENT = 8
Если этот бит установлен, update_image() изменяет выравнивание изображения по строке.
ImageUpdateMask UPDATE_REGION = 16
Если этот бит установлен, update_image() изменяет область текстуры изображения.
ImageUpdateMask UPDATE_PAD = 32
Если этот бит установлен, update_image() изменяет заполнение изображения.
ImageUpdateMask UPDATE_TOOLTIP = 64
Если этот бит установлен, update_image() изменяет всплывающую подсказку изображения.
ImageUpdateMask UPDATE_WIDTH_IN_PERCENT = 128
Если этот бит установлен, update_image() изменяет ширину изображения с/на проценты.
Описания свойств
AutowrapMode autowrap_mode = 3 🔗
void set_autowrap_mode(value: AutowrapMode)
AutowrapMode get_autowrap_mode()
Если задано значение, отличное от TextServer.AUTOWRAP_OFF, текст будет заключен внутри ограничивающего прямоугольника узла.
BitField[LineBreakFlag] autowrap_trim_flags = 192 🔗
void set_autowrap_trim_flags(value: BitField[LineBreakFlag])
BitField[LineBreakFlag] get_autowrap_trim_flags()
Флаги обрезки пространства автопереноса. См. TextServer.BREAK_TRIM_START_EDGE_SPACES и TextServer.BREAK_TRIM_END_EDGE_SPACES для получения дополнительной информации.
Если true, метка использует форматирование BBCode.
Примечание: Это влияет только на содержимое text, а не на стек тегов.
Если true, щелчок правой кнопкой мыши отображает контекстное меню.
Установленные в данный момент пользовательские эффекты. Это массив RichTextEffect.
Чтобы добавить пользовательский эффект, удобнее использовать install_effect().
bool deselect_on_focus_loss_enabled = true 🔗
Если true, выделенный текст будет снят с выделения при потере фокуса.
bool drag_and_drop_selection_enabled = true 🔗
Если true, разрешено перетаскивание выделенного текста.
Если true, минимальный размер метки будет автоматически обновлен в соответствии с ее содержимым, соответствуя поведению Label.
Если true, метка подчеркивает теги подсказок, такие как [hint=description]{text}[/hint].
HorizontalAlignment horizontal_alignment = 0 🔗
void set_horizontal_alignment(value: HorizontalAlignment)
HorizontalAlignment get_horizontal_alignment()
Управляет горизонтальным выравниванием текста. Поддерживает выравнивание по левому краю, по центру, по правому краю и заполнение (также известное как выравнивание по ширине).
BitField[JustificationFlag] justification_flags = 163 🔗
void set_justification_flags(value: BitField[JustificationFlag])
BitField[JustificationFlag] get_justification_flags()
Правила выравнивания заливки линий.
Код языка, используемый алгоритмами переноса строк и форматирования текста. Если оставить поле пустым, будет использоваться текущая локаль.
Если true, метка подчеркивает метатеги, такие как [url]{text}[/url]. Эти теги могут вызывать функцию при щелчке, если meta_clicked подключен к функции.
int progress_bar_delay = 1000 🔗
Задержка, после которой отображается индикатор выполнения загрузки, в миллисекундах. Установите -1, чтобы полностью отключить индикатор выполнения.
Примечание: Индикатор выполнения отображается только если включен threaded.
Если true, полоса прокрутки видна. Установка этого значения в false не блокирует прокрутку полностью. См. scroll_to_line().
bool scroll_following = false 🔗
Если true, окно прокручивается вниз для автоматического отображения нового содержимого.
bool scroll_following_visible_characters = false 🔗
void set_scroll_follow_visible_characters(value: bool)
bool is_scroll_following_visible_characters()
Если true, окно прокручивается для отображения последней видимой строки при изменении visible_characters или visible_ratio.
bool selection_enabled = false 🔗
Еслиtrue, метка позволяет выделить текст.
bool shortcut_keys_enabled = true 🔗
Если true, сочетания клавиш для пунктов контекстного меню включены, даже если контекстное меню отключено.
StructuredTextParser structured_text_bidi_override = 0 🔗
void set_structured_text_bidi_override(value: StructuredTextParser)
StructuredTextParser get_structured_text_bidi_override()
Установите переопределение алгоритма BiDi для структурированного текста.
Array structured_text_bidi_override_options = [] 🔗
void set_structured_text_bidi_override_options(value: Array)
Array get_structured_text_bidi_override_options()
Установите дополнительные параметры для переопределения BiDi.
Количество пробелов, связанных с длиной одной табуляции. Не влияет на \t в текстовых тегах, только на теги отступов.
PackedFloat32Array tab_stops = PackedFloat32Array() 🔗
void set_tab_stops(value: PackedFloat32Array)
PackedFloat32Array get_tab_stops()
Выравнивает текст по указанным позициям табуляции.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedFloat32Array for more details.
Текст label в формате BBCode. Не отражает ручные изменения внутреннего стека тегов. Стирает изменения, внесенные другими методами при редактировании.
Примечание: Если bbcode_enabled имеет значение true, не рекомендуется использовать оператор += с text (например, text += "some string"), так как он заменяет весь текст и может вызвать замедление. Он также сотрет весь BBCode, добавленный в стек с помощью методов push_*. Вместо этого используйте append_text() для добавления текста, если только вам не нужно закрыть тег, открытый в более раннем вызове метода.
TextDirection text_direction = 0 🔗
void set_text_direction(value: TextDirection)
TextDirection get_text_direction()
Направление написания базового текста.
Если true, обработка текста выполняется в фоновом потоке.
VerticalAlignment vertical_alignment = 0 🔗
void set_vertical_alignment(value: VerticalAlignment)
VerticalAlignment get_vertical_alignment()
Управляет вертикальным выравниванием текста. Поддерживает верх, центр, низ и заполнение.
Количество отображаемых символов. Если задано значение -1, отображаются все символы. Это может быть полезно при анимации текста, появляющегося в диалоговом окне.
Примечание: Установка этого свойства соответствующим образом обновляет visible_ratio.
Примечание: Символы считаются кодовыми точками Unicode. Одна видимая графема может содержать несколько кодовых точек (например, некоторые эмодзи используют три кодовые точки). Одна кодовая точка может содержать два символа UTF-16, которые используются в строках C#.
VisibleCharactersBehavior visible_characters_behavior = 0 🔗
void set_visible_characters_behavior(value: VisibleCharactersBehavior)
VisibleCharactersBehavior get_visible_characters_behavior()
Поведение обрезки, когда задано visible_characters или visible_ratio.
Доля символов для отображения относительно общего числа символов (см. get_total_character_count()). Если установлено значение 1.0, отображаются все символы. Если установлено значение 0.5, отображается только половина символов. Это может быть полезно при анимации текста, появляющегося в диалоговом окне.
Примечание: Установка этого свойства соответствующим образом обновляет visible_characters.
Описания метода
void add_hr(width: int = 90, height: int = 2, color: Color = Color(1, 1, 1, 1), alignment: HorizontalAlignment = 1, width_in_percent: bool = true, height_in_percent: bool = false) 🔗
Добавляет горизонтальную линию, которую можно использовать для разделения контента.
Если задан width_in_percent, width значения представляют собой проценты от ширины элемента управления, а не пиксели.
Если задан height_in_percent, [param height значения представляют собой проценты от ширины элемента управления, а не пиксели.
void add_image(image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), key: Variant = null, pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false, alt_text: String = "") 🔗
Добавляет открывающий и закрывающий теги изображения в стек тегов, при необходимости предоставляя параметры width и height для изменения размера изображения, color для изменения оттенка изображения и region для использования только частей изображения.
Если width или height равны 0, размер изображения будет скорректирован с сохранением исходного соотношения сторон.
Если width и height не заданы, а region задан, будет использоваться прямоугольник области.
key — необязательный идентификатор, который можно использовать для изменения изображения с помощью update_image().
Если задан параметр pad, а изображение меньше размера, указанного параметрами width и height, вместо масштабирования добавляется отступ изображения для соответствия размеру.
Если задан параметр width_in_percent, значения параметра width представляют собой проценты от ширины элемента управления, а не пиксели.
Если задан параметр height_in_percent, значения параметра height представляют собой проценты от ширины элемента управления, а не пиксели.
alt_text используется в качестве описания изображения для вспомогательных приложений.
Добавляет необработанный текст, не прошедший анализ с помощью BBCode, в стек тегов.
void append_text(bbcode: String) 🔗
Анализирует bbcode и добавляет теги в стек тегов по мере необходимости.
Примечание: Используя этот метод, вы не можете закрыть тег, который был открыт в предыдущем вызове append_text(). Это делается для повышения производительности, особенно при обновлении больших RichTextLabels, поскольку перестроение всего BBCode каждый раз будет медленнее. Если вам абсолютно необходимо закрыть тег в будущем вызове метода, добавьте text вместо использования append_text().
void clear() 🔗
Очищает стек тегов, в результате чего метка ничего не отображает.
Примечание: Этот метод не влияет на text, и его содержимое снова отобразится, если метка будет перерисована. Однако установка text на пустую String также очищает стек.
void deselect() 🔗
Очищает текущий выбор.
int get_character_line(character: int) 🔗
Возвращает номер строки указанной позиции символа. Номера строк и символов индексируются нулем.
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.
int get_character_paragraph(character: int) 🔗
Возвращает номер абзаца указанной позиции символа. Номера абзацев и символов индексируются нулем.
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.
int get_content_height() const 🔗
Возвращает высоту содержимого.
Примечание: Этот метод всегда возвращает полный размер содержимого и не зависит от visible_ratio и visible_characters. Чтобы получить размер видимого содержимого, используйте get_visible_content_rect().
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
int get_content_width() const 🔗
Возвращает ширину содержимого.
Примечание: Этот метод всегда возвращает полный размер содержимого и не зависит от visible_ratio и visible_characters. Чтобы получить размер видимого содержимого, используйте get_visible_content_rect().
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
Возвращает общее количество строк в тексте. Перенесённый текст считается за несколько строк.
Примечание: Если включено threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
int get_line_height(line: int) const 🔗
Возвращает высоту строки, найденной по указанному индексу.
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
float get_line_offset(line: int) 🔗
Возвращает вертикальное смещение строки, найденной по указанному индексу.
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.
Vector2i get_line_range(line: int) 🔗
Возвращает индексы первого и последнего видимых символов для заданной line в виде Vector2i.
Примечание: Если visible_characters_behavior установлен в TextServer.VC_CHARS_BEFORE_SHAPING, учитываются только видимые перенесенные строки.
Примечание: Если threaded включен, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.
int get_line_width(line: int) const 🔗
Возвращает ширину строки, найденной по указанному индексу.
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
Возвращает PopupMenu этого RichTextLabel. По умолчанию это меню отображается при щелчке правой кнопкой мыши по RichTextLabel.
Вы можете добавлять пользовательские пункты меню или удалять стандартные. Убедитесь, что ваши идентификаторы не конфликтуют со стандартными (см. MenuItems). Например:
func _ready():
var menu = get_menu()
# Удалить пункт «Выбрать все» ("Select All").
menu.remove_item(MENU_SELECT_ALL)
# Добавить пользовательские элементы.
menu.add_separator()
menu.add_item("Duplicate Text", MENU_MAX + 1)
# Подключить обратный звонок.
menu.id_pressed.connect(_on_item_pressed)
func _on_item_pressed(id):
if id == MENU_MAX + 1:
add_text("\n" + get_parsed_text())
public override void _Ready()
{
var menu = GetMenu();
// Удалить пункт «Выбрать все» ("Select All").
menu.RemoveItem(RichTextLabel.MenuItems.SelectAll);
// Добавить пользовательские элементы.
menu.AddSeparator();
menu.AddItem("Duplicate Text", RichTextLabel.MenuItems.Max + 1);
// Подключить обратный звонок.
menu.IdPressed += OnItemPressed;
}
public void OnItemPressed(int id)
{
if (id == TextEdit.MenuItems.Max + 1)
{
AddText("\n" + GetParsedText());
}
}
Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите скрыть его или любого из его дочерних элементов, используйте их свойство Window.visible.
int get_paragraph_count() const 🔗
Возвращает общее количество абзацев (теги новых строк или p в текстовых тегах стека тегов). Рассматривает перенесенный текст как один абзац.
float get_paragraph_offset(paragraph: int) 🔗
Возвращает вертикальное смещение абзаца, найденного по указанному индексу.
Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.
String get_parsed_text() const 🔗
Возвращает текст без разметки BBCode.
String get_selected_text() const 🔗
Возвращает текущий выделенный текст. Не включает BBCodes.
int get_selection_from() const 🔗
Возвращает текущий индекс первого символа выделения, если выделение активно, в противном случае -1. Не включает BBCodes.
float get_selection_line_offset() const 🔗
Возвращает смещение вертикальной линии текущего выделения, если выделение активно, в противном случае -1.0.
int get_selection_to() const 🔗
Возвращает последний индекс символа текущего выделения, если выделение активно, в противном случае -1. Не включает BBCodes.
int get_total_character_count() const 🔗
Возвращает общее количество символов из текстовых тегов. Не включает BBCodes.
VScrollBar get_v_scroll_bar() 🔗
Возвращает вертикальную полосу прокрутки.
Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите скрыть его или любой из его дочерних элементов, используйте их свойство CanvasItem.visible.
Rect2i get_visible_content_rect() const 🔗
Возвращает ограничивающий прямоугольник видимого содержимого.
Примечание: Этот метод возвращает правильное значение только после рисования метки.
extends RichTextLabel
@export var background_panel: Panel
func _ready():
await draw
background_panel.position = get_visible_content_rect().position
background_panel.size = get_visible_content_rect().size
public partial class TestLabel : RichTextLabel
{
[Export]
public Panel BackgroundPanel { get; set; }
public override async void _Ready()
{
await ToSignal(this, Control.SignalName.Draw);
BackgroundGPanel.Position = GetVisibleContentRect().Position;
BackgroundPanel.Size = GetVisibleContentRect().Size;
}
}
int get_visible_line_count() const 🔗
Возвращает количество видимых строк.
Примечание: Этот метод возвращает правильное значение только после отрисовки метки.
Примечание: Если включен параметр threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
int get_visible_paragraph_count() const 🔗
Возвращает количество видимых абзацев. Абзац считается видимым, если видна хотя бы одна его строка.
Примечание: Этот метод возвращает корректное значение только после отрисовки метки.
Примечание: Если включен параметр threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.
void install_effect(effect: Variant) 🔗
Устанавливает пользовательский эффект. Это также можно сделать в Инспекторе через свойство custom_effects. effect должен быть допустимым RichTextEffect.
Пример: Со следующим скриптом, расширяющим RichTextEffect:
# effect.gd
class_name MyCustomEffect
extends RichTextEffect
var bbcode = "my_custom_effect"
# ...
Вышеуказанный эффект можно установить в RichTextLabel из скрипта:
# rich_text_label.gd
extends RichTextLabel
func _ready():
install_effect(MyCustomEffect.new())
# Альтернативный вариант, если не используется `class_name` в скрипте, расширяющем RichTextEffect:
install_effect(preload("res://effect.gd").new())
bool invalidate_paragraph(paragraph: int) 🔗
Делает недействительным paragraph и все последующие кэши абзацев.
Делает недействительным paragraph и все последующие абзацы кэша. Если threaded включен, возвращает true, если фоновый поток завершил обработку текста, в противном случае всегда возвращает true.
Возвращает, видимо ли меню. Используйте это вместо get_menu().visible для повышения производительности (чтобы избежать создания меню).
Устарело: Use is_finished() instead.
Делает недействительным paragraph и все последующие абзацы кэша. Если threaded включен, возвращает true, если фоновый поток завершил обработку текста, в противном случае всегда возвращает true.
Выполняет заданное действие, определенное в перечислении MenuItems.
void newline() 🔗
Добавляет тег новой строки в стек тегов.
void parse_bbcode(bbcode: String) 🔗
Версия назначения append_text(). Очищает стек тегов и вставляет новый контент.
Dictionary parse_expressions_for_values(expressions: PackedStringArray) 🔗
Анализирует параметр BBCode expressions в словарь.
void pop() 🔗
Завершает текущий тег. Используйте после методов push_*, чтобы вручную закрыть BBCodes. Не требуется следовать за методами add_*.
void pop_all() 🔗
Завершает все теги, открытые методами push_*.
void pop_context() 🔗
Завершает теги, открытые после последнего вызова push_context() (включая маркер контекста), или все теги, если в стеке нет маркера контекста.
void push_bgcolor(bgcolor: Color) 🔗
Добавляет тег [bgcolor] в стек тегов.
Примечание: По умолчанию к фоновому цвету применен отступ, который контролируется с помощью text_highlight_h_padding и text_highlight_v_padding. Это может привести к перекрывающимся выделениям, если фоновые цвета размещены на соседних строках/столбцах, поэтому рассмотрите возможность установки этих элементов темы на 0, если вы хотите этого избежать.
void push_bold() 🔗
Добавляет тег [bgcolor] в стек тегов.
void push_bold_italics() 🔗
Добавляет тег [font] с полужирным курсивным шрифтом в стек тегов.
void push_cell() 🔗
Добавляет тег [cell] в стек тегов. Должен находиться внутри тега [table]. Подробности см. в push_table(). Используйте set_table_column_expand() для установки коэффициента расширения столбца, set_cell_border_color() для установки границы ячейки, set_cell_row_background_color() для установки фона ячейки, set_cell_size_override() для переопределения размера ячейки и set_cell_padding() для установки отступа.
void push_color(color: Color) 🔗
Добавляет тег [color] в стек тегов.
void push_context() 🔗
Добавляет маркер контекста в стек тегов. См. pop_context().
void push_customfx(effect: RichTextEffect, env: Dictionary) 🔗
Добавляет пользовательский тег эффекта в стек тегов. Эффект не обязательно должен быть в custom_effects. Окружение напрямую передается эффекту.
void push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2 = Rect2(0, 0, 0, 0), color: Color = Color(1, 1, 1, 1), outline_size: int = 0, outline_color: Color = Color(0, 0, 0, 0)) 🔗
Добавляет тег [dropcap] в стек тегов. Буквица (опущенная прописная буква) — декоративный элемент в начале абзаца, превышающий по размеру остальной текст.
void push_fgcolor(fgcolor: Color) 🔗
Добавляет тег [fgcolor] в стек тегов.
Примечание: Цвет переднего плана имеет отступ по умолчанию, который контролируется с помощью text_highlight_h_padding и text_highlight_v_padding. Это может привести к перекрывающимся выделениям, если цвета переднего плана размещены на соседних строках/столбцах, поэтому рассмотрите возможность установки этих элементов темы на 0, если вы хотите этого избежать.
void push_font(font: Font, font_size: int = 0) 🔗
Добавляет тег [font] в стек тегов. Переопределяет шрифты по умолчанию на время его действия.
Передача 0 в font_size будет использовать существующий размер шрифта по умолчанию.
void push_font_size(font_size: int) 🔗
Добавляет тег [font_size] в стек тегов. Переопределяет размер шрифта по умолчанию на время его действия.
void push_hint(description: String) 🔗
Добавляет тег [hint] в стек тегов. То же, что и BBCode [hint=something]{text}[/hint].
void push_indent(level: int) 🔗
Добавляет тег [indent] в стек тегов. Умножает level на текущий tab_size для определения новой длины поля.
void push_italics() 🔗
Добавляет тег [font] с курсивным шрифтом в стек тегов. Это то же самое, что добавить тег [i], если в данный момент он не находится в теге [b].
void push_language(language: String) 🔗
Добавляет языковой код, используемый для алгоритма формирования текста и функций шрифтов Open-Type.
void push_list(level: int, type: ListType, capitalize: bool, bullet: String = "•") 🔗
Добавляет тег [ol] или [ul] в стек тегов. Умножает level на текущий tab_size для определения новой длины поля.
void push_meta(data: Variant, underline_mode: MetaUnderline = 1, tooltip: String = "") 🔗
Добавляет метатег (meta tag) в стек тегов. Аналогично BBCode [url=something]{text}[/url], но поддерживает не-String типы метаданных.
Если meta_underlined равно true, метатеги отображают подчеркивание. Это поведение можно настроить с помощью underline_mode.
Примечание: Метатеги по умолчанию ничего не делают при щелчке. Чтобы назначить поведение при щелчке, подключите meta_clicked к функции, которая вызывается при щелчке по метатегу.
void push_mono() 🔗
Добавляет тег [font] с моноширинным шрифтом в стек тегов.
void push_normal() 🔗
Добавляет тег [font] с обычным шрифтом в стек тегов.
void push_outline_color(color: Color) 🔗
Добавляет тег [outline_color] в стек тегов. Добавляет контур текста на его длительность.
void push_outline_size(outline_size: int) 🔗
Добавляет тег [outline_size] в стек тегов. Переопределяет размер контура текста по умолчанию на его длительность.
void push_paragraph(alignment: HorizontalAlignment, base_direction: TextDirection = 0, language: String = "", st_parser: StructuredTextParser = 0, justification_flags: BitField[JustificationFlag] = 163, tab_stops: PackedFloat32Array = PackedFloat32Array()) 🔗
Добавляет тег [p] в стек тегов.
void push_strikethrough(color: Color = Color(0, 0, 0, 0)) 🔗
Adds a [s] tag to the tag stack. If color's alpha value is 0.0, the current font's color with its alpha multiplied by strikethrough_alpha is used.
void push_table(columns: int, inline_align: InlineAlignment = 0, align_to_row: int = -1, name: String = "") 🔗
Добавляет тег [table=columns,inline_align] в стек тегов. Используйте set_table_column_expand() для установки коэффициента расширения столбцов. Используйте push_cell() для добавления ячеек. name используется в качестве имени таблицы для вспомогательных приложений.
void push_underline(color: Color = Color(0, 0, 0, 0)) 🔗
Adds a [u] tag to the tag stack. If color's alpha value is 0.0, the current font's color with its alpha multiplied by underline_alpha is used.
void reload_effects() 🔗
Перезагружает пользовательские эффекты. Полезно, когда custom_effects изменяется вручную.
bool remove_paragraph(paragraph: int, no_invalidate: bool = false) 🔗
Удаляет абзац содержимого из метки. Возвращает true, если абзац существует.
Аргумент paragraph — это индекс абзаца для удаления, он может принимать значения в интервале [0, get_paragraph_count() - 1].
Если no_invalidate установлен в true, кэш для последующих абзацев не становится недействительным. Используйте его для более быстрых обновлений, если удаленный абзац полностью автономен (не имеет незакрытых тегов) или этот вызов является частью сложной операции редактирования и invalidate_paragraph() будет вызван в конце операции.
void scroll_to_line(line: int) 🔗
Прокручивает верхнюю строку окна для соответствия line.
void scroll_to_paragraph(paragraph: int) 🔗
Прокручивает верхнюю строку окна до соответствия первой строке paragraph.
void scroll_to_selection() 🔗
Прокручивает к началу текущего выделения.
void select_all() 🔗
Выделить весь текст.
Если selection_enabled равно false, выделение не произойдет.
void set_cell_border_color(color: Color) 🔗
Устанавливает цвет границы ячейки таблицы.
void set_cell_padding(padding: Rect2) 🔗
Устанавливает внутренние отступы ячейки таблицы.
void set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color) 🔗
Задает цвет ячейки таблицы. Можно указать отдельные цвета для чередующихся строк.
void set_cell_size_override(min_size: Vector2, max_size: Vector2) 🔗
Устанавливает минимальные и максимальные значения размера ячейки таблицы.
void set_table_column_expand(column: int, expand: bool, ratio: int = 1, shrink: bool = true) 🔗
Редактирует параметры расширения выбранного столбца. Если expand имеет значение true, столбец расширяется пропорционально своему коэффициенту расширения по сравнению с коэффициентами других столбцов.
Например, 2 столбца с коэффициентами 3 и 4 плюс 70 пикселей доступной ширины расширятся на 30 и 40 пикселей соответственно.
Если expand имеет значение false, столбец не будет вносить вклад в общий коэффициент.
void set_table_column_name(column: int, name: String) 🔗
Задает имя столбца таблицы для вспомогательных приложений.
void update_image(key: Variant, mask: BitField[ImageUpdateMask], image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false) 🔗
Обновляет существующие изображения с ключом key. Обновляются только свойства, указанные битами mask. См. add_image().
Описания свойств темы
Color default_color = Color(1, 1, 1, 1) 🔗
Цвет текста по умолчанию.
Color font_outline_color = Color(0, 0, 0, 1) 🔗
Оттенок контура текста по умолчанию.
Color font_selected_color = Color(0, 0, 0, 0) 🔗
Цвет выделенного текста, используемый, когда selection_enabled равен true. Если равен Color(0, 0, 0, 0), он будет проигнорирован.
Color font_shadow_color = Color(0, 0, 0, 0) 🔗
Цвет тени шрифта.
Color selection_color = Color(0.1, 0.1, 1, 0.8) 🔗
Цвет поля выбора.
Color table_border = Color(0, 0, 0, 0) 🔗
Цвет границы ячейки по умолчанию.
Color table_even_row_bg = Color(0, 0, 0, 0) 🔗
Цвет фона по умолчанию для четных строк.
Color table_odd_row_bg = Color(0, 0, 0, 0) 🔗
Цвет фона по умолчанию для нечетных строк.
Дополнительный вертикальный интервал между строками (в пикселях), интервал добавляется к спуску строки. Это значение может быть отрицательным.
Размер контура текста.
Примечание: При использовании шрифта с включенным FontFile.multichannel_signed_distance_field его FontFile.msdf_pixel_range должен быть установлен как минимум в дважды значения outline_size, чтобы контур выглядел правильно. В противном случае контур может оказаться обрезанным раньше, чем предполагалось.
int paragraph_separation = 0 🔗
Дополнительный вертикальный интервал между абзацами (в пикселях). Интервал добавляется после последней строки. Это значение может быть отрицательным.
Горизонтальное смещение тени шрифта.
Вертикальное смещение тени шрифта.
Размер контура тени.
int strikethrough_alpha = 50 🔗
Прозрачность цвета зачеркивания по умолчанию (в процентах). Для зачеркивания с пользовательским цветом этот элемент темы используется только в том случае, если альфа пользовательского цвета равна 0.0 (полностью прозрачный).
Горизонтальное разделение элементов в таблице.
Вертикальное разделение элементов в таблице.
int text_highlight_h_padding = 3 🔗
Горизонтальный отступ вокруг полей, нарисованных тегами [fgcolor] и [bgcolor]. Это не влияет на внешний вид выделения текста. Чтобы избежать риска перекрытия соседних выделений, установите это значение на 0, чтобы отключить отступ.
int text_highlight_v_padding = 3 🔗
Вертикальный отступ вокруг полей, нарисованных тегами [fgcolor] и [bgcolor]. Это не влияет на внешний вид выделения текста. Чтобы избежать риска перекрытия соседних выделений, установите это значение на 0, чтобы отключить отступ.
Прозрачность цвета подчеркивания по умолчанию (в процентах). Для подчеркиваний с пользовательским цветом этот элемент темы используется только в том случае, если альфа пользовательского цвета равна 0.0 (полностью прозрачный).
Шрифт, используемый для жирного текста.
Шрифт, используемый для жирного курсивного текста.
Шрифт, используемый для курсивного текста.
Шрифт, используемый для моноширинного текста.
Шрифт текста по умолчанию.
Размер шрифта, используемый для жирного текста.
Размер шрифта, используемый для жирного курсивного текста.
Размер шрифта, используемый для курсивного текста.
Размер шрифта, используемый для моноширинного текста.
Размер шрифта текста по умолчанию.
Текстура горизонтальной линейки.
Фон, используемый при фокусировке RichTextLabel. Фокус focus StyleBox отображается над базовым StyleBox, поэтому следует использовать частично прозрачный StyleBox, чтобы базовый StyleBox оставался видимым. Для этой цели хорошо подходит StyleBox, представляющий контур или подчеркивание. Чтобы отключить визуальный эффект фокуса, назначьте ресурс StyleBoxEmpty. Обратите внимание, что отключение визуального эффекта фокуса навредит удобству использования навигации с помощью клавиатуры/контроллера, поэтому это не рекомендуется по соображениям доступности.
Обычный фон для RichTextLabel.