mirror of
https://github.com/Relintai/godot-engine.file-editor.git
synced 2024-11-12 22:27:22 +01:00
Add files via upload
This commit is contained in:
parent
01e69923e9
commit
8768285f48
@ -2,13 +2,37 @@
|
||||
A little plugin to easy-way manage your text files inside your project folder.
|
||||
|
||||
Author: *"Nicolo (fenix) Santilio"*
|
||||
Version: *0.1.1*
|
||||
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?
|
||||
Building...
|
||||
This is a little plugin I've made to easily edit text files in your project folder.
|
||||
|
||||
## How does it work?
|
||||
Building...
|
||||
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*
|
||||
|
@ -1 +1,2 @@
|
||||
### to do (v-0.x.x)
|
||||
- Popup dialog when closing a tab if there is new content
|
||||
|
@ -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
|
||||
|
||||
-----------------------
|
||||
|
||||
|
@ -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"
|
||||
|
135
addons/file-editor/scenes/FileScene.tscn
Normal file
135
addons/file-editor/scenes/FileScene.tscn
Normal file
@ -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
|
@ -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("")
|
||||
current_file.close()
|
||||
current_file = File.new()
|
||||
current_path = ""
|
||||
current_content = ""
|
||||
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()
|
||||
|
||||
func clear_editor():
|
||||
TextEditor.set_text("")
|
||||
Filename.set_text("")
|
||||
current_file = File.new()
|
||||
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)
|
||||
|
||||
func create_new_file():
|
||||
close_editor()
|
||||
SaveFile.set_disabled(true)
|
||||
Editor.show()
|
||||
|
||||
current_file.close()
|
||||
update_list()
|
||||
|
||||
func open_newfiledialogue():
|
||||
NewFileDialogue.popup()
|
||||
NewFileDialogue.set_position(OS.get_screen_size()/2 - NewFileDialogue.get_size()/2)
|
||||
|
||||
func create_new_file():
|
||||
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)
|
||||
|
||||
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)
|
||||
update_list()
|
||||
|
||||
func update_list():
|
||||
FileList.invalidate()
|
97
addons/file-editor/scripts/FileScene.gd
Normal file
97
addons/file-editor/scripts/FileScene.gd
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user