2019-09-23 15:06:43 +02:00
|
|
|
tool
|
|
|
|
extends Control
|
|
|
|
|
|
|
|
onready var FileList = $FileList
|
|
|
|
|
2019-09-24 00:42:50 +02:00
|
|
|
onready var NewFileDialogue = $NewFileDialogue
|
|
|
|
onready var NewFileDialogue_name = $NewFileDialogue/VBoxContainer/new_filename
|
2019-09-23 15:06:43 +02:00
|
|
|
|
2019-10-08 00:25:16 +02:00
|
|
|
onready var FileBTN = $FileEditorContainer/TobBar/file_btn.get_popup()
|
|
|
|
onready var PreviewBTN = $FileEditorContainer/TobBar/preview_btn.get_popup()
|
|
|
|
onready var EditorBTN = $FileEditorContainer/TobBar/editor_btn.get_popup()
|
2020-10-12 18:13:53 +02:00
|
|
|
onready var SettingsBTN : PopupMenu = $FileEditorContainer/TobBar/SettingsBtn.get_popup()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
onready var Version = $FileEditorContainer/TobBar/version
|
|
|
|
|
2020-10-12 18:13:53 +02:00
|
|
|
onready var SelectFontDialog : FileDialog = $SelectFontDialog
|
2019-09-24 17:03:49 +02:00
|
|
|
|
2019-10-11 21:53:20 +02:00
|
|
|
onready var FileContainer = $FileEditorContainer/SplitContainer/FileContainer
|
|
|
|
onready var OpenFileList = $FileEditorContainer/SplitContainer/FileContainer/OpenFileList
|
2019-10-18 01:22:11 +02:00
|
|
|
onready var OpenFileName = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/OpenFileName
|
|
|
|
onready var SplitEditorContainer = $FileEditorContainer/SplitContainer/EditorContainer
|
|
|
|
onready var WrapBTN = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/wrap_button
|
|
|
|
onready var MapBTN = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/map_button
|
2019-10-08 00:25:16 +02:00
|
|
|
|
2021-02-14 18:06:56 +01:00
|
|
|
onready var ConfirmationClose = $ConfirmationDialog
|
|
|
|
|
2020-03-17 19:18:28 +01:00
|
|
|
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new()
|
|
|
|
var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new()
|
|
|
|
|
2019-10-08 00:25:16 +02:00
|
|
|
var Preview = preload("res://addons/file-editor/scenes/Preview.tscn")
|
2019-10-11 21:53:20 +02:00
|
|
|
var IniEditor = preload("res://addons/file-editor/scenes/IniEditor.tscn")
|
|
|
|
var VanillaEditor = preload("res://addons/file-editor/scenes/VanillaEditor.tscn")
|
2020-10-25 00:57:16 +02:00
|
|
|
var CsvEditor = preload("res://addons/file-editor/scenes/CSVEditor.tscn")
|
2019-10-11 21:53:20 +02:00
|
|
|
|
|
|
|
onready var EditorContainer = $FileEditorContainer/SplitContainer
|
2019-09-23 15:06:43 +02:00
|
|
|
|
|
|
|
var DIRECTORY : String = "res://"
|
|
|
|
var EXCEPTIONS : String = "addons"
|
|
|
|
var EXTENSIONS : PoolStringArray = [
|
2020-06-05 02:40:07 +02:00
|
|
|
"*.txt ; Plain Text File",
|
|
|
|
"*.rtf ; Rich Text Format File",
|
|
|
|
"*.log ; Log File",
|
2019-09-23 15:06:43 +02:00
|
|
|
"*.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",
|
2019-10-01 16:54:13 +02:00
|
|
|
"*.dat ; Data File",
|
|
|
|
"*.xml ; XML File",
|
|
|
|
"*.sql ; SQL database file",
|
2019-10-03 16:06:46 +02:00
|
|
|
"*.json ; JavaScript Object Notation File",
|
|
|
|
"*.html ; HyperText Markup Language",
|
2019-10-08 00:25:16 +02:00
|
|
|
"*.csv ; Comma-separated values",
|
|
|
|
"*.cfg ; Configuration File",
|
|
|
|
"*.ini ; Initialization File (same as .cfg Configuration File)",
|
2019-10-18 01:22:11 +02:00
|
|
|
"*.csv ; Comma-separated values File",
|
2020-06-03 23:40:32 +02:00
|
|
|
"*.res ; Resource File",
|
2019-09-23 15:06:43 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
var directories = []
|
|
|
|
var files = []
|
2019-10-08 00:25:16 +02:00
|
|
|
var current_file_index = -1
|
|
|
|
var current_file_path = ""
|
|
|
|
var save_as = false
|
2020-06-05 02:40:07 +02:00
|
|
|
var current_editor : Control
|
2019-10-11 21:53:20 +02:00
|
|
|
var current_ini_editor : Control
|
2020-10-25 00:57:16 +02:00
|
|
|
var current_csv_editor : CSVEditor
|
2020-10-12 18:13:53 +02:00
|
|
|
var current_font : DynamicFont
|
2020-03-17 19:18:28 +01:00
|
|
|
|
2021-02-14 18:06:56 +01:00
|
|
|
var editing_file : bool = false
|
|
|
|
|
2019-09-23 15:06:43 +02:00
|
|
|
func _ready():
|
2022-07-14 10:23:53 +02:00
|
|
|
if not Engine.is_editor_hint():
|
|
|
|
return
|
|
|
|
clean_editor()
|
|
|
|
update_version()
|
|
|
|
connect_signals()
|
|
|
|
create_shortcuts()
|
|
|
|
load_icons()
|
|
|
|
|
|
|
|
var opened_files : Array = LastOpenedFiles.load_opened_files()
|
|
|
|
for opened_file in opened_files:
|
|
|
|
open_file(opened_file[1], opened_file[2])
|
|
|
|
FileList.set_filters(EXTENSIONS)
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func create_shortcuts():
|
2022-07-14 10:23:53 +02:00
|
|
|
var hotkey
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_S
|
|
|
|
hotkey.control = true
|
|
|
|
FileBTN.set_item_accelerator(4,hotkey.get_scancode_with_modifiers()) # save file
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_N
|
|
|
|
hotkey.control = true
|
|
|
|
FileBTN.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) # new file
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_O
|
|
|
|
hotkey.control = true
|
|
|
|
FileBTN.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) # open file
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_D
|
|
|
|
hotkey.control = true
|
|
|
|
FileBTN.set_item_accelerator(6,hotkey.get_scancode_with_modifiers()) # delete file
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_S
|
|
|
|
hotkey.control = true
|
|
|
|
hotkey.alt = true
|
|
|
|
FileBTN.set_item_accelerator(5,hotkey.get_scancode_with_modifiers()) #save file as
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_C
|
|
|
|
hotkey.control = true
|
|
|
|
hotkey.alt = true
|
|
|
|
FileBTN.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) # close file
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_F
|
|
|
|
hotkey.control = true
|
|
|
|
FileBTN.set_item_accelerator(8,hotkey.get_scancode_with_modifiers()) # search
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_R
|
|
|
|
hotkey.control = true
|
|
|
|
FileBTN.set_item_accelerator(9,hotkey.get_scancode_with_modifiers()) # replace
|
|
|
|
|
|
|
|
# vanilla editor -----------------------
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_1
|
|
|
|
hotkey.control = true
|
|
|
|
EditorBTN.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) # vanilla editor
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_2
|
|
|
|
hotkey.control = true
|
|
|
|
EditorBTN.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) # csv editor
|
|
|
|
|
|
|
|
hotkey = InputEventKey.new()
|
|
|
|
hotkey.scancode = KEY_3
|
|
|
|
hotkey.control = true
|
|
|
|
EditorBTN.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) # inieditor editor
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func load_icons():
|
2022-07-14 10:23:53 +02:00
|
|
|
$FileEditorContainer/TobBar/file_btn.icon = IconLoader.load_icon_from_name("file")
|
|
|
|
$FileEditorContainer/TobBar/preview_btn.icon = IconLoader.load_icon_from_name("read")
|
|
|
|
$FileEditorContainer/TobBar/editor_btn.icon = IconLoader.load_icon_from_name("edit_")
|
|
|
|
$FileEditorContainer/TobBar/SettingsBtn.icon = IconLoader.load_icon_from_name("settings")
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func connect_signals():
|
2022-07-14 10:23:53 +02:00
|
|
|
FileList.connect("confirmed",self,"update_list")
|
|
|
|
FileBTN.connect("id_pressed",self,"_on_filebtn_pressed")
|
|
|
|
PreviewBTN.connect("id_pressed",self,"_on_previewbtn_pressed")
|
|
|
|
EditorBTN.connect("id_pressed",self,"_on_editorbtn_pressed")
|
|
|
|
SettingsBTN.connect("id_pressed",self,"_on_settingsbtn_pressed")
|
|
|
|
|
|
|
|
OpenFileList.connect("item_selected",self,"_on_fileitem_pressed")
|
|
|
|
WrapBTN.connect("item_selected",self,"on_wrap_button")
|
|
|
|
MapBTN.connect("item_selected",self,"on_minimap_button")
|
|
|
|
|
|
|
|
SelectFontDialog.connect("file_selected",self,"_on_font_selected")
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func update_version():
|
2022-07-14 10:23:53 +02:00
|
|
|
var plugin_version = ""
|
|
|
|
var config = ConfigFile.new()
|
|
|
|
var err = config.load("res://addons/file-editor/plugin.cfg")
|
|
|
|
if err == OK:
|
|
|
|
plugin_version = config.get_value("plugin","version")
|
|
|
|
Version.set_text("v"+plugin_version)
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func create_selected_file():
|
2022-07-14 10:23:53 +02:00
|
|
|
update_list()
|
|
|
|
FileList.mode = FileDialog.MODE_SAVE_FILE
|
|
|
|
FileList.set_title("Create a new File")
|
|
|
|
if FileList.is_connected("file_selected",self,"delete_file"):
|
|
|
|
FileList.disconnect("file_selected",self,"delete_file")
|
|
|
|
if FileList.is_connected("file_selected",self,"open_file"):
|
|
|
|
FileList.disconnect("file_selected",self,"open_file")
|
|
|
|
if not FileList.is_connected("file_selected",self,"create_new_file"):
|
|
|
|
FileList.connect("file_selected",self,"create_new_file")
|
|
|
|
open_filelist()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func open_selected_file():
|
2022-07-14 10:23:53 +02:00
|
|
|
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 FileList.is_connected("file_selected",self,"create_new_file"):
|
|
|
|
FileList.disconnect("file_selected",self,"create_new_file")
|
|
|
|
if not FileList.is_connected("file_selected",self,"open_file"):
|
|
|
|
FileList.connect("file_selected",self,"open_file")
|
|
|
|
open_filelist()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func delete_selected_file():
|
2022-07-14 10:23:53 +02:00
|
|
|
update_list()
|
|
|
|
FileList.mode = FileDialog.MODE_OPEN_FILES
|
|
|
|
FileList.set_title("Select one or more Files you want to delete")
|
|
|
|
if FileList.is_connected("file_selected",self,"open_file"):
|
|
|
|
FileList.disconnect("file_selected",self,"open_file")
|
|
|
|
if FileList.is_connected("file_selected",self,"create_new_file"):
|
|
|
|
FileList.disconnect("file_selected",self,"create_new_file")
|
|
|
|
if not FileList.is_connected("files_selected",self,"delete_file"):
|
|
|
|
FileList.connect("files_selected",self,"delete_file")
|
|
|
|
open_filelist()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func save_current_file_as():
|
2022-07-14 10:23:53 +02:00
|
|
|
update_list()
|
|
|
|
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 FileList.is_connected("file_selected",self,"open_file"):
|
|
|
|
FileList.disconnect("file_selected",self,"open_file")
|
|
|
|
if not FileList.is_connected("file_selected",self,"create_new_file"):
|
|
|
|
FileList.connect("file_selected",self,"create_new_file")
|
|
|
|
open_filelist()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func _on_filebtn_pressed(index : int):
|
2022-07-14 10:23:53 +02:00
|
|
|
match index:
|
|
|
|
0:
|
|
|
|
create_selected_file()
|
|
|
|
1:
|
|
|
|
open_selected_file()
|
|
|
|
2:
|
|
|
|
if current_file_index!=-1 and current_file_path != "":
|
|
|
|
close_file(current_file_index)
|
|
|
|
|
|
|
|
3:
|
|
|
|
if current_file_index!=-1 and current_file_path != "":
|
|
|
|
save_as = false
|
|
|
|
if current_csv_editor and current_csv_editor.visible:
|
|
|
|
current_csv_editor.save_table()
|
|
|
|
save_file(current_file_path)
|
|
|
|
4:
|
|
|
|
if current_file_index!=-1 and current_file_path != "":
|
|
|
|
save_as = true
|
|
|
|
save_file(current_file_path)
|
|
|
|
save_current_file_as()
|
|
|
|
5:
|
|
|
|
delete_selected_file()
|
|
|
|
6:
|
|
|
|
current_editor.open_searchbox()
|
|
|
|
7:
|
|
|
|
current_editor.open_replacebox()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func _on_previewbtn_pressed(id : int):
|
2022-07-14 10:23:53 +02:00
|
|
|
if id == 0:
|
|
|
|
bbcode_preview()
|
|
|
|
elif id == 1:
|
|
|
|
markdown_preview()
|
|
|
|
elif id == 2:
|
|
|
|
html_preview()
|
|
|
|
elif id == 3:
|
|
|
|
csv_preview()
|
|
|
|
elif id == 4:
|
|
|
|
xml_preview()
|
|
|
|
elif id == 5:
|
|
|
|
json_preview()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func _on_editorbtn_pressed(index : int):
|
2022-07-14 10:23:53 +02:00
|
|
|
match index:
|
|
|
|
0:
|
|
|
|
if not current_editor.visible:
|
|
|
|
current_editor.show()
|
|
|
|
if current_csv_editor:
|
|
|
|
current_csv_editor.hide()
|
|
|
|
if current_ini_editor:
|
|
|
|
current_ini_editor.hide()
|
|
|
|
1:
|
|
|
|
if current_csv_editor and not current_csv_editor.visible:
|
|
|
|
if current_ini_editor:
|
|
|
|
current_ini_editor.hide()
|
|
|
|
current_editor.hide()
|
|
|
|
current_csv_editor.show()
|
|
|
|
2:
|
|
|
|
if current_ini_editor and not current_ini_editor.visible:
|
|
|
|
current_editor.hide()
|
|
|
|
if current_csv_editor:
|
|
|
|
current_csv_editor.hide()
|
|
|
|
current_ini_editor.show()
|
2020-10-12 18:13:53 +02:00
|
|
|
|
|
|
|
func _on_settingsbtn_pressed(index : int):
|
2022-07-14 10:23:53 +02:00
|
|
|
match index:
|
|
|
|
0:
|
|
|
|
SelectFontDialog.popup()
|
2020-10-12 18:13:53 +02:00
|
|
|
|
|
|
|
func _on_font_selected(font_path : String):
|
2022-07-14 10:23:53 +02:00
|
|
|
current_editor.set_font(font_path)
|
|
|
|
LastOpenedFiles.store_editor_fonts(current_file_path.get_file(), font_path)
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func _on_fileitem_pressed(index : int):
|
2022-07-14 10:23:53 +02:00
|
|
|
current_file_index = index
|
|
|
|
var selected_item_metadata = OpenFileList.get_item_metadata(current_file_index)
|
|
|
|
var extension = selected_item_metadata[0].current_path.get_file().get_extension()
|
|
|
|
if OpenFileList.get_item_text(current_file_index).begins_with("(*)"):
|
|
|
|
editing_file = true
|
|
|
|
else:
|
|
|
|
editing_file = false
|
|
|
|
current_file_path = selected_item_metadata[0].current_path
|
|
|
|
if current_editor.visible or current_editor == null:
|
|
|
|
current_editor.hide()
|
|
|
|
current_editor = selected_item_metadata[0]
|
|
|
|
current_editor.show()
|
|
|
|
OpenFileName.set_text(current_editor.current_path)
|
|
|
|
current_csv_editor = selected_item_metadata[2]
|
|
|
|
current_ini_editor = selected_item_metadata[1]
|
|
|
|
if WrapBTN.get_selected_id() == 1:
|
|
|
|
current_editor.set_wrap_enabled(true)
|
|
|
|
else:
|
|
|
|
current_editor.set_wrap_enabled(false)
|
|
|
|
if MapBTN.get_selected_id() == 1:
|
|
|
|
current_editor.draw_minimap(true)
|
|
|
|
else:
|
|
|
|
current_editor.draw_minimap(false)
|
|
|
|
elif current_csv_editor and current_csv_editor.visible:
|
|
|
|
if extension == "csv":
|
|
|
|
current_csv_editor.hide()
|
|
|
|
current_csv_editor = selected_item_metadata[2]
|
|
|
|
current_csv_editor.show()
|
|
|
|
OpenFileName.set_text(current_csv_editor.current_file_path)
|
|
|
|
current_editor = selected_item_metadata[0]
|
|
|
|
current_ini_editor = selected_item_metadata[1]
|
|
|
|
else:
|
|
|
|
if current_csv_editor:
|
|
|
|
current_csv_editor.hide()
|
|
|
|
current_csv_editor = selected_item_metadata[2]
|
|
|
|
if current_ini_editor:
|
|
|
|
current_ini_editor.hide()
|
|
|
|
current_ini_editor = selected_item_metadata[1]
|
|
|
|
current_editor.hide()
|
|
|
|
current_editor = selected_item_metadata[0]
|
|
|
|
current_editor.show()
|
|
|
|
OpenFileName.set_text(current_editor.current_path)
|
|
|
|
elif current_ini_editor and current_ini_editor.visible:
|
|
|
|
if extension == "cfg" or extension == "ini":
|
|
|
|
current_ini_editor.hide()
|
|
|
|
current_ini_editor = selected_item_metadata[1]
|
|
|
|
current_ini_editor.show()
|
|
|
|
OpenFileName.set_text(current_ini_editor.current_file_path)
|
|
|
|
else:
|
|
|
|
if current_ini_editor:
|
|
|
|
current_ini_editor.hide()
|
|
|
|
current_ini_editor = selected_item_metadata[1]
|
|
|
|
if current_csv_editor:
|
|
|
|
current_csv_editor.hide()
|
|
|
|
current_csv_editor = selected_item_metadata[2]
|
|
|
|
current_editor.hide()
|
|
|
|
current_editor = selected_item_metadata[0]
|
|
|
|
current_editor.show()
|
|
|
|
OpenFileName.set_text(current_editor.current_path)
|
2020-10-12 18:13:53 +02:00
|
|
|
|
|
|
|
func open_file(path : String, font : String = "null"):
|
2022-07-14 10:23:53 +02:00
|
|
|
if current_file_path != path:
|
|
|
|
current_file_path = path
|
|
|
|
|
|
|
|
var vanilla_editor = open_in_vanillaeditor(path)
|
|
|
|
if font != "null" and vanilla_editor.get("custom_fonts/font")!=null:
|
|
|
|
vanilla_editor.set_font(font)
|
|
|
|
var ini_editor = open_in_inieditor(path)
|
|
|
|
var csv_editor = open_in_csveditor(path)
|
|
|
|
|
|
|
|
generate_file_item(path,vanilla_editor,ini_editor,csv_editor)
|
|
|
|
|
|
|
|
LastOpenedFiles.store_opened_files(OpenFileList)
|
|
|
|
current_editor.show()
|
2019-10-08 00:25:16 +02:00
|
|
|
|
2019-10-18 01:22:11 +02:00
|
|
|
func generate_file_item(path : String , veditor : Control , inieditor : Control, csveditor : Control):
|
2022-07-14 10:23:53 +02:00
|
|
|
OpenFileName.set_text(path)
|
|
|
|
OpenFileList.add_item(path.get_file(),IconLoader.load_icon_from_name("file"),true)
|
|
|
|
current_file_index = OpenFileList.get_item_count()-1
|
|
|
|
OpenFileList.set_item_metadata(current_file_index,[veditor,inieditor,csveditor])
|
|
|
|
OpenFileList.select(OpenFileList.get_item_count()-1)
|
2019-10-18 01:22:11 +02:00
|
|
|
|
|
|
|
func open_in_vanillaeditor(path : String) -> Control:
|
2022-07-14 10:23:53 +02:00
|
|
|
var editor = VanillaEditor.instance()
|
|
|
|
SplitEditorContainer.add_child(editor,true)
|
|
|
|
|
|
|
|
if current_editor and current_editor!=editor:
|
|
|
|
editor.show()
|
|
|
|
current_editor.hide()
|
|
|
|
if current_csv_editor and current_csv_editor.visible:
|
|
|
|
current_csv_editor.hide()
|
|
|
|
if current_ini_editor and current_ini_editor.visible:
|
|
|
|
current_ini_editor.hide()
|
|
|
|
|
|
|
|
current_editor = editor
|
|
|
|
editor.connect("text_changed",self,"_on_vanillaeditor_text_changed")
|
|
|
|
|
|
|
|
var current_file : File = File.new()
|
|
|
|
current_file.open(path,File.READ)
|
|
|
|
var current_content = ""
|
|
|
|
current_content = current_file.get_as_text()
|
|
|
|
|
|
|
|
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(path))
|
|
|
|
|
|
|
|
current_file.close()
|
|
|
|
editor.new_file_open(current_content,last_modified,current_file_path)
|
|
|
|
update_list()
|
|
|
|
|
|
|
|
if WrapBTN.get_selected_id() == 1:
|
|
|
|
current_editor.set_wrap_enabled(true)
|
|
|
|
|
|
|
|
return editor
|
2019-10-08 00:25:16 +02:00
|
|
|
|
2019-10-18 01:22:11 +02:00
|
|
|
func open_in_inieditor(path : String) -> Control:
|
2022-07-14 10:23:53 +02:00
|
|
|
var extension = path.get_file().get_extension()
|
|
|
|
if extension == "ini" or extension == "cfg":
|
|
|
|
var inieditor = IniEditor.instance()
|
|
|
|
SplitEditorContainer.add_child(inieditor)
|
|
|
|
inieditor.hide()
|
|
|
|
inieditor.connect("update_file",self,"_on_update_file")
|
|
|
|
current_ini_editor = inieditor
|
|
|
|
inieditor.current_file_path = path
|
|
|
|
var current_file : ConfigFile = ConfigFile.new()
|
|
|
|
var err = current_file.load(path)
|
|
|
|
if err == OK:
|
|
|
|
var sections = current_file.get_sections()
|
|
|
|
var filemap = []
|
|
|
|
for section in sections:
|
|
|
|
var keys = []
|
|
|
|
var section_keys = current_file.get_section_keys(section)
|
|
|
|
for key in section_keys:
|
|
|
|
keys.append([key,current_file.get_value(section,key)])
|
|
|
|
|
|
|
|
filemap.append([section,keys])
|
|
|
|
|
|
|
|
inieditor.open_file(filemap)
|
|
|
|
return inieditor
|
|
|
|
else:
|
|
|
|
current_ini_editor = null
|
|
|
|
return null
|
2019-10-18 01:22:11 +02:00
|
|
|
|
|
|
|
func open_in_csveditor(path : String) -> Control:
|
2022-07-14 10:23:53 +02:00
|
|
|
var extension = path.get_file().get_extension()
|
|
|
|
if extension in ["csv", "txt"]:
|
|
|
|
var csveditor = CsvEditor.instance()
|
|
|
|
SplitEditorContainer.add_child(csveditor)
|
|
|
|
csveditor.hide()
|
|
|
|
csveditor.connect("update_file",self,"_on_update_file")
|
|
|
|
csveditor.connect("editing_file",self,"_on_vanillaeditor_text_changed")
|
|
|
|
current_csv_editor = csveditor
|
|
|
|
csveditor.current_file_path = path
|
|
|
|
csveditor.open_csv_file(path)
|
|
|
|
return csveditor
|
|
|
|
else:
|
|
|
|
current_csv_editor = null
|
|
|
|
return null
|
2019-10-08 00:25:16 +02:00
|
|
|
|
2019-10-11 21:53:20 +02:00
|
|
|
func close_file(index):
|
2022-07-14 10:23:53 +02:00
|
|
|
if editing_file:
|
|
|
|
ConfirmationClose.popup()
|
|
|
|
else:
|
|
|
|
confirm_close(index)
|
2021-02-14 18:06:56 +01:00
|
|
|
|
|
|
|
func confirm_close(index):
|
2022-07-14 10:23:53 +02:00
|
|
|
LastOpenedFiles.remove_opened_file(index,OpenFileList)
|
|
|
|
OpenFileList.remove_item(index)
|
|
|
|
OpenFileName.clear()
|
|
|
|
current_editor.queue_free()
|
|
|
|
if index > 0:
|
|
|
|
OpenFileList.select(index-1)
|
|
|
|
_on_fileitem_pressed(index-1)
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func _on_update_file():
|
2022-07-14 10:23:53 +02:00
|
|
|
var current_file : File = File.new()
|
|
|
|
current_file.open(current_file_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(current_file_path))
|
|
|
|
|
|
|
|
current_file.close()
|
|
|
|
|
|
|
|
current_editor.new_file_open(current_content,last_modified,current_file_path)
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func delete_file(files_selected : PoolStringArray):
|
2022-07-14 10:23:53 +02:00
|
|
|
var dir = Directory.new()
|
|
|
|
for file in files_selected:
|
|
|
|
dir.remove(file)
|
|
|
|
|
|
|
|
update_list()
|
2019-09-23 15:06:43 +02:00
|
|
|
|
2019-09-24 00:42:50 +02:00
|
|
|
func open_newfiledialogue():
|
2022-07-14 10:23:53 +02:00
|
|
|
NewFileDialogue.popup()
|
|
|
|
NewFileDialogue.set_position(OS.get_screen_size()/2 - NewFileDialogue.get_size()/2)
|
2019-09-23 15:06:43 +02:00
|
|
|
|
|
|
|
func open_filelist():
|
2022-07-14 10:23:53 +02:00
|
|
|
update_list()
|
|
|
|
FileList.popup()
|
|
|
|
FileList.set_position(OS.get_screen_size()/2 - FileList.get_size()/2)
|
2019-09-23 15:06:43 +02:00
|
|
|
|
2019-10-08 00:25:16 +02:00
|
|
|
func create_new_file(given_path : String):
|
2022-07-14 10:23:53 +02:00
|
|
|
var current_file = File.new()
|
|
|
|
current_file.open(given_path,File.WRITE)
|
|
|
|
if save_as :
|
|
|
|
current_file.store_line(current_editor.get_node("TextEditor").get_text())
|
|
|
|
current_file.close()
|
|
|
|
|
|
|
|
open_file(given_path)
|
2019-09-23 15:06:43 +02:00
|
|
|
|
2019-10-08 00:25:16 +02:00
|
|
|
func save_file(current_path : String):
|
2022-07-14 10:23:53 +02:00
|
|
|
print("Saving file: ",current_path)
|
|
|
|
var current_file = File.new()
|
|
|
|
current_file.open(current_path,File.WRITE)
|
|
|
|
var current_content = ""
|
|
|
|
var lines = current_editor.get_node("TextEditor").get_line_count()
|
|
|
|
for line in range(0,lines):
|
|
|
|
if current_editor.get_node("TextEditor").get_line(line) == "":
|
|
|
|
continue
|
|
|
|
current_content = current_editor.get_node("TextEditor").get_text()
|
|
|
|
current_file.store_line(current_editor.get_node("TextEditor").get_line(line))
|
|
|
|
current_file.close()
|
|
|
|
|
|
|
|
current_file_path = current_path
|
|
|
|
|
|
|
|
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path))
|
|
|
|
|
|
|
|
current_editor.update_lastmodified(last_modified,"save")
|
|
|
|
if current_csv_editor != null and not current_csv_editor.is_visible():
|
|
|
|
current_csv_editor.open_csv_file(current_path)
|
|
|
|
OpenFileList.set_item_metadata(current_file_index,[current_editor,current_ini_editor,current_csv_editor])
|
|
|
|
|
|
|
|
if OpenFileList.get_item_text(current_file_index).begins_with("(*)"):
|
|
|
|
OpenFileList.set_item_text(current_file_index,OpenFileList.get_item_text(current_file_index).lstrip("(*)"))
|
|
|
|
editing_file = false
|
|
|
|
|
|
|
|
update_list()
|
2019-09-23 15:06:43 +02:00
|
|
|
|
2019-10-18 01:22:11 +02:00
|
|
|
func clean_editor() -> void :
|
2022-07-14 10:23:53 +02:00
|
|
|
for inieditor in get_tree().get_nodes_in_group("ini_editor"):
|
|
|
|
inieditor.queue_free()
|
|
|
|
for vanillaeditor in get_tree().get_nodes_in_group("vanilla_editor"):
|
|
|
|
vanillaeditor.queue_free()
|
|
|
|
OpenFileName.clear()
|
|
|
|
OpenFileList.clear()
|
2019-10-18 01:22:11 +02:00
|
|
|
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func csv_preview():
|
2022-07-14 10:23:53 +02:00
|
|
|
var preview = Preview.instance()
|
|
|
|
get_parent().get_parent().get_parent().add_child(preview)
|
|
|
|
preview.popup()
|
|
|
|
preview.window_title += " ("+current_file_path.get_file()+")"
|
|
|
|
var lines = current_editor.get_node("TextEditor").get_line_count()
|
|
|
|
var rows = []
|
|
|
|
for i in range(0,lines-1):
|
|
|
|
rows.append(current_editor.get_node("TextEditor").get_line(i).rsplit(",",false))
|
|
|
|
preview.print_csv(rows)
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func bbcode_preview():
|
2022-07-14 10:23:53 +02:00
|
|
|
var preview = Preview.instance()
|
|
|
|
get_parent().get_parent().get_parent().add_child(preview)
|
|
|
|
preview.popup()
|
|
|
|
preview.window_title += " ("+current_file_path.get_file()+")"
|
|
|
|
preview.print_bb(current_editor.get_node("TextEditor").get_text())
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func markdown_preview():
|
2022-07-14 10:23:53 +02:00
|
|
|
var preview = Preview.instance()
|
|
|
|
get_parent().get_parent().get_parent().add_child(preview)
|
|
|
|
preview.popup()
|
|
|
|
preview.window_title += " ("+current_file_path.get_file()+")"
|
|
|
|
preview.print_markdown(current_editor.get_node("TextEditor").get_text())
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func html_preview():
|
2022-07-14 10:23:53 +02:00
|
|
|
var preview = Preview.instance()
|
|
|
|
get_parent().get_parent().get_parent().add_child(preview)
|
|
|
|
preview.popup()
|
|
|
|
preview.window_title += " ("+current_file_path.get_file()+")"
|
|
|
|
preview.print_html(current_editor.get_node("TextEditor").get_text())
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func xml_preview():
|
2022-07-14 10:23:53 +02:00
|
|
|
pass
|
2019-10-08 00:25:16 +02:00
|
|
|
|
|
|
|
func json_preview():
|
2022-07-14 10:23:53 +02:00
|
|
|
pass
|
2019-10-11 21:53:20 +02:00
|
|
|
|
|
|
|
func _on_vanillaeditor_text_changed():
|
2022-07-14 10:23:53 +02:00
|
|
|
if not OpenFileList.get_item_text(current_file_index).begins_with("(*)"):
|
|
|
|
OpenFileList.set_item_text(current_file_index,"(*)"+OpenFileList.get_item_text(current_file_index))
|
|
|
|
editing_file = true
|
2019-10-11 21:53:20 +02:00
|
|
|
|
2019-09-24 00:42:50 +02:00
|
|
|
func update_list():
|
2022-07-14 10:23:53 +02:00
|
|
|
FileList.invalidate()
|
2019-10-18 01:22:11 +02:00
|
|
|
|
|
|
|
func on_wrap_button(index:int):
|
2022-07-14 10:23:53 +02:00
|
|
|
match index:
|
|
|
|
0:
|
|
|
|
current_editor.set_wrap_enabled(false)
|
|
|
|
1:
|
|
|
|
current_editor.set_wrap_enabled(true)
|
2019-10-18 01:22:11 +02:00
|
|
|
|
|
|
|
func on_minimap_button(index:int):
|
2022-07-14 10:23:53 +02:00
|
|
|
match index:
|
|
|
|
0:
|
|
|
|
current_editor.draw_minimap(false)
|
|
|
|
1:
|
|
|
|
current_editor.draw_minimap(true)
|
2020-03-17 18:11:08 +01:00
|
|
|
|
|
|
|
func check_file_preview(file : String):
|
2022-07-14 10:23:53 +02:00
|
|
|
# check whether the opened file has a corresponding preview session for its extension
|
|
|
|
pass
|
2021-02-14 18:06:56 +01:00
|
|
|
|
|
|
|
|
|
|
|
func _on_ConfirmationDialog_confirmed():
|
2022-07-14 10:23:53 +02:00
|
|
|
confirm_close(current_file_index)
|