mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-03-07 21:56:59 +01:00
817 lines
29 KiB
C++
817 lines
29 KiB
C++
|
|
#include "vanillaeditor.h"
|
|
|
|
|
|
Reference VanillaEditor::get_*LastOpenedFiles() {
|
|
return *LastOpenedFiles;
|
|
}
|
|
|
|
void VanillaEditor::set_*LastOpenedFiles(const Reference &val) {
|
|
*LastOpenedFiles = val;
|
|
}
|
|
|
|
|
|
TextEdit VanillaEditor::get_*text_editor() {
|
|
return *text_editor;
|
|
}
|
|
|
|
void VanillaEditor::set_*text_editor(const TextEdit &val) {
|
|
*text_editor = val;
|
|
}
|
|
|
|
|
|
FileDialog VanillaEditor::get_*file_list() {
|
|
return *file_list;
|
|
}
|
|
|
|
void VanillaEditor::set_*file_list(const FileDialog &val) {
|
|
*file_list = val;
|
|
}
|
|
|
|
|
|
HBoxContainer VanillaEditor::get_*search_box() {
|
|
return *search_box;
|
|
}
|
|
|
|
void VanillaEditor::set_*search_box(const HBoxContainer &val) {
|
|
*search_box = val;
|
|
}
|
|
|
|
|
|
LineEdit VanillaEditor::get_*search_box_line_edit() {
|
|
return *search_box_line_edit;
|
|
}
|
|
|
|
void VanillaEditor::set_*search_box_line_edit(const LineEdit &val) {
|
|
*search_box_line_edit = val;
|
|
}
|
|
|
|
|
|
CheckBox VanillaEditor::get_*search_box_match_case_cb() {
|
|
return *search_box_match_case_cb;
|
|
}
|
|
|
|
void VanillaEditor::set_*search_box_match_case_cb(const CheckBox &val) {
|
|
*search_box_match_case_cb = val;
|
|
}
|
|
|
|
|
|
CheckBox VanillaEditor::get_*search_box_whole_words_cb() {
|
|
return *search_box_whole_words_cb;
|
|
}
|
|
|
|
void VanillaEditor::set_*search_box_whole_words_cb(const CheckBox &val) {
|
|
*search_box_whole_words_cb = val;
|
|
}
|
|
|
|
|
|
Button VanillaEditor::get_*search_box_close_button() {
|
|
return *search_box_close_button;
|
|
}
|
|
|
|
void VanillaEditor::set_*search_box_close_button(const Button &val) {
|
|
*search_box_close_button = val;
|
|
}
|
|
|
|
|
|
HBoxContainer VanillaEditor::get_*replace_box() {
|
|
return *replace_box;
|
|
}
|
|
|
|
void VanillaEditor::set_*replace_box(const HBoxContainer &val) {
|
|
*replace_box = val;
|
|
}
|
|
|
|
|
|
LineEdit VanillaEditor::get_*replace_box_replace_le() {
|
|
return *replace_box_replace_le;
|
|
}
|
|
|
|
void VanillaEditor::set_*replace_box_replace_le(const LineEdit &val) {
|
|
*replace_box_replace_le = val;
|
|
}
|
|
|
|
|
|
LineEdit VanillaEditor::get_*replace_box_with() {
|
|
return *replace_box_with;
|
|
}
|
|
|
|
void VanillaEditor::set_*replace_box_with(const LineEdit &val) {
|
|
*replace_box_with = val;
|
|
}
|
|
|
|
|
|
Button VanillaEditor::get_*replace_box_button() {
|
|
return *replace_box_button;
|
|
}
|
|
|
|
void VanillaEditor::set_*replace_box_button(const Button &val) {
|
|
*replace_box_button = val;
|
|
}
|
|
|
|
|
|
Button VanillaEditor::get_*replace_box_close() {
|
|
return *replace_box_close;
|
|
}
|
|
|
|
void VanillaEditor::set_*replace_box_close(const Button &val) {
|
|
*replace_box_close = val;
|
|
}
|
|
|
|
|
|
TextureRect VanillaEditor::get_*file_info_last_modified_icon() {
|
|
return *file_info_last_modified_icon;
|
|
}
|
|
|
|
void VanillaEditor::set_*file_info_last_modified_icon(const TextureRect &val) {
|
|
*file_info_last_modified_icon = val;
|
|
}
|
|
|
|
|
|
Label VanillaEditor::get_*file_info_last_modified() {
|
|
return *file_info_last_modified;
|
|
}
|
|
|
|
void VanillaEditor::set_*file_info_last_modified(const Label &val) {
|
|
*file_info_last_modified = val;
|
|
}
|
|
|
|
|
|
Label VanillaEditor::get_*file_info_c_counter() {
|
|
return *file_info_c_counter;
|
|
}
|
|
|
|
void VanillaEditor::set_*file_info_c_counter(const Label &val) {
|
|
*file_info_c_counter = val;
|
|
}
|
|
|
|
|
|
CheckBox VanillaEditor::get_*file_info_read_only() {
|
|
return *file_info_read_only;
|
|
}
|
|
|
|
void VanillaEditor::set_*file_info_read_only(const CheckBox &val) {
|
|
*file_info_read_only = val;
|
|
}
|
|
|
|
|
|
String VanillaEditor::get_current_path() {
|
|
return current_path;
|
|
}
|
|
|
|
void VanillaEditor::set_current_path(const String &val) {
|
|
current_path = val;
|
|
}
|
|
|
|
|
|
String VanillaEditor::get_current_filename() {
|
|
return current_filename;
|
|
}
|
|
|
|
void VanillaEditor::set_current_filename(const String &val) {
|
|
current_filename = val;
|
|
}
|
|
|
|
|
|
int VanillaEditor::get_search_flag() const {
|
|
return search_flag;
|
|
}
|
|
|
|
void VanillaEditor::set_search_flag(const int val) {
|
|
search_flag = val;
|
|
}
|
|
|
|
|
|
|
|
//tool;
|
|
Reference *LastOpenedFiles = null;
|
|
TextEdit *text_editor = null;
|
|
FileDialog *file_list = null;
|
|
HBoxContainer *search_box = null;
|
|
LineEdit *search_box_line_edit = null;
|
|
CheckBox *search_box_match_case_cb = null;
|
|
CheckBox *search_box_whole_words_cb = null;
|
|
Button *search_box_close_button = null;
|
|
HBoxContainer *replace_box = null;
|
|
LineEdit *replace_box_replace_le = null;
|
|
LineEdit *replace_box_with = null;
|
|
Button *replace_box_button = null;
|
|
Button *replace_box_close = null;
|
|
TextureRect *file_info_last_modified_icon = null;
|
|
Label *file_info_last_modified = null;
|
|
Label *file_info_c_counter = null;
|
|
CheckBox *file_info_read_only = null;
|
|
String current_path = "";
|
|
String current_filename = "";
|
|
int search_flag = 0;
|
|
signal text_changed();
|
|
|
|
void VanillaEditor::_init() {
|
|
size_flags_vertical = SIZE_EXPAND_FILL;
|
|
set_anchors_and_margins_preset(Control.PRESET_WIDE);
|
|
text_editor = TextEdit.new();
|
|
add_child(text_editor);
|
|
text_editor.highlight_current_line = true;
|
|
text_editor.syntax_highlighting = true;
|
|
text_editor.show_line_numbers = true;
|
|
text_editor.breakpoint_gutter = true;
|
|
text_editor.highlight_all_occurrences = true;
|
|
text_editor.override_selected_font_color = true;
|
|
text_editor.smooth_scrolling = true;
|
|
text_editor.hiding_enabled = true;
|
|
//todo look this up from the editor settings;
|
|
//text_editor.caret_blink = true;
|
|
//text_editor.caret_blink_speed = 1;
|
|
text_editor.caret_moving_by_right_click = false;
|
|
text_editor.minimap_draw = true;
|
|
text_editor.size_flags_vertical = SIZE_EXPAND_FILL;
|
|
text_editor.set("custom_colors/member_variable_color", Color(0.737255, 0.882353, 1));
|
|
text_editor.set("custom_colors/code_folding_color", Color(1, 1, 1, 0.701961));
|
|
text_editor.set("custom_colors/function_color", Color(0.341176, 0.701961, 1));
|
|
text_editor.set("custom_colors/safe_line_number_color", Color(0.8, 0.968627, 0.827451, 0.74902));
|
|
text_editor.set("custom_colors/symbol_color", Color(0.670588, 0.788235, 1));
|
|
text_editor.set("custom_colors/caret_background_color", Color(0, 0, 0));
|
|
text_editor.set("custom_colors/selection_color", Color(0.411765, 0.611765, 0.909804, 0.34902));
|
|
text_editor.set("custom_colors/caret_color", Color(1, 1, 1));
|
|
text_editor.set("custom_colors/breakpoint_color", Color(1, 0.470588, 0.419608));
|
|
text_editor.set("custom_colors/font_color_selected", Color(0, 0, 0));
|
|
text_editor.set("custom_colors/font_color", Color(1, 1, 1));
|
|
text_editor.set("custom_colors/completion_font_color", Color(1, 1, 1, 0.392157));
|
|
text_editor.set("custom_colors/completion_scroll_color", Color(1, 1, 1, 0.070588));
|
|
text_editor.set("custom_colors/background_color", Color(0.121569, 0.145098, 0.192157));
|
|
text_editor.set("custom_colors/number_color", Color(0.631373, 1, 0.882353));
|
|
text_editor.set("custom_colors/completion_background_color", Color(0.196078, 0.231373, 0.309804));
|
|
text_editor.set("custom_colors/brace_mismatch_color", Color(1, 0.470588, 0.419608));
|
|
text_editor.set("custom_colors/current_line_color", Color(1, 1, 1, 0.070588));
|
|
text_editor.set("custom_colors/completion_selected_color", Color(1, 1, 1, 0.070588));
|
|
text_editor.set("custom_colors/mark_color", Color(1, 0.470588, 0.419608, 0.301961));
|
|
text_editor.set("custom_colors/word_highlighted_color", Color(1, 1, 1, 0.392157));
|
|
text_editor.set("custom_colors/completion_existing_color", Color(1, 1, 1, 0.392157));
|
|
text_editor.set("custom_constants/completion_lines", 20);
|
|
text_editor.set("custom_constants/completion_max_width", 20);
|
|
text_editor.set("custom_constants/completion_scroll_width", 20);
|
|
//text_editor.owner = self;
|
|
search_box = HBoxContainer.new();
|
|
add_child(search_box);
|
|
search_box.hide();
|
|
Label *selabel = Label.new();
|
|
search_box.add_child(selabel);
|
|
selabel.text = "Search:";
|
|
search_box_line_edit = LineEdit.new();
|
|
search_box.add_child(search_box_line_edit);
|
|
search_box_line_edit.size_flags_horizontal = SIZE_EXPAND_FILL;
|
|
search_box_line_edit.connect("text_changed", self, "_on_LineEdit_text_changed");
|
|
search_box_line_edit.connect("focus_entered", self, "_on_LineEdit_focus_entered");
|
|
search_box_match_case_cb = CheckBox.new();
|
|
search_box.add_child(search_box_match_case_cb);
|
|
search_box_match_case_cb.text = "Match Case";
|
|
search_box_match_case_cb.connect("toggled", self, "_on_matchcase_toggled");
|
|
search_box_whole_words_cb = CheckBox.new();
|
|
search_box.add_child(search_box_whole_words_cb);
|
|
search_box_whole_words_cb.text = "Whole Words";
|
|
search_box_whole_words_cb.connect("toggled", self, "_on_wholewords_toggled");
|
|
search_box_close_button = Button.new();
|
|
search_box.add_child(search_box_close_button);
|
|
search_box_close_button.text = "x";
|
|
search_box_close_button.flat = true;
|
|
search_box_whole_words_cb.connect("pressed", self, "_on_close_pressed");
|
|
replace_box = HBoxContainer.new();
|
|
add_child(replace_box);
|
|
replace_box.hide();
|
|
Label *rblabel = Label.new();
|
|
replace_box.add_child(rblabel);
|
|
rblabel.text = "Replace:";
|
|
replace_box_replace_le = LineEdit.new();
|
|
replace_box.add_child(replace_box_replace_le);
|
|
replace_box_replace_le.size_flags_horizontal = SIZE_EXPAND_FILL;
|
|
Label *rb2label = Label.new();
|
|
replace_box.add_child(rb2label);
|
|
rb2label.text = "With:";
|
|
replace_box_with = LineEdit.new();
|
|
replace_box.add_child(replace_box_with);
|
|
replace_box_with.size_flags_horizontal = SIZE_EXPAND_FILL;
|
|
replace_box_button = Button.new();
|
|
replace_box.add_child(replace_box_button);
|
|
replace_box_button.text = "Replace";
|
|
replace_box_button.connect("pressed", self, "_on_Button_pressed");
|
|
replace_box_close = Button.new();
|
|
replace_box.add_child(replace_box_close);
|
|
replace_box_close.text = "x";
|
|
replace_box_close.flat = true;
|
|
replace_box_button.connect("pressed", self, "_on_close2_pressed");
|
|
HBoxContainer *file_info = HBoxContainer.new();
|
|
add_child(file_info);
|
|
file_info_last_modified_icon = TextureRect.new();
|
|
file_info.add_child(file_info_last_modified_icon);
|
|
file_info_last_modified_icon.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED;
|
|
Label *filabel = Label.new();
|
|
file_info.add_child(filabel);
|
|
filabel.text = "Last modified time:";
|
|
file_info_last_modified = Label.new();
|
|
file_info.add_child(file_info_last_modified);
|
|
Label *fi2label = Label.new();
|
|
file_info.add_child(fi2label);
|
|
fi2label.text = "Characters counter:";
|
|
fi2label.align = Label.ALIGN_RIGHT;
|
|
fi2label.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL | SIZE_SHRINK_CENTER | SIZE_SHRINK_END;
|
|
file_info_c_counter = Label.new();
|
|
file_info.add_child(file_info_c_counter);
|
|
file_info_c_counter.size_flags_horizontal = SIZE_EXPAND;
|
|
file_info_read_only = CheckBox.new();
|
|
file_info.add_child(file_info_read_only);
|
|
file_info_read_only.text = "Can Edit";
|
|
file_info_read_only.flat = true;
|
|
file_info_read_only.size_flags_horizontal = SIZE_EXPAND | SIZE_SHRINK_END;
|
|
}
|
|
|
|
|
|
void VanillaEditor::_ready() {
|
|
text_editor.connect("text_changed", self, "_on_text_editor_text_changed");
|
|
//FileList = get_parent().get_parent().get_parent().get_parent().get_node("FileList");
|
|
file_info_read_only.connect("toggled",self,"_on_Readonly_toggled");
|
|
//file_info_read_only.set("custom_icons/checked",IconLoader.load_icon_from_name("read"));
|
|
//file_info_read_only.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit"));
|
|
add_to_group("vanilla_editor");
|
|
load_default_font();
|
|
}
|
|
|
|
|
|
void VanillaEditor::set_font(const String &font_path) {
|
|
Ref<DynamicFont> dynamic_font = DynamicFont.new();
|
|
Ref<DynamicFontData> dynamic_font_data = DynamicFontData.new();
|
|
dynamic_font_data.set_font_path(font_path);
|
|
dynamic_font.set_font_data(dynamic_font_data);
|
|
text_editor.set("custom_fonts/font",dynamic_font);
|
|
}
|
|
|
|
|
|
void VanillaEditor::load_default_font() {
|
|
String default_font = LastOpenedFiles.get_editor_font();
|
|
|
|
if (default_font != "") {
|
|
set_font(default_font);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void VanillaEditor::set_wrap_enabled(const bool enabled) {
|
|
text_editor.set_wrap_enabled(enabled);
|
|
text_editor.update();
|
|
}
|
|
|
|
|
|
void VanillaEditor::draw_minimap(const bool value) {
|
|
text_editor.draw_minimap(value);
|
|
text_editor.update();
|
|
}
|
|
|
|
|
|
void VanillaEditor::color_region(const String &filextension) {
|
|
|
|
{
|
|
|
|
{
|
|
text_editor.add_color_region("[b]","[/b]",Color8(153,153,255,255),false);
|
|
text_editor.add_color_region("[i]","[/i]",Color8(153,255,153,255),false);
|
|
text_editor.add_color_region("[s]","[/s]",Color8(255,153,153,255),false);
|
|
text_editor.add_color_region("[u]","[/u]",Color8(255,255,102,255),false);
|
|
text_editor.add_color_region("[url","[/url]",Color8(153,204,255,255),false);
|
|
text_editor.add_color_region("[code]","[/code]",Color8(192,192,192,255),false);
|
|
text_editor.add_color_region("[img]","[/img]",Color8(255,204,153,255),false);
|
|
text_editor.add_color_region("[center]","[/center]",Color8(175,238,238,255),false);
|
|
text_editor.add_color_region("[right]","[/right]",Color8(135,206,235,255),false);
|
|
}
|
|
|
|
|
|
{
|
|
text_editor.add_color_region("<b>","</b>",Color8(153,153,255,255),false);
|
|
text_editor.add_color_region("<i>","</i>",Color8(153,255,153,255),false);
|
|
text_editor.add_color_region("<del>","</del>",Color8(255,153,153,255),false);
|
|
text_editor.add_color_region("<ins>","</ins>",Color8(255,255,102,255),false);
|
|
text_editor.add_color_region("<a","</a>",Color8(153,204,255,255),false);
|
|
text_editor.add_color_region("<img","/>",Color8(255,204,153,255),true);
|
|
text_editor.add_color_region("<pre>","</pre>",Color8(192,192,192,255),false);
|
|
text_editor.add_color_region("<center>","</center>",Color8(175,238,238,255),false);
|
|
text_editor.add_color_region("<right>","</right>",Color8(135,206,235,255),false);
|
|
}
|
|
|
|
|
|
{
|
|
text_editor.add_color_region("***","***",Color8(126,186,181,255),false);
|
|
text_editor.add_color_region("**","**",Color8(153,153,255,255),false);
|
|
text_editor.add_color_region("*","*",Color8(153,255,153,255),false);
|
|
text_editor.add_color_region("+ ","",Color8(255,178,102,255),false);
|
|
text_editor.add_color_region("- ","",Color8(255,178,102,255),false);
|
|
text_editor.add_color_region("~~","~~",Color8(255,153,153,255),false);
|
|
text_editor.add_color_region("__","__",Color8(255,255,102,255),false);
|
|
text_editor.add_color_region("[",")",Color8(153,204,255,255),false);
|
|
text_editor.add_color_region("`","`",Color8(192,192,192,255),false);
|
|
text_editor.add_color_region('"*.','"',Color8(255,255,255,255),true);
|
|
// ","",Color8(105,105,105,255),true);
|
|
text_editor.add_color_region(";
|
|
//// ","",Color8(128,128,128,255),true);
|
|
text_editor.add_color_region(";
|
|
////// ","",Color8(169,169,169,255),true);
|
|
text_editor.add_color_region(";
|
|
//////// ","",Color8(192,192,192,255),true);
|
|
text_editor.add_color_region(";
|
|
////////// ","",Color8(211,211,211,255),true);
|
|
text_editor.add_color_region(";
|
|
//////////// ","",Color8(255,255,255,255),true);
|
|
text_editor.add_color_region(";
|
|
text_editor.add_color_region("> ","",Color8(172,138,79,255),true);
|
|
}
|
|
|
|
|
|
{
|
|
text_editor.add_color_region("[","]",Color8(153,204,255,255),false);
|
|
text_editor.add_color_region('"','"',Color8(255,255,102,255),false);
|
|
text_editor.add_color_region(';','',Color8(128,128,128,255),true);
|
|
}
|
|
|
|
|
|
{
|
|
text_editor.add_color_region("[","]",Color8(153,204,255,255),false);
|
|
text_editor.add_color_region('"','"',Color8(255,255,102,255),false);
|
|
text_editor.add_color_region(';','',Color8(128,128,128,255),true);
|
|
}
|
|
|
|
|
|
{
|
|
pass;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void VanillaEditor::clean_editor() {
|
|
text_editor.set_text("");
|
|
//file_info_last_modified_icon.texture = IconLoader.load_icon_from_name("save");
|
|
file_info_last_modified.set_text("");
|
|
file_list.invalidate();
|
|
current_filename = "";
|
|
current_path = "";
|
|
}
|
|
|
|
|
|
void VanillaEditor::new_file_open(const String &file_content, const Dictionary &last_modified, const String ¤t_file_path) {
|
|
current_path = current_file_path;
|
|
current_filename = current_file_path.get_file();
|
|
color_region(current_filename.get_extension());
|
|
text_editor.set_text(file_content);
|
|
update_lastmodified(last_modified,"save");
|
|
file_list.invalidate();
|
|
count_characters();
|
|
}
|
|
|
|
|
|
void VanillaEditor::update_lastmodified(const Dictionary &last_modified, const String &icon) {
|
|
file_info_last_modified.set_text(str(last_modified.hour)+":"+str(last_modified.minute)+" "+str(last_modified.day)+"/"+str(last_modified.month)+"/"+str(last_modified.year));
|
|
}
|
|
|
|
//file_info_last_modified_icon.texture = IconLoader.load_icon_from_name(icon);
|
|
|
|
void VanillaEditor::new_file_create(const String &file_name) {
|
|
text_editor.set_text("");
|
|
file_list.invalidate();
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_Readonly_toggled(const bool button_pressed) {
|
|
|
|
if (button_pressed) {
|
|
file_info_read_only.set_text("Read Only");
|
|
text_editor.readonly = (true);
|
|
}
|
|
|
|
|
|
else {
|
|
file_info_read_only.set_text("Can Edit");
|
|
text_editor.readonly = (false);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_text_editor_text_changed() {
|
|
//file_info_last_modified_icon.texture = IconLoader.load_icon_from_name("saveas");
|
|
count_characters();
|
|
emit_signal("text_changed");
|
|
}
|
|
|
|
|
|
void VanillaEditor::count_characters() {
|
|
int counted = 0;
|
|
|
|
for (int line = 0; line < text_editor.get_line_count(); ++line) { //line in range(text_editor.get_line_count())
|
|
counted += text_editor.get_line(line).length();
|
|
}
|
|
|
|
file_info_c_counter.set_text(str(counted));
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_LineEdit_text_changed(const String &new_text) {
|
|
int linecount = text_editor.get_line_count();
|
|
|
|
if (new_text != "") {
|
|
PoolIntArray found = ;
|
|
bool find = false;
|
|
|
|
for (int line = 0; line < linecount; ++line) { //line in range(linecount)
|
|
|
|
for (int column = 0; column < text_editor.get_line(line).length(); ++column) { //column in range(text_editor.get_line(line).length())
|
|
found = text_editor.search( new_text, search_flag, line , column );
|
|
|
|
if (found.size()) {
|
|
|
|
if (found[1] == line) {
|
|
// if not find:;
|
|
text_editor.select(line,found[0],found[1],found[0]+new_text.length());
|
|
}
|
|
|
|
// find = true;
|
|
}
|
|
|
|
|
|
else {
|
|
text_editor.select(0,0,0,0);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
text_editor.select(0,0,0,0);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_matchcase_toggled(const bool button_pressed) {
|
|
|
|
if (button_pressed) {
|
|
search_flag = 1;
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
if (search_box_whole_words_cb.is_pressed()) {
|
|
search_flag = 2;
|
|
}
|
|
|
|
|
|
else {
|
|
search_flag = 0;
|
|
}
|
|
|
|
}
|
|
|
|
_on_LineEdit_text_changed(search_box_line_edit.get_text());
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_wholewords_toggled(const bool button_pressed) {
|
|
|
|
if (button_pressed) {
|
|
search_flag = 2;
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
if (search_box_match_case_cb.is_pressed()) {
|
|
search_flag = 1;
|
|
}
|
|
|
|
|
|
else {
|
|
search_flag = 0;
|
|
}
|
|
|
|
}
|
|
|
|
_on_LineEdit_text_changed(search_box_line_edit.get_text());
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_close_pressed() {
|
|
search_box.hide();
|
|
}
|
|
|
|
|
|
void VanillaEditor::open_search_box() {
|
|
|
|
if (search_box.visible) {
|
|
search_box.hide();
|
|
}
|
|
|
|
|
|
else {
|
|
search_box.show();
|
|
search_box.get_node("LineEdit").grab_focus();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_Button_pressed() {
|
|
int linecount = text_editor.get_line_count()-1;
|
|
String old_text = replace_box_replace_le.get_text();
|
|
String new_text = replace_box_with.get_text();
|
|
String text = text_editor.get_text();
|
|
text_editor.set_text(text.replace(old_text,new_text));
|
|
}
|
|
|
|
|
|
void VanillaEditor::open_replace_box() {
|
|
|
|
if (replace_box.visible) {
|
|
replace_box.hide();
|
|
}
|
|
|
|
|
|
else {
|
|
replace_box.show();
|
|
replace_box.get_node("replace").grab_focus();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_close2_pressed() {
|
|
replace_box.hide();
|
|
}
|
|
|
|
|
|
void VanillaEditor::_on_LineEdit_focus_entered() {
|
|
_on_LineEdit_text_changed(search_box_line_edit.get_text());
|
|
}
|
|
|
|
}
|
|
|
|
VanillaEditor::VanillaEditor() {
|
|
*LastOpenedFiles = null;
|
|
*text_editor = null;
|
|
*file_list = null;
|
|
*search_box = null;
|
|
*search_box_line_edit = null;
|
|
*search_box_match_case_cb = null;
|
|
*search_box_whole_words_cb = null;
|
|
*search_box_close_button = null;
|
|
*replace_box = null;
|
|
*replace_box_replace_le = null;
|
|
*replace_box_with = null;
|
|
*replace_box_button = null;
|
|
*replace_box_close = null;
|
|
*file_info_last_modified_icon = null;
|
|
*file_info_last_modified = null;
|
|
*file_info_c_counter = null;
|
|
*file_info_read_only = null;
|
|
current_path = "";
|
|
current_filename = "";
|
|
search_flag = 0;
|
|
}
|
|
|
|
VanillaEditor::~VanillaEditor() {
|
|
}
|
|
|
|
|
|
static void VanillaEditor::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("get_*LastOpenedFiles"), &VanillaEditor::get_*LastOpenedFiles);
|
|
ClassDB::bind_method(D_METHOD("set_*LastOpenedFiles", "value"), &VanillaEditor::set_*LastOpenedFiles);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*LastOpenedFiles", PROPERTY_HINT_RESOURCE_TYPE, "Reference"), "set_*LastOpenedFiles", "get_*LastOpenedFiles");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*text_editor"), &VanillaEditor::get_*text_editor);
|
|
ClassDB::bind_method(D_METHOD("set_*text_editor", "value"), &VanillaEditor::set_*text_editor);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*text_editor", PROPERTY_HINT_RESOURCE_TYPE, "TextEdit"), "set_*text_editor", "get_*text_editor");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*file_list"), &VanillaEditor::get_*file_list);
|
|
ClassDB::bind_method(D_METHOD("set_*file_list", "value"), &VanillaEditor::set_*file_list);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*file_list", PROPERTY_HINT_RESOURCE_TYPE, "FileDialog"), "set_*file_list", "get_*file_list");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*search_box"), &VanillaEditor::get_*search_box);
|
|
ClassDB::bind_method(D_METHOD("set_*search_box", "value"), &VanillaEditor::set_*search_box);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*search_box", PROPERTY_HINT_RESOURCE_TYPE, "HBoxContainer"), "set_*search_box", "get_*search_box");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*search_box_line_edit"), &VanillaEditor::get_*search_box_line_edit);
|
|
ClassDB::bind_method(D_METHOD("set_*search_box_line_edit", "value"), &VanillaEditor::set_*search_box_line_edit);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*search_box_line_edit", PROPERTY_HINT_RESOURCE_TYPE, "LineEdit"), "set_*search_box_line_edit", "get_*search_box_line_edit");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*search_box_match_case_cb"), &VanillaEditor::get_*search_box_match_case_cb);
|
|
ClassDB::bind_method(D_METHOD("set_*search_box_match_case_cb", "value"), &VanillaEditor::set_*search_box_match_case_cb);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*search_box_match_case_cb", PROPERTY_HINT_RESOURCE_TYPE, "CheckBox"), "set_*search_box_match_case_cb", "get_*search_box_match_case_cb");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*search_box_whole_words_cb"), &VanillaEditor::get_*search_box_whole_words_cb);
|
|
ClassDB::bind_method(D_METHOD("set_*search_box_whole_words_cb", "value"), &VanillaEditor::set_*search_box_whole_words_cb);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*search_box_whole_words_cb", PROPERTY_HINT_RESOURCE_TYPE, "CheckBox"), "set_*search_box_whole_words_cb", "get_*search_box_whole_words_cb");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*search_box_close_button"), &VanillaEditor::get_*search_box_close_button);
|
|
ClassDB::bind_method(D_METHOD("set_*search_box_close_button", "value"), &VanillaEditor::set_*search_box_close_button);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*search_box_close_button", PROPERTY_HINT_RESOURCE_TYPE, "Button"), "set_*search_box_close_button", "get_*search_box_close_button");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*replace_box"), &VanillaEditor::get_*replace_box);
|
|
ClassDB::bind_method(D_METHOD("set_*replace_box", "value"), &VanillaEditor::set_*replace_box);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*replace_box", PROPERTY_HINT_RESOURCE_TYPE, "HBoxContainer"), "set_*replace_box", "get_*replace_box");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*replace_box_replace_le"), &VanillaEditor::get_*replace_box_replace_le);
|
|
ClassDB::bind_method(D_METHOD("set_*replace_box_replace_le", "value"), &VanillaEditor::set_*replace_box_replace_le);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*replace_box_replace_le", PROPERTY_HINT_RESOURCE_TYPE, "LineEdit"), "set_*replace_box_replace_le", "get_*replace_box_replace_le");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*replace_box_with"), &VanillaEditor::get_*replace_box_with);
|
|
ClassDB::bind_method(D_METHOD("set_*replace_box_with", "value"), &VanillaEditor::set_*replace_box_with);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*replace_box_with", PROPERTY_HINT_RESOURCE_TYPE, "LineEdit"), "set_*replace_box_with", "get_*replace_box_with");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*replace_box_button"), &VanillaEditor::get_*replace_box_button);
|
|
ClassDB::bind_method(D_METHOD("set_*replace_box_button", "value"), &VanillaEditor::set_*replace_box_button);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*replace_box_button", PROPERTY_HINT_RESOURCE_TYPE, "Button"), "set_*replace_box_button", "get_*replace_box_button");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*replace_box_close"), &VanillaEditor::get_*replace_box_close);
|
|
ClassDB::bind_method(D_METHOD("set_*replace_box_close", "value"), &VanillaEditor::set_*replace_box_close);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*replace_box_close", PROPERTY_HINT_RESOURCE_TYPE, "Button"), "set_*replace_box_close", "get_*replace_box_close");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*file_info_last_modified_icon"), &VanillaEditor::get_*file_info_last_modified_icon);
|
|
ClassDB::bind_method(D_METHOD("set_*file_info_last_modified_icon", "value"), &VanillaEditor::set_*file_info_last_modified_icon);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*file_info_last_modified_icon", PROPERTY_HINT_RESOURCE_TYPE, "TextureRect"), "set_*file_info_last_modified_icon", "get_*file_info_last_modified_icon");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*file_info_last_modified"), &VanillaEditor::get_*file_info_last_modified);
|
|
ClassDB::bind_method(D_METHOD("set_*file_info_last_modified", "value"), &VanillaEditor::set_*file_info_last_modified);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*file_info_last_modified", PROPERTY_HINT_RESOURCE_TYPE, "Label"), "set_*file_info_last_modified", "get_*file_info_last_modified");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*file_info_c_counter"), &VanillaEditor::get_*file_info_c_counter);
|
|
ClassDB::bind_method(D_METHOD("set_*file_info_c_counter", "value"), &VanillaEditor::set_*file_info_c_counter);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*file_info_c_counter", PROPERTY_HINT_RESOURCE_TYPE, "Label"), "set_*file_info_c_counter", "get_*file_info_c_counter");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_*file_info_read_only"), &VanillaEditor::get_*file_info_read_only);
|
|
ClassDB::bind_method(D_METHOD("set_*file_info_read_only", "value"), &VanillaEditor::set_*file_info_read_only);
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*file_info_read_only", PROPERTY_HINT_RESOURCE_TYPE, "CheckBox"), "set_*file_info_read_only", "get_*file_info_read_only");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_current_path"), &VanillaEditor::get_current_path);
|
|
ClassDB::bind_method(D_METHOD("set_current_path", "value"), &VanillaEditor::set_current_path);
|
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_path"), "set_current_path", "get_current_path");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_current_filename"), &VanillaEditor::get_current_filename);
|
|
ClassDB::bind_method(D_METHOD("set_current_filename", "value"), &VanillaEditor::set_current_filename);
|
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_filename"), "set_current_filename", "get_current_filename");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("get_search_flag"), &VanillaEditor::get_search_flag);
|
|
ClassDB::bind_method(D_METHOD("set_search_flag", "value"), &VanillaEditor::set_search_flag);
|
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "search_flag"), "set_search_flag", "get_search_flag");
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("_init"), &VanillaEditor::_init);
|
|
ClassDB::bind_method(D_METHOD("_ready"), &VanillaEditor::_ready);
|
|
ClassDB::bind_method(D_METHOD("set_font", "font_path"), &VanillaEditor::set_font);
|
|
ClassDB::bind_method(D_METHOD("load_default_font"), &VanillaEditor::load_default_font);
|
|
ClassDB::bind_method(D_METHOD("set_wrap_enabled", "enabled"), &VanillaEditor::set_wrap_enabled);
|
|
ClassDB::bind_method(D_METHOD("draw_minimap", "value"), &VanillaEditor::draw_minimap);
|
|
ClassDB::bind_method(D_METHOD("color_region", "filextension"), &VanillaEditor::color_region);
|
|
ClassDB::bind_method(D_METHOD("clean_editor"), &VanillaEditor::clean_editor);
|
|
ClassDB::bind_method(D_METHOD("new_file_open", "file_content", "last_modified", "current_file_path"), &VanillaEditor::new_file_open);
|
|
ClassDB::bind_method(D_METHOD("update_lastmodified", "last_modified", "icon"), &VanillaEditor::update_lastmodified);
|
|
ClassDB::bind_method(D_METHOD("new_file_create", "file_name"), &VanillaEditor::new_file_create);
|
|
ClassDB::bind_method(D_METHOD("_on_Readonly_toggled", "button_pressed"), &VanillaEditor::_on_Readonly_toggled);
|
|
ClassDB::bind_method(D_METHOD("_on_text_editor_text_changed"), &VanillaEditor::_on_text_editor_text_changed);
|
|
ClassDB::bind_method(D_METHOD("count_characters"), &VanillaEditor::count_characters);
|
|
ClassDB::bind_method(D_METHOD("_on_LineEdit_text_changed", "new_text"), &VanillaEditor::_on_LineEdit_text_changed);
|
|
ClassDB::bind_method(D_METHOD("_on_matchcase_toggled", "button_pressed"), &VanillaEditor::_on_matchcase_toggled);
|
|
ClassDB::bind_method(D_METHOD("_on_wholewords_toggled", "button_pressed"), &VanillaEditor::_on_wholewords_toggled);
|
|
ClassDB::bind_method(D_METHOD("_on_close_pressed"), &VanillaEditor::_on_close_pressed);
|
|
ClassDB::bind_method(D_METHOD("open_search_box"), &VanillaEditor::open_search_box);
|
|
ClassDB::bind_method(D_METHOD("_on_Button_pressed"), &VanillaEditor::_on_Button_pressed);
|
|
ClassDB::bind_method(D_METHOD("open_replace_box"), &VanillaEditor::open_replace_box);
|
|
ClassDB::bind_method(D_METHOD("_on_close2_pressed"), &VanillaEditor::_on_close2_pressed);
|
|
ClassDB::bind_method(D_METHOD("_on_LineEdit_focus_entered"), &VanillaEditor::_on_LineEdit_focus_entered);
|
|
|
|
}
|
|
|
|
|
|
|