diff --git a/addons/file-editor/README.md b/addons/file-editor/README.md index 1840d31..fe6e11b 100644 --- a/addons/file-editor/README.md +++ b/addons/file-editor/README.md @@ -1,14 +1,38 @@ -# Godot Text Editor -A little plugin to easy-way manage your text files inside your project folder. - -Author: *"Nicolo (fenix) Santilio"* -Version: *0.1.1* -Godot Version: *3.1.1-stable* - -**This repository was pushed directly from Godot Engine Editor thanks to [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!** - -## What is this? -Building... - -## How does it work? -Building... +# Godot Text Editor +A little plugin to easy-way manage your text files inside your project folder. + +Author: *"Nicolo (fenix) Santilio"* +Version: *0.2.5* +Godot Version: *3.1.1-stable* + +**This repository was pushed directly from Godot Engine Editor thanks to [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!** + +## What is this? +This is a little plugin I've made to easily edit text files in your project folder. + +## How does it work? +You can open an existing file, create a new file and delete a file. +When opening / creating a file, the editor will open and you will be able to edit it and save it. +You can just *Save* the file, or *Save file As* a new file (if it is a new file but also to make some copies). +You will also be able to see some informations about the file you are editing (time and date of last edit) and you can set your editor to *Read Only* if you don't want to make changes but still read the content of the file. +Multiple files can be opened in different tabs. +Always remember to save your file when you close the tab! +![preview](https://i.imgur.com/7sxxZN9.png) + +## How do I install it? +**Manual** +Just download this whole repository and put it in your `res://addons` folder inside the project you want to work on. +Then, go to `Project > Plugins > "File Editor" > Status > Activate`. + +**Automatic** +You can find this plugin in the AssetLib of Godot Engine Editor. Just download it from there and everything should be fine! +(Remember to activate this plugin) + +#### Current version +To check all the features included in the current version, please read the [VERSION file](./VERSION.md) + +#### Upcoming features +To check all the features I'm currently working on, please read the [TODO file](./TODO.md) + +# Want to contact me? +I'm planning to create a Discord group to collect each plugin I've made (and I will make), but until then you can directly talk with my via e-mail at *n.santilio97@gmail.com* diff --git a/addons/file-editor/TODO.md b/addons/file-editor/TODO.md index d42040e..9be6dab 100644 --- a/addons/file-editor/TODO.md +++ b/addons/file-editor/TODO.md @@ -1 +1,2 @@ -### to do (v-0.x.x) +### to do (v-0.x.x) +- Popup dialog when closing a tab if there is new content diff --git a/addons/file-editor/VERSION.md b/addons/file-editor/VERSION.md index b3b0923..605e6d8 100644 --- a/addons/file-editor/VERSION.md +++ b/addons/file-editor/VERSION.md @@ -1,3 +1,35 @@ -**version 0.1.0** - - +**version 0.0.1** +*added* +- Plugin Created + +----------------------- + +**version 0.1.1** +*added* +- "Create new File" option +- "Open File" option +- "Delete File" option +- "Save File" option +- "Save File As.." option + +----------------------- + +**version 0.1.2** +*fixed* +- Repository Installation, folder order + +----------------------- + +**version 0.2.5** +*removed* +- Old layout + +----------------------- + +*added* +- New Layout +- Last modified time and date +- Tabs + +----------------------- + diff --git a/addons/file-editor/scenes/FileEditor.tscn b/addons/file-editor/scenes/FileEditor.tscn index 976a2c5..b7ae545 100644 --- a/addons/file-editor/scenes/FileEditor.tscn +++ b/addons/file-editor/scenes/FileEditor.tscn @@ -1,34 +1,38 @@ -[gd_scene load_steps=18 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://addons/file-editor/scripts/FileEditor.gd" type="Script" id=1] [ext_resource path="res://addons/file-editor/icons/new.svg" type="Texture" id=2] [ext_resource path="res://addons/file-editor/icons/file.svg" type="Texture" id=3] [ext_resource path="res://addons/file-editor/icons/delete.svg" type="Texture" id=4] -[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=5] -[ext_resource path="res://addons/file-editor/icons/read.svg" type="Texture" id=6] -[ext_resource path="res://addons/file-editor/icons/edit.png" type="Texture" id=7] -[ext_resource path="res://addons/file-editor/icons/save.svg" type="Texture" id=8] -[ext_resource path="res://addons/file-editor/icons/saveas.png" type="Texture" id=9] -[sub_resource type="DynamicFont" id=1] -outline_size = 3 -outline_color = Color( 0.168627, 0.160784, 0.192157, 1 ) -font_data = ExtResource( 5 ) +[sub_resource type="StyleBoxFlat" id=1] +content_margin_left = 10.0 +content_margin_right = 10.0 +bg_color = Color( 0.196078, 0.231373, 0.309804, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_color = Color( 0.121569, 0.145098, 0.192157, 1 ) +expand_margin_bottom = 1.0 -[sub_resource type="StyleBoxEmpty" id=2] +[sub_resource type="StyleBoxFlat" id=3] +content_margin_left = 10.0 +content_margin_right = 10.0 +bg_color = Color( 0.145098, 0.172549, 0.231373, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_color = Color( 0.121569, 0.145098, 0.192157, 1 ) +expand_margin_bottom = 1.0 -[sub_resource type="StyleBoxEmpty" id=3] - -[sub_resource type="StyleBoxEmpty" id=4] - -[sub_resource type="StyleBoxEmpty" id=5] - -[sub_resource type="StyleBoxEmpty" id=6] - -[sub_resource type="StyleBoxEmpty" id=7] - -[sub_resource type="DynamicFont" id=8] -font_data = ExtResource( 5 ) +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.121569, 0.145098, 0.192157, 1 ) +draw_center = false +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.121569, 0.145098, 0.192157, 1 ) [node name="FileEditor" type="Control"] anchor_right = 1.0 @@ -67,91 +71,18 @@ size_flags_horizontal = 3 text = "Delete File" icon = ExtResource( 4 ) -[node name="HSeparator" type="HSeparator" parent="Container"] -margin_top = 26.0 -margin_right = 1024.0 -margin_bottom = 30.0 - -[node name="Label" type="Label" parent="Container"] -margin_top = 34.0 -margin_right = 1024.0 -margin_bottom = 53.0 -custom_fonts/font = SubResource( 1 ) -text = "EDITOR" -align = 1 - -[node name="Editor" type="VBoxContainer" parent="Container"] -margin_top = 57.0 +[node name="Editor" type="TabContainer" parent="Container"] +visible = false +margin_top = 32.0 margin_right = 1024.0 margin_bottom = 600.0 size_flags_vertical = 3 - -[node name="TopBar" type="HBoxContainer" parent="Container/Editor"] -margin_right = 1024.0 -margin_bottom = 24.0 - -[node name="Filename" type="LineEdit" parent="Container/Editor/TopBar"] -margin_right = 917.0 -margin_bottom = 24.0 -size_flags_horizontal = 11 -expand_to_text_length = true - -[node name="Readonly" type="CheckBox" parent="Container/Editor/TopBar"] -margin_left = 921.0 -margin_right = 1000.0 -margin_bottom = 24.0 -custom_icons/checked = ExtResource( 6 ) -custom_icons/unchecked = ExtResource( 7 ) -custom_styles/hover = SubResource( 2 ) -custom_styles/pressed = SubResource( 3 ) -custom_styles/focus = SubResource( 4 ) -custom_styles/disabled = SubResource( 5 ) -custom_styles/hover_pressed = SubResource( 6 ) -custom_styles/normal = SubResource( 7 ) -custom_fonts/font = SubResource( 8 ) -custom_colors/font_color = Color( 0.145098, 0.172549, 0.231373, 1 ) -custom_colors/font_color_pressed = Color( 1, 1, 1, 1 ) -text = "Can Edit" -flat = true - -[node name="close_btn" type="Button" parent="Container/Editor/TopBar"] -margin_left = 1004.0 -margin_right = 1024.0 -margin_bottom = 24.0 -text = "X" - -[node name="TextEditor" type="TextEdit" parent="Container/Editor"] -margin_top = 28.0 -margin_right = 1024.0 -margin_bottom = 517.0 -size_flags_vertical = 3 -syntax_highlighting = true -show_line_numbers = true -breakpoint_gutter = true -highlight_all_occurrences = true -smooth_scrolling = true -caret_blink = true -caret_blink_speed = 0.1 - -[node name="EditorButtons" type="HBoxContainer" parent="Container/Editor"] -margin_top = 521.0 -margin_right = 1024.0 -margin_bottom = 543.0 - -[node name="savefile_btn" type="Button" parent="Container/Editor/EditorButtons"] -margin_right = 510.0 -margin_bottom = 22.0 -size_flags_horizontal = 3 -text = "Save File" -icon = ExtResource( 8 ) - -[node name="savefileas_btn" type="Button" parent="Container/Editor/EditorButtons"] -margin_left = 514.0 -margin_right = 1024.0 -margin_bottom = 22.0 -size_flags_horizontal = 3 -text = "Save File as..." -icon = ExtResource( 9 ) +custom_styles/tab_fg = SubResource( 1 ) +custom_styles/tab_bg = SubResource( 3 ) +custom_styles/panel = SubResource( 2 ) +custom_colors/font_color_fg = Color( 1, 1, 1, 1 ) +tab_align = 0 +drag_to_rearrange_enabled = true [node name="FileList" type="FileDialog" parent="."] margin_top = 24.0 @@ -160,4 +91,39 @@ margin_bottom = 600.0 size_flags_vertical = 3 popup_exclusive = true dialog_hide_on_ok = true -[connection signal="toggled" from="Container/Editor/TopBar/Readonly" to="." method="_on_Readonly_toggled"] +filters = PoolStringArray( "*.txt ; Plain Text File", "*.rtf ; Rich Text Format File", "*.log ; Log File", "*.md ; MD File", "*.doc ; WordPad Document", "*.doc ; Microsoft Word Document", "*.docm ; Word Open XML Macro-Enabled Document", "*.docx ; Microsoft Word Open XML Document", "*.bbs ; Bulletin Board System Text" ) + +[node name="NewFileDialogue" type="AcceptDialog" parent="."] +editor/display_folded = true +margin_left = 348.254 +margin_top = 232.623 +margin_right = 644.254 +margin_bottom = 321.623 +window_title = "Create new File" + +[node name="VBoxContainer" type="VBoxContainer" parent="NewFileDialogue"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = -8.0 +margin_bottom = -36.0 + +[node name="Label" type="Label" parent="NewFileDialogue/VBoxContainer"] +margin_right = 280.0 +margin_bottom = 17.0 +size_flags_vertical = 3 +text = "Insert file name (no extension needed)" +align = 1 +valign = 1 + +[node name="new_filename" type="LineEdit" parent="NewFileDialogue/VBoxContainer"] +margin_left = 40.0 +margin_top = 21.0 +margin_right = 240.0 +margin_bottom = 45.0 +rect_min_size = Vector2( 200, 0 ) +size_flags_horizontal = 6 +size_flags_vertical = 3 +clear_button_enabled = true +placeholder_text = "example" diff --git a/addons/file-editor/scenes/FileScene.tscn b/addons/file-editor/scenes/FileScene.tscn new file mode 100644 index 0000000..977e92b --- /dev/null +++ b/addons/file-editor/scenes/FileScene.tscn @@ -0,0 +1,135 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://addons/file-editor/scripts/FileScene.gd" type="Script" id=1] +[ext_resource path="res://addons/file-editor/icons/read.svg" type="Texture" id=2] +[ext_resource path="res://addons/file-editor/icons/edit.png" type="Texture" id=3] +[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=4] + +[sub_resource type="StyleBoxFlat" id=8] +content_margin_left = 10.0 +content_margin_right = 10.0 +bg_color = Color( 0.145098, 0.172549, 0.231373, 1 ) + +[sub_resource type="StyleBoxEmpty" id=1] + +[sub_resource type="StyleBoxEmpty" id=2] + +[sub_resource type="StyleBoxEmpty" id=3] + +[sub_resource type="StyleBoxEmpty" id=4] + +[sub_resource type="StyleBoxEmpty" id=5] + +[sub_resource type="StyleBoxEmpty" id=6] + +[sub_resource type="DynamicFont" id=7] +font_data = ExtResource( 4 ) + +[node name="filename" type="VBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 32.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_vertical = 3 +script = ExtResource( 1 ) + +[node name="HSeparator" type="HSeparator" parent="."] +margin_right = 1016.0 +margin_bottom = 4.0 + +[node name="TopBar" type="HBoxContainer" parent="."] +editor/display_folded = true +margin_top = 8.0 +margin_right = 1016.0 +margin_bottom = 28.0 + +[node name="VSeparator" type="VSeparator" parent="TopBar"] +margin_right = 4.0 +margin_bottom = 20.0 + +[node name="FileButton" type="MenuButton" parent="TopBar"] +margin_left = 8.0 +margin_right = 51.0 +margin_bottom = 20.0 +custom_styles/hover = SubResource( 8 ) +custom_styles/normal = SubResource( 8 ) +text = "File" +flat = false +items = [ "Save File", null, 0, false, false, 0, 0, null, "", false, "Save file As...", null, 0, false, false, 1, 0, null, "", false ] + +[node name="filepath" type="Label" parent="TopBar"] +margin_left = 519.0 +margin_top = 3.0 +margin_right = 519.0 +margin_bottom = 17.0 +size_flags_horizontal = 6 + +[node name="close_btn" type="Button" parent="TopBar"] +margin_left = 988.0 +margin_right = 1008.0 +margin_bottom = 20.0 +size_flags_horizontal = 8 +text = "X" + +[node name="VSeparator2" type="VSeparator" parent="TopBar"] +margin_left = 1012.0 +margin_right = 1016.0 +margin_bottom = 20.0 + +[node name="TextEditor" type="TextEdit" parent="."] +margin_top = 32.0 +margin_right = 1016.0 +margin_bottom = 541.0 +size_flags_vertical = 3 +syntax_highlighting = true +show_line_numbers = true +breakpoint_gutter = true +highlight_all_occurrences = true +smooth_scrolling = true +wrap_enabled = true +caret_blink = true +caret_blink_speed = 0.1 + +[node name="FileInfo" type="HBoxContainer" parent="."] +editor/display_folded = true +margin_top = 545.0 +margin_right = 1016.0 +margin_bottom = 564.0 + +[node name="Label" type="Label" parent="FileInfo"] +margin_top = 2.0 +margin_right = 125.0 +margin_bottom = 16.0 +text = "Last modified time:" + +[node name="lastmodified" type="Label" parent="FileInfo"] +margin_left = 129.0 +margin_top = 2.0 +margin_right = 129.0 +margin_bottom = 16.0 + +[node name="Readonly" type="CheckBox" parent="FileInfo"] +margin_left = 929.0 +margin_right = 1008.0 +margin_bottom = 19.0 +size_flags_horizontal = 10 +custom_icons/checked = ExtResource( 2 ) +custom_icons/unchecked = ExtResource( 3 ) +custom_styles/hover = SubResource( 1 ) +custom_styles/pressed = SubResource( 2 ) +custom_styles/focus = SubResource( 3 ) +custom_styles/disabled = SubResource( 4 ) +custom_styles/hover_pressed = SubResource( 5 ) +custom_styles/normal = SubResource( 6 ) +custom_fonts/font = SubResource( 7 ) +custom_colors/font_color = Color( 0.145098, 0.172549, 0.231373, 1 ) +custom_colors/font_color_pressed = Color( 1, 1, 1, 1 ) +text = "Can Edit" +flat = true + +[node name="VSeparator3" type="VSeparator" parent="FileInfo"] +margin_left = 1012.0 +margin_right = 1016.0 +margin_bottom = 19.0 diff --git a/addons/file-editor/scripts/FileEditor.gd b/addons/file-editor/scripts/FileEditor.gd index 33f8749..fc25ac1 100644 --- a/addons/file-editor/scripts/FileEditor.gd +++ b/addons/file-editor/scripts/FileEditor.gd @@ -3,19 +3,16 @@ extends Control onready var FileList = $FileList -onready var TextEditor = $Container/Editor/TextEditor -onready var Filename = $Container/Editor/TopBar/Filename -onready var CloseFile = $Container/Editor/TopBar/close_btn onready var Editor = $Container/Editor onready var OpenFile = $Container/Buttons/openfile_btn onready var NewFile = $Container/Buttons/newfile_btn onready var DeleteFile = $Container/Buttons/deletefile_btn -onready var SaveFile = $Container/Editor/EditorButtons/savefile_btn -onready var SaveFileAs = $Container/Editor/EditorButtons/savefileas_btn +onready var NewFileDialogue = $NewFileDialogue +onready var NewFileDialogue_name = $NewFileDialogue/VBoxContainer/new_filename -onready var ReadOnly = $Container/Editor/TopBar/Readonly +var FileScene = load("res://addons/file-editor/scenes/FileScene.tscn") var DIRECTORY : String = "res://" var EXCEPTIONS : String = "addons" @@ -34,80 +31,70 @@ var EXTENSIONS : PoolStringArray = [ var directories = [] var files = [] -# ----- -var current_file : File = File.new() -var current_path : String = "" -var current_content : String = "" -# ----- func _ready(): OpenFile.connect("pressed",self,"open_selected_file") - NewFile.connect("pressed",self,"create_new_file") + NewFile.connect("pressed",self,"open_newfiledialogue") DeleteFile.connect("pressed",self,"delete_selected_file") - SaveFile.connect("pressed",self,"save_file") - SaveFileAs.connect("pressed",self,"save_file_as") + NewFileDialogue.connect("confirmed",self,"create_new_file") - CloseFile.connect("pressed",self,"close_editor") - Filename.set_editable(false) - SaveFile.set_disabled(true) + FileList.connect("confirmed",self,"update_list") FileList.set_filters(EXTENSIONS) Editor.hide() -func close_editor(): - Editor.hide() - Filename.set_text("") - TextEditor.set_text("") +func open_file(path : String): + var current_file : File = File.new() + current_file.open(path,File.READ) + var current_content = current_file.get_as_text() + + var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(path)) + + var file_tab = FileScene.instance() + Editor.add_child(file_tab) + + file_tab.new_file_open(path,current_content,last_modified) + + Editor.show() + current_file.close() - current_file = File.new() - current_path = "" - current_content = "" + update_list() -func clear_editor(): - TextEditor.set_text("") - Filename.set_text("") - current_file = File.new() +func open_newfiledialogue(): + NewFileDialogue.popup() + NewFileDialogue.set_position(OS.get_screen_size()/2 - NewFileDialogue.get_size()/2) func create_new_file(): - close_editor() - SaveFile.set_disabled(true) + NewFileDialogue.hide() + var new_file_tab = FileScene.instance() + Editor.add_child(new_file_tab) + new_file_tab.new_file_create(NewFileDialogue_name.get_text()) Editor.show() + update_list() func open_filelist(): - FileList.update() + update_list() FileList.popup() FileList.set_position(OS.get_screen_size()/2 - FileList.get_size()/2) -func save_file_as(): - current_content = TextEditor.get_text() - FileList.mode = FileDialog.MODE_SAVE_FILE - FileList.set_title("Save this file as...") - if FileList.is_connected("file_selected",self,"delete_file"): - FileList.disconnect("file_selected",self,"delete_file") - if not FileList.is_connected("file_selected",self,"open_file"): - FileList.connect("file_selected",self,"open_file",[current_content]) - else: - FileList.disconnect("file_selected",self,"open_file") - FileList.connect("file_selected",self,"open_file",[current_content]) - open_filelist() - func open_selected_file(): - clear_editor() + update_list() FileList.mode = FileDialog.MODE_OPEN_FILE FileList.set_title("Select a file you want to edit") if FileList.is_connected("file_selected",self,"delete_file"): FileList.disconnect("file_selected",self,"delete_file") if not FileList.is_connected("file_selected",self,"open_file"): - FileList.connect("file_selected",self,"open_file",[""]) + FileList.connect("file_selected",self,"open_file") else: FileList.disconnect("file_selected",self,"open_file") - FileList.connect("file_selected",self,"open_file",[""]) + FileList.connect("file_selected",self,"open_file") open_filelist() func delete_selected_file(): + update_list() FileList.mode = FileDialog.MODE_OPEN_FILE FileList.set_title("Select a file you want to delete") if FileList.is_connected("file_selected",self,"open_file"): @@ -119,47 +106,11 @@ func delete_selected_file(): FileList.connect("file_selected",self,"delete_file") open_filelist() -func open_file(path : String, content_file : String): - var content = "" - if content_file == "" or content_file == null: - current_file.open(path,File.READ) - content = current_file.get_as_text() - else: - content = content_file - current_file.open(path,File.WRITE) - current_file.store_line(content) - - TextEditor.set_text(content) - Filename.set_text(path) - - current_file.close() - - current_path = path - current_content = content - - Editor.show() - SaveFile.set_disabled(false) - -func save_file(): - if current_path == "" or current_path == null: - save_file_as() - else: - current_file.open(current_path,File.WRITE) - current_content = TextEditor.get_text() - if current_content == null: - current_content = "" - current_file.store_line(current_content) - current_file.close() - func delete_file(path : String): - clear_editor() var dir = Directory.new() dir.remove(path) + + update_list() -func _on_Readonly_toggled(button_pressed): - if button_pressed: - ReadOnly.set_text("Read Only") - TextEditor.readonly = (true) - else: - ReadOnly.set_text("Can Edit") - TextEditor.readonly = (false) +func update_list(): + FileList.invalidate() \ No newline at end of file diff --git a/addons/file-editor/scripts/FileScene.gd b/addons/file-editor/scripts/FileScene.gd new file mode 100644 index 0000000..1c00b62 --- /dev/null +++ b/addons/file-editor/scripts/FileScene.gd @@ -0,0 +1,97 @@ +tool +extends VBoxContainer + +onready var CloseFile = $TopBar/close_btn + +onready var ReadOnly = $FileInfo/Readonly +onready var FileButton = $TopBar/FileButton.get_popup() + +onready var TextEditor = $TextEditor + +onready var LastModified = $FileInfo/lastmodified + +onready var FileList = get_parent().get_parent().get_parent().get_node("FileList") + +onready var FilePath = $TopBar/filepath + +var current_path = "" +var current_filename = "" + +func _ready(): + FileButton.connect("id_pressed",self,"button_pressed") + + CloseFile.connect("pressed",self,"close_editor") + + ReadOnly.connect("toggled",self,"_on_Readonly_toggled") + +func new_file_open(file_path, file_content, last_modified) : + current_path = file_path + var filename_ = file_path.get_file().replace(".","-") + + FilePath.set_text(current_path) + + if get_parent().has_node(filename_): + queue_free() + else: + set_name(filename_) + current_filename = filename_ + TextEditor.set_text(file_content) + LastModified.set_text(str(last_modified.hour)+":"+str(last_modified.minute)+" "+str(last_modified.day)+"/"+str(last_modified.month)+"/"+str(last_modified.year)) + + FileList.invalidate() + +func new_file_create(file_name): + set_name(file_name) + current_filename = file_name + FileButton.set_item_disabled(0,true) + + FileList.invalidate() + +func save_file(current_path : String): + var current_file = File.new() + current_file.open(current_path,File.WRITE) + var current_content = TextEditor.get_text() + if current_content == null: + current_content = "" + current_file.store_line(current_content) + current_file.close() + var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_path)) + LastModified.set_text(str(last_modified.hour)+":"+str(last_modified.minute)+" "+str(last_modified.day)+"/"+str(last_modified.month)+"/"+str(last_modified.year)) + + FilePath.set_text(current_path) + + FileList.invalidate() + +func save_file_as(): + var current_content = TextEditor.get_text() + FileList.mode = FileDialog.MODE_SAVE_FILE + FileList.set_title("Save this file as...") + if FileList.is_connected("file_selected",self,"delete_file"): + FileList.disconnect("file_selected",self,"delete_file") + if not FileList.is_connected("file_selected",self,"save_file"): + FileList.connect("file_selected",self,"save_file") + FileList.current_file = current_filename.replace("-",".") + open_filelist() + + FileList.invalidate() + +func open_filelist(): + FileList.popup() + FileList.set_position(OS.get_screen_size()/2 - FileList.get_size()/2) + +func button_pressed(id : int): + if id == 0: + save_file(current_path) + elif id == 1: + save_file_as() + +func close_editor(): + queue_free() + +func _on_Readonly_toggled(button_pressed): + if button_pressed: + ReadOnly.set_text("Read Only") + TextEditor.readonly = (true) + else: + ReadOnly.set_text("Can Edit") + TextEditor.readonly = (false) \ No newline at end of file