TextEdit¶
派生: CodeEdit
多行文本编辑器。
描述¶
多行文本编辑器。它还具有有限的编辑代码功能,例如语法高亮支持。有关编辑代码的更高级工具,请参阅CodeEdit。
注意:大多数视口、插入符号和编辑方法包含caret_multiple支持的caret_index参数。参数应为以下之一:-1表示所有插入符号,0表示主插入符号,或大于0表示辅助插入符号,按创建顺序排列。
注意:按住Alt时,垂直滚轮的滚动速度将是正常速度的5倍。这也适用于i3D脚本编辑器。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
clip_contents |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
focus_mode |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
mouse_default_cursor_shape |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
void |
_backspace(caret_index: int) virtual |
void |
|
void |
|
void |
_handle_unicode_input(unicode_char: int, caret_index: int) virtual |
void |
|
void |
_paste_primary_clipboard(caret_index: int) virtual |
void |
add_caret_at_carets(below: bool) |
void |
add_gutter(at: int = -1) |
void |
|
void |
adjust_carets_after_edit(caret: int, from_line: int, from_col: int, to_line: int, to_col: int) |
void |
adjust_viewport_to_caret(caret_index: int = 0) |
void |
|
void |
|
void |
|
void |
|
void |
|
void |
center_viewport_to_caret(caret_index: int = 0) |
void |
clear() |
void |
|
void |
collapse_carets(from_line: int, from_column: int, to_line: int, to_column: int, inclusive: bool = false) |
void |
|
void |
|
void |
delete_selection(caret_index: int = -1) |
void |
|
void |
|
void |
|
void |
|
get_caret_column(caret_index: int = 0) const |
|
get_caret_count() const |
|
get_caret_draw_pos(caret_index: int = 0) const |
|
get_caret_line(caret_index: int = 0) const |
|
get_caret_wrap_index(caret_index: int = 0) const |
|
get_first_non_whitespace_column(line: int) const |
|
get_first_visible_line() const |
|
get_gutter_count() const |
|
get_gutter_name(gutter: int) const |
|
get_gutter_type(gutter: int) const |
|
get_gutter_width(gutter: int) const |
|
get_h_scroll_bar() const |
|
get_indent_level(line: int) const |
|
get_last_full_visible_line() const |
|
get_last_unhidden_line() const |
|
get_line_background_color(line: int) const |
|
get_line_column_at_pos(position: Vector2i, clamp_line: bool = true, clamp_column: bool = true) const |
|
get_line_count() const |
|
get_line_gutter_icon(line: int, gutter: int) const |
|
get_line_gutter_item_color(line: int, gutter: int) const |
|
get_line_gutter_metadata(line: int, gutter: int) const |
|
get_line_gutter_text(line: int, gutter: int) const |
|
get_line_height() const |
|
get_line_ranges_from_carets(only_selections: bool = false, merge_adjacent: bool = true) const |
|
get_line_width(line: int, wrap_index: int = -1) const |
|
get_line_with_ime(line: int) const |
|
get_line_wrap_count(line: int) const |
|
get_line_wrap_index_at_column(line: int, column: int) const |
|
get_line_wrapped_text(line: int) const |
|
get_local_mouse_pos() const |
|
get_menu() const |
|
get_minimap_line_at_pos(position: Vector2i) const |
|
get_minimap_visible_lines() const |
|
get_next_visible_line_index_offset_from(line: int, wrap_index: int, visible_amount: int) const |
|
get_next_visible_line_offset_from(line: int, visible_amount: int) const |
|
get_pos_at_line_column(line: int, column: int) const |
|
get_rect_at_line_column(line: int, column: int) const |
|
get_saved_version() const |
|
get_scroll_pos_for_line(line: int, wrap_index: int = 0) const |
|
get_selected_text(caret_index: int = -1) |
|
get_selection_at_line_column(line: int, column: int, include_edges: bool = true, only_selections: bool = true) const |
|
get_selection_column(caret_index: int = 0) const |
|
get_selection_from_column(caret_index: int = 0) const |
|
get_selection_from_line(caret_index: int = 0) const |
|
get_selection_line(caret_index: int = 0) const |
|
get_selection_mode() const |
|
get_selection_origin_column(caret_index: int = 0) const |
|
get_selection_origin_line(caret_index: int = 0) const |
|
get_selection_to_column(caret_index: int = 0) const |
|
get_selection_to_line(caret_index: int = 0) const |
|
get_sorted_carets(include_ignored_carets: bool = false) const |
|
get_tab_size() const |
|
get_total_gutter_width() const |
|
get_total_visible_line_count() const |
|
get_v_scroll_bar() const |
|
get_version() const |
|
get_visible_line_count() const |
|
get_visible_line_count_in_range(from_line: int, to_line: int) const |
|
get_word_at_pos(position: Vector2) const |
|
get_word_under_caret(caret_index: int = -1) const |
|
has_ime_text() const |
|
has_redo() const |
|
has_selection(caret_index: int = -1) const |
|
has_undo() const |
|
void |
insert_line_at(line: int, text: String) |
void |
insert_text(text: String, line: int, column: int, before_selection_begin: bool = true, before_selection_end: bool = false) |
void |
insert_text_at_caret(text: String, caret_index: int = -1) |
is_caret_after_selection_origin(caret_index: int = 0) const |
|
is_caret_visible(caret_index: int = 0) const |
|
is_dragging_cursor() const |
|
is_gutter_clickable(gutter: int) const |
|
is_gutter_drawn(gutter: int) const |
|
is_gutter_overwritable(gutter: int) const |
|
is_in_mulitcaret_edit() const |
|
is_line_gutter_clickable(line: int, gutter: int) const |
|
is_line_wrapped(line: int) const |
|
is_menu_visible() const |
|
is_mouse_over_selection(edges: bool, caret_index: int = -1) const |
|
is_overtype_mode_enabled() const |
|
void |
menu_option(option: int) |
void |
merge_gutters(from_line: int, to_line: int) |
void |
|
multicaret_edit_ignore_caret(caret_index: int) const |
|
void |
|
void |
paste_primary_clipboard(caret_index: int = -1) |
void |
redo() |
void |
remove_caret(caret: int) |
void |
remove_gutter(gutter: int) |
void |
remove_line_at(line: int, move_carets_down: bool = true) |
void |
|
void |
remove_text(from_line: int, from_column: int, to_line: int, to_column: int) |
search(text: String, flags: int, from_line: int, from_column: int) const |
|
void |
select(origin_line: int, origin_column: int, caret_line: int, caret_column: int, caret_index: int = 0) |
void |
|
void |
select_word_under_caret(caret_index: int = -1) |
void |
set_caret_column(column: int, adjust_viewport: bool = true, caret_index: int = 0) |
void |
set_caret_line(line: int, adjust_viewport: bool = true, can_be_hidden: bool = true, wrap_index: int = 0, caret_index: int = 0) |
void |
set_gutter_clickable(gutter: int, clickable: bool) |
void |
set_gutter_custom_draw(column: int, draw_callback: Callable) |
void |
set_gutter_draw(gutter: int, draw: bool) |
void |
set_gutter_name(gutter: int, name: String) |
void |
set_gutter_overwritable(gutter: int, overwritable: bool) |
void |
set_gutter_type(gutter: int, type: GutterType) |
void |
set_gutter_width(gutter: int, width: int) |
void |
|
void |
set_line_as_center_visible(line: int, wrap_index: int = 0) |
void |
set_line_as_first_visible(line: int, wrap_index: int = 0) |
void |
set_line_as_last_visible(line: int, wrap_index: int = 0) |
void |
set_line_background_color(line: int, color: Color) |
void |
set_line_gutter_clickable(line: int, gutter: int, clickable: bool) |
void |
set_line_gutter_icon(line: int, gutter: int, icon: Texture2D) |
void |
set_line_gutter_item_color(line: int, gutter: int, color: Color) |
void |
set_line_gutter_metadata(line: int, gutter: int, metadata: Variant) |
void |
set_line_gutter_text(line: int, gutter: int, text: String) |
void |
set_overtype_mode_enabled(enabled: bool) |
void |
set_search_flags(flags: int) |
void |
set_search_text(search_text: String) |
void |
set_selection_mode(mode: SelectionMode) |
void |
set_selection_origin_column(column: int, caret_index: int = 0) |
void |
set_selection_origin_line(line: int, can_be_hidden: bool = true, wrap_index: int = -1, caret_index: int = 0) |
void |
set_tab_size(size: int) |
void |
set_tooltip_request_func(callback: Callable) |
void |
|
void |
start_action(action: EditAction) |
void |
swap_lines(from_line: int, to_line: int) |
void |
|
void |
undo() |
主题属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
信号¶
caret_changed() 🔗
当任何插入符号改变位置时发出。
gutter_added() 🔗
添加排水沟时发出。
gutter_clicked(line: int, gutter: int) 🔗
单击排水沟时发出。
gutter_removed() 🔗
清除排水沟时排放。
lines_edited_from(from_line: int, to_line: int) 🔗
文本更改时立即发出。
添加文本时from_line将小于to_line。删除时to_line将小于from_line。
text_changed() 🔗
文本更改时发出。
text_set() 🔗
枚举¶
剪切(复制并清除)选定的文本。
复制选定的文本。
将剪贴板文本粘贴到选定文本上(或光标位置)。
擦除整个TextEdit文本。
选择整个TextEdit文本。
撤消上一个操作。
重做上一个操作。
“文本写作方向”子菜单的ID。
将文本方向设置为继承。
将文本方向设置为自动。
将文本方向设置为从左到右。
将文本方向设置为从右到左。
切换控制字符显示。
“插入控制字符”子菜单的ID。
插入从左到右的标记(LRM)字符。
插入从右到左的标记(RLM)字符。
插入从左到右嵌入(LRE)字符的开头。
插入从右到左嵌入(RLE)字符的开头。
插入从左到右覆盖(LRO)字符的开头。
插入从右到左覆盖(RLO)字符的开头。
插入弹出方向格式(PDF)字符。
插入阿拉伯字母标记(ALM)字符。
插入从左到右的隔离(LRI)字符。
插入从右到左的隔离(RLI)字符。
插入第一个强隔离(FSI)字符。
插入弹出方向隔离(PDI)字符。
插入零宽度连接器(ZWJ)字符。
插入零宽度非连接器(ZWNJ)字符。
插入单词连接器(WJ)字符。
插入软连字符(SHY)字符。
打开系统表情符号和符号选择器。
表示MenuItems枚举的大小。
enum EditAction: 🔗
EditAction ACTION_NONE = 0
没有当前的行动。
EditAction ACTION_TYPING = 1
打字动作。
EditAction ACTION_BACKSPACE = 2
向后删除操作。
EditAction ACTION_DELETE = 3
向前删除操作。
enum SearchFlags: 🔗
SearchFlags SEARCH_MATCH_CASE = 1
搜索时匹配大小写。
SearchFlags SEARCH_WHOLE_WORDS = 2
搜索时匹配整个单词。
SearchFlags SEARCH_BACKWARDS = 4
从头到尾搜索。
enum CaretType: 🔗
CaretType CARET_TYPE_LINE = 0
垂直线插入符号。
CaretType CARET_TYPE_BLOCK = 1
块插入符号。
enum SelectionMode: 🔗
SelectionMode SELECTION_MODE_NONE = 0
未选择。
SelectionMode SELECTION_MODE_SHIFT = 1
选择shift被按下。
SelectionMode SELECTION_MODE_POINTER = 2
选择单个字符,就像用户单击一样。
SelectionMode SELECTION_MODE_WORD = 3
选择整个单词,就像用户双击一样。
SelectionMode SELECTION_MODE_LINE = 4
选择整行,就像用户三次单击一样。
enum LineWrappingMode: 🔗
LineWrappingMode LINE_WRAPPING_NONE = 0
行换行被禁用。
LineWrappingMode LINE_WRAPPING_BOUNDARY = 1
换行发生在控件边界,超出了通常可见的范围。
enum GutterType: 🔗
GutterType GUTTER_TYPE_STRING = 0
当使用set_gutter_type()将gutter设置为字符串时,它用于包含通过set_line_gutter_text()方法设置的文本。
GutterType GUTTER_TYPE_ICON = 1
当使用set_gutter_type()将排水沟设置为图标时,它用于包含通过set_line_gutter_icon()方法设置的图标。
GutterType GUTTER_TYPE_CUSTOM = 2
当使用set_gutter_type()将gutter设置为自定义时,它用于包含由通过set_gutter_custom_draw()方法设置的回调方法控制的自定义视觉对象。
属性说明¶
AutowrapMode autowrap_mode = 3 🔗
void set_autowrap_mode(value: AutowrapMode)
AutowrapMode get_autowrap_mode()
如果wrap_mode设置为LINE_WRAPPING_BOUNDARY,则设置文本换行模式。要查看每个模式的行为方式,请参阅AutowrapMode。
如果true,则使插入符号闪烁。
float caret_blink_interval = 0.65 🔗
插入符号闪烁的时间间隔(以秒为单位)。
bool caret_draw_when_editable_disabled = false 🔗
void set_draw_caret_when_editable_disabled(value: bool)
bool is_drawing_caret_when_editable_disabled()
如果true,则禁用editable时插入符号将可见。
bool caret_mid_grapheme = false 🔗
允许移动插入符号,选择和删除单个复合字符组件。
注意:Backspace始终删除单个复合字符组件。
bool caret_move_on_right_click = true 🔗
如果true,则在显示上下文菜单之前右键单击鼠标位置的插入符号。
如果false,则上下文菜单忽略鼠标位置。
如果true,则允许多个插入符号。左键单击Alt会添加一个新的插入符号。请参阅add_caret()和get_caret_count()。
设置要绘制的插入符号类型。
如果true,右键单击将显示上下文菜单。
String custom_word_separators = "" 🔗
如果use_custom_word_separators为true,则应考虑作为单词分隔符的字符。应在不分隔的情况下定义字符,例如#_!。
bool deselect_on_focus_loss_enabled = true 🔗
如果true,则当焦点丢失时,所选文本将被取消选择。
bool drag_and_drop_selection_enabled = true 🔗
如果true,则允许拖放选定的文本。文本仍然可以从其他来源删除。
bool draw_control_chars = false 🔗
如果true,则显示控制字符。
如果true,则“空格”字符将具有可见表示。
如果true,则“tab”字符将具有可见表示。
如果false,则无法修改现有文本并且无法添加新文本。
如果true,则启用“表情符号和符号”菜单。
bool empty_selection_clipboard_enabled = true 🔗
如果true,则对所有带有插入符号的行执行不带选择的复制或剪切。否则,复制和剪切需要选择。
bool highlight_all_occurrences = false 🔗
如果true,则所选文本的所有出现都将突出显示。
bool highlight_current_line = false 🔗
如果true,则突出显示包含光标的行。
bool indent_wrapped_lines = false 🔗
如果true,则所有换行的缩进量与未换行的缩进量相同。
用于换行和文本整形算法的语言代码,如果留空则使用当前语言环境。
bool middle_mouse_paste_enabled = true 🔗
如果false,使用鼠标中键粘贴剪贴板将被禁用。
注意:此方法仅在Linux实现。
如果true,则会显示一个小地图,提供源代码的大纲。小地图使用固定宽度的文本大小。
小地图的宽度(以像素为单位)。
String placeholder_text = "" 🔗
TextEdit为空时显示的文本。它是而不是TextEdit的默认值(参见text)。
bool scroll_fit_content_height = false 🔗
如果true,TextEdit将禁用垂直滚动并使最小高度适合可见行数。当此属性和scroll_fit_content_width都是true时,不会显示滚动条。
bool scroll_fit_content_width = false 🔗
如果true,TextEdit将禁用水平滚动并将最小宽度适合文本中最宽的行。当此属性和scroll_fit_content_height都是true时,不会显示滚动条。
如果有水平滚动条,则确定当前水平滚动值(以像素为单位)。
bool scroll_past_end_of_file = false 🔗
允许滚动最后一行进入“虚拟”空间。
平滑地滚动文本,而不是跳转到下一个位置。
float scroll_v_scroll_speed = 80.0 🔗
使用小地图或启用scroll_smooth时设置滚动速度。
如果有垂直滚动条,这将确定行号中的当前垂直滚动值,从顶部行的0开始。
bool selecting_enabled = true 🔗
如果true,则可以选择文本。
如果false,则用户或select()或select_all()方法无法选择文本。
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覆盖设置附加选项。
SyntaxHighlighter syntax_highlighter 🔗
void set_syntax_highlighter(value: SyntaxHighlighter)
SyntaxHighlighter get_syntax_highlighter()
要使用的语法荧光笔。
注意:不应在多个TextEdit节点之间使用SyntaxHighlighter实例。
TextEdit的字符串值。
TextDirection text_direction = 0 🔗
void set_text_direction(value: TextDirection)
TextDirection get_text_direction()
基本文本写作方向。
bool use_custom_word_separators = false 🔗
如果false,使用Ctrl+左或Ctrl+右(macOS上的Cmd+左或Cmd+右)绑定将使用use_default_word_separators的行为。如果true,如果检测到custom_word_separators中的字符,它也将停止插入符号。对子词移动很有用。此行为也将应用于文本选择的行为。
bool use_default_word_separators = true 🔗
如果为 false,只有在检测到空格或标点符号时,使用 Ctrl + Left 或 Ctrl + Right(在 macOS 系统上为 Command + Left 或 Command + Right)组合键才会停止移动光标。如果为 true,当光标所在字符属于 !"#$%&'()*+,-./:;<=>?@[\]^`{|}~、Unicode 通用标点符号表或 Unicode 中日韩标点符号表中的一部分时,也会停止光标移动。这对于按子词移动很有用。这种行为也将应用于文本选择的操作中
bool virtual_keyboard_enabled = true 🔗
如果true,则在关注支持它的平台时显示本机虚拟键盘。
LineWrappingMode wrap_mode = 0 🔗
void set_line_wrapping_mode(value: LineWrappingMode)
LineWrappingMode get_line_wrapping_mode()
设置要使用的换行模式。
方法说明¶
void _backspace(caret_index: int) virtual 🔗
重写此方法以定义当用户按下退格键时会发生什么。
void _copy(caret_index: int) virtual 🔗
重写此方法以定义用户执行复制操作时会发生什么。
void _cut(caret_index: int) virtual 🔗
重写此方法以定义用户执行剪切操作时会发生什么。
void _handle_unicode_input(unicode_char: int, caret_index: int) virtual 🔗
重写此方法以定义当用户键入提供的keyunicode_char时会发生什么。
void _paste(caret_index: int) virtual 🔗
重写此方法以定义用户执行粘贴操作时会发生什么。
void _paste_primary_clipboard(caret_index: int) virtual 🔗
重写此方法以定义当用户使用鼠标中键执行粘贴操作时会发生什么。
注:此方法仅在Linux实现。
int add_caret(line: int, column: int) 🔗
在给定位置添加新的插入符号。返回新插入符号的索引,如果位置无效,则返回-1。
void add_caret_at_carets(below: bool) 🔗
在每个插入符号的上方或下方添加一个额外的插入符号。如果下面的below是true,则新的插入符号将在下方和上方添加,否则。
void add_gutter(at: int = -1) 🔗
在此TextEdit中注册一个新的排水沟。使用at具有特定的排水沟顺序。值-1将排水沟附加到右侧。
void add_selection_for_next_occurrence() 🔗
为当前选择的下一个匹配项添加选择和插入符号。如果没有活动选择,请选择插入符号下的单词。
void adjust_carets_after_edit(caret: int, from_line: int, from_col: int, to_line: int, to_col: int) 🔗
已弃用: 由于方法现在可以自行调整光标,因此不再需要。
这种方法什么也不做。
void adjust_viewport_to_caret(caret_index: int = 0) 🔗
调整视口,使插入符号可见。
void apply_ime() 🔗
将输入法编辑器(IME)中的文本应用于每个插入符号,并在IME打开时关闭它。
void backspace(caret_index: int = -1) 🔗
当用户按下退格键时调用。可以用_backspace()覆盖。
void begin_complex_operation() 🔗
开始多部分编辑。在调用end_complex_operation()之前,所有编辑都将被视为一个操作。
void begin_multicaret_edit() 🔗
开始对多个插入符号进行编辑。编辑必须使用 end_multicaret_edit() 结束。多插入符号编辑可用于在多个插入符号处编辑文本,并延迟合并插入符号,直到结束,这样插入符号的索引不会立即受到影响。begin_multicaret_edit() 和 end_multicaret_edit() 可以嵌套,合并将在最后一个 end_multicaret_edit() 处发生。
begin_complex_operation()
begin_multicaret_edit()
for i in range(get_caret_count()):
if multicaret_edit_ignore_caret(i):
continue
# Logic here.
end_multicaret_edit()
end_complex_operation()
void cancel_ime() 🔗
关闭输入法编辑器(IME)(如果它已打开)。IME中的任何文本都将丢失。
void center_viewport_to_caret(caret_index: int = 0) 🔗
将视口放在编辑插入符号所在行的中心。这也将scroll_horizontal值重置为0。
void clear() 🔗
执行TextEdit的完全重置,包括撤消历史记录。
void clear_undo_history() 🔗
清除撤消历史记录。
void collapse_carets(from_line: int, from_column: int, to_line: int, to_column: int, inclusive: bool = false) 🔗
将给定范围内的所有插入符号折叠到from_line和from_column位置。
inclusive适用于两端。
如果is_in_mulitcaret_edit()为true,则折叠的插入符号将为multicaret_edit_ignore_caret()的true。
merge_overlapping_carets()将被调用,如果任何插入符号折叠。
void copy(caret_index: int = -1) 🔗
复制当前选定的文本。可以用_copy()覆盖。
void cut(caret_index: int = -1) 🔗
剪切是当前选择。可以用_cut()覆盖。
void delete_selection(caret_index: int = -1) 🔗
删除选定的文本。
void deselect(caret_index: int = -1) 🔗
取消选择当前选择。
void end_action() 🔗
标记以start_action()开始的当前操作中的步骤的结束。
void end_complex_operation() 🔗
结束以begin_complex_operation()开头的多部分编辑。如果在复杂操作之外调用,则将当前操作压入撤消/重做堆栈。
void end_multicaret_edit() 🔗
结束以begin_multicaret_edit()开始的对多个插入符号的编辑。如果这是最后一次end_multicaret_edit()并且调用了merge_overlapping_carets(),则插入符号将被合并。
int get_caret_column(caret_index: int = 0) const 🔗
返回编辑插入符号所在的列。
返回此TextEdit中插入符号的数量。
Vector2 get_caret_draw_pos(caret_index: int = 0) const 🔗
返回插入符号像素绘制位置。
PackedInt32Array get_caret_index_edit_order() 🔗
已弃用: 光标不再需要按任何特定顺序进行编辑。如果需要对光标进行排序,请改用 get_sorted_carets()。
按编辑顺序返回插入符号索引列表,此操作从下到上执行。编辑顺序是指应用insert_text_at_caret()等操作的方式。
int get_caret_line(caret_index: int = 0) const 🔗
返回编辑插入符号所在的行。
int get_caret_wrap_index(caret_index: int = 0) const 🔗
返回编辑插入符号所在的包装索引。
int get_first_non_whitespace_column(line: int) const 🔗
返回给定行上包含非空白字符的第一列。如果只有空格,则返回字符数。
int get_first_visible_line() const 🔗
返回第一个可见行。
int get_gutter_count() const 🔗
返回注册的排水沟数。
String get_gutter_name(gutter: int) const 🔗
返回给定索引处的排水沟名称。
GutterType get_gutter_type(gutter: int) const 🔗
返回给定索引处的排水沟类型。排水沟可以包含图标、文本或自定义视觉效果。有关选项,请参阅GutterType。
int get_gutter_width(gutter: int) const 🔗
返回给定索引处排水沟的宽度。
HScrollBar get_h_scroll_bar() const 🔗
返回TextEdit使用的HScrollBar。
int get_indent_level(line: int) const 🔗
返回给定行的缩进级别。这是行开头的空格和制表符的数量,制表符考虑了制表符的大小(参见get_tab_size())。
int get_last_full_visible_line() const 🔗
返回最后可见的行。使用get_last_full_visible_line_wrap_index()作为包装索引。
int get_last_full_visible_line_wrap_index() const 🔗
返回最后一个可见行的最后一个可见换行索引。
返回整个TextEdit中最后一个未隐藏的行。
String get_line(line: int) const 🔗
返回特定行的文本。
Color get_line_background_color(line: int) const 🔗
返回给定行的自定义背景颜色。如果未设置颜色,则返回Color(0,0,0,0)。
Vector2i get_line_column_at_pos(position: Vector2i, clamp_line: bool = true, clamp_column: bool = true) const 🔗
返回给定位置的行和列。在返回的向量中,x是列,y是行。
如果clamp_line是false并且position在最后一行下方,则返回Vector2i(-1,-1)。
如果clamp_column是false并且position在行的列范围之外,则返回Vector2i(-1,-1)。
返回文本中的行数。
Texture2D get_line_gutter_icon(line: int, gutter: int) const 🔗
返回当前gutter中line处的图标。这仅在gutter类型为GUTTER_TYPE_ICON时有效(参见set_gutter_type())。
Color get_line_gutter_item_color(line: int, gutter: int) const 🔗
返回当前gutter中line处的颜色。
Variant get_line_gutter_metadata(line: int, gutter: int) const 🔗
返回当前在gutter中line处的元数据。
String get_line_gutter_text(line: int, gutter: int) const 🔗
返回当前gutter中line处的文本。这仅在gutter类型为GUTTER_TYPE_STRING时有效(参见set_gutter_type())。
返回所有行中行高的最大值。
注意:返回值受line_spacing和font_size的影响。并且不会小于1。
Array[Vector2i] get_line_ranges_from_carets(only_selections: bool = false, merge_adjacent: bool = true) const 🔗
返回行范围的Array,其中x是第一行,y是最后一行。这些范围内的所有行都将带有插入符号或成为选择的一部分。每一行只能是一个行范围的一部分,即使它有多个插入符号。
如果选择的结束列(get_selection_to_column())位于0列,则该行将不包括在内。如果一个选择在另一个选择结束后开始,并且merge_adjacent为true,或者它们在同一行开始和结束,则一行范围将包括两个选择。
int get_line_width(line: int, wrap_index: int = -1) const 🔗
返回line上wrap_index的宽度(以像素为单位)。
String get_line_with_ime(line: int) const 🔗
返回当前显示的行文本,包括IME组合字符串。
int get_line_wrap_count(line: int) const 🔗
返回给定行被换行的次数。
int get_line_wrap_index_at_column(line: int, column: int) const 🔗
返回给定行上给定列的包装索引。范围从0到get_line_wrap_count()。
PackedStringArray get_line_wrapped_text(line: int) const 🔗
返回表示每个包装索引的String数组。
Vector2 get_local_mouse_pos() const 🔗
返回为文本方向调整的本地鼠标位置。
返回此 TextEdit 的 PopupMenu。默认情况下,在 TextEdit 上右键单击时会显示此菜单。你可以添加自定义菜单项或删除标准菜单项。确保你的 ID 不会与标准 ID 冲突(请参阅 MenuItems)。例如: .. tabs:
.. code-tab:: s3script
func _ready():
var menu = get_menu()
# 移除 “Redo”(重做)之后的所有项目.
menu.item_count = menu.get_item_index(MENU_REDO) + 1
# 添加自定义项目.
menu.add_separator()
menu.add_item("Insert Date", MENU_MAX + 1)
# 连接回调函数.
menu.id_pressed.connect(_on_item_pressed)
func _on_item_pressed(id):
if id == MENU_MAX + 1:
insert_text_at_caret(Time.get_date_string_from_system())
.. code-tab:: csharp
public override void _Ready()
{
var menu = GetMenu();
// 移除 “Redo”(重做)之后的所有项目.
menu.ItemCount = menu.GetItemIndex(TextEdit.MenuItems.Redo) + 1;
// 添加自定义项目.
menu.AddSeparator();
menu.AddItem("Insert Date", TextEdit.MenuItems.Max + 1);
// 添加事件处理器.
menu.IdPressed += OnItemPressed;
}
public void OnItemPressed(int id)
{
if (id == TextEdit.MenuItems.Max + 1)
{
InsertTextAtCaret(Time.GetDateStringFromSystem());
}
}
注意:这是一个必需的内部节点,移除并释放它可能会导致崩溃。如果你希望隐藏它或其任何子节点,请使用它们的 Window.visible 属性
int get_minimap_line_at_pos(position: Vector2i) const 🔗
返回position处的等效最小地图线。
int get_minimap_visible_lines() const 🔗
返回可以在小地图上绘制的行数。
Vector2i get_next_visible_line_index_offset_from(line: int, wrap_index: int, visible_amount: int) const 🔗
类似于get_next_visible_line_offset_from(),但考虑了行换行索引。在返回的向量中,x是行,y是换行索引。
int get_next_visible_line_offset_from(line: int, visible_amount: int) const 🔗
返回从line到line+visible_amount的下一个可见行的计数。也可以向后计数。例如,如果TextEdit有5行隐藏了第2行和第3行,用line=1调用它,visible_amount=1将返回3。
Vector2i get_pos_at_line_column(line: int, column: int) const 🔗
返回给定line和column的本地位置。如果返回向量的x或y等于-1,则该位置位于控件的可视区域之外。
注:Y位置对应线的底侧,使用get_rect_at_line_column()得到顶侧位置。
Rect2i get_rect_at_line_column(line: int, column: int) const 🔗
返回给定line和column字位的本地位置和大小。如果返回rect的x或y位置等于-1,则该位置位于控件的可视区域之外。
注意:返回的rect的Y位置对应于线的顶部,不像get_pos_at_line_column()返回底部。
int get_saved_version() const 🔗
从tag_saved_version()返回最后标记保存的版本。
float get_scroll_pos_for_line(line: int, wrap_index: int = 0) const 🔗
返回line的wrap_index的滚动位置。
String get_selected_text(caret_index: int = -1) 🔗
返回插入符号选择中的文本,如果caret_index是其默认值-1,则返回所有插入符号。
int get_selection_at_line_column(line: int, column: int, include_edges: bool = true, only_selections: bool = true) const 🔗
返回给定line和column处选择的插入符号索引,如果没有,则返回-1。
如果include_edges是false,则该位置必须在所选内容内,而不是在任一端。如果only_selections是false,则也将考虑没有选择的插入符号。
int get_selection_column(caret_index: int = 0) const 🔗
已弃用: 请改用 get_selection_origin_column()。
返回所选内容的原始开始列。
int get_selection_from_column(caret_index: int = 0) const 🔗
返回选择开始列。如果没有选择,则返回插入符号列。
int get_selection_from_line(caret_index: int = 0) const 🔗
返回选择开始行。如果没有选择,则返回插入符号行。
int get_selection_line(caret_index: int = 0) const 🔗
已弃用: 改用 get_selection_origin_line()。
返回所选内容的原始起始行。
SelectionMode get_selection_mode() const 🔗
返回当前选择模式。
int get_selection_origin_column(caret_index: int = 0) const 🔗
返回所选内容的原始列。这是插入符号的另一端。
int get_selection_origin_line(caret_index: int = 0) const 🔗
返回所选内容的原始线。这是插入符号的另一端。
int get_selection_to_column(caret_index: int = 0) const 🔗
返回选择结束列。如果没有选择,则返回插入符号列。
int get_selection_to_line(caret_index: int = 0) const 🔗
返回选择结束行。如果没有选择,则返回插入符号行。
PackedInt32Array get_sorted_carets(include_ignored_carets: bool = false) const 🔗
返回按选择排序的插入符号,从最低行和列开始到最高(从文本的顶部到底部)。
如果include_ignored_carets为false,则multicaret_edit_ignore_caret()中的插入符号将被忽略。
返回TextEdit的标签大小。
int get_total_gutter_width() const 🔗
返回所有排水沟和内部填充的总宽度。
int get_total_visible_line_count() const 🔗
返回文本中的总行数。这包括换行,不包括折叠行。如果wrap_mode设置为LINE_WRAPPING_NONE,并且没有折叠行(参见CodeEdit.is_line_folded()),则这等价于get_line_count()。有关有限范围的行,请参见get_visible_line_count_in_range()。
VScrollBar get_v_scroll_bar() const 🔗
返回TextEdit的VScrollBar。
返回TextEdit的当前版本。该版本是撤消/重做历史记录的操作计数。
int get_visible_line_count() const 🔗
根据此控件的高度返回可视适合的行数,向下舍入。
int get_visible_line_count_in_range(from_line: int, to_line: int) const 🔗
返回文本中from_line和to_line(含)之间的总行数。这包括换行,不包括折叠行。如果范围涵盖所有行,则等效于get_total_visible_line_count()。
String get_word_at_pos(position: Vector2) const 🔗
返回position处的单词。
String get_word_under_caret(caret_index: int = -1) const 🔗
返回插入符号位置下带有单词的String文本。
如果用户在输入法编辑器(IME)中有文本,则返回true。
如果“重做”操作可用,则返回true。
bool has_selection(caret_index: int = -1) const 🔗
如果用户选择了文本,则返回true。
如果“撤消”操作可用,则返回true。
void insert_line_at(line: int, text: String) 🔗
在line处插入带有text的新行。
void insert_text(text: String, line: int, column: int, before_selection_begin: bool = true, before_selection_end: bool = false) 🔗
在line和column处插入text。
如果before_selection_begin为true,则从line和column开始的插入符号和选择将连同后面的所有插入符号一起移动到插入文本的末尾。
如果before_selection_end为true,则以line和column结尾的选择将扩展到插入文本的末尾。这些参数可用于在选择内部或外部插入文本。
void insert_text_at_caret(text: String, caret_index: int = -1) 🔗
在插入符号位置插入指定的文本。
bool is_caret_after_selection_origin(caret_index: int = 0) const 🔗
如果选择的插入符号在选择原点之后,则返回true。这可用于确定选择的方向。
bool is_caret_visible(caret_index: int = 0) const 🔗
如果插入符号可见,则返回true,否则返回false。如果启用滚动时插入符号在可滚动区域之外,则将认为插入符号是隐藏的。
注意:is_caret_visible()不考虑插入符号是否仍在可滚动区域内。只要插入符号满足TextEdit自身可见的条件,即使插入符号不在屏幕上,它也会返回true。这包括使用scroll_fit_content_width和scroll_fit_content_height导致TextEdit扩展到视口边界之外。
bool is_dragging_cursor() const 🔗
如果用户拖动鼠标进行滚动、选择或文本拖动,则返回true。
bool is_gutter_clickable(gutter: int) const 🔗
返回true,如果给定索引处的gutter是可点击的。参见set_gutter_clickable()。
bool is_gutter_drawn(gutter: int) const 🔗
返回true,如果当前绘制了给定索引处的排水沟。请参阅set_gutter_draw()。
bool is_gutter_overwritable(gutter: int) const 🔗
返回true,如果给定索引处的gutter是可覆盖的。参见set_gutter_overwritable()。
bool is_in_mulitcaret_edit() const 🔗
返回true如果begin_multicaret_edit()已被调用,而end_multicaret_edit()尚未被调用。
bool is_line_gutter_clickable(line: int, gutter: int) const 🔗
返回true,如果给定行上给定索引处的排水沟可单击。请参阅set_line_gutter_clickable()。
bool is_line_wrapped(line: int) const 🔗
如果换行,则返回。
如果菜单可见,则返回true。使用this代替get_menu()。可见以提高性能(因此避免创建菜单)。参见get_menu()。
bool is_mouse_over_selection(edges: bool, caret_index: int = -1) const 🔗
如果鼠标悬停在所选内容上,则返回true。如果edges为true,则边缘被视为所选内容的一部分。
bool is_overtype_mode_enabled() const 🔗
如果启用了覆盖模式,则返回true。请参见set_overtype_mode_enabled()。
执行MenuItems枚举中定义的给定操作。
void merge_gutters(from_line: int, to_line: int) 🔗
将from_line中的排水沟合并到to_line中。只有可覆盖的排水沟会被复制。参见set_gutter_overwritable()。
void merge_overlapping_carets() 🔗
合并任何重叠的插入符号。将偏爱最新的插入符号,或带有选择的插入符号。
如果is_in_mulitcaret_edit()为true,则合并将在多区域编辑结束时排队进行。请参阅begin_multicaret_edit()和end_multicaret_edit()。
注意:这不是在插入符号改变位置时调用的,而是在某些操作之后调用的,因此有可能进入插入符号重叠的状态。
bool multicaret_edit_ignore_caret(caret_index: int) const 🔗
返回true,如果给定的caret_index应作为多点编辑的一部分被忽略。请参阅begin_multicaret_edit()和end_multicaret_edit()。应忽略的插入符号是已删除文本的一部分,可能会在编辑结束时合并,或在编辑期间添加的插入符号。
如果应该忽略插入符号,建议在迭代多个插入符号的循环中继续。
void paste(caret_index: int = -1) 🔗
粘贴到当前位置。可以用_paste()覆盖。
void paste_primary_clipboard(caret_index: int = -1) 🔗
粘贴主剪贴板。
void redo() 🔗
执行重做操作。
void remove_caret(caret: int) 🔗
删除给定的插入符号索引。
注意:这可能会导致调整所有其他插入符号索引。
void remove_gutter(gutter: int) 🔗
删除给定索引处的排水沟。
void remove_line_at(line: int, move_carets_down: bool = true) 🔗
删除line处的文本行。此行上的标记将尝试匹配其先前的视觉x位置。
如果move_carets_down是true插入符号将向下移动到下一行,否则插入符号将向上移动。
void remove_secondary_carets() 🔗
删除所有额外的插入符号。
void remove_text(from_line: int, from_column: int, to_line: int, to_column: int) 🔗
删除给定位置之间的文本。
Vector2i search(text: String, flags: int, from_line: int, from_column: int) const 🔗
在文本内执行搜索。搜索标志可以在 SearchFlags 枚举中指定。
在返回的向量中,x 是列,y 是行。如果未找到结果,则两者都等于 -1。
var result = search("print", SEARCH_WHOLE_WORDS, 0, 0)
if result.x != -1:
# 找到结果.
var line_number = result.y
var column_number = result.x
Vector2I result = Search("print", (uint)TextEdit.SearchFlags.WholeWords, 0, 0);
if (result.X != -1)
{
// 找到结果.
int lineNumber = result.Y;
int columnNumber = result.X;
}
void select(origin_line: int, origin_column: int, caret_line: int, caret_column: int, caret_index: int = 0) 🔗
为给定的caret_index从origin_line和origin_column中选择文本到caret_line和caret_column。这会移动选择原点和插入符号。如果位置相同,则取消选择。
如果selecting_enabled为false,则不会发生选择。
注意:如果支持多个插入符号,这将不会检查任何重叠。参见merge_overlapping_carets()。
void select_all() 🔗
选择所有文本。
如果selecting_enabled为false,则不会发生选择。
void select_word_under_caret(caret_index: int = -1) 🔗
选择插入符号下的单词。
void set_caret_column(column: int, adjust_viewport: bool = true, caret_index: int = 0) 🔗
将插入符号移动到指定的column索引。
如果adjust_viewport为true,则移动发生后视口将以插入符号位置为中心。
注意:如果支持多个插入符号,这将不会检查任何重叠。参见merge_overlapping_carets()。
void set_caret_line(line: int, adjust_viewport: bool = true, can_be_hidden: bool = true, wrap_index: int = 0, caret_index: int = 0) 🔗
将插入符号移动到指定的line索引。插入符号列将移动到上次调用set_caret_column()时的相同视觉位置,或固定到行尾。
如果adjust_viewport为true,则移动发生后视口将以插入符号位置为中心。
如果can_be_hidden为true,则可以隐藏指定的line。
如果wrap_index为-1,则插入符号列将被限制到line的长度。如果wrap_index大于-1,则将移动该列以尝试将该行wrap_index上的可视x位置与上次调用set_caret_column()时的位置相匹配。
注意:如果支持多个插入符号,这将不会检查任何重叠。参见merge_overlapping_carets()。
void set_gutter_clickable(gutter: int, clickable: bool) 🔗
如果true,鼠标光标将在给定索引处悬停在排水沟上时变为指针(Control.CURSOR_POINTING_HAND)。参见is_gutter_clickable()和set_line_gutter_clickable()。
void set_gutter_custom_draw(column: int, draw_callback: Callable) 🔗
为给定索引处的gutter设置自定义绘图回调。draw_callback必须接受以下参数:行索引int、gutter索引int和区域Rect2。此回调仅在gutter类型为GUTTER_TYPE_CUSTOM时有效(参见set_gutter_type())。
void set_gutter_draw(gutter: int, draw: bool) 🔗
如果true,则绘制给定索引处的gutter。gutter类型(set_gutter_type())决定了它的绘制方式。参见is_gutter_drawn()。
void set_gutter_name(gutter: int, name: String) 🔗
设置给定索引处的排水沟名称。
void set_gutter_overwritable(gutter: int, overwritable: bool) 🔗
如果true,则使用merge_gutters()时可以覆盖给定索引处的排水沟的行数据。参见is_gutter_overwritable()。
void set_gutter_type(gutter: int, type: GutterType) 🔗
在给定索引处设置排水沟的类型。排水沟可以包含图标、文本或自定义视觉效果。有关选项,请参阅GutterType。
void set_gutter_width(gutter: int, width: int) 🔗
在给定的索引处设置排水沟的宽度。
void set_line(line: int, new_text: String) 🔗
设置特定line的文本。
线上将试图保持他们的视觉x位置。
void set_line_as_center_visible(line: int, wrap_index: int = 0) 🔗
将line的wrap_index定位在视口的中心。
void set_line_as_first_visible(line: int, wrap_index: int = 0) 🔗
将line的wrap_index定位在视口顶部。
void set_line_as_last_visible(line: int, wrap_index: int = 0) 🔗
将line的wrap_index定位在视口底部。
void set_line_background_color(line: int, color: Color) 🔗
设置给定行的自定义背景颜色。如果是透明的,则此颜色应用于默认背景颜色之上(参见background_color)。如果设置为Color(0,0,0,0),则不应用其他颜色。
void set_line_gutter_clickable(line: int, gutter: int, clickable: bool) 🔗
如果clickable为true,则使给定line上的gutter可点击。这类似于set_gutter_clickable(),但只适用于单行。如果is_gutter_clickable()为true,则不会产生任何影响。参见is_line_gutter_clickable()和gutter_clicked。
void set_line_gutter_icon(line: int, gutter: int, icon: Texture2D) 🔗
将line上gutter的图标设置为icon。这仅在gutter类型为GUTTER_TYPE_ICON时有效(参见set_gutter_type())。
void set_line_gutter_item_color(line: int, gutter: int, color: Color) 🔗
将line上gutter的颜色设置为color。
void set_line_gutter_metadata(line: int, gutter: int, metadata: Variant) 🔗
将line上gutter的元数据设置为metadata。
void set_line_gutter_text(line: int, gutter: int, text: String) 🔗
将line上的gutter的文本设置为text。这仅在gutter类型为GUTTER_TYPE_STRING时有效(参见set_gutter_type())。
void set_overtype_mode_enabled(enabled: bool) 🔗
如果true,则启用覆盖模式。在此模式下,键入会覆盖现有文本而不是插入文本。ProjectSettings.input/ui_text_toggle_insert_mode操作切换覆盖模式。请参阅is_overtype_mode_enabled()。
void set_search_flags(flags: int) 🔗
设置搜索flags。这与set_search_text()一起使用以突出显示搜索文本的出现。可以从SearchFlags枚举中指定搜索标志。
void set_search_text(search_text: String) 🔗
设置搜索文本。参见set_search_flags()。
void set_selection_mode(mode: SelectionMode) 🔗
设置当前选择模式。
void set_selection_origin_column(column: int, caret_index: int = 0) 🔗
将给定caret_index的选择原点列设置为column。如果选择原点移动到插入符号位置,则选择将取消选择。
void set_selection_origin_line(line: int, can_be_hidden: bool = true, wrap_index: int = -1, caret_index: int = 0) 🔗
将给定caret_index的选择原点线设置为line。如果选择原点移动到插入符号位置,则选择将取消选择。
如果can_be_hidden为false,则该行将设置为下方或上方最近的未隐藏行。
如果wrap_index为-1,则选择源列将被限制到line的长度。如果wrap_index大于-1,则将移动列以尝试将行wrap_index上的可视x位置与上次调用set_selection_origin_column()或select()时的位置相匹配。
void set_tab_size(size: int) 🔗
设置要使用的TextEdit的选项卡大小。
void set_tooltip_request_func(callback: Callable) 🔗
提供自定义工具提示文本。回调方法必须采用以下参数:hovered_word: String。
void skip_selection_for_next_occurrence() 🔗
为当前选定内容的下一次出现移动选定内容和插入符号。如果没有活动选定内容,则移动到插入符号下的单词的下一次出现。
void start_action(action: EditAction) 🔗
启动一个动作,如果action不同,将结束当前动作。
在调用end_action()、触发ProjectSettings.gui/timers/text_edit_idle_detect_sec或start_action()和end_action()调用之外的新的可撤消步骤之后,操作也将结束。
void swap_lines(from_line: int, to_line: int) 🔗
交换两条线。标记将与线条交换。
void tag_saved_version() 🔗
将当前版本标记为已保存。
void undo() 🔗
执行撤消操作。
主题属性说明¶
Color background_color = Color(0, 0, 0, 0) 🔗
设置此TextEdit的背景Color。
Color caret_background_color = Color(0, 0, 0, 1) 🔗
Color使用块插入符号时插入符号后面的文本。
Color caret_color = Color(0.875, 0.875, 0.875, 1) 🔗
插入符号的Color。这可以设置为完全透明的颜色以完全隐藏插入符号。
Color current_line_color = Color(0.25, 0.25, 0.26, 0.8) 🔗
包含插入符号的行的背景Color。
Color font_color = Color(0.875, 0.875, 0.875, 1) 🔗
设置字体Color。
Color font_outline_color = Color(0, 0, 0, 1) 🔗
TextEdit的文本大纲的色调。
Color font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6) 🔗
placeholder_text的字体颜色。
Color font_readonly_color = Color(0.875, 0.875, 0.875, 0.5) 🔗
Color font_selected_color = Color(0, 0, 0, 0) 🔗
设置选定文本的Color。如果等于Color(0,0,0,0),它将被忽略。
Color search_result_border_color = Color(0.3, 0.3, 0.3, 0.4) 🔗
与搜索查询匹配的文本周围边框的Color。
Color search_result_color = Color(0.3, 0.3, 0.3, 1) 🔗
Color与搜索查询匹配的文本后面。
Color selection_color = Color(0.5, 0.5, 0.5, 1) 🔗
设置文本选择的高亮Color。
Color word_highlighted_color = Color(0.5, 0.5, 0.5, 0.25) 🔗
设置多次出现的高亮Color。必须启用highlight_all_occurrences。
插入符号的宽度(以像素为单位)。较大的值可用于通过确保插入符号易于可见来提高可访问性,或确保与大字体大小的一致性。如果设置为0或更低,插入符号宽度会自动设置为1像素并乘以显示缩放系数。
行间距增加(以像素为单位),行间距增加到行下降。这个值可以是负数。
文本大纲的大小。
注意:如果使用启用了FontFile.multichannel_signed_distance_field的字体,则其FontFile.msdf_pixel_range必须设置为至少两倍outline_size的值才能使轮廓渲染看起来正确。否则,轮廓可能会比预期的更早被切断。
设置默认Font。
设置默认字体大小。
为空格文本字符设置自定义Texture2D。
为制表符文本字符设置自定义Texture2D。
设置对焦时的StyleBox。focus StyleBox显示在底座StyleBox的上方,因此应使用部分透明的StyleBox来确保底座StyleBox保持可见。表示轮廓或下划线的StyleBox可以很好地用于此目的。要禁用焦点视觉效果,请分配StyleBoxEmpty资源。请注意,禁用焦点视觉效果会损害键盘/控制器导航可用性,因此出于可访问性原因不建议这样做。
设置此TextEdit的StyleBox。