Add and convert editor to use CodeEdit
This commit is contained in:
parent
d782405bcf
commit
a0b409cb14
@ -40,7 +40,7 @@
|
|||||||
#include "scene/gui/separator.h"
|
#include "scene/gui/separator.h"
|
||||||
#include "scene/resources/dynamic_font.h"
|
#include "scene/resources/dynamic_font.h"
|
||||||
|
|
||||||
void GotoLineDialog::popup_find_line(TextEdit *p_edit) {
|
void GotoLineDialog::popup_find_line(CodeEdit *p_edit) {
|
||||||
text_editor = p_edit;
|
text_editor = p_edit;
|
||||||
|
|
||||||
line->set_text(itos(text_editor->cursor_get_line()));
|
line->set_text(itos(text_editor->cursor_get_line()));
|
||||||
@ -113,7 +113,7 @@ void FindReplaceBar::_unhandled_input(const Ref<InputEvent> &p_event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Control *focus_owner = get_focus_owner();
|
Control *focus_owner = get_focus_owner();
|
||||||
if (text_edit->has_focus() || (focus_owner && vbc_lineedit->is_a_parent_of(focus_owner))) {
|
if (text_editor->has_focus() || (focus_owner && vbc_lineedit->is_a_parent_of(focus_owner))) {
|
||||||
bool accepted = true;
|
bool accepted = true;
|
||||||
|
|
||||||
switch (k->get_keycode()) {
|
switch (k->get_keycode()) {
|
||||||
@ -135,20 +135,20 @@ bool FindReplaceBar::_search(uint32_t p_flags, int p_from_line, int p_from_col)
|
|||||||
int line, col;
|
int line, col;
|
||||||
String text = get_search_text();
|
String text = get_search_text();
|
||||||
|
|
||||||
bool found = text_edit->search(text, p_flags, p_from_line, p_from_col, line, col);
|
bool found = text_editor->search(text, p_flags, p_from_line, p_from_col, line, col);
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
if (!preserve_cursor) {
|
if (!preserve_cursor) {
|
||||||
text_edit->unfold_line(line);
|
text_editor->unfold_line(line);
|
||||||
text_edit->cursor_set_line(line, false);
|
text_editor->cursor_set_line(line, false);
|
||||||
text_edit->cursor_set_column(col + text.length(), false);
|
text_editor->cursor_set_column(col + text.length(), false);
|
||||||
text_edit->center_viewport_to_cursor();
|
text_editor->center_viewport_to_cursor();
|
||||||
text_edit->select(line, col, line, col + text.length());
|
text_editor->select(line, col, line, col + text.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
text_edit->set_search_text(text);
|
text_editor->set_search_text(text);
|
||||||
text_edit->set_search_flags(p_flags);
|
text_editor->set_search_flags(p_flags);
|
||||||
text_edit->set_current_search_result(line, col);
|
text_editor->set_current_search_result(line, col);
|
||||||
|
|
||||||
result_line = line;
|
result_line = line;
|
||||||
result_col = col;
|
result_col = col;
|
||||||
@ -158,9 +158,9 @@ bool FindReplaceBar::_search(uint32_t p_flags, int p_from_line, int p_from_col)
|
|||||||
results_count = 0;
|
results_count = 0;
|
||||||
result_line = -1;
|
result_line = -1;
|
||||||
result_col = -1;
|
result_col = -1;
|
||||||
text_edit->set_search_text("");
|
text_editor->set_search_text("");
|
||||||
text_edit->set_search_flags(p_flags);
|
text_editor->set_search_flags(p_flags);
|
||||||
text_edit->set_current_search_result(line, col);
|
text_editor->set_current_search_result(line, col);
|
||||||
}
|
}
|
||||||
|
|
||||||
_update_matches_label();
|
_update_matches_label();
|
||||||
@ -169,67 +169,67 @@ bool FindReplaceBar::_search(uint32_t p_flags, int p_from_line, int p_from_col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_replace() {
|
void FindReplaceBar::_replace() {
|
||||||
bool selection_enabled = text_edit->is_selection_active();
|
bool selection_enabled = text_editor->is_selection_active();
|
||||||
Point2i selection_begin, selection_end;
|
Point2i selection_begin, selection_end;
|
||||||
if (selection_enabled) {
|
if (selection_enabled) {
|
||||||
selection_begin = Point2i(text_edit->get_selection_from_line(), text_edit->get_selection_from_column());
|
selection_begin = Point2i(text_editor->get_selection_from_line(), text_editor->get_selection_from_column());
|
||||||
selection_end = Point2i(text_edit->get_selection_to_line(), text_edit->get_selection_to_column());
|
selection_end = Point2i(text_editor->get_selection_to_line(), text_editor->get_selection_to_column());
|
||||||
}
|
}
|
||||||
|
|
||||||
String replace_text = get_replace_text();
|
String replace_text = get_replace_text();
|
||||||
int search_text_len = get_search_text().length();
|
int search_text_len = get_search_text().length();
|
||||||
|
|
||||||
text_edit->begin_complex_operation();
|
text_editor->begin_complex_operation();
|
||||||
if (selection_enabled && is_selection_only()) { // To restrict search_current() to selected region
|
if (selection_enabled && is_selection_only()) { // To restrict search_current() to selected region
|
||||||
text_edit->cursor_set_line(selection_begin.width);
|
text_editor->cursor_set_line(selection_begin.width);
|
||||||
text_edit->cursor_set_column(selection_begin.height);
|
text_editor->cursor_set_column(selection_begin.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (search_current()) {
|
if (search_current()) {
|
||||||
text_edit->unfold_line(result_line);
|
text_editor->unfold_line(result_line);
|
||||||
text_edit->select(result_line, result_col, result_line, result_col + search_text_len);
|
text_editor->select(result_line, result_col, result_line, result_col + search_text_len);
|
||||||
|
|
||||||
if (selection_enabled && is_selection_only()) {
|
if (selection_enabled && is_selection_only()) {
|
||||||
Point2i match_from(result_line, result_col);
|
Point2i match_from(result_line, result_col);
|
||||||
Point2i match_to(result_line, result_col + search_text_len);
|
Point2i match_to(result_line, result_col + search_text_len);
|
||||||
if (!(match_from < selection_begin || match_to > selection_end)) {
|
if (!(match_from < selection_begin || match_to > selection_end)) {
|
||||||
text_edit->insert_text_at_cursor(replace_text);
|
text_editor->insert_text_at_cursor(replace_text);
|
||||||
if (match_to.x == selection_end.x) { // Adjust selection bounds if necessary
|
if (match_to.x == selection_end.x) { // Adjust selection bounds if necessary
|
||||||
selection_end.y += replace_text.length() - search_text_len;
|
selection_end.y += replace_text.length() - search_text_len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
text_edit->insert_text_at_cursor(replace_text);
|
text_editor->insert_text_at_cursor(replace_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
text_edit->end_complex_operation();
|
text_editor->end_complex_operation();
|
||||||
results_count = -1;
|
results_count = -1;
|
||||||
|
|
||||||
if (selection_enabled && is_selection_only()) {
|
if (selection_enabled && is_selection_only()) {
|
||||||
// Reselect in order to keep 'Replace' restricted to selection
|
// Reselect in order to keep 'Replace' restricted to selection
|
||||||
text_edit->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y);
|
text_editor->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y);
|
||||||
} else {
|
} else {
|
||||||
text_edit->deselect();
|
text_editor->deselect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_replace_all() {
|
void FindReplaceBar::_replace_all() {
|
||||||
text_edit->disconnect("text_changed", callable_mp(this, &FindReplaceBar::_editor_text_changed));
|
text_editor->disconnect("text_changed", callable_mp(this, &FindReplaceBar::_editor_text_changed));
|
||||||
// Line as x so it gets priority in comparison, column as y.
|
// Line as x so it gets priority in comparison, column as y.
|
||||||
Point2i orig_cursor(text_edit->cursor_get_line(), text_edit->cursor_get_column());
|
Point2i orig_cursor(text_editor->cursor_get_line(), text_editor->cursor_get_column());
|
||||||
Point2i prev_match = Point2(-1, -1);
|
Point2i prev_match = Point2(-1, -1);
|
||||||
|
|
||||||
bool selection_enabled = text_edit->is_selection_active();
|
bool selection_enabled = text_editor->is_selection_active();
|
||||||
Point2i selection_begin, selection_end;
|
Point2i selection_begin, selection_end;
|
||||||
if (selection_enabled) {
|
if (selection_enabled) {
|
||||||
selection_begin = Point2i(text_edit->get_selection_from_line(), text_edit->get_selection_from_column());
|
selection_begin = Point2i(text_editor->get_selection_from_line(), text_editor->get_selection_from_column());
|
||||||
selection_end = Point2i(text_edit->get_selection_to_line(), text_edit->get_selection_to_column());
|
selection_end = Point2i(text_editor->get_selection_to_line(), text_editor->get_selection_to_column());
|
||||||
}
|
}
|
||||||
|
|
||||||
int vsval = text_edit->get_v_scroll();
|
int vsval = text_editor->get_v_scroll();
|
||||||
|
|
||||||
text_edit->cursor_set_line(0);
|
text_editor->cursor_set_line(0);
|
||||||
text_edit->cursor_set_column(0);
|
text_editor->cursor_set_column(0);
|
||||||
|
|
||||||
String replace_text = get_replace_text();
|
String replace_text = get_replace_text();
|
||||||
int search_text_len = get_search_text().length();
|
int search_text_len = get_search_text().length();
|
||||||
@ -238,11 +238,11 @@ void FindReplaceBar::_replace_all() {
|
|||||||
|
|
||||||
replace_all_mode = true;
|
replace_all_mode = true;
|
||||||
|
|
||||||
text_edit->begin_complex_operation();
|
text_editor->begin_complex_operation();
|
||||||
|
|
||||||
if (selection_enabled && is_selection_only()) {
|
if (selection_enabled && is_selection_only()) {
|
||||||
text_edit->cursor_set_line(selection_begin.width);
|
text_editor->cursor_set_line(selection_begin.width);
|
||||||
text_edit->cursor_set_column(selection_begin.height);
|
text_editor->cursor_set_column(selection_begin.height);
|
||||||
}
|
}
|
||||||
if (search_current()) {
|
if (search_current()) {
|
||||||
do {
|
do {
|
||||||
@ -256,8 +256,8 @@ void FindReplaceBar::_replace_all() {
|
|||||||
|
|
||||||
prev_match = Point2i(result_line, result_col + replace_text.length());
|
prev_match = Point2i(result_line, result_col + replace_text.length());
|
||||||
|
|
||||||
text_edit->unfold_line(result_line);
|
text_editor->unfold_line(result_line);
|
||||||
text_edit->select(result_line, result_col, result_line, match_to.y);
|
text_editor->select(result_line, result_col, result_line, match_to.y);
|
||||||
|
|
||||||
if (selection_enabled && is_selection_only()) {
|
if (selection_enabled && is_selection_only()) {
|
||||||
if (match_from < selection_begin || match_to > selection_end) {
|
if (match_from < selection_begin || match_to > selection_end) {
|
||||||
@ -265,48 +265,48 @@ void FindReplaceBar::_replace_all() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Replace but adjust selection bounds.
|
// Replace but adjust selection bounds.
|
||||||
text_edit->insert_text_at_cursor(replace_text);
|
text_editor->insert_text_at_cursor(replace_text);
|
||||||
if (match_to.x == selection_end.x) {
|
if (match_to.x == selection_end.x) {
|
||||||
selection_end.y += replace_text.length() - search_text_len;
|
selection_end.y += replace_text.length() - search_text_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Just replace.
|
// Just replace.
|
||||||
text_edit->insert_text_at_cursor(replace_text);
|
text_editor->insert_text_at_cursor(replace_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
rc++;
|
rc++;
|
||||||
} while (search_next());
|
} while (search_next());
|
||||||
}
|
}
|
||||||
|
|
||||||
text_edit->end_complex_operation();
|
text_editor->end_complex_operation();
|
||||||
|
|
||||||
replace_all_mode = false;
|
replace_all_mode = false;
|
||||||
|
|
||||||
// Restore editor state (selection, cursor, scroll).
|
// Restore editor state (selection, cursor, scroll).
|
||||||
text_edit->cursor_set_line(orig_cursor.x);
|
text_editor->cursor_set_line(orig_cursor.x);
|
||||||
text_edit->cursor_set_column(orig_cursor.y);
|
text_editor->cursor_set_column(orig_cursor.y);
|
||||||
|
|
||||||
if (selection_enabled && is_selection_only()) {
|
if (selection_enabled && is_selection_only()) {
|
||||||
// Reselect.
|
// Reselect.
|
||||||
text_edit->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y);
|
text_editor->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y);
|
||||||
} else {
|
} else {
|
||||||
text_edit->deselect();
|
text_editor->deselect();
|
||||||
}
|
}
|
||||||
|
|
||||||
text_edit->set_v_scroll(vsval);
|
text_editor->set_v_scroll(vsval);
|
||||||
matches_label->add_theme_color_override("font_color", rc > 0 ? get_theme_color("font_color", "Label") : get_theme_color("error_color", "Editor"));
|
matches_label->add_theme_color_override("font_color", rc > 0 ? get_theme_color("font_color", "Label") : get_theme_color("error_color", "Editor"));
|
||||||
matches_label->set_text(vformat(TTR("%d replaced."), rc));
|
matches_label->set_text(vformat(TTR("%d replaced."), rc));
|
||||||
|
|
||||||
text_edit->call_deferred("connect", "text_changed", Callable(this, "_editor_text_changed"));
|
text_editor->call_deferred("connect", "text_changed", Callable(this, "_editor_text_changed"));
|
||||||
results_count = -1;
|
results_count = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_get_search_from(int &r_line, int &r_col) {
|
void FindReplaceBar::_get_search_from(int &r_line, int &r_col) {
|
||||||
r_line = text_edit->cursor_get_line();
|
r_line = text_editor->cursor_get_line();
|
||||||
r_col = text_edit->cursor_get_column();
|
r_col = text_editor->cursor_get_column();
|
||||||
|
|
||||||
if (text_edit->is_selection_active() && is_selection_only()) {
|
if (text_editor->is_selection_active() && is_selection_only()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,7 +327,7 @@ void FindReplaceBar::_update_results_count() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String full_text = text_edit->get_text();
|
String full_text = text_editor->get_text();
|
||||||
|
|
||||||
int from_pos = 0;
|
int from_pos = 0;
|
||||||
|
|
||||||
@ -399,7 +399,7 @@ bool FindReplaceBar::search_prev() {
|
|||||||
|
|
||||||
int line, col;
|
int line, col;
|
||||||
_get_search_from(line, col);
|
_get_search_from(line, col);
|
||||||
if (text_edit->is_selection_active()) {
|
if (text_editor->is_selection_active()) {
|
||||||
col--; // Skip currently selected word.
|
col--; // Skip currently selected word.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,9 +407,9 @@ bool FindReplaceBar::search_prev() {
|
|||||||
if (col < 0) {
|
if (col < 0) {
|
||||||
line -= 1;
|
line -= 1;
|
||||||
if (line < 0) {
|
if (line < 0) {
|
||||||
line = text_edit->get_line_count() - 1;
|
line = text_editor->get_line_count() - 1;
|
||||||
}
|
}
|
||||||
col = text_edit->get_line(line).length();
|
col = text_editor->get_line(line).length();
|
||||||
}
|
}
|
||||||
|
|
||||||
return _search(flags, line, col);
|
return _search(flags, line, col);
|
||||||
@ -440,9 +440,9 @@ bool FindReplaceBar::search_next() {
|
|||||||
|
|
||||||
if (line == result_line && col == result_col) {
|
if (line == result_line && col == result_col) {
|
||||||
col += text.length();
|
col += text.length();
|
||||||
if (col > text_edit->get_line(line).length()) {
|
if (col > text_editor->get_line(line).length()) {
|
||||||
line += 1;
|
line += 1;
|
||||||
if (line >= text_edit->get_line_count()) {
|
if (line >= text_editor->get_line_count()) {
|
||||||
line = 0;
|
line = 0;
|
||||||
}
|
}
|
||||||
col = 0;
|
col = 0;
|
||||||
@ -454,10 +454,10 @@ bool FindReplaceBar::search_next() {
|
|||||||
|
|
||||||
void FindReplaceBar::_hide_bar() {
|
void FindReplaceBar::_hide_bar() {
|
||||||
if (replace_text->has_focus() || search_text->has_focus()) {
|
if (replace_text->has_focus() || search_text->has_focus()) {
|
||||||
text_edit->grab_focus();
|
text_editor->grab_focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
text_edit->set_search_text("");
|
text_editor->set_search_text("");
|
||||||
result_line = -1;
|
result_line = -1;
|
||||||
result_col = -1;
|
result_col = -1;
|
||||||
hide();
|
hide();
|
||||||
@ -477,8 +477,8 @@ void FindReplaceBar::_show_search(bool p_focus_replace, bool p_show_only) {
|
|||||||
search_text->call_deferred("grab_focus");
|
search_text->call_deferred("grab_focus");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (text_edit->is_selection_active() && !selection_only->is_pressed()) {
|
if (text_editor->is_selection_active() && !selection_only->is_pressed()) {
|
||||||
search_text->set_text(text_edit->get_selection_text());
|
search_text->set_text(text_editor->get_selection_text());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!get_search_text().empty()) {
|
if (!get_search_text().empty()) {
|
||||||
@ -511,9 +511,9 @@ void FindReplaceBar::popup_replace() {
|
|||||||
hbc_option_replace->show();
|
hbc_option_replace->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
selection_only->set_pressed((text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line()));
|
selection_only->set_pressed((text_editor->is_selection_active() && text_editor->get_selection_from_line() < text_editor->get_selection_to_line()));
|
||||||
|
|
||||||
_show_search(is_visible() || text_edit->is_selection_active());
|
_show_search(is_visible() || text_editor->is_selection_active());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_search_options_changed(bool p_pressed) {
|
void FindReplaceBar::_search_options_changed(bool p_pressed) {
|
||||||
@ -544,7 +544,7 @@ void FindReplaceBar::_search_text_entered(const String &p_text) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_replace_text_entered(const String &p_text) {
|
void FindReplaceBar::_replace_text_entered(const String &p_text) {
|
||||||
if (selection_only->is_pressed() && text_edit->is_selection_active()) {
|
if (selection_only->is_pressed() && text_editor->is_selection_active()) {
|
||||||
_replace_all();
|
_replace_all();
|
||||||
_hide_bar();
|
_hide_bar();
|
||||||
} else if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
|
} else if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
|
||||||
@ -579,10 +579,10 @@ void FindReplaceBar::set_error(const String &p_label) {
|
|||||||
emit_signal("error", p_label);
|
emit_signal("error", p_label);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) {
|
void FindReplaceBar::set_text_edit(CodeEdit *p_text_edit) {
|
||||||
results_count = -1;
|
results_count = -1;
|
||||||
text_edit = p_text_edit;
|
text_editor = p_text_edit;
|
||||||
text_edit->connect("text_changed", callable_mp(this, &FindReplaceBar::_editor_text_changed));
|
text_editor->connect("text_changed", callable_mp(this, &FindReplaceBar::_editor_text_changed));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_bind_methods() {
|
void FindReplaceBar::_bind_methods() {
|
||||||
@ -1405,8 +1405,8 @@ Variant CodeTextEditor::get_edit_state() {
|
|||||||
state["column"] = text_editor->cursor_get_column();
|
state["column"] = text_editor->cursor_get_column();
|
||||||
state["row"] = text_editor->cursor_get_line();
|
state["row"] = text_editor->cursor_get_line();
|
||||||
|
|
||||||
state["selection"] = get_text_edit()->is_selection_active();
|
state["selection"] = get_text_editor()->is_selection_active();
|
||||||
if (get_text_edit()->is_selection_active()) {
|
if (get_text_editor()->is_selection_active()) {
|
||||||
state["selection_from_line"] = text_editor->get_selection_from_line();
|
state["selection_from_line"] = text_editor->get_selection_from_line();
|
||||||
state["selection_from_column"] = text_editor->get_selection_from_column();
|
state["selection_from_column"] = text_editor->get_selection_from_column();
|
||||||
state["selection_to_line"] = text_editor->get_selection_to_line();
|
state["selection_to_line"] = text_editor->get_selection_to_line();
|
||||||
@ -1681,7 +1681,7 @@ CodeTextEditor::CodeTextEditor() {
|
|||||||
ED_SHORTCUT("script_editor/zoom_out", TTR("Zoom Out"), KEY_MASK_CMD | KEY_MINUS);
|
ED_SHORTCUT("script_editor/zoom_out", TTR("Zoom Out"), KEY_MASK_CMD | KEY_MINUS);
|
||||||
ED_SHORTCUT("script_editor/reset_zoom", TTR("Reset Zoom"), KEY_MASK_CMD | KEY_0);
|
ED_SHORTCUT("script_editor/reset_zoom", TTR("Reset Zoom"), KEY_MASK_CMD | KEY_0);
|
||||||
|
|
||||||
text_editor = memnew(TextEdit);
|
text_editor = memnew(CodeEdit);
|
||||||
add_child(text_editor);
|
add_child(text_editor);
|
||||||
text_editor->set_v_size_flags(SIZE_EXPAND_FILL);
|
text_editor->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||||
|
|
||||||
|
@ -34,9 +34,9 @@
|
|||||||
#include "editor/editor_plugin.h"
|
#include "editor/editor_plugin.h"
|
||||||
#include "scene/gui/check_box.h"
|
#include "scene/gui/check_box.h"
|
||||||
#include "scene/gui/check_button.h"
|
#include "scene/gui/check_button.h"
|
||||||
|
#include "scene/gui/code_edit.h"
|
||||||
#include "scene/gui/dialogs.h"
|
#include "scene/gui/dialogs.h"
|
||||||
#include "scene/gui/line_edit.h"
|
#include "scene/gui/line_edit.h"
|
||||||
#include "scene/gui/text_edit.h"
|
|
||||||
#include "scene/main/timer.h"
|
#include "scene/main/timer.h"
|
||||||
|
|
||||||
class GotoLineDialog : public ConfirmationDialog {
|
class GotoLineDialog : public ConfirmationDialog {
|
||||||
@ -45,15 +45,15 @@ class GotoLineDialog : public ConfirmationDialog {
|
|||||||
Label *line_label;
|
Label *line_label;
|
||||||
LineEdit *line;
|
LineEdit *line;
|
||||||
|
|
||||||
TextEdit *text_editor;
|
CodeEdit *text_editor;
|
||||||
|
|
||||||
virtual void ok_pressed() override;
|
virtual void ok_pressed() override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void popup_find_line(TextEdit *p_edit);
|
void popup_find_line(CodeEdit *p_edit);
|
||||||
int get_line() const;
|
int get_line() const;
|
||||||
|
|
||||||
void set_text_editor(TextEdit *p_text_editor);
|
void set_text_editor(CodeEdit *p_text_editor);
|
||||||
GotoLineDialog();
|
GotoLineDialog();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ class FindReplaceBar : public HBoxContainer {
|
|||||||
HBoxContainer *hbc_button_replace;
|
HBoxContainer *hbc_button_replace;
|
||||||
HBoxContainer *hbc_option_replace;
|
HBoxContainer *hbc_option_replace;
|
||||||
|
|
||||||
TextEdit *text_edit;
|
CodeEdit *text_editor;
|
||||||
|
|
||||||
int result_line;
|
int result_line;
|
||||||
int result_col;
|
int result_col;
|
||||||
@ -120,7 +120,7 @@ public:
|
|||||||
bool is_selection_only() const;
|
bool is_selection_only() const;
|
||||||
void set_error(const String &p_label);
|
void set_error(const String &p_label);
|
||||||
|
|
||||||
void set_text_edit(TextEdit *p_text_edit);
|
void set_text_edit(CodeEdit *p_text_edit);
|
||||||
|
|
||||||
void popup_search(bool p_show_only = false);
|
void popup_search(bool p_show_only = false);
|
||||||
void popup_replace();
|
void popup_replace();
|
||||||
@ -137,7 +137,7 @@ typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code,
|
|||||||
class CodeTextEditor : public VBoxContainer {
|
class CodeTextEditor : public VBoxContainer {
|
||||||
GDCLASS(CodeTextEditor, VBoxContainer);
|
GDCLASS(CodeTextEditor, VBoxContainer);
|
||||||
|
|
||||||
TextEdit *text_editor;
|
CodeEdit *text_editor;
|
||||||
FindReplaceBar *find_replace_bar;
|
FindReplaceBar *find_replace_bar;
|
||||||
HBoxContainer *status_bar;
|
HBoxContainer *status_bar;
|
||||||
|
|
||||||
@ -240,7 +240,7 @@ public:
|
|||||||
void set_error(const String &p_error);
|
void set_error(const String &p_error);
|
||||||
void set_error_pos(int p_line, int p_column);
|
void set_error_pos(int p_line, int p_column);
|
||||||
void update_line_and_column() { _line_col_changed(); }
|
void update_line_and_column() { _line_col_changed(); }
|
||||||
TextEdit *get_text_edit() { return text_editor; }
|
CodeEdit *get_text_editor() { return text_editor; }
|
||||||
FindReplaceBar *get_find_replace_bar() { return find_replace_bar; }
|
FindReplaceBar *get_find_replace_bar() { return find_replace_bar; }
|
||||||
virtual void apply_code() {}
|
virtual void apply_code() {}
|
||||||
void goto_error();
|
void goto_error();
|
||||||
|
@ -874,6 +874,19 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
theme->set_color("caret_color", "TextEdit", font_color);
|
theme->set_color("caret_color", "TextEdit", font_color);
|
||||||
theme->set_color("selection_color", "TextEdit", font_color_selection);
|
theme->set_color("selection_color", "TextEdit", font_color_selection);
|
||||||
|
|
||||||
|
// CodeEdit
|
||||||
|
theme->set_stylebox("normal", "CodeEdit", style_widget);
|
||||||
|
theme->set_stylebox("focus", "CodeEdit", style_widget_hover);
|
||||||
|
theme->set_stylebox("read_only", "CodeEdit", style_widget_disabled);
|
||||||
|
theme->set_constant("side_margin", "TabContainer", 0);
|
||||||
|
theme->set_icon("tab", "CodeEdit", theme->get_icon("GuiTab", "EditorIcons"));
|
||||||
|
theme->set_icon("space", "CodeEdit", theme->get_icon("GuiSpace", "EditorIcons"));
|
||||||
|
theme->set_icon("folded", "CodeEdit", theme->get_icon("GuiTreeArrowRight", "EditorIcons"));
|
||||||
|
theme->set_icon("fold", "CodeEdit", theme->get_icon("GuiTreeArrowDown", "EditorIcons"));
|
||||||
|
theme->set_color("font_color", "CodeEdit", font_color);
|
||||||
|
theme->set_color("caret_color", "CodeEdit", font_color);
|
||||||
|
theme->set_color("selection_color", "CodeEdit", font_color_selection);
|
||||||
|
|
||||||
// H/VSplitContainer
|
// H/VSplitContainer
|
||||||
theme->set_stylebox("bg", "VSplitContainer", make_stylebox(theme->get_icon("GuiVsplitBg", "EditorIcons"), 1, 1, 1, 1));
|
theme->set_stylebox("bg", "VSplitContainer", make_stylebox(theme->get_icon("GuiVsplitBg", "EditorIcons"), 1, 1, 1, 1));
|
||||||
theme->set_stylebox("bg", "HSplitContainer", make_stylebox(theme->get_icon("GuiHsplitBg", "EditorIcons"), 1, 1, 1, 1));
|
theme->set_stylebox("bg", "HSplitContainer", make_stylebox(theme->get_icon("GuiHsplitBg", "EditorIcons"), 1, 1, 1, 1));
|
||||||
|
@ -111,7 +111,7 @@ ConnectionInfoDialog::ConnectionInfoDialog() {
|
|||||||
Vector<String> ScriptTextEditor::get_functions() {
|
Vector<String> ScriptTextEditor::get_functions() {
|
||||||
String errortxt;
|
String errortxt;
|
||||||
int line = -1, col;
|
int line = -1, col;
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
String text = te->get_text();
|
String text = te->get_text();
|
||||||
List<String> fnc;
|
List<String> fnc;
|
||||||
|
|
||||||
@ -130,9 +130,9 @@ void ScriptTextEditor::apply_code() {
|
|||||||
if (script.is_null()) {
|
if (script.is_null()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
script->set_source_code(code_editor->get_text_edit()->get_text());
|
script->set_source_code(code_editor->get_text_editor()->get_text());
|
||||||
script->update_exports();
|
script->update_exports();
|
||||||
code_editor->get_text_edit()->get_syntax_highlighter()->update_cache();
|
code_editor->get_text_editor()->get_syntax_highlighter()->update_cache();
|
||||||
}
|
}
|
||||||
|
|
||||||
RES ScriptTextEditor::get_edited_resource() const {
|
RES ScriptTextEditor::get_edited_resource() const {
|
||||||
@ -145,9 +145,9 @@ void ScriptTextEditor::set_edited_resource(const RES &p_res) {
|
|||||||
|
|
||||||
script = p_res;
|
script = p_res;
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_text(script->get_source_code());
|
code_editor->get_text_editor()->set_text(script->get_source_code());
|
||||||
code_editor->get_text_edit()->clear_undo_history();
|
code_editor->get_text_editor()->clear_undo_history();
|
||||||
code_editor->get_text_edit()->tag_saved_version();
|
code_editor->get_text_editor()->tag_saved_version();
|
||||||
|
|
||||||
emit_signal("name_changed");
|
emit_signal("name_changed");
|
||||||
code_editor->update_line_and_column();
|
code_editor->update_line_and_column();
|
||||||
@ -167,7 +167,7 @@ void ScriptTextEditor::enable_editor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_load_theme_settings() {
|
void ScriptTextEditor::_load_theme_settings() {
|
||||||
TextEdit *text_edit = code_editor->get_text_edit();
|
CodeEdit *text_edit = code_editor->get_text_editor();
|
||||||
text_edit->clear_keywords();
|
text_edit->clear_keywords();
|
||||||
|
|
||||||
Color background_color = EDITOR_GET("text_editor/highlighting/background_color");
|
Color background_color = EDITOR_GET("text_editor/highlighting/background_color");
|
||||||
@ -233,7 +233,7 @@ void ScriptTextEditor::_set_theme_for_script() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEdit *text_edit = code_editor->get_text_edit();
|
CodeEdit *text_edit = code_editor->get_text_editor();
|
||||||
text_edit->get_syntax_highlighter()->update_cache();
|
text_edit->get_syntax_highlighter()->update_cache();
|
||||||
|
|
||||||
/* add keywords for auto completion */
|
/* add keywords for auto completion */
|
||||||
@ -284,10 +284,10 @@ void ScriptTextEditor::_show_warnings_panel(bool p_show) {
|
|||||||
|
|
||||||
void ScriptTextEditor::_warning_clicked(Variant p_line) {
|
void ScriptTextEditor::_warning_clicked(Variant p_line) {
|
||||||
if (p_line.get_type() == Variant::INT) {
|
if (p_line.get_type() == Variant::INT) {
|
||||||
code_editor->get_text_edit()->cursor_set_line(p_line.operator int64_t());
|
code_editor->get_text_editor()->cursor_set_line(p_line.operator int64_t());
|
||||||
} else if (p_line.get_type() == Variant::DICTIONARY) {
|
} else if (p_line.get_type() == Variant::DICTIONARY) {
|
||||||
Dictionary meta = p_line.operator Dictionary();
|
Dictionary meta = p_line.operator Dictionary();
|
||||||
code_editor->get_text_edit()->insert_at("# warning-ignore:" + meta["code"].operator String(), meta["line"].operator int64_t() - 1);
|
code_editor->get_text_editor()->insert_at("# warning-ignore:" + meta["code"].operator String(), meta["line"].operator int64_t() - 1);
|
||||||
_validate_script();
|
_validate_script();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -295,7 +295,7 @@ void ScriptTextEditor::_warning_clicked(Variant p_line) {
|
|||||||
void ScriptTextEditor::reload_text() {
|
void ScriptTextEditor::reload_text() {
|
||||||
ERR_FAIL_COND(script.is_null());
|
ERR_FAIL_COND(script.is_null());
|
||||||
|
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
int column = te->cursor_get_column();
|
int column = te->cursor_get_column();
|
||||||
int row = te->cursor_get_line();
|
int row = te->cursor_get_line();
|
||||||
int h = te->get_h_scroll();
|
int h = te->get_h_scroll();
|
||||||
@ -313,20 +313,20 @@ void ScriptTextEditor::reload_text() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::add_callback(const String &p_function, PackedStringArray p_args) {
|
void ScriptTextEditor::add_callback(const String &p_function, PackedStringArray p_args) {
|
||||||
String code = code_editor->get_text_edit()->get_text();
|
String code = code_editor->get_text_editor()->get_text();
|
||||||
int pos = script->get_language()->find_function(p_function, code);
|
int pos = script->get_language()->find_function(p_function, code);
|
||||||
if (pos == -1) {
|
if (pos == -1) {
|
||||||
//does not exist
|
//does not exist
|
||||||
code_editor->get_text_edit()->deselect();
|
code_editor->get_text_editor()->deselect();
|
||||||
pos = code_editor->get_text_edit()->get_line_count() + 2;
|
pos = code_editor->get_text_editor()->get_line_count() + 2;
|
||||||
String func = script->get_language()->make_function("", p_function, p_args);
|
String func = script->get_language()->make_function("", p_function, p_args);
|
||||||
//code=code+func;
|
//code=code+func;
|
||||||
code_editor->get_text_edit()->cursor_set_line(pos + 1);
|
code_editor->get_text_editor()->cursor_set_line(pos + 1);
|
||||||
code_editor->get_text_edit()->cursor_set_column(1000000); //none shall be that big
|
code_editor->get_text_editor()->cursor_set_column(1000000); //none shall be that big
|
||||||
code_editor->get_text_edit()->insert_text_at_cursor("\n\n" + func);
|
code_editor->get_text_editor()->insert_text_at_cursor("\n\n" + func);
|
||||||
}
|
}
|
||||||
code_editor->get_text_edit()->cursor_set_line(pos);
|
code_editor->get_text_editor()->cursor_set_line(pos);
|
||||||
code_editor->get_text_edit()->cursor_set_column(1);
|
code_editor->get_text_editor()->cursor_set_column(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScriptTextEditor::show_members_overview() {
|
bool ScriptTextEditor::show_members_overview() {
|
||||||
@ -339,7 +339,7 @@ void ScriptTextEditor::update_settings() {
|
|||||||
|
|
||||||
bool ScriptTextEditor::is_unsaved() {
|
bool ScriptTextEditor::is_unsaved() {
|
||||||
const bool unsaved =
|
const bool unsaved =
|
||||||
code_editor->get_text_edit()->get_version() != code_editor->get_text_edit()->get_saved_version() ||
|
code_editor->get_text_editor()->get_version() != code_editor->get_text_editor()->get_saved_version() ||
|
||||||
script->get_path().empty(); // In memory.
|
script->get_path().empty(); // In memory.
|
||||||
return unsaved;
|
return unsaved;
|
||||||
}
|
}
|
||||||
@ -385,7 +385,7 @@ void ScriptTextEditor::convert_indent_to_tabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::tag_saved_version() {
|
void ScriptTextEditor::tag_saved_version() {
|
||||||
code_editor->get_text_edit()->tag_saved_version();
|
code_editor->get_text_editor()->tag_saved_version();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::goto_line(int p_line, bool p_with_error) {
|
void ScriptTextEditor::goto_line(int p_line, bool p_with_error) {
|
||||||
@ -409,7 +409,7 @@ void ScriptTextEditor::clear_executing_line() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::ensure_focus() {
|
void ScriptTextEditor::ensure_focus() {
|
||||||
code_editor->get_text_edit()->grab_focus();
|
code_editor->get_text_editor()->grab_focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
String ScriptTextEditor::get_name() {
|
String ScriptTextEditor::get_name() {
|
||||||
@ -443,7 +443,7 @@ Ref<Texture2D> ScriptTextEditor::get_theme_icon() {
|
|||||||
void ScriptTextEditor::_validate_script() {
|
void ScriptTextEditor::_validate_script() {
|
||||||
String errortxt;
|
String errortxt;
|
||||||
int line = -1, col;
|
int line = -1, col;
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
|
|
||||||
String text = te->get_text();
|
String text = te->get_text();
|
||||||
List<String> fnc;
|
List<String> fnc;
|
||||||
@ -566,7 +566,7 @@ void ScriptTextEditor::_update_bookmark_list() {
|
|||||||
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_bookmark"), BOOKMARK_GOTO_NEXT);
|
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_bookmark"), BOOKMARK_GOTO_NEXT);
|
||||||
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_bookmark"), BOOKMARK_GOTO_PREV);
|
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_bookmark"), BOOKMARK_GOTO_PREV);
|
||||||
|
|
||||||
Array bookmark_list = code_editor->get_text_edit()->get_bookmarks_array();
|
Array bookmark_list = code_editor->get_text_editor()->get_bookmarks_array();
|
||||||
if (bookmark_list.size() == 0) {
|
if (bookmark_list.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -576,7 +576,7 @@ void ScriptTextEditor::_update_bookmark_list() {
|
|||||||
for (int i = 0; i < bookmark_list.size(); i++) {
|
for (int i = 0; i < bookmark_list.size(); i++) {
|
||||||
// Strip edges to remove spaces or tabs.
|
// Strip edges to remove spaces or tabs.
|
||||||
// Also replace any tabs by spaces, since we can't print tabs in the menu.
|
// Also replace any tabs by spaces, since we can't print tabs in the menu.
|
||||||
String line = code_editor->get_text_edit()->get_line(bookmark_list[i]).replace("\t", " ").strip_edges();
|
String line = code_editor->get_text_editor()->get_line(bookmark_list[i]).replace("\t", " ").strip_edges();
|
||||||
|
|
||||||
// Limit the size of the line if too big.
|
// Limit the size of the line if too big.
|
||||||
if (line.length() > 50) {
|
if (line.length() > 50) {
|
||||||
@ -593,7 +593,7 @@ void ScriptTextEditor::_bookmark_item_pressed(int p_idx) {
|
|||||||
_edit_option(bookmarks_menu->get_item_id(p_idx));
|
_edit_option(bookmarks_menu->get_item_id(p_idx));
|
||||||
} else {
|
} else {
|
||||||
code_editor->goto_line(bookmarks_menu->get_item_metadata(p_idx));
|
code_editor->goto_line(bookmarks_menu->get_item_metadata(p_idx));
|
||||||
code_editor->get_text_edit()->call_deferred("center_viewport_to_cursor"); //Need to be deferred, because goto uses call_deferred().
|
code_editor->get_text_editor()->call_deferred("center_viewport_to_cursor"); //Need to be deferred, because goto uses call_deferred().
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -704,7 +704,7 @@ void ScriptTextEditor::_code_complete_script(const String &p_code, List<ScriptCo
|
|||||||
String hint;
|
String hint;
|
||||||
Error err = script->get_language()->complete_code(p_code, script->get_path(), base, r_options, r_force, hint);
|
Error err = script->get_language()->complete_code(p_code, script->get_path(), base, r_options, r_force, hint);
|
||||||
if (err == OK) {
|
if (err == OK) {
|
||||||
code_editor->get_text_edit()->set_code_hint(hint);
|
code_editor->get_text_editor()->set_code_hint(hint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -717,7 +717,7 @@ void ScriptTextEditor::_update_breakpoint_list() {
|
|||||||
breakpoints_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_breakpoint"), DEBUG_GOTO_NEXT_BREAKPOINT);
|
breakpoints_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_breakpoint"), DEBUG_GOTO_NEXT_BREAKPOINT);
|
||||||
breakpoints_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_breakpoint"), DEBUG_GOTO_PREV_BREAKPOINT);
|
breakpoints_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_breakpoint"), DEBUG_GOTO_PREV_BREAKPOINT);
|
||||||
|
|
||||||
Array breakpoint_list = code_editor->get_text_edit()->get_breakpoints_array();
|
Array breakpoint_list = code_editor->get_text_editor()->get_breakpoints_array();
|
||||||
if (breakpoint_list.size() == 0) {
|
if (breakpoint_list.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -727,7 +727,7 @@ void ScriptTextEditor::_update_breakpoint_list() {
|
|||||||
for (int i = 0; i < breakpoint_list.size(); i++) {
|
for (int i = 0; i < breakpoint_list.size(); i++) {
|
||||||
// Strip edges to remove spaces or tabs.
|
// Strip edges to remove spaces or tabs.
|
||||||
// Also replace any tabs by spaces, since we can't print tabs in the menu.
|
// Also replace any tabs by spaces, since we can't print tabs in the menu.
|
||||||
String line = code_editor->get_text_edit()->get_line(breakpoint_list[i]).replace("\t", " ").strip_edges();
|
String line = code_editor->get_text_editor()->get_line(breakpoint_list[i]).replace("\t", " ").strip_edges();
|
||||||
|
|
||||||
// Limit the size of the line if too big.
|
// Limit the size of the line if too big.
|
||||||
if (line.length() > 50) {
|
if (line.length() > 50) {
|
||||||
@ -744,12 +744,12 @@ void ScriptTextEditor::_breakpoint_item_pressed(int p_idx) {
|
|||||||
_edit_option(breakpoints_menu->get_item_id(p_idx));
|
_edit_option(breakpoints_menu->get_item_id(p_idx));
|
||||||
} else {
|
} else {
|
||||||
code_editor->goto_line(breakpoints_menu->get_item_metadata(p_idx));
|
code_editor->goto_line(breakpoints_menu->get_item_metadata(p_idx));
|
||||||
code_editor->get_text_edit()->call_deferred("center_viewport_to_cursor"); //Need to be deferred, because goto uses call_deferred().
|
code_editor->get_text_editor()->call_deferred("center_viewport_to_cursor"); //Need to be deferred, because goto uses call_deferred().
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_breakpoint_toggled(int p_row) {
|
void ScriptTextEditor::_breakpoint_toggled(int p_row) {
|
||||||
EditorDebuggerNode::get_singleton()->set_breakpoint(script->get_path(), p_row + 1, code_editor->get_text_edit()->is_line_set_as_breakpoint(p_row));
|
EditorDebuggerNode::get_singleton()->set_breakpoint(script->get_path(), p_row + 1, code_editor->get_text_editor()->is_line_set_as_breakpoint(p_row));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_column) {
|
void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_column) {
|
||||||
@ -771,7 +771,7 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
|
|||||||
EditorNode::get_singleton()->load_resource(p_symbol);
|
EditorNode::get_singleton()->load_resource(p_symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK) {
|
} else if (script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK) {
|
||||||
_goto_line(p_row);
|
_goto_line(p_row);
|
||||||
|
|
||||||
result.class_name = result.class_name.trim_prefix("_");
|
result.class_name = result.class_name.trim_prefix("_");
|
||||||
@ -866,7 +866,7 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_validate_symbol(const String &p_symbol) {
|
void ScriptTextEditor::_validate_symbol(const String &p_symbol) {
|
||||||
TextEdit *text_edit = code_editor->get_text_edit();
|
CodeEdit *text_edit = code_editor->get_text_editor();
|
||||||
|
|
||||||
Node *base = get_tree()->get_edited_scene_root();
|
Node *base = get_tree()->get_edited_scene_root();
|
||||||
if (base) {
|
if (base) {
|
||||||
@ -874,7 +874,7 @@ void ScriptTextEditor::_validate_symbol(const String &p_symbol) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ScriptLanguage::LookupResult result;
|
ScriptLanguage::LookupResult result;
|
||||||
if (ScriptServer::is_global_class(p_symbol) || p_symbol.is_resource_file() || script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK || (ProjectSettings::get_singleton()->has_autoload(p_symbol) && ProjectSettings::get_singleton()->get_autoload(p_symbol).is_singleton)) {
|
if (ScriptServer::is_global_class(p_symbol) || p_symbol.is_resource_file() || script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK || (ProjectSettings::get_singleton()->has_autoload(p_symbol) && ProjectSettings::get_singleton()->get_autoload(p_symbol).is_singleton)) {
|
||||||
text_edit->set_highlighted_word(p_symbol);
|
text_edit->set_highlighted_word(p_symbol);
|
||||||
} else if (p_symbol.is_rel_path()) {
|
} else if (p_symbol.is_rel_path()) {
|
||||||
String path = _get_absolute_path(p_symbol);
|
String path = _get_absolute_path(p_symbol);
|
||||||
@ -902,7 +902,7 @@ void ScriptTextEditor::update_toggle_scripts_button() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_update_connected_methods() {
|
void ScriptTextEditor::_update_connected_methods() {
|
||||||
TextEdit *text_edit = code_editor->get_text_edit();
|
CodeEdit *text_edit = code_editor->get_text_editor();
|
||||||
text_edit->clear_info_icons();
|
text_edit->clear_info_icons();
|
||||||
missing_connections.clear();
|
missing_connections.clear();
|
||||||
|
|
||||||
@ -985,7 +985,7 @@ void ScriptTextEditor::_lookup_connections(int p_row, String p_method) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_edit_option(int p_op) {
|
void ScriptTextEditor::_edit_option(int p_op) {
|
||||||
TextEdit *tx = code_editor->get_text_edit();
|
CodeEdit *tx = code_editor->get_text_editor();
|
||||||
|
|
||||||
switch (p_op) {
|
switch (p_op) {
|
||||||
case EDIT_UNDO: {
|
case EDIT_UNDO: {
|
||||||
@ -1109,7 +1109,7 @@ void ScriptTextEditor::_edit_option(int p_op) {
|
|||||||
} break;
|
} break;
|
||||||
case EDIT_EVALUATE: {
|
case EDIT_EVALUATE: {
|
||||||
Expression expression;
|
Expression expression;
|
||||||
Vector<String> lines = code_editor->get_text_edit()->get_selection_text().split("\n");
|
Vector<String> lines = code_editor->get_text_editor()->get_selection_text().split("\n");
|
||||||
PackedStringArray results;
|
PackedStringArray results;
|
||||||
|
|
||||||
for (int i = 0; i < lines.size(); i++) {
|
for (int i = 0; i < lines.size(); i++) {
|
||||||
@ -1128,9 +1128,9 @@ void ScriptTextEditor::_edit_option(int p_op) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
code_editor->get_text_edit()->begin_complex_operation(); //prevents creating a two-step undo
|
code_editor->get_text_editor()->begin_complex_operation(); //prevents creating a two-step undo
|
||||||
code_editor->get_text_edit()->insert_text_at_cursor(String("\n").join(results));
|
code_editor->get_text_editor()->insert_text_at_cursor(String("\n").join(results));
|
||||||
code_editor->get_text_edit()->end_complex_operation();
|
code_editor->get_text_editor()->end_complex_operation();
|
||||||
} break;
|
} break;
|
||||||
case SEARCH_FIND: {
|
case SEARCH_FIND: {
|
||||||
code_editor->get_find_replace_bar()->popup_search();
|
code_editor->get_find_replace_bar()->popup_search();
|
||||||
@ -1145,14 +1145,14 @@ void ScriptTextEditor::_edit_option(int p_op) {
|
|||||||
code_editor->get_find_replace_bar()->popup_replace();
|
code_editor->get_find_replace_bar()->popup_replace();
|
||||||
} break;
|
} break;
|
||||||
case SEARCH_IN_FILES: {
|
case SEARCH_IN_FILES: {
|
||||||
String selected_text = code_editor->get_text_edit()->get_selection_text();
|
String selected_text = code_editor->get_text_editor()->get_selection_text();
|
||||||
|
|
||||||
// Yep, because it doesn't make sense to instance this dialog for every single script open...
|
// Yep, because it doesn't make sense to instance this dialog for every single script open...
|
||||||
// So this will be delegated to the ScriptEditor.
|
// So this will be delegated to the ScriptEditor.
|
||||||
emit_signal("search_in_files_requested", selected_text);
|
emit_signal("search_in_files_requested", selected_text);
|
||||||
} break;
|
} break;
|
||||||
case REPLACE_IN_FILES: {
|
case REPLACE_IN_FILES: {
|
||||||
String selected_text = code_editor->get_text_edit()->get_selection_text();
|
String selected_text = code_editor->get_text_editor()->get_selection_text();
|
||||||
|
|
||||||
emit_signal("replace_in_files_requested", selected_text);
|
emit_signal("replace_in_files_requested", selected_text);
|
||||||
} break;
|
} break;
|
||||||
@ -1303,7 +1303,7 @@ void ScriptTextEditor::set_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_hig
|
|||||||
el = el->next();
|
el = el->next();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
p_highlighter->_set_edited_resource(script);
|
p_highlighter->_set_edited_resource(script);
|
||||||
te->set_syntax_highlighter(p_highlighter);
|
te->set_syntax_highlighter(p_highlighter);
|
||||||
}
|
}
|
||||||
@ -1331,7 +1331,7 @@ void ScriptTextEditor::clear_edit_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::reload(bool p_soft) {
|
void ScriptTextEditor::reload(bool p_soft) {
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
Ref<Script> scr = script;
|
Ref<Script> scr = script;
|
||||||
if (scr.is_null()) {
|
if (scr.is_null()) {
|
||||||
return;
|
return;
|
||||||
@ -1343,11 +1343,11 @@ void ScriptTextEditor::reload(bool p_soft) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::get_breakpoints(List<int> *p_breakpoints) {
|
void ScriptTextEditor::get_breakpoints(List<int> *p_breakpoints) {
|
||||||
code_editor->get_text_edit()->get_breakpoints(p_breakpoints);
|
code_editor->get_text_editor()->get_breakpoints(p_breakpoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::set_tooltip_request_func(String p_method, Object *p_obj) {
|
void ScriptTextEditor::set_tooltip_request_func(String p_method, Object *p_obj) {
|
||||||
code_editor->get_text_edit()->set_tooltip_request_func(p_obj, p_method, this);
|
code_editor->get_text_editor()->set_tooltip_request_func(p_obj, p_method, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::set_debugger_active(bool p_active) {
|
void ScriptTextEditor::set_debugger_active(bool p_active) {
|
||||||
@ -1393,7 +1393,7 @@ static Node *_find_script_node(Node *p_edited_scene, Node *p_current_node, const
|
|||||||
void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) {
|
void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) {
|
||||||
Dictionary d = p_data;
|
Dictionary d = p_data;
|
||||||
|
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
int row, col;
|
int row, col;
|
||||||
te->_get_mouse_pos(p_point, row, col);
|
te->_get_mouse_pos(p_point, row, col);
|
||||||
|
|
||||||
@ -1466,7 +1466,7 @@ void ScriptTextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||||||
Point2 local_pos;
|
Point2 local_pos;
|
||||||
bool create_menu = false;
|
bool create_menu = false;
|
||||||
|
|
||||||
TextEdit *tx = code_editor->get_text_edit();
|
CodeEdit *tx = code_editor->get_text_editor();
|
||||||
if (mb.is_valid() && mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed()) {
|
if (mb.is_valid() && mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed()) {
|
||||||
local_pos = mb->get_global_position() - tx->get_global_position();
|
local_pos = mb->get_global_position() - tx->get_global_position();
|
||||||
create_menu = true;
|
create_menu = true;
|
||||||
@ -1519,7 +1519,7 @@ void ScriptTextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||||||
base = _find_node_for_script(base, base, script);
|
base = _find_node_for_script(base, base, script);
|
||||||
}
|
}
|
||||||
ScriptLanguage::LookupResult result;
|
ScriptLanguage::LookupResult result;
|
||||||
if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), word_at_pos, script->get_path(), base, result) == OK) {
|
if (script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_lookup_completion(), word_at_pos, script->get_path(), base, result) == OK) {
|
||||||
open_docs = true;
|
open_docs = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1567,17 +1567,17 @@ void ScriptTextEditor::_color_changed(const Color &p_color) {
|
|||||||
new_args = String("(" + rtos(p_color.r) + ", " + rtos(p_color.g) + ", " + rtos(p_color.b) + ", " + rtos(p_color.a) + ")");
|
new_args = String("(" + rtos(p_color.r) + ", " + rtos(p_color.g) + ", " + rtos(p_color.b) + ", " + rtos(p_color.a) + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
String line = code_editor->get_text_edit()->get_line(color_position.x);
|
String line = code_editor->get_text_editor()->get_line(color_position.x);
|
||||||
int color_args_pos = line.find(color_args, color_position.y);
|
int color_args_pos = line.find(color_args, color_position.y);
|
||||||
String line_with_replaced_args = line;
|
String line_with_replaced_args = line;
|
||||||
line_with_replaced_args.erase(color_args_pos, color_args.length());
|
line_with_replaced_args.erase(color_args_pos, color_args.length());
|
||||||
line_with_replaced_args = line_with_replaced_args.insert(color_args_pos, new_args);
|
line_with_replaced_args = line_with_replaced_args.insert(color_args_pos, new_args);
|
||||||
|
|
||||||
color_args = new_args;
|
color_args = new_args;
|
||||||
code_editor->get_text_edit()->begin_complex_operation();
|
code_editor->get_text_editor()->begin_complex_operation();
|
||||||
code_editor->get_text_edit()->set_line(color_position.x, line_with_replaced_args);
|
code_editor->get_text_editor()->set_line(color_position.x, line_with_replaced_args);
|
||||||
code_editor->get_text_edit()->end_complex_operation();
|
code_editor->get_text_editor()->end_complex_operation();
|
||||||
code_editor->get_text_edit()->update();
|
code_editor->get_text_editor()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptTextEditor::_make_context_menu(bool p_selection, bool p_color, bool p_foldable, bool p_open_docs, bool p_goto_definition, Vector2 p_pos) {
|
void ScriptTextEditor::_make_context_menu(bool p_selection, bool p_color, bool p_foldable, bool p_open_docs, bool p_goto_definition, Vector2 p_pos) {
|
||||||
@ -1636,11 +1636,11 @@ void ScriptTextEditor::_enable_code_editor() {
|
|||||||
code_editor->connect("show_warnings_panel", callable_mp(this, &ScriptTextEditor::_show_warnings_panel));
|
code_editor->connect("show_warnings_panel", callable_mp(this, &ScriptTextEditor::_show_warnings_panel));
|
||||||
code_editor->connect("validate_script", callable_mp(this, &ScriptTextEditor::_validate_script));
|
code_editor->connect("validate_script", callable_mp(this, &ScriptTextEditor::_validate_script));
|
||||||
code_editor->connect("load_theme_settings", callable_mp(this, &ScriptTextEditor::_load_theme_settings));
|
code_editor->connect("load_theme_settings", callable_mp(this, &ScriptTextEditor::_load_theme_settings));
|
||||||
code_editor->get_text_edit()->connect("breakpoint_toggled", callable_mp(this, &ScriptTextEditor::_breakpoint_toggled));
|
code_editor->get_text_editor()->connect("breakpoint_toggled", callable_mp(this, &ScriptTextEditor::_breakpoint_toggled));
|
||||||
code_editor->get_text_edit()->connect("symbol_lookup", callable_mp(this, &ScriptTextEditor::_lookup_symbol));
|
code_editor->get_text_editor()->connect("symbol_lookup", callable_mp(this, &ScriptTextEditor::_lookup_symbol));
|
||||||
code_editor->get_text_edit()->connect("symbol_validate", callable_mp(this, &ScriptTextEditor::_validate_symbol));
|
code_editor->get_text_editor()->connect("symbol_validate", callable_mp(this, &ScriptTextEditor::_validate_symbol));
|
||||||
code_editor->get_text_edit()->connect("info_clicked", callable_mp(this, &ScriptTextEditor::_lookup_connections));
|
code_editor->get_text_editor()->connect("info_clicked", callable_mp(this, &ScriptTextEditor::_lookup_connections));
|
||||||
code_editor->get_text_edit()->connect("gui_input", callable_mp(this, &ScriptTextEditor::_text_edit_gui_input));
|
code_editor->get_text_editor()->connect("gui_input", callable_mp(this, &ScriptTextEditor::_text_edit_gui_input));
|
||||||
code_editor->show_toggle_scripts_button();
|
code_editor->show_toggle_scripts_button();
|
||||||
|
|
||||||
editor_box->add_child(warnings_panel);
|
editor_box->add_child(warnings_panel);
|
||||||
@ -1768,12 +1768,12 @@ ScriptTextEditor::ScriptTextEditor() {
|
|||||||
|
|
||||||
update_settings();
|
update_settings();
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_callhint_settings(
|
code_editor->get_text_editor()->set_callhint_settings(
|
||||||
EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"),
|
EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"),
|
||||||
EditorSettings::get_singleton()->get("text_editor/completion/callhint_tooltip_offset"));
|
EditorSettings::get_singleton()->get("text_editor/completion/callhint_tooltip_offset"));
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_select_identifiers_on_hover(true);
|
code_editor->get_text_editor()->set_select_identifiers_on_hover(true);
|
||||||
code_editor->get_text_edit()->set_context_menu_enabled(false);
|
code_editor->get_text_editor()->set_context_menu_enabled(false);
|
||||||
|
|
||||||
context_menu = memnew(PopupMenu);
|
context_menu = memnew(PopupMenu);
|
||||||
|
|
||||||
@ -1816,7 +1816,7 @@ ScriptTextEditor::ScriptTextEditor() {
|
|||||||
|
|
||||||
connection_info_dialog = memnew(ConnectionInfoDialog);
|
connection_info_dialog = memnew(ConnectionInfoDialog);
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_drag_forwarding(this);
|
code_editor->get_text_editor()->set_drag_forwarding(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptTextEditor::~ScriptTextEditor() {
|
ScriptTextEditor::~ScriptTextEditor() {
|
||||||
|
@ -55,8 +55,8 @@ void ShaderTextEditor::set_edited_shader(const Ref<Shader> &p_shader) {
|
|||||||
|
|
||||||
_load_theme_settings();
|
_load_theme_settings();
|
||||||
|
|
||||||
get_text_edit()->set_text(p_shader->get_code());
|
get_text_editor()->set_text(p_shader->get_code());
|
||||||
get_text_edit()->clear_undo_history();
|
get_text_editor()->clear_undo_history();
|
||||||
|
|
||||||
_validate_script();
|
_validate_script();
|
||||||
_line_col_changed();
|
_line_col_changed();
|
||||||
@ -65,7 +65,7 @@ void ShaderTextEditor::set_edited_shader(const Ref<Shader> &p_shader) {
|
|||||||
void ShaderTextEditor::reload_text() {
|
void ShaderTextEditor::reload_text() {
|
||||||
ERR_FAIL_COND(shader.is_null());
|
ERR_FAIL_COND(shader.is_null());
|
||||||
|
|
||||||
TextEdit *te = get_text_edit();
|
CodeEdit *te = get_text_editor();
|
||||||
int column = te->cursor_get_column();
|
int column = te->cursor_get_column();
|
||||||
int row = te->cursor_get_line();
|
int row = te->cursor_get_line();
|
||||||
int h = te->get_h_scroll();
|
int h = te->get_h_scroll();
|
||||||
@ -107,29 +107,29 @@ void ShaderTextEditor::_load_theme_settings() {
|
|||||||
Color search_result_color = EDITOR_GET("text_editor/highlighting/search_result_color");
|
Color search_result_color = EDITOR_GET("text_editor/highlighting/search_result_color");
|
||||||
Color search_result_border_color = EDITOR_GET("text_editor/highlighting/search_result_border_color");
|
Color search_result_border_color = EDITOR_GET("text_editor/highlighting/search_result_border_color");
|
||||||
|
|
||||||
get_text_edit()->add_theme_color_override("background_color", background_color);
|
get_text_editor()->add_theme_color_override("background_color", background_color);
|
||||||
get_text_edit()->add_theme_color_override("completion_background_color", completion_background_color);
|
get_text_editor()->add_theme_color_override("completion_background_color", completion_background_color);
|
||||||
get_text_edit()->add_theme_color_override("completion_selected_color", completion_selected_color);
|
get_text_editor()->add_theme_color_override("completion_selected_color", completion_selected_color);
|
||||||
get_text_edit()->add_theme_color_override("completion_existing_color", completion_existing_color);
|
get_text_editor()->add_theme_color_override("completion_existing_color", completion_existing_color);
|
||||||
get_text_edit()->add_theme_color_override("completion_scroll_color", completion_scroll_color);
|
get_text_editor()->add_theme_color_override("completion_scroll_color", completion_scroll_color);
|
||||||
get_text_edit()->add_theme_color_override("completion_font_color", completion_font_color);
|
get_text_editor()->add_theme_color_override("completion_font_color", completion_font_color);
|
||||||
get_text_edit()->add_theme_color_override("font_color", text_color);
|
get_text_editor()->add_theme_color_override("font_color", text_color);
|
||||||
get_text_edit()->add_theme_color_override("line_number_color", line_number_color);
|
get_text_editor()->add_theme_color_override("line_number_color", line_number_color);
|
||||||
get_text_edit()->add_theme_color_override("caret_color", caret_color);
|
get_text_editor()->add_theme_color_override("caret_color", caret_color);
|
||||||
get_text_edit()->add_theme_color_override("caret_background_color", caret_background_color);
|
get_text_editor()->add_theme_color_override("caret_background_color", caret_background_color);
|
||||||
get_text_edit()->add_theme_color_override("font_color_selected", text_selected_color);
|
get_text_editor()->add_theme_color_override("font_color_selected", text_selected_color);
|
||||||
get_text_edit()->add_theme_color_override("selection_color", selection_color);
|
get_text_editor()->add_theme_color_override("selection_color", selection_color);
|
||||||
get_text_edit()->add_theme_color_override("brace_mismatch_color", brace_mismatch_color);
|
get_text_editor()->add_theme_color_override("brace_mismatch_color", brace_mismatch_color);
|
||||||
get_text_edit()->add_theme_color_override("current_line_color", current_line_color);
|
get_text_editor()->add_theme_color_override("current_line_color", current_line_color);
|
||||||
get_text_edit()->add_theme_color_override("line_length_guideline_color", line_length_guideline_color);
|
get_text_editor()->add_theme_color_override("line_length_guideline_color", line_length_guideline_color);
|
||||||
get_text_edit()->add_theme_color_override("word_highlighted_color", word_highlighted_color);
|
get_text_editor()->add_theme_color_override("word_highlighted_color", word_highlighted_color);
|
||||||
get_text_edit()->add_theme_color_override("mark_color", mark_color);
|
get_text_editor()->add_theme_color_override("mark_color", mark_color);
|
||||||
get_text_edit()->add_theme_color_override("bookmark_color", bookmark_color);
|
get_text_editor()->add_theme_color_override("bookmark_color", bookmark_color);
|
||||||
get_text_edit()->add_theme_color_override("breakpoint_color", breakpoint_color);
|
get_text_editor()->add_theme_color_override("breakpoint_color", breakpoint_color);
|
||||||
get_text_edit()->add_theme_color_override("executing_line_color", executing_line_color);
|
get_text_editor()->add_theme_color_override("executing_line_color", executing_line_color);
|
||||||
get_text_edit()->add_theme_color_override("code_folding_color", code_folding_color);
|
get_text_editor()->add_theme_color_override("code_folding_color", code_folding_color);
|
||||||
get_text_edit()->add_theme_color_override("search_result_color", search_result_color);
|
get_text_editor()->add_theme_color_override("search_result_color", search_result_color);
|
||||||
get_text_edit()->add_theme_color_override("search_result_border_color", search_result_border_color);
|
get_text_editor()->add_theme_color_override("search_result_border_color", search_result_border_color);
|
||||||
|
|
||||||
syntax_highlighter->set_number_color(EDITOR_GET("text_editor/highlighting/number_color"));
|
syntax_highlighter->set_number_color(EDITOR_GET("text_editor/highlighting/number_color"));
|
||||||
syntax_highlighter->set_symbol_color(EDITOR_GET("text_editor/highlighting/symbol_color"));
|
syntax_highlighter->set_symbol_color(EDITOR_GET("text_editor/highlighting/symbol_color"));
|
||||||
@ -176,7 +176,7 @@ void ShaderTextEditor::_load_theme_settings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ShaderTextEditor::_check_shader_mode() {
|
void ShaderTextEditor::_check_shader_mode() {
|
||||||
String type = ShaderLanguage::get_shader_type(get_text_edit()->get_text());
|
String type = ShaderLanguage::get_shader_type(get_text_editor()->get_text());
|
||||||
|
|
||||||
Shader::Mode mode;
|
Shader::Mode mode;
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ void ShaderTextEditor::_check_shader_mode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (shader->get_mode() != mode) {
|
if (shader->get_mode() != mode) {
|
||||||
shader->set_code(get_text_edit()->get_text());
|
shader->set_code(get_text_editor()->get_text());
|
||||||
_load_theme_settings();
|
_load_theme_settings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -207,13 +207,13 @@ void ShaderTextEditor::_code_complete_script(const String &p_code, List<ScriptCo
|
|||||||
|
|
||||||
sl.complete(p_code, ShaderTypes::get_singleton()->get_functions(RenderingServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_types(), _get_global_variable_type, r_options, calltip);
|
sl.complete(p_code, ShaderTypes::get_singleton()->get_functions(RenderingServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_types(), _get_global_variable_type, r_options, calltip);
|
||||||
|
|
||||||
get_text_edit()->set_code_hint(calltip);
|
get_text_editor()->set_code_hint(calltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShaderTextEditor::_validate_script() {
|
void ShaderTextEditor::_validate_script() {
|
||||||
_check_shader_mode();
|
_check_shader_mode();
|
||||||
|
|
||||||
String code = get_text_edit()->get_text();
|
String code = get_text_editor()->get_text();
|
||||||
//List<StringName> params;
|
//List<StringName> params;
|
||||||
//shader->get_param_list(¶ms);
|
//shader->get_param_list(¶ms);
|
||||||
|
|
||||||
@ -225,14 +225,14 @@ void ShaderTextEditor::_validate_script() {
|
|||||||
String error_text = "error(" + itos(sl.get_error_line()) + "): " + sl.get_error_text();
|
String error_text = "error(" + itos(sl.get_error_line()) + "): " + sl.get_error_text();
|
||||||
set_error(error_text);
|
set_error(error_text);
|
||||||
set_error_pos(sl.get_error_line() - 1, 0);
|
set_error_pos(sl.get_error_line() - 1, 0);
|
||||||
for (int i = 0; i < get_text_edit()->get_line_count(); i++) {
|
for (int i = 0; i < get_text_editor()->get_line_count(); i++) {
|
||||||
get_text_edit()->set_line_as_marked(i, false);
|
get_text_editor()->set_line_as_marked(i, false);
|
||||||
}
|
}
|
||||||
get_text_edit()->set_line_as_marked(sl.get_error_line() - 1, true);
|
get_text_editor()->set_line_as_marked(sl.get_error_line() - 1, true);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < get_text_edit()->get_line_count(); i++) {
|
for (int i = 0; i < get_text_editor()->get_line_count(); i++) {
|
||||||
get_text_edit()->set_line_as_marked(i, false);
|
get_text_editor()->set_line_as_marked(i, false);
|
||||||
}
|
}
|
||||||
set_error("");
|
set_error("");
|
||||||
}
|
}
|
||||||
@ -245,7 +245,7 @@ void ShaderTextEditor::_bind_methods() {
|
|||||||
|
|
||||||
ShaderTextEditor::ShaderTextEditor() {
|
ShaderTextEditor::ShaderTextEditor() {
|
||||||
syntax_highlighter.instance();
|
syntax_highlighter.instance();
|
||||||
get_text_edit()->set_syntax_highlighter(syntax_highlighter);
|
get_text_editor()->set_syntax_highlighter(syntax_highlighter);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** SCRIPT EDITOR ******/
|
/*** SCRIPT EDITOR ******/
|
||||||
@ -253,22 +253,22 @@ ShaderTextEditor::ShaderTextEditor() {
|
|||||||
void ShaderEditor::_menu_option(int p_option) {
|
void ShaderEditor::_menu_option(int p_option) {
|
||||||
switch (p_option) {
|
switch (p_option) {
|
||||||
case EDIT_UNDO: {
|
case EDIT_UNDO: {
|
||||||
shader_editor->get_text_edit()->undo();
|
shader_editor->get_text_editor()->undo();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_REDO: {
|
case EDIT_REDO: {
|
||||||
shader_editor->get_text_edit()->redo();
|
shader_editor->get_text_editor()->redo();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_CUT: {
|
case EDIT_CUT: {
|
||||||
shader_editor->get_text_edit()->cut();
|
shader_editor->get_text_editor()->cut();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_COPY: {
|
case EDIT_COPY: {
|
||||||
shader_editor->get_text_edit()->copy();
|
shader_editor->get_text_editor()->copy();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_PASTE: {
|
case EDIT_PASTE: {
|
||||||
shader_editor->get_text_edit()->paste();
|
shader_editor->get_text_editor()->paste();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_SELECT_ALL: {
|
case EDIT_SELECT_ALL: {
|
||||||
shader_editor->get_text_edit()->select_all();
|
shader_editor->get_text_editor()->select_all();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_MOVE_LINE_UP: {
|
case EDIT_MOVE_LINE_UP: {
|
||||||
shader_editor->move_lines_up();
|
shader_editor->move_lines_up();
|
||||||
@ -281,7 +281,7 @@ void ShaderEditor::_menu_option(int p_option) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEdit *tx = shader_editor->get_text_edit();
|
CodeEdit *tx = shader_editor->get_text_editor();
|
||||||
tx->indent_left();
|
tx->indent_left();
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
@ -290,7 +290,7 @@ void ShaderEditor::_menu_option(int p_option) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEdit *tx = shader_editor->get_text_edit();
|
CodeEdit *tx = shader_editor->get_text_editor();
|
||||||
tx->indent_right();
|
tx->indent_right();
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
@ -309,7 +309,7 @@ void ShaderEditor::_menu_option(int p_option) {
|
|||||||
|
|
||||||
} break;
|
} break;
|
||||||
case EDIT_COMPLETE: {
|
case EDIT_COMPLETE: {
|
||||||
shader_editor->get_text_edit()->query_code_comple();
|
shader_editor->get_text_editor()->query_code_comple();
|
||||||
} break;
|
} break;
|
||||||
case SEARCH_FIND: {
|
case SEARCH_FIND: {
|
||||||
shader_editor->get_find_replace_bar()->popup_search();
|
shader_editor->get_find_replace_bar()->popup_search();
|
||||||
@ -324,7 +324,7 @@ void ShaderEditor::_menu_option(int p_option) {
|
|||||||
shader_editor->get_find_replace_bar()->popup_replace();
|
shader_editor->get_find_replace_bar()->popup_replace();
|
||||||
} break;
|
} break;
|
||||||
case SEARCH_GOTO_LINE: {
|
case SEARCH_GOTO_LINE: {
|
||||||
goto_line_dialog->popup_find_line(shader_editor->get_text_edit());
|
goto_line_dialog->popup_find_line(shader_editor->get_text_editor());
|
||||||
} break;
|
} break;
|
||||||
case BOOKMARK_TOGGLE: {
|
case BOOKMARK_TOGGLE: {
|
||||||
shader_editor->toggle_bookmark();
|
shader_editor->toggle_bookmark();
|
||||||
@ -343,7 +343,7 @@ void ShaderEditor::_menu_option(int p_option) {
|
|||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
if (p_option != SEARCH_FIND && p_option != SEARCH_REPLACE && p_option != SEARCH_GOTO_LINE) {
|
if (p_option != SEARCH_FIND && p_option != SEARCH_REPLACE && p_option != SEARCH_GOTO_LINE) {
|
||||||
shader_editor->get_text_edit()->call_deferred("grab_focus");
|
shader_editor->get_text_editor()->call_deferred("grab_focus");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,28 +358,28 @@ void ShaderEditor::_params_changed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ShaderEditor::_editor_settings_changed() {
|
void ShaderEditor::_editor_settings_changed() {
|
||||||
shader_editor->get_text_edit()->set_auto_brace_completion(EditorSettings::get_singleton()->get("text_editor/completion/auto_brace_complete"));
|
shader_editor->get_text_editor()->set_auto_brace_completion(EditorSettings::get_singleton()->get("text_editor/completion/auto_brace_complete"));
|
||||||
shader_editor->get_text_edit()->set_scroll_pass_end_of_file(EditorSettings::get_singleton()->get("text_editor/cursor/scroll_past_end_of_file"));
|
shader_editor->get_text_editor()->set_scroll_pass_end_of_file(EditorSettings::get_singleton()->get("text_editor/cursor/scroll_past_end_of_file"));
|
||||||
shader_editor->get_text_edit()->set_indent_size(EditorSettings::get_singleton()->get("text_editor/indent/size"));
|
shader_editor->get_text_editor()->set_indent_size(EditorSettings::get_singleton()->get("text_editor/indent/size"));
|
||||||
shader_editor->get_text_edit()->set_indent_using_spaces(EditorSettings::get_singleton()->get("text_editor/indent/type"));
|
shader_editor->get_text_editor()->set_indent_using_spaces(EditorSettings::get_singleton()->get("text_editor/indent/type"));
|
||||||
shader_editor->get_text_edit()->set_auto_indent(EditorSettings::get_singleton()->get("text_editor/indent/auto_indent"));
|
shader_editor->get_text_editor()->set_auto_indent(EditorSettings::get_singleton()->get("text_editor/indent/auto_indent"));
|
||||||
shader_editor->get_text_edit()->set_draw_tabs(EditorSettings::get_singleton()->get("text_editor/indent/draw_tabs"));
|
shader_editor->get_text_editor()->set_draw_tabs(EditorSettings::get_singleton()->get("text_editor/indent/draw_tabs"));
|
||||||
shader_editor->get_text_edit()->set_draw_spaces(EditorSettings::get_singleton()->get("text_editor/indent/draw_spaces"));
|
shader_editor->get_text_editor()->set_draw_spaces(EditorSettings::get_singleton()->get("text_editor/indent/draw_spaces"));
|
||||||
shader_editor->get_text_edit()->set_show_line_numbers(EditorSettings::get_singleton()->get("text_editor/appearance/show_line_numbers"));
|
shader_editor->get_text_editor()->set_show_line_numbers(EditorSettings::get_singleton()->get("text_editor/appearance/show_line_numbers"));
|
||||||
shader_editor->get_text_edit()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_all_occurrences"));
|
shader_editor->get_text_editor()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_all_occurrences"));
|
||||||
shader_editor->get_text_edit()->set_highlight_current_line(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_current_line"));
|
shader_editor->get_text_editor()->set_highlight_current_line(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_current_line"));
|
||||||
shader_editor->get_text_edit()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink"));
|
shader_editor->get_text_editor()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink"));
|
||||||
shader_editor->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed"));
|
shader_editor->get_text_editor()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed"));
|
||||||
shader_editor->get_text_edit()->add_theme_constant_override("line_spacing", EditorSettings::get_singleton()->get("text_editor/theme/line_spacing"));
|
shader_editor->get_text_editor()->add_theme_constant_override("line_spacing", EditorSettings::get_singleton()->get("text_editor/theme/line_spacing"));
|
||||||
shader_editor->get_text_edit()->cursor_set_block_mode(EditorSettings::get_singleton()->get("text_editor/cursor/block_caret"));
|
shader_editor->get_text_editor()->cursor_set_block_mode(EditorSettings::get_singleton()->get("text_editor/cursor/block_caret"));
|
||||||
shader_editor->get_text_edit()->set_smooth_scroll_enabled(EditorSettings::get_singleton()->get("text_editor/navigation/smooth_scrolling"));
|
shader_editor->get_text_editor()->set_smooth_scroll_enabled(EditorSettings::get_singleton()->get("text_editor/navigation/smooth_scrolling"));
|
||||||
shader_editor->get_text_edit()->set_v_scroll_speed(EditorSettings::get_singleton()->get("text_editor/navigation/v_scroll_speed"));
|
shader_editor->get_text_editor()->set_v_scroll_speed(EditorSettings::get_singleton()->get("text_editor/navigation/v_scroll_speed"));
|
||||||
shader_editor->get_text_edit()->set_draw_minimap(EditorSettings::get_singleton()->get("text_editor/navigation/show_minimap"));
|
shader_editor->get_text_editor()->set_draw_minimap(EditorSettings::get_singleton()->get("text_editor/navigation/show_minimap"));
|
||||||
shader_editor->get_text_edit()->set_minimap_width((int)EditorSettings::get_singleton()->get("text_editor/navigation/minimap_width") * EDSCALE);
|
shader_editor->get_text_editor()->set_minimap_width((int)EditorSettings::get_singleton()->get("text_editor/navigation/minimap_width") * EDSCALE);
|
||||||
shader_editor->get_text_edit()->set_show_line_length_guidelines(EditorSettings::get_singleton()->get("text_editor/appearance/show_line_length_guidelines"));
|
shader_editor->get_text_editor()->set_show_line_length_guidelines(EditorSettings::get_singleton()->get("text_editor/appearance/show_line_length_guidelines"));
|
||||||
shader_editor->get_text_edit()->set_line_length_guideline_soft_column(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_soft_column"));
|
shader_editor->get_text_editor()->set_line_length_guideline_soft_column(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_soft_column"));
|
||||||
shader_editor->get_text_edit()->set_line_length_guideline_hard_column(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_hard_column"));
|
shader_editor->get_text_editor()->set_line_length_guideline_hard_column(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_hard_column"));
|
||||||
shader_editor->get_text_edit()->set_breakpoint_gutter_enabled(false);
|
shader_editor->get_text_editor()->set_breakpoint_gutter_enabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShaderEditor::_bind_methods() {
|
void ShaderEditor::_bind_methods() {
|
||||||
@ -466,7 +466,7 @@ void ShaderEditor::save_external_data(const String &p_str) {
|
|||||||
void ShaderEditor::apply_shaders() {
|
void ShaderEditor::apply_shaders() {
|
||||||
if (shader.is_valid()) {
|
if (shader.is_valid()) {
|
||||||
String shader_code = shader->get_code();
|
String shader_code = shader->get_code();
|
||||||
String editor_code = shader_editor->get_text_edit()->get_text();
|
String editor_code = shader_editor->get_text_editor()->get_text();
|
||||||
if (shader_code != editor_code) {
|
if (shader_code != editor_code) {
|
||||||
shader->set_code(editor_code);
|
shader->set_code(editor_code);
|
||||||
shader->set_edited(true);
|
shader->set_edited(true);
|
||||||
@ -480,7 +480,7 @@ void ShaderEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||||||
if (mb.is_valid()) {
|
if (mb.is_valid()) {
|
||||||
if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed()) {
|
if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed()) {
|
||||||
int col, row;
|
int col, row;
|
||||||
TextEdit *tx = shader_editor->get_text_edit();
|
CodeEdit *tx = shader_editor->get_text_editor();
|
||||||
tx->_get_mouse_pos(mb->get_global_position() - tx->get_global_position(), row, col);
|
tx->_get_mouse_pos(mb->get_global_position() - tx->get_global_position(), row, col);
|
||||||
tx->set_right_click_moves_caret(EditorSettings::get_singleton()->get("text_editor/cursor/right_click_moves_caret"));
|
tx->set_right_click_moves_caret(EditorSettings::get_singleton()->get("text_editor/cursor/right_click_moves_caret"));
|
||||||
|
|
||||||
@ -507,7 +507,7 @@ void ShaderEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||||||
|
|
||||||
Ref<InputEventKey> k = ev;
|
Ref<InputEventKey> k = ev;
|
||||||
if (k.is_valid() && k->is_pressed() && k->get_keycode() == KEY_MENU) {
|
if (k.is_valid() && k->is_pressed() && k->get_keycode() == KEY_MENU) {
|
||||||
TextEdit *tx = shader_editor->get_text_edit();
|
CodeEdit *tx = shader_editor->get_text_editor();
|
||||||
_make_context_menu(tx->is_selection_active(), (get_global_transform().inverse() * tx->get_global_transform()).xform(tx->_get_cursor_pixel_pos()));
|
_make_context_menu(tx->is_selection_active(), (get_global_transform().inverse() * tx->get_global_transform()).xform(tx->_get_cursor_pixel_pos()));
|
||||||
context_menu->grab_focus();
|
context_menu->grab_focus();
|
||||||
}
|
}
|
||||||
@ -521,7 +521,7 @@ void ShaderEditor::_update_bookmark_list() {
|
|||||||
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_bookmark"), BOOKMARK_GOTO_NEXT);
|
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_bookmark"), BOOKMARK_GOTO_NEXT);
|
||||||
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_bookmark"), BOOKMARK_GOTO_PREV);
|
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_bookmark"), BOOKMARK_GOTO_PREV);
|
||||||
|
|
||||||
Array bookmark_list = shader_editor->get_text_edit()->get_bookmarks_array();
|
Array bookmark_list = shader_editor->get_text_editor()->get_bookmarks_array();
|
||||||
if (bookmark_list.size() == 0) {
|
if (bookmark_list.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -529,7 +529,7 @@ void ShaderEditor::_update_bookmark_list() {
|
|||||||
bookmarks_menu->add_separator();
|
bookmarks_menu->add_separator();
|
||||||
|
|
||||||
for (int i = 0; i < bookmark_list.size(); i++) {
|
for (int i = 0; i < bookmark_list.size(); i++) {
|
||||||
String line = shader_editor->get_text_edit()->get_line(bookmark_list[i]).strip_edges();
|
String line = shader_editor->get_text_editor()->get_line(bookmark_list[i]).strip_edges();
|
||||||
// Limit the size of the line if too big.
|
// Limit the size of the line if too big.
|
||||||
if (line.length() > 50) {
|
if (line.length() > 50) {
|
||||||
line = line.substr(0, 50);
|
line = line.substr(0, 50);
|
||||||
@ -581,13 +581,13 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
|
|||||||
shader_editor->connect("script_changed", callable_mp(this, &ShaderEditor::apply_shaders));
|
shader_editor->connect("script_changed", callable_mp(this, &ShaderEditor::apply_shaders));
|
||||||
EditorSettings::get_singleton()->connect("settings_changed", callable_mp(this, &ShaderEditor::_editor_settings_changed));
|
EditorSettings::get_singleton()->connect("settings_changed", callable_mp(this, &ShaderEditor::_editor_settings_changed));
|
||||||
|
|
||||||
shader_editor->get_text_edit()->set_callhint_settings(
|
shader_editor->get_text_editor()->set_callhint_settings(
|
||||||
EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"),
|
EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"),
|
||||||
EditorSettings::get_singleton()->get("text_editor/completion/callhint_tooltip_offset"));
|
EditorSettings::get_singleton()->get("text_editor/completion/callhint_tooltip_offset"));
|
||||||
|
|
||||||
shader_editor->get_text_edit()->set_select_identifiers_on_hover(true);
|
shader_editor->get_text_editor()->set_select_identifiers_on_hover(true);
|
||||||
shader_editor->get_text_edit()->set_context_menu_enabled(false);
|
shader_editor->get_text_editor()->set_context_menu_enabled(false);
|
||||||
shader_editor->get_text_edit()->connect("gui_input", callable_mp(this, &ShaderEditor::_text_edit_gui_input));
|
shader_editor->get_text_editor()->connect("gui_input", callable_mp(this, &ShaderEditor::_text_edit_gui_input));
|
||||||
|
|
||||||
shader_editor->update_editor_settings();
|
shader_editor->update_editor_settings();
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ void TextEditor::set_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlight
|
|||||||
el = el->next();
|
el = el->next();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
te->set_syntax_highlighter(p_highlighter);
|
te->set_syntax_highlighter(p_highlighter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ void TextEditor::_change_syntax_highlighter(int p_idx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::_load_theme_settings() {
|
void TextEditor::_load_theme_settings() {
|
||||||
TextEdit *text_edit = code_editor->get_text_edit();
|
CodeEdit *text_edit = code_editor->get_text_editor();
|
||||||
text_edit->get_syntax_highlighter()->update_cache();
|
text_edit->get_syntax_highlighter()->update_cache();
|
||||||
|
|
||||||
Color background_color = EDITOR_GET("text_editor/highlighting/background_color");
|
Color background_color = EDITOR_GET("text_editor/highlighting/background_color");
|
||||||
@ -147,9 +147,9 @@ void TextEditor::set_edited_resource(const RES &p_res) {
|
|||||||
|
|
||||||
text_file = p_res;
|
text_file = p_res;
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_text(text_file->get_text());
|
code_editor->get_text_editor()->set_text(text_file->get_text());
|
||||||
code_editor->get_text_edit()->clear_undo_history();
|
code_editor->get_text_editor()->clear_undo_history();
|
||||||
code_editor->get_text_edit()->tag_saved_version();
|
code_editor->get_text_editor()->tag_saved_version();
|
||||||
|
|
||||||
emit_signal("name_changed");
|
emit_signal("name_changed");
|
||||||
code_editor->update_line_and_column();
|
code_editor->update_line_and_column();
|
||||||
@ -177,7 +177,7 @@ void TextEditor::get_breakpoints(List<int> *p_breakpoints) {
|
|||||||
void TextEditor::reload_text() {
|
void TextEditor::reload_text() {
|
||||||
ERR_FAIL_COND(text_file.is_null());
|
ERR_FAIL_COND(text_file.is_null());
|
||||||
|
|
||||||
TextEdit *te = code_editor->get_text_edit();
|
CodeEdit *te = code_editor->get_text_editor();
|
||||||
int column = te->cursor_get_column();
|
int column = te->cursor_get_column();
|
||||||
int row = te->cursor_get_line();
|
int row = te->cursor_get_line();
|
||||||
int h = te->get_h_scroll();
|
int h = te->get_h_scroll();
|
||||||
@ -207,7 +207,7 @@ void TextEditor::_update_bookmark_list() {
|
|||||||
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_bookmark"), BOOKMARK_GOTO_NEXT);
|
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_next_bookmark"), BOOKMARK_GOTO_NEXT);
|
||||||
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_bookmark"), BOOKMARK_GOTO_PREV);
|
bookmarks_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_previous_bookmark"), BOOKMARK_GOTO_PREV);
|
||||||
|
|
||||||
Array bookmark_list = code_editor->get_text_edit()->get_bookmarks_array();
|
Array bookmark_list = code_editor->get_text_editor()->get_bookmarks_array();
|
||||||
if (bookmark_list.size() == 0) {
|
if (bookmark_list.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -215,7 +215,7 @@ void TextEditor::_update_bookmark_list() {
|
|||||||
bookmarks_menu->add_separator();
|
bookmarks_menu->add_separator();
|
||||||
|
|
||||||
for (int i = 0; i < bookmark_list.size(); i++) {
|
for (int i = 0; i < bookmark_list.size(); i++) {
|
||||||
String line = code_editor->get_text_edit()->get_line(bookmark_list[i]).strip_edges();
|
String line = code_editor->get_text_editor()->get_line(bookmark_list[i]).strip_edges();
|
||||||
// Limit the size of the line if too big.
|
// Limit the size of the line if too big.
|
||||||
if (line.length() > 50) {
|
if (line.length() > 50) {
|
||||||
line = line.substr(0, 50);
|
line = line.substr(0, 50);
|
||||||
@ -235,12 +235,12 @@ void TextEditor::_bookmark_item_pressed(int p_idx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::apply_code() {
|
void TextEditor::apply_code() {
|
||||||
text_file->set_text(code_editor->get_text_edit()->get_text());
|
text_file->set_text(code_editor->get_text_editor()->get_text());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextEditor::is_unsaved() {
|
bool TextEditor::is_unsaved() {
|
||||||
const bool unsaved =
|
const bool unsaved =
|
||||||
code_editor->get_text_edit()->get_version() != code_editor->get_text_edit()->get_saved_version() ||
|
code_editor->get_text_editor()->get_version() != code_editor->get_text_editor()->get_saved_version() ||
|
||||||
text_file->get_path().empty(); // In memory.
|
text_file->get_path().empty(); // In memory.
|
||||||
return unsaved;
|
return unsaved;
|
||||||
}
|
}
|
||||||
@ -280,7 +280,7 @@ void TextEditor::convert_indent_to_tabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::tag_saved_version() {
|
void TextEditor::tag_saved_version() {
|
||||||
code_editor->get_text_edit()->tag_saved_version();
|
code_editor->get_text_editor()->tag_saved_version();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::goto_line(int p_line, bool p_with_error) {
|
void TextEditor::goto_line(int p_line, bool p_with_error) {
|
||||||
@ -300,7 +300,7 @@ void TextEditor::clear_executing_line() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::ensure_focus() {
|
void TextEditor::ensure_focus() {
|
||||||
code_editor->get_text_edit()->grab_focus();
|
code_editor->get_text_editor()->grab_focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> TextEditor::get_functions() {
|
Vector<String> TextEditor::get_functions() {
|
||||||
@ -316,7 +316,7 @@ void TextEditor::update_settings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::set_tooltip_request_func(String p_method, Object *p_obj) {
|
void TextEditor::set_tooltip_request_func(String p_method, Object *p_obj) {
|
||||||
code_editor->get_text_edit()->set_tooltip_request_func(p_obj, p_method, this);
|
code_editor->get_text_editor()->set_tooltip_request_func(p_obj, p_method, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
Control *TextEditor::get_edit_menu() {
|
Control *TextEditor::get_edit_menu() {
|
||||||
@ -328,7 +328,7 @@ void TextEditor::clear_edit_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditor::_edit_option(int p_op) {
|
void TextEditor::_edit_option(int p_op) {
|
||||||
TextEdit *tx = code_editor->get_text_edit();
|
CodeEdit *tx = code_editor->get_text_editor();
|
||||||
|
|
||||||
switch (p_op) {
|
switch (p_op) {
|
||||||
case EDIT_UNDO: {
|
case EDIT_UNDO: {
|
||||||
@ -416,14 +416,14 @@ void TextEditor::_edit_option(int p_op) {
|
|||||||
code_editor->get_find_replace_bar()->popup_replace();
|
code_editor->get_find_replace_bar()->popup_replace();
|
||||||
} break;
|
} break;
|
||||||
case SEARCH_IN_FILES: {
|
case SEARCH_IN_FILES: {
|
||||||
String selected_text = code_editor->get_text_edit()->get_selection_text();
|
String selected_text = code_editor->get_text_editor()->get_selection_text();
|
||||||
|
|
||||||
// Yep, because it doesn't make sense to instance this dialog for every single script open...
|
// Yep, because it doesn't make sense to instance this dialog for every single script open...
|
||||||
// So this will be delegated to the ScriptEditor.
|
// So this will be delegated to the ScriptEditor.
|
||||||
emit_signal("search_in_files_requested", selected_text);
|
emit_signal("search_in_files_requested", selected_text);
|
||||||
} break;
|
} break;
|
||||||
case REPLACE_IN_FILES: {
|
case REPLACE_IN_FILES: {
|
||||||
String selected_text = code_editor->get_text_edit()->get_selection_text();
|
String selected_text = code_editor->get_text_editor()->get_selection_text();
|
||||||
|
|
||||||
emit_signal("replace_in_files_requested", selected_text);
|
emit_signal("replace_in_files_requested", selected_text);
|
||||||
} break;
|
} break;
|
||||||
@ -470,7 +470,7 @@ void TextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||||||
if (mb.is_valid()) {
|
if (mb.is_valid()) {
|
||||||
if (mb->get_button_index() == BUTTON_RIGHT) {
|
if (mb->get_button_index() == BUTTON_RIGHT) {
|
||||||
int col, row;
|
int col, row;
|
||||||
TextEdit *tx = code_editor->get_text_edit();
|
CodeEdit *tx = code_editor->get_text_editor();
|
||||||
tx->_get_mouse_pos(mb->get_global_position() - tx->get_global_position(), row, col);
|
tx->_get_mouse_pos(mb->get_global_position() - tx->get_global_position(), row, col);
|
||||||
|
|
||||||
tx->set_right_click_moves_caret(EditorSettings::get_singleton()->get("text_editor/cursor/right_click_moves_caret"));
|
tx->set_right_click_moves_caret(EditorSettings::get_singleton()->get("text_editor/cursor/right_click_moves_caret"));
|
||||||
@ -503,7 +503,7 @@ void TextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||||||
|
|
||||||
Ref<InputEventKey> k = ev;
|
Ref<InputEventKey> k = ev;
|
||||||
if (k.is_valid() && k->is_pressed() && k->get_keycode() == KEY_MENU) {
|
if (k.is_valid() && k->is_pressed() && k->get_keycode() == KEY_MENU) {
|
||||||
TextEdit *tx = code_editor->get_text_edit();
|
CodeEdit *tx = code_editor->get_text_editor();
|
||||||
int line = tx->cursor_get_line();
|
int line = tx->cursor_get_line();
|
||||||
_make_context_menu(tx->is_selection_active(), tx->can_fold(line), tx->is_folded(line), (get_global_transform().inverse() * tx->get_global_transform()).xform(tx->_get_cursor_pixel_pos()));
|
_make_context_menu(tx->is_selection_active(), tx->can_fold(line), tx->is_folded(line), (get_global_transform().inverse() * tx->get_global_transform()).xform(tx->_get_cursor_pixel_pos()));
|
||||||
context_menu->grab_focus();
|
context_menu->grab_focus();
|
||||||
@ -552,8 +552,8 @@ TextEditor::TextEditor() {
|
|||||||
|
|
||||||
update_settings();
|
update_settings();
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_context_menu_enabled(false);
|
code_editor->get_text_editor()->set_context_menu_enabled(false);
|
||||||
code_editor->get_text_edit()->connect("gui_input", callable_mp(this, &TextEditor::_text_edit_gui_input));
|
code_editor->get_text_editor()->connect("gui_input", callable_mp(this, &TextEditor::_text_edit_gui_input));
|
||||||
|
|
||||||
context_menu = memnew(PopupMenu);
|
context_menu = memnew(PopupMenu);
|
||||||
add_child(context_menu);
|
add_child(context_menu);
|
||||||
@ -649,7 +649,7 @@ TextEditor::TextEditor() {
|
|||||||
goto_line_dialog = memnew(GotoLineDialog);
|
goto_line_dialog = memnew(GotoLineDialog);
|
||||||
add_child(goto_line_dialog);
|
add_child(goto_line_dialog);
|
||||||
|
|
||||||
code_editor->get_text_edit()->set_drag_forwarding(this);
|
code_editor->get_text_editor()->set_drag_forwarding(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditor::~TextEditor() {
|
TextEditor::~TextEditor() {
|
||||||
|
@ -935,7 +935,7 @@ void VisualShaderEditor::_update_graph() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_expression) {
|
if (is_expression) {
|
||||||
TextEdit *expression_box = memnew(TextEdit);
|
CodeEdit *expression_box = memnew(CodeEdit);
|
||||||
Ref<CodeHighlighter> expression_syntax_highlighter;
|
Ref<CodeHighlighter> expression_syntax_highlighter;
|
||||||
expression_syntax_highlighter.instance();
|
expression_syntax_highlighter.instance();
|
||||||
expression_node->set_control(expression_box, 0);
|
expression_node->set_control(expression_box, 0);
|
||||||
@ -1186,14 +1186,14 @@ void VisualShaderEditor::_remove_output_port(int p_node, int p_port) {
|
|||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualShaderEditor::_expression_focus_out(Object *text_edit, int p_node) {
|
void VisualShaderEditor::_expression_focus_out(Object *code_edit, int p_node) {
|
||||||
VisualShader::Type type = get_current_shader_type();
|
VisualShader::Type type = get_current_shader_type();
|
||||||
Ref<VisualShaderNodeExpression> node = visual_shader->get_node(type, p_node);
|
Ref<VisualShaderNodeExpression> node = visual_shader->get_node(type, p_node);
|
||||||
if (node.is_null()) {
|
if (node.is_null()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEdit *expression_box = Object::cast_to<TextEdit>(text_edit);
|
CodeEdit *expression_box = Object::cast_to<CodeEdit>(code_edit);
|
||||||
|
|
||||||
if (node->get_expression() == expression_box->get_text()) {
|
if (node->get_expression() == expression_box->get_text()) {
|
||||||
return;
|
return;
|
||||||
@ -2550,7 +2550,7 @@ VisualShaderEditor::VisualShaderEditor() {
|
|||||||
preview_vbox = memnew(VBoxContainer);
|
preview_vbox = memnew(VBoxContainer);
|
||||||
preview_vbox->set_visible(preview_showed);
|
preview_vbox->set_visible(preview_showed);
|
||||||
main_box->add_child(preview_vbox);
|
main_box->add_child(preview_vbox);
|
||||||
preview_text = memnew(TextEdit);
|
preview_text = memnew(CodeEdit);
|
||||||
syntax_highlighter.instance();
|
syntax_highlighter.instance();
|
||||||
preview_vbox->add_child(preview_text);
|
preview_vbox->add_child(preview_text);
|
||||||
preview_text->set_h_size_flags(SIZE_EXPAND_FILL);
|
preview_text->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
|
@ -115,7 +115,7 @@ class VisualShaderEditor : public VBoxContainer {
|
|||||||
bool pending_update_preview;
|
bool pending_update_preview;
|
||||||
bool shader_error;
|
bool shader_error;
|
||||||
VBoxContainer *preview_vbox;
|
VBoxContainer *preview_vbox;
|
||||||
TextEdit *preview_text;
|
CodeEdit *preview_text;
|
||||||
Ref<CodeHighlighter> syntax_highlighter;
|
Ref<CodeHighlighter> syntax_highlighter;
|
||||||
Label *error_text;
|
Label *error_text;
|
||||||
|
|
||||||
@ -304,7 +304,7 @@ class VisualShaderEditor : public VBoxContainer {
|
|||||||
void _change_output_port_type(int p_type, int p_node, int p_port);
|
void _change_output_port_type(int p_type, int p_node, int p_port);
|
||||||
void _change_output_port_name(const String &p_text, Object *line_edit, int p_node, int p_port);
|
void _change_output_port_name(const String &p_text, Object *line_edit, int p_node, int p_port);
|
||||||
|
|
||||||
void _expression_focus_out(Object *text_edit, int p_node);
|
void _expression_focus_out(Object *code_edit, int p_node);
|
||||||
|
|
||||||
void _set_node_size(int p_type, int p_node, const Size2 &p_size);
|
void _set_node_size(int p_type, int p_node, const Size2 &p_size);
|
||||||
void _node_resized(const Vector2 &p_new_size, int p_type, int p_node);
|
void _node_resized(const Vector2 &p_new_size, int p_type, int p_node);
|
||||||
|
47
scene/gui/code_edit.cpp
Normal file
47
scene/gui/code_edit.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*************************************************************************/
|
||||||
|
/* code_edit.cpp */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* This file is part of: */
|
||||||
|
/* GODOT ENGINE */
|
||||||
|
/* https://godotengine.org */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
|
||||||
|
/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
|
||||||
|
/* */
|
||||||
|
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||||
|
/* a copy of this software and associated documentation files (the */
|
||||||
|
/* "Software"), to deal in the Software without restriction, including */
|
||||||
|
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||||
|
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||||
|
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||||
|
/* the following conditions: */
|
||||||
|
/* */
|
||||||
|
/* The above copyright notice and this permission notice shall be */
|
||||||
|
/* included in all copies or substantial portions of the Software. */
|
||||||
|
/* */
|
||||||
|
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||||
|
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||||
|
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||||
|
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||||
|
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||||
|
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||||
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
#include "code_edit.h"
|
||||||
|
|
||||||
|
void CodeEdit::_notification(int p_what) {
|
||||||
|
switch (p_what) {
|
||||||
|
case NOTIFICATION_DRAW: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CodeEdit::_bind_methods() {
|
||||||
|
}
|
||||||
|
|
||||||
|
CodeEdit::CodeEdit() {
|
||||||
|
}
|
||||||
|
|
||||||
|
CodeEdit::~CodeEdit() {
|
||||||
|
}
|
50
scene/gui/code_edit.h
Normal file
50
scene/gui/code_edit.h
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/*************************************************************************/
|
||||||
|
/* code_edit.h */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* This file is part of: */
|
||||||
|
/* GODOT ENGINE */
|
||||||
|
/* https://godotengine.org */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
|
||||||
|
/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
|
||||||
|
/* */
|
||||||
|
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||||
|
/* a copy of this software and associated documentation files (the */
|
||||||
|
/* "Software"), to deal in the Software without restriction, including */
|
||||||
|
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||||
|
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||||
|
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||||
|
/* the following conditions: */
|
||||||
|
/* */
|
||||||
|
/* The above copyright notice and this permission notice shall be */
|
||||||
|
/* included in all copies or substantial portions of the Software. */
|
||||||
|
/* */
|
||||||
|
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||||
|
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||||
|
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||||
|
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||||
|
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||||
|
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||||
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
#ifndef CODEEDIT_H
|
||||||
|
#define CODEEDIT_H
|
||||||
|
|
||||||
|
#include "scene/gui/text_edit.h"
|
||||||
|
|
||||||
|
class CodeEdit : public TextEdit {
|
||||||
|
GDCLASS(CodeEdit, TextEdit)
|
||||||
|
|
||||||
|
private:
|
||||||
|
protected:
|
||||||
|
void _notification(int p_what);
|
||||||
|
|
||||||
|
static void _bind_methods();
|
||||||
|
|
||||||
|
public:
|
||||||
|
CodeEdit();
|
||||||
|
~CodeEdit();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CODEEDIT_H
|
@ -81,6 +81,7 @@
|
|||||||
#include "scene/gui/center_container.h"
|
#include "scene/gui/center_container.h"
|
||||||
#include "scene/gui/check_box.h"
|
#include "scene/gui/check_box.h"
|
||||||
#include "scene/gui/check_button.h"
|
#include "scene/gui/check_button.h"
|
||||||
|
#include "scene/gui/code_edit.h"
|
||||||
#include "scene/gui/color_picker.h"
|
#include "scene/gui/color_picker.h"
|
||||||
#include "scene/gui/color_rect.h"
|
#include "scene/gui/color_rect.h"
|
||||||
#include "scene/gui/control.h"
|
#include "scene/gui/control.h"
|
||||||
@ -351,6 +352,7 @@ void register_scene_types() {
|
|||||||
ClassDB::register_class<Tree>();
|
ClassDB::register_class<Tree>();
|
||||||
|
|
||||||
ClassDB::register_class<TextEdit>();
|
ClassDB::register_class<TextEdit>();
|
||||||
|
ClassDB::register_class<CodeEdit>();
|
||||||
ClassDB::register_class<SyntaxHighlighter>();
|
ClassDB::register_class<SyntaxHighlighter>();
|
||||||
ClassDB::register_class<CodeHighlighter>();
|
ClassDB::register_class<CodeHighlighter>();
|
||||||
|
|
||||||
|
@ -415,6 +415,47 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||||||
theme->set_constant("completion_scroll_width", "TextEdit", 3);
|
theme->set_constant("completion_scroll_width", "TextEdit", 3);
|
||||||
theme->set_constant("line_spacing", "TextEdit", 4 * scale);
|
theme->set_constant("line_spacing", "TextEdit", 4 * scale);
|
||||||
|
|
||||||
|
// CodeEdit
|
||||||
|
theme->set_stylebox("normal", "CodeEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3, 0, 0, 0, 0));
|
||||||
|
theme->set_stylebox("focus", "CodeEdit", focus);
|
||||||
|
theme->set_stylebox("read_only", "CodeEdit", make_stylebox(tree_bg_disabled_png, 4, 4, 4, 4, 0, 0, 0, 0));
|
||||||
|
theme->set_stylebox("completion", "CodeEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3, 0, 0, 0, 0));
|
||||||
|
|
||||||
|
theme->set_icon("tab", "CodeEdit", make_icon(tab_png));
|
||||||
|
theme->set_icon("space", "CodeEdit", make_icon(space_png));
|
||||||
|
theme->set_icon("folded", "CodeEdit", make_icon(arrow_right_png));
|
||||||
|
theme->set_icon("fold", "CodeEdit", make_icon(arrow_down_png));
|
||||||
|
|
||||||
|
theme->set_font("font", "CodeEdit", Ref<Font>());
|
||||||
|
|
||||||
|
theme->set_color("background_color", "CodeEdit", Color(0, 0, 0, 0));
|
||||||
|
theme->set_color("completion_background_color", "CodeEdit", Color(0.17, 0.16, 0.2));
|
||||||
|
theme->set_color("completion_selected_color", "CodeEdit", Color(0.26, 0.26, 0.27));
|
||||||
|
theme->set_color("completion_existing_color", "CodeEdit", Color(0.87, 0.87, 0.87, 0.13));
|
||||||
|
theme->set_color("completion_scroll_color", "CodeEdit", control_font_color_pressed);
|
||||||
|
theme->set_color("completion_font_color", "CodeEdit", Color(0.67, 0.67, 0.67));
|
||||||
|
theme->set_color("font_color", "CodeEdit", control_font_color);
|
||||||
|
theme->set_color("font_color_selected", "CodeEdit", Color(0, 0, 0));
|
||||||
|
theme->set_color("font_color_readonly", "CodeEdit", Color(control_font_color.r, control_font_color.g, control_font_color.b, 0.5f));
|
||||||
|
theme->set_color("selection_color", "CodeEdit", font_color_selection);
|
||||||
|
theme->set_color("mark_color", "CodeEdit", Color(1.0, 0.4, 0.4, 0.4));
|
||||||
|
theme->set_color("bookmark_color", "CodeEdit", Color(0.08, 0.49, 0.98));
|
||||||
|
theme->set_color("breakpoint_color", "CodeEdit", Color(0.8, 0.8, 0.4, 0.2));
|
||||||
|
theme->set_color("executing_line_color", "CodeEdit", Color(0.2, 0.8, 0.2, 0.4));
|
||||||
|
theme->set_color("code_folding_color", "CodeEdit", Color(0.8, 0.8, 0.8, 0.8));
|
||||||
|
theme->set_color("current_line_color", "CodeEdit", Color(0.25, 0.25, 0.26, 0.8));
|
||||||
|
theme->set_color("caret_color", "CodeEdit", control_font_color);
|
||||||
|
theme->set_color("caret_background_color", "CodeEdit", Color(0, 0, 0));
|
||||||
|
theme->set_color("brace_mismatch_color", "CodeEdit", Color(1, 0.2, 0.2));
|
||||||
|
theme->set_color("line_number_color", "CodeEdit", Color(0.67, 0.67, 0.67, 0.4));
|
||||||
|
theme->set_color("safe_line_number_color", "CodeEdit", Color(0.67, 0.78, 0.67, 0.6));
|
||||||
|
theme->set_color("word_highlighted_color", "CodeEdit", Color(0.8, 0.9, 0.9, 0.15));
|
||||||
|
|
||||||
|
theme->set_constant("completion_lines", "CodeEdit", 7);
|
||||||
|
theme->set_constant("completion_max_width", "CodeEdit", 50);
|
||||||
|
theme->set_constant("completion_scroll_width", "CodeEdit", 3);
|
||||||
|
theme->set_constant("line_spacing", "CodeEdit", 4 * scale);
|
||||||
|
|
||||||
Ref<Texture2D> empty_icon = memnew(ImageTexture);
|
Ref<Texture2D> empty_icon = memnew(ImageTexture);
|
||||||
|
|
||||||
// HScrollBar
|
// HScrollBar
|
||||||
|
Loading…
Reference in New Issue
Block a user