|
@@ -70,6 +70,47 @@ public:
|
|
|
GUTTER_TYPE_CUSTOM
|
|
|
};
|
|
|
|
|
|
+ /* Contex Menu. */
|
|
|
+ enum MenuItems {
|
|
|
+ MENU_CUT,
|
|
|
+ MENU_COPY,
|
|
|
+ MENU_PASTE,
|
|
|
+ MENU_CLEAR,
|
|
|
+ MENU_SELECT_ALL,
|
|
|
+ MENU_UNDO,
|
|
|
+ MENU_REDO,
|
|
|
+ MENU_DIR_INHERITED,
|
|
|
+ MENU_DIR_AUTO,
|
|
|
+ MENU_DIR_LTR,
|
|
|
+ MENU_DIR_RTL,
|
|
|
+ MENU_DISPLAY_UCC,
|
|
|
+ MENU_INSERT_LRM,
|
|
|
+ MENU_INSERT_RLM,
|
|
|
+ MENU_INSERT_LRE,
|
|
|
+ MENU_INSERT_RLE,
|
|
|
+ MENU_INSERT_LRO,
|
|
|
+ MENU_INSERT_RLO,
|
|
|
+ MENU_INSERT_PDF,
|
|
|
+ MENU_INSERT_ALM,
|
|
|
+ MENU_INSERT_LRI,
|
|
|
+ MENU_INSERT_RLI,
|
|
|
+ MENU_INSERT_FSI,
|
|
|
+ MENU_INSERT_PDI,
|
|
|
+ MENU_INSERT_ZWJ,
|
|
|
+ MENU_INSERT_ZWNJ,
|
|
|
+ MENU_INSERT_WJ,
|
|
|
+ MENU_INSERT_SHY,
|
|
|
+ MENU_MAX
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ /* Search. */
|
|
|
+ enum SearchFlags {
|
|
|
+ SEARCH_MATCH_CASE = 1,
|
|
|
+ SEARCH_WHOLE_WORDS = 2,
|
|
|
+ SEARCH_BACKWARDS = 4
|
|
|
+ };
|
|
|
+
|
|
|
private:
|
|
|
struct GutterInfo {
|
|
|
GutterType type = GutterType::GUTTER_TYPE_STRING;
|
|
@@ -82,11 +123,6 @@ private:
|
|
|
ObjectID custom_draw_obj = ObjectID();
|
|
|
StringName custom_draw_callback;
|
|
|
};
|
|
|
- Vector<GutterInfo> gutters;
|
|
|
- int gutters_width = 0;
|
|
|
- int gutter_padding = 0;
|
|
|
-
|
|
|
- void _update_gutter_width();
|
|
|
|
|
|
class Text {
|
|
|
public:
|
|
@@ -135,7 +171,7 @@ private:
|
|
|
void set_font(const Ref<Font> &p_font);
|
|
|
void set_font_size(int p_font_size);
|
|
|
void set_font_features(const Dictionary &p_features);
|
|
|
- void set_direction_and_language(TextServer::Direction p_direction, String p_language);
|
|
|
+ void set_direction_and_language(TextServer::Direction p_direction, const String &p_language);
|
|
|
void set_draw_control_chars(bool p_draw_control_chars);
|
|
|
|
|
|
int get_line_height(int p_line, int p_wrap_index) const;
|
|
@@ -173,7 +209,7 @@ private:
|
|
|
void set_line_gutter_text(int p_line, int p_gutter, const String &p_text) { text.write[p_line].gutters.write[p_gutter].text = p_text; }
|
|
|
const String &get_line_gutter_text(int p_line, int p_gutter) const { return text[p_line].gutters[p_gutter].text; }
|
|
|
|
|
|
- void set_line_gutter_icon(int p_line, int p_gutter, Ref<Texture2D> p_icon) { text.write[p_line].gutters.write[p_gutter].icon = p_icon; }
|
|
|
+ void set_line_gutter_icon(int p_line, int p_gutter, const Ref<Texture2D> &p_icon) { text.write[p_line].gutters.write[p_gutter].icon = p_icon; }
|
|
|
const Ref<Texture2D> &get_line_gutter_icon(int p_line, int p_gutter) const { return text[p_line].gutters[p_gutter].icon; }
|
|
|
|
|
|
void set_line_gutter_item_color(int p_line, int p_gutter, const Color &p_color) { text.write[p_line].gutters.write[p_gutter].color = p_color; }
|
|
@@ -187,15 +223,102 @@ private:
|
|
|
const Color get_line_background_color(int p_line) const { return text[p_line].background_color; }
|
|
|
};
|
|
|
|
|
|
- /* Text manipulation */
|
|
|
- // User control.
|
|
|
+ /* Text */
|
|
|
+ Text text;
|
|
|
+
|
|
|
+ bool setting_text = false;
|
|
|
+
|
|
|
+ // Text properties.
|
|
|
+ String ime_text = "";
|
|
|
+ Point2 ime_selection;
|
|
|
+
|
|
|
/* Initialise to opposite first, so we get past the early-out in set_editable. */
|
|
|
bool editable = false;
|
|
|
|
|
|
+ TextDirection text_direction = TEXT_DIRECTION_AUTO;
|
|
|
+ TextDirection input_direction = TEXT_DIRECTION_LTR;
|
|
|
+
|
|
|
+ Dictionary opentype_features;
|
|
|
+ String language = "";
|
|
|
+
|
|
|
+ Control::StructuredTextParser st_parser = STRUCTURED_TEXT_DEFAULT;
|
|
|
+ Array st_args;
|
|
|
+
|
|
|
+ void _clear();
|
|
|
+ void _update_caches();
|
|
|
+
|
|
|
+ // User control.
|
|
|
bool overtype_mode = false;
|
|
|
+ bool context_menu_enabled = true;
|
|
|
+ bool shortcut_keys_enabled = true;
|
|
|
+ bool virtual_keyboard_enabled = true;
|
|
|
|
|
|
+ // Overridable actions
|
|
|
String cut_copy_line = "";
|
|
|
|
|
|
+ // Context menu.
|
|
|
+ PopupMenu *menu = nullptr;
|
|
|
+ PopupMenu *menu_dir = nullptr;
|
|
|
+ PopupMenu *menu_ctl = nullptr;
|
|
|
+
|
|
|
+ void _generate_context_menu();
|
|
|
+ int _get_menu_action_accelerator(const String &p_action);
|
|
|
+
|
|
|
+ /* Versioning */
|
|
|
+ struct TextOperation {
|
|
|
+ enum Type {
|
|
|
+ TYPE_NONE,
|
|
|
+ TYPE_INSERT,
|
|
|
+ TYPE_REMOVE
|
|
|
+ };
|
|
|
+
|
|
|
+ Type type = TYPE_NONE;
|
|
|
+ int from_line = 0;
|
|
|
+ int from_column = 0;
|
|
|
+ int to_line = 0;
|
|
|
+ int to_column = 0;
|
|
|
+ String text;
|
|
|
+ uint32_t prev_version = 0;
|
|
|
+ uint32_t version = 0;
|
|
|
+ bool chain_forward = false;
|
|
|
+ bool chain_backward = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ bool undo_enabled = true;
|
|
|
+ int undo_stack_max_size = 50;
|
|
|
+
|
|
|
+ bool next_operation_is_complex = false;
|
|
|
+
|
|
|
+ TextOperation current_op;
|
|
|
+ List<TextOperation> undo_stack;
|
|
|
+ List<TextOperation>::Element *undo_stack_pos = nullptr;
|
|
|
+
|
|
|
+ Timer *idle_detect;
|
|
|
+
|
|
|
+ uint32_t version = 0;
|
|
|
+ uint32_t saved_version = 0;
|
|
|
+
|
|
|
+ void _push_current_op();
|
|
|
+ void _do_text_op(const TextOperation &p_op, bool p_reverse);
|
|
|
+ void _clear_redo();
|
|
|
+
|
|
|
+ /* Search */
|
|
|
+ Color search_result_color = Color(1, 1, 1);
|
|
|
+ Color search_result_border_color = Color(1, 1, 1);
|
|
|
+
|
|
|
+ String search_text = "";
|
|
|
+ uint32_t search_flags = 0;
|
|
|
+
|
|
|
+ int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column) const;
|
|
|
+
|
|
|
+ /* Tooltip. */
|
|
|
+ Object *tooltip_obj = nullptr;
|
|
|
+ StringName tooltip_func;
|
|
|
+ Variant tooltip_ud;
|
|
|
+
|
|
|
+ /* Mouse */
|
|
|
+ int _get_char_pos_for_line(int p_px, int p_line, int p_wrap_index = 0) const;
|
|
|
+
|
|
|
/* Caret. */
|
|
|
struct Caret {
|
|
|
Point2 draw_pos;
|
|
@@ -230,6 +353,8 @@ private:
|
|
|
void _reset_caret_blink_timer();
|
|
|
void _toggle_draw_caret();
|
|
|
|
|
|
+ int _get_column_x_offset_for_line(int p_char, int p_line) const;
|
|
|
+
|
|
|
/* Selection. */
|
|
|
struct Selection {
|
|
|
SelectionMode selecting_mode = SelectionMode::SELECTION_MODE_NONE;
|
|
@@ -296,6 +421,7 @@ private:
|
|
|
bool updating_scrolls = false;
|
|
|
|
|
|
void _update_scrollbars();
|
|
|
+ int _get_control_height() const;
|
|
|
|
|
|
void _v_scroll_input();
|
|
|
void _scroll_moved(double p_to_val);
|
|
@@ -327,122 +453,62 @@ private:
|
|
|
void _update_minimap_click();
|
|
|
void _update_minimap_drag();
|
|
|
|
|
|
- /* Syntax highlighting. */
|
|
|
- Map<int, Dictionary> syntax_highlighting_cache;
|
|
|
-
|
|
|
- struct TextOperation {
|
|
|
- enum Type {
|
|
|
- TYPE_NONE,
|
|
|
- TYPE_INSERT,
|
|
|
- TYPE_REMOVE
|
|
|
- };
|
|
|
-
|
|
|
- Type type = TYPE_NONE;
|
|
|
- int from_line = 0;
|
|
|
- int from_column = 0;
|
|
|
- int to_line = 0;
|
|
|
- int to_column = 0;
|
|
|
- String text;
|
|
|
- uint32_t prev_version = 0;
|
|
|
- uint32_t version = 0;
|
|
|
- bool chain_forward = false;
|
|
|
- bool chain_backward = false;
|
|
|
- };
|
|
|
-
|
|
|
- String ime_text;
|
|
|
- Point2 ime_selection;
|
|
|
-
|
|
|
- TextOperation current_op;
|
|
|
-
|
|
|
- List<TextOperation> undo_stack;
|
|
|
- List<TextOperation>::Element *undo_stack_pos = nullptr;
|
|
|
- int undo_stack_max_size;
|
|
|
+ /* Gutters. */
|
|
|
+ Vector<GutterInfo> gutters;
|
|
|
+ int gutters_width = 0;
|
|
|
+ int gutter_padding = 0;
|
|
|
|
|
|
- void _clear_redo();
|
|
|
- void _do_text_op(const TextOperation &p_op, bool p_reverse);
|
|
|
+ void _update_gutter_width();
|
|
|
|
|
|
- //syntax coloring
|
|
|
+ /* Syntax highlighting. */
|
|
|
Ref<SyntaxHighlighter> syntax_highlighter;
|
|
|
- Set<String> keywords;
|
|
|
+ Map<int, Dictionary> syntax_highlighting_cache;
|
|
|
|
|
|
Dictionary _get_line_syntax_highlighting(int p_line);
|
|
|
|
|
|
- bool setting_text = false;
|
|
|
+ /* Visual. */
|
|
|
+ Ref<StyleBox> style_normal;
|
|
|
+ Ref<StyleBox> style_focus;
|
|
|
+ Ref<StyleBox> style_readonly;
|
|
|
|
|
|
- // data
|
|
|
- Text text;
|
|
|
+ Ref<Texture2D> tab_icon;
|
|
|
+ Ref<Texture2D> space_icon;
|
|
|
|
|
|
- Dictionary opentype_features;
|
|
|
- String language;
|
|
|
- TextDirection text_direction = TEXT_DIRECTION_AUTO;
|
|
|
- TextDirection input_direction = TEXT_DIRECTION_LTR;
|
|
|
- Control::StructuredTextParser st_parser = STRUCTURED_TEXT_DEFAULT;
|
|
|
- Array st_args;
|
|
|
- bool draw_control_chars = false;
|
|
|
+ Ref<Font> font;
|
|
|
+ int font_size = 16;
|
|
|
+ Color font_color = Color(1, 1, 1);
|
|
|
+ Color font_readonly_color = Color(1, 1, 1);
|
|
|
|
|
|
- uint32_t version = 0;
|
|
|
- uint32_t saved_version = 0;
|
|
|
+ int outline_size = 0;
|
|
|
+ Color outline_color = Color(1, 1, 1);
|
|
|
|
|
|
- bool window_has_focus = true;
|
|
|
+ int line_spacing = 1;
|
|
|
+
|
|
|
+ Color background_color = Color(1, 1, 1);
|
|
|
+ Color current_line_color = Color(1, 1, 1);
|
|
|
+ Color word_highlighted_color = Color(1, 1, 1);
|
|
|
|
|
|
+ bool window_has_focus = true;
|
|
|
bool first_draw = true;
|
|
|
- bool draw_tabs = false;
|
|
|
- bool draw_spaces = false;
|
|
|
- bool text_changed_dirty = false;
|
|
|
- bool undo_enabled = true;
|
|
|
|
|
|
- bool highlight_all_occurrences = false;
|
|
|
bool highlight_current_line = false;
|
|
|
+ bool highlight_all_occurrences = false;
|
|
|
+ bool draw_control_chars = false;
|
|
|
+ bool draw_tabs = false;
|
|
|
+ bool draw_spaces = false;
|
|
|
|
|
|
- Timer *idle_detect;
|
|
|
-
|
|
|
- Object *tooltip_obj = nullptr;
|
|
|
- StringName tooltip_func;
|
|
|
- Variant tooltip_ud;
|
|
|
-
|
|
|
- bool next_operation_is_complex = false;
|
|
|
-
|
|
|
- String search_text;
|
|
|
- uint32_t search_flags = 0;
|
|
|
- int search_result_line = 0;
|
|
|
- int search_result_col = 0;
|
|
|
-
|
|
|
- bool context_menu_enabled = true;
|
|
|
- bool shortcut_keys_enabled = true;
|
|
|
- bool virtual_keyboard_enabled = true;
|
|
|
-
|
|
|
- int get_char_pos_for_line(int p_px, int p_line, int p_wrap_index = 0) const;
|
|
|
- int get_column_x_offset_for_line(int p_char, int p_line) const;
|
|
|
-
|
|
|
- Size2 get_minimum_size() const override;
|
|
|
- int _get_control_height() const;
|
|
|
-
|
|
|
- int _get_menu_action_accelerator(const String &p_action);
|
|
|
-
|
|
|
- void _update_caches();
|
|
|
+ /*** Super internal Core API. Everything builds on it. ***/
|
|
|
+ bool text_changed_dirty = false;
|
|
|
void _text_changed_emit();
|
|
|
|
|
|
- void _push_current_op();
|
|
|
-
|
|
|
- /* super internal api, undo/redo builds on it */
|
|
|
+ void _insert_text(int p_line, int p_char, const String &p_text, int *r_end_line = nullptr, int *r_end_char = nullptr);
|
|
|
+ void _remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
|
|
|
|
|
|
void _base_insert_text(int p_line, int p_char, const String &p_text, int &r_end_line, int &r_end_column);
|
|
|
String _base_get_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column) const;
|
|
|
void _base_remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
|
|
|
|
|
|
- int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column);
|
|
|
-
|
|
|
- Dictionary _search_bind(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column) const;
|
|
|
-
|
|
|
- PopupMenu *menu = nullptr;
|
|
|
- PopupMenu *menu_dir = nullptr;
|
|
|
- PopupMenu *menu_ctl = nullptr;
|
|
|
-
|
|
|
- void _ensure_menu();
|
|
|
-
|
|
|
- void _clear();
|
|
|
-
|
|
|
- // Methods used in shortcuts
|
|
|
+ /* Input actions. */
|
|
|
void _swap_current_input_direction();
|
|
|
void _new_line(bool p_split_current = true, bool p_above = false);
|
|
|
void _move_caret_left(bool p_select, bool p_move_by_word = false);
|
|
@@ -459,36 +525,8 @@ private:
|
|
|
void _move_caret_document_end(bool p_select);
|
|
|
|
|
|
protected:
|
|
|
- bool highlight_matching_braces_enabled = false;
|
|
|
-
|
|
|
- struct Cache {
|
|
|
- Ref<Texture2D> tab_icon;
|
|
|
- Ref<Texture2D> space_icon;
|
|
|
- Ref<StyleBox> style_normal;
|
|
|
- Ref<StyleBox> style_focus;
|
|
|
- Ref<StyleBox> style_readonly;
|
|
|
- Ref<Font> font;
|
|
|
- int font_size = 16;
|
|
|
- int outline_size = 0;
|
|
|
- Color outline_color;
|
|
|
- Color font_color;
|
|
|
- Color font_readonly_color;
|
|
|
- Color current_line_color;
|
|
|
- Color brace_mismatch_color;
|
|
|
- Color word_highlighted_color;
|
|
|
- Color search_result_color;
|
|
|
- Color search_result_border_color;
|
|
|
- Color background_color;
|
|
|
-
|
|
|
- int line_spacing = 1;
|
|
|
- } cache;
|
|
|
-
|
|
|
- virtual String get_tooltip(const Point2 &p_pos) const override;
|
|
|
-
|
|
|
- void _insert_text(int p_line, int p_char, const String &p_text, int *r_end_line = nullptr, int *r_end_char = nullptr);
|
|
|
- void _remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
|
|
|
- virtual void _gui_input(const Ref<InputEvent> &p_gui_input);
|
|
|
void _notification(int p_what);
|
|
|
+ virtual void _gui_input(const Ref<InputEvent> &p_gui_input);
|
|
|
|
|
|
static void _bind_methods();
|
|
|
|
|
@@ -497,6 +535,10 @@ protected:
|
|
|
void _get_property_list(List<PropertyInfo> *p_list) const;
|
|
|
|
|
|
/* Internal API for CodeEdit, pending public API. */
|
|
|
+ // brace matching
|
|
|
+ bool highlight_matching_braces_enabled = false;
|
|
|
+ Color brace_mismatch_color;
|
|
|
+
|
|
|
// Line hiding.
|
|
|
Color code_folding_color = Color(1, 1, 1);
|
|
|
Ref<Texture2D> folded_eol_icon;
|
|
@@ -526,14 +568,78 @@ protected:
|
|
|
virtual void _paste();
|
|
|
|
|
|
public:
|
|
|
- /* Text manipulation */
|
|
|
- // User control
|
|
|
+ /* General overrides. */
|
|
|
+ virtual Size2 get_minimum_size() const override;
|
|
|
+ virtual bool is_text_field() const override;
|
|
|
+ virtual CursorShape get_cursor_shape(const Point2 &p_pos = Point2i()) const override;
|
|
|
+ virtual String get_tooltip(const Point2 &p_pos) const override;
|
|
|
+ void set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata);
|
|
|
+
|
|
|
+ /* Text */
|
|
|
+ // Text properties.
|
|
|
+ bool has_ime_text() const;
|
|
|
+
|
|
|
void set_editable(const bool p_editable);
|
|
|
bool is_editable() const;
|
|
|
|
|
|
+ void set_text_direction(TextDirection p_text_direction);
|
|
|
+ TextDirection get_text_direction() const;
|
|
|
+
|
|
|
+ void set_opentype_feature(const String &p_name, int p_value);
|
|
|
+ int get_opentype_feature(const String &p_name) const;
|
|
|
+ void clear_opentype_features();
|
|
|
+
|
|
|
+ void set_language(const String &p_language);
|
|
|
+ String get_language() const;
|
|
|
+
|
|
|
+ void set_structured_text_bidi_override(Control::StructuredTextParser p_parser);
|
|
|
+ Control::StructuredTextParser get_structured_text_bidi_override() const;
|
|
|
+ void set_structured_text_bidi_override_options(Array p_args);
|
|
|
+ Array get_structured_text_bidi_override_options() const;
|
|
|
+
|
|
|
+ void set_tab_size(const int p_size);
|
|
|
+ int get_tab_size() const;
|
|
|
+
|
|
|
+ // User controls
|
|
|
void set_overtype_mode_enabled(const bool p_enabled);
|
|
|
bool is_overtype_mode_enabled() const;
|
|
|
|
|
|
+ void set_context_menu_enabled(bool p_enable);
|
|
|
+ bool is_context_menu_enabled() const;
|
|
|
+
|
|
|
+ void set_shortcut_keys_enabled(bool p_enabled);
|
|
|
+ bool is_shortcut_keys_enabled() const;
|
|
|
+
|
|
|
+ void set_virtual_keyboard_enabled(bool p_enable);
|
|
|
+ bool is_virtual_keyboard_enabled() const;
|
|
|
+
|
|
|
+ // Text manipulation
|
|
|
+ void clear();
|
|
|
+
|
|
|
+ void set_text(const String &p_text);
|
|
|
+ String get_text() const;
|
|
|
+ int get_line_count() const;
|
|
|
+
|
|
|
+ void set_line(int p_line, const String &p_new_text);
|
|
|
+ String get_line(int p_line) const;
|
|
|
+
|
|
|
+ int get_line_width(int p_line, int p_wrap_index = -1) const;
|
|
|
+ int get_line_height() const;
|
|
|
+
|
|
|
+ int get_indent_level(int p_line) const;
|
|
|
+ int get_first_non_whitespace_column(int p_line) const;
|
|
|
+
|
|
|
+ void swap_lines(int p_from_line, int p_to_line);
|
|
|
+
|
|
|
+ void insert_line_at(int p_at, const String &p_text);
|
|
|
+ void insert_text_at_caret(const String &p_text);
|
|
|
+
|
|
|
+ void remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
|
|
|
+
|
|
|
+ int get_last_unhidden_line() const;
|
|
|
+ int get_next_visible_line_offset_from(int p_line_from, int p_visible_amount) const;
|
|
|
+ Point2i get_next_visible_line_index_offset_from(int p_line_from, int p_wrap_index_from, int p_visible_amount) const;
|
|
|
+
|
|
|
// Overridable actions
|
|
|
void handle_unicode_input(const uint32_t p_unicode);
|
|
|
void backspace();
|
|
@@ -542,6 +648,42 @@ public:
|
|
|
void copy();
|
|
|
void paste();
|
|
|
|
|
|
+ // Context menu.
|
|
|
+ PopupMenu *get_menu() const;
|
|
|
+ bool is_menu_visible() const;
|
|
|
+ void menu_option(int p_option);
|
|
|
+
|
|
|
+ /* Versioning */
|
|
|
+ void begin_complex_operation();
|
|
|
+ void end_complex_operation();
|
|
|
+
|
|
|
+ void undo();
|
|
|
+ void redo();
|
|
|
+ void clear_undo_history();
|
|
|
+
|
|
|
+ bool is_insert_text_operation() const;
|
|
|
+
|
|
|
+ void tag_saved_version();
|
|
|
+
|
|
|
+ uint32_t get_version() const;
|
|
|
+ uint32_t get_saved_version() const;
|
|
|
+
|
|
|
+ /* Search */
|
|
|
+ void set_search_text(const String &p_search_text);
|
|
|
+ void set_search_flags(uint32_t p_flags);
|
|
|
+
|
|
|
+ Point2i search(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column) const;
|
|
|
+
|
|
|
+ /* Mouse */
|
|
|
+ Point2 get_local_mouse_pos() const;
|
|
|
+
|
|
|
+ String get_word_at_pos(const Vector2 &p_pos) const;
|
|
|
+
|
|
|
+ Point2i get_line_column_at_pos(const Point2i &p_pos) const;
|
|
|
+ int get_minimap_line_at_pos(const Point2i &p_pos) const;
|
|
|
+
|
|
|
+ bool is_dragging_cursor() const;
|
|
|
+
|
|
|
/* Caret */
|
|
|
void set_caret_type(CaretType p_type);
|
|
|
CaretType get_caret_type() const;
|
|
@@ -569,6 +711,8 @@ public:
|
|
|
|
|
|
int get_caret_wrap_index() const;
|
|
|
|
|
|
+ String get_word_under_caret() const;
|
|
|
+
|
|
|
/* Selection. */
|
|
|
void set_selecting_enabled(const bool p_enabled);
|
|
|
bool is_selecting_enabled() const;
|
|
@@ -609,7 +753,7 @@ public:
|
|
|
Vector<String> get_line_wrapped_text(int p_line) const;
|
|
|
|
|
|
/* Viewport. */
|
|
|
- //Scrolling.
|
|
|
+ // Scrolling.
|
|
|
void set_smooth_scroll_enabled(const bool p_enable);
|
|
|
bool is_smooth_scroll_enabled() const;
|
|
|
|
|
@@ -653,10 +797,6 @@ public:
|
|
|
|
|
|
int get_minimap_visible_lines() const;
|
|
|
|
|
|
- /* Syntax Highlighting. */
|
|
|
- Ref<SyntaxHighlighter> get_syntax_highlighter();
|
|
|
- void set_syntax_highlighter(Ref<SyntaxHighlighter> p_syntax_highlighter);
|
|
|
-
|
|
|
/* Gutters. */
|
|
|
void add_gutter(int p_at = -1);
|
|
|
void remove_gutter(int p_gutter);
|
|
@@ -692,161 +832,40 @@ public:
|
|
|
void set_line_gutter_text(int p_line, int p_gutter, const String &p_text);
|
|
|
String get_line_gutter_text(int p_line, int p_gutter) const;
|
|
|
|
|
|
- void set_line_gutter_icon(int p_line, int p_gutter, Ref<Texture2D> p_icon);
|
|
|
+ void set_line_gutter_icon(int p_line, int p_gutter, const Ref<Texture2D> &p_icon);
|
|
|
Ref<Texture2D> get_line_gutter_icon(int p_line, int p_gutter) const;
|
|
|
|
|
|
void set_line_gutter_item_color(int p_line, int p_gutter, const Color &p_color);
|
|
|
- Color get_line_gutter_item_color(int p_line, int p_gutter);
|
|
|
+ Color get_line_gutter_item_color(int p_line, int p_gutter) const;
|
|
|
|
|
|
void set_line_gutter_clickable(int p_line, int p_gutter, bool p_clickable);
|
|
|
bool is_line_gutter_clickable(int p_line, int p_gutter) const;
|
|
|
|
|
|
// Line style
|
|
|
void set_line_background_color(int p_line, const Color &p_color);
|
|
|
- Color get_line_background_color(int p_line);
|
|
|
+ Color get_line_background_color(int p_line) const;
|
|
|
|
|
|
- enum MenuItems {
|
|
|
- MENU_CUT,
|
|
|
- MENU_COPY,
|
|
|
- MENU_PASTE,
|
|
|
- MENU_CLEAR,
|
|
|
- MENU_SELECT_ALL,
|
|
|
- MENU_UNDO,
|
|
|
- MENU_REDO,
|
|
|
- MENU_DIR_INHERITED,
|
|
|
- MENU_DIR_AUTO,
|
|
|
- MENU_DIR_LTR,
|
|
|
- MENU_DIR_RTL,
|
|
|
- MENU_DISPLAY_UCC,
|
|
|
- MENU_INSERT_LRM,
|
|
|
- MENU_INSERT_RLM,
|
|
|
- MENU_INSERT_LRE,
|
|
|
- MENU_INSERT_RLE,
|
|
|
- MENU_INSERT_LRO,
|
|
|
- MENU_INSERT_RLO,
|
|
|
- MENU_INSERT_PDF,
|
|
|
- MENU_INSERT_ALM,
|
|
|
- MENU_INSERT_LRI,
|
|
|
- MENU_INSERT_RLI,
|
|
|
- MENU_INSERT_FSI,
|
|
|
- MENU_INSERT_PDI,
|
|
|
- MENU_INSERT_ZWJ,
|
|
|
- MENU_INSERT_ZWNJ,
|
|
|
- MENU_INSERT_WJ,
|
|
|
- MENU_INSERT_SHY,
|
|
|
- MENU_MAX
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- enum SearchFlags {
|
|
|
- SEARCH_MATCH_CASE = 1,
|
|
|
- SEARCH_WHOLE_WORDS = 2,
|
|
|
- SEARCH_BACKWARDS = 4
|
|
|
- };
|
|
|
-
|
|
|
- virtual CursorShape get_cursor_shape(const Point2 &p_pos = Point2i()) const override;
|
|
|
-
|
|
|
- Point2 _get_local_mouse_pos() const;
|
|
|
- void _get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) const;
|
|
|
- void _get_minimap_mouse_row(const Point2i &p_mouse, int &r_row) const;
|
|
|
- bool is_dragging_cursor() const;
|
|
|
-
|
|
|
- void begin_complex_operation();
|
|
|
- void end_complex_operation();
|
|
|
-
|
|
|
- bool is_insert_text_operation();
|
|
|
-
|
|
|
- void set_text_direction(TextDirection p_text_direction);
|
|
|
- TextDirection get_text_direction() const;
|
|
|
-
|
|
|
- void set_opentype_feature(const String &p_name, int p_value);
|
|
|
- int get_opentype_feature(const String &p_name) const;
|
|
|
- void clear_opentype_features();
|
|
|
-
|
|
|
- void set_language(const String &p_language);
|
|
|
- String get_language() const;
|
|
|
-
|
|
|
- void set_draw_control_chars(bool p_draw_control_chars);
|
|
|
- bool get_draw_control_chars() const;
|
|
|
-
|
|
|
- void set_structured_text_bidi_override(Control::StructuredTextParser p_parser);
|
|
|
- Control::StructuredTextParser get_structured_text_bidi_override() const;
|
|
|
-
|
|
|
- void set_structured_text_bidi_override_options(Array p_args);
|
|
|
- Array get_structured_text_bidi_override_options() const;
|
|
|
-
|
|
|
- void set_text(String p_text);
|
|
|
- void insert_text_at_caret(const String &p_text);
|
|
|
- void insert_at(const String &p_text, int at);
|
|
|
- int get_line_count() const;
|
|
|
- int get_line_width(int p_line, int p_wrap_offset = -1) const;
|
|
|
-
|
|
|
- int num_lines_from(int p_line_from, int visible_amount) const;
|
|
|
- int num_lines_from_rows(int p_line_from, int p_wrap_index_from, int visible_amount, int &wrap_index) const;
|
|
|
- int get_last_unhidden_line() const;
|
|
|
-
|
|
|
- String get_text();
|
|
|
- String get_line(int line) const;
|
|
|
- bool has_ime_text() const;
|
|
|
- void set_line(int line, String new_text);
|
|
|
- int get_row_height() const;
|
|
|
-
|
|
|
- int get_indent_level(int p_line) const;
|
|
|
- int get_first_non_whitespace_column(int p_line) const;
|
|
|
-
|
|
|
- void clear();
|
|
|
-
|
|
|
- void swap_lines(int line1, int line2);
|
|
|
+ /* Syntax Highlighting. */
|
|
|
+ void set_syntax_highlighter(Ref<SyntaxHighlighter> p_syntax_highlighter);
|
|
|
+ Ref<SyntaxHighlighter> get_syntax_highlighter() const;
|
|
|
|
|
|
- void set_search_text(const String &p_search_text);
|
|
|
- void set_search_flags(uint32_t p_flags);
|
|
|
- void set_current_search_result(int line, int col);
|
|
|
+ /* Visual. */
|
|
|
+ void set_highlight_current_line(bool p_enabled);
|
|
|
+ bool is_highlight_current_line_enabled() const;
|
|
|
|
|
|
void set_highlight_all_occurrences(const bool p_enabled);
|
|
|
bool is_highlight_all_occurrences_enabled() const;
|
|
|
|
|
|
- String get_word_under_caret() const;
|
|
|
- String get_word_at_pos(const Vector2 &p_pos) const;
|
|
|
-
|
|
|
- bool search(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column, int &r_line, int &r_column) const;
|
|
|
-
|
|
|
- void undo();
|
|
|
- void redo();
|
|
|
- void clear_undo_history();
|
|
|
+ void set_draw_control_chars(bool p_draw_control_chars);
|
|
|
+ bool get_draw_control_chars() const;
|
|
|
|
|
|
- void set_tab_size(const int p_size);
|
|
|
- int get_tab_size() const;
|
|
|
void set_draw_tabs(bool p_draw);
|
|
|
bool is_drawing_tabs() const;
|
|
|
+
|
|
|
void set_draw_spaces(bool p_draw);
|
|
|
bool is_drawing_spaces() const;
|
|
|
|
|
|
- uint32_t get_version() const;
|
|
|
- uint32_t get_saved_version() const;
|
|
|
- void tag_saved_version();
|
|
|
-
|
|
|
- void menu_option(int p_option);
|
|
|
-
|
|
|
- void set_highlight_current_line(bool p_enabled);
|
|
|
- bool is_highlight_current_line_enabled() const;
|
|
|
-
|
|
|
- void set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata);
|
|
|
-
|
|
|
- void set_context_menu_enabled(bool p_enable);
|
|
|
- bool is_context_menu_enabled();
|
|
|
-
|
|
|
- void set_shortcut_keys_enabled(bool p_enabled);
|
|
|
- bool is_shortcut_keys_enabled() const;
|
|
|
-
|
|
|
- void set_virtual_keyboard_enabled(bool p_enable);
|
|
|
- bool is_virtual_keyboard_enabled() const;
|
|
|
-
|
|
|
- bool is_menu_visible() const;
|
|
|
- PopupMenu *get_menu() const;
|
|
|
-
|
|
|
- virtual bool is_text_field() const override;
|
|
|
TextEdit();
|
|
|
- ~TextEdit();
|
|
|
};
|
|
|
|
|
|
VARIANT_ENUM_CAST(TextEdit::CaretType);
|