diff --git a/addons/file-editor/scripts/CsvEditor.gd b/addons/file-editor/scripts/CsvEditor.gd deleted file mode 100644 index 0ed327e..0000000 --- a/addons/file-editor/scripts/CsvEditor.gd +++ /dev/null @@ -1,215 +0,0 @@ -tool -extends Control - -var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new() -var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new() - -onready var Table = $Editor/TableContainer/ScrollContainer/Table -onready var AlignBTN = $Editor/Buttons/align_bt.get_popup() -onready var EditBTN = $Editor/Buttons/edit_bt.get_popup() -onready var OptionsBTN = $Editor/Buttons/options_btn.get_popup() -onready var FileInfo = $Editor/FileInfo -onready var ReadOnly = $Editor/FileInfo/Readonly - -onready var Horizontal = $Editor/Horizontal -onready var Vertical = $Editor/TableContainer/Vertical - -onready var ChangeDelimiterDialog = $ChangeDelimiterDialog - -var current_file_path : String = "" - -var rows : int -var columns : int -var csv_delimiter : String -var filepath : String - -signal update_file() - -func _ready(): - add_to_group("csv_editor") - connect_signals() - - load_icons() - -func connect_signals(): - AlignBTN.connect("id_pressed",self,"on_align_pressed") - EditBTN.connect("id_pressed",self,"on_edit_pressed") - OptionsBTN.connect("id_pressed",self,"on_options_pressed") - ReadOnly.connect("toggled",self,"_on_Readonly_toggled") - ChangeDelimiterDialog.connect("confirmed",self,"on_changedelimiter_confirmed") - - connect("visibility_changed",self,"_on_visibility_changed") - -func load_icons(): - $Editor/Buttons/align_bt.set_button_icon(IconLoader.load_icon_from_name("align")) - $Editor/Buttons/edit_bt.set_button_icon(IconLoader.load_icon_from_name("edit_")) - - AlignBTN.set_item_icon(0,IconLoader.load_icon_from_name("text-left")) - AlignBTN.set_item_icon(1,IconLoader.load_icon_from_name("text-center")) - AlignBTN.set_item_icon(2,IconLoader.load_icon_from_name("text-right")) - AlignBTN.set_item_icon(3,IconLoader.load_icon_from_name("text-fill")) - - EditBTN.set_item_icon(0,IconLoader.load_icon_from_name("row")) - EditBTN.set_item_icon(1,IconLoader.load_icon_from_name("column")) - EditBTN.set_item_icon(3,IconLoader.load_icon_from_name("save")) - - ReadOnly.set("custom_icons/checked",IconLoader.load_icon_from_name("read")) - ReadOnly.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit")) - -func open_csv_file(filepath : String, csv_delimiter : String) -> void: - self.filepath = filepath - var csv = File.new() - csv.open(filepath,File.READ) - var rows : Array = [] - var columns = -1 - while not csv.eof_reached(): - rows.append(csv.get_csv_line(csv_delimiter)) - if columns == -1: - columns = rows[0].size() - csv.close() - self.csv_delimiter = csv_delimiter - load_file_in_table(rows,columns) - ReadOnly.pressed = (true) - $Editor/FileInfo/delimiter.set_text(csv_delimiter) - ChangeDelimiterDialog.get_node("VBoxContainer/delim_read").set_text(csv_delimiter) - -func load_file_in_table(rows : Array, columns : int) -> void: - Table.set_columns(columns) - for row in rows: - add_row(row.size(),"",row) - update_dimensions(rows.size()-1,columns) - -func add_row(columns : int, cell_text : String = "", cell2text : PoolStringArray = []): - for i in range(0,columns): - if cell2text.size()<1: - var cell = LineEdit.new() - cell.set_h_size_flags(2) - cell.set_h_size_flags(3) - cell.set_text(cell_text) - Table.add_child(cell) - if ReadOnly.pressed: - cell.set_editable(false) - - else: - if cell2text[i]!="": - var cell = LineEdit.new() - cell.set_h_size_flags(2) - cell.set_h_size_flags(3) - Table.add_child(cell) - if cell2text: - cell.set_text(cell2text[i]) - else: - cell.set_text(cell_text) - if ReadOnly.pressed: - cell.set_editable(false) - -func add_column(rows : int ,cell_text : String = ""): - for i in range(0,rows): - var cell = LineEdit.new() - cell.set_h_size_flags(2) - cell.set_h_size_flags(3) - Table.add_child(cell) - Table.move_child(cell,(columns)*(i+1)-1) - cell.set_text(cell_text) - if ReadOnly.pressed: - cell.set_editable(false) - -func on_align_pressed(index : int) -> void: - for cell in Table.get_children(): - cell.set_align(index) - -func on_edit_pressed(index :int) -> void: - match index: - 0: - update_dimensions(rows+1,columns) - add_row(columns) - 1: - update_dimensions(rows,columns+1) - add_column(rows) - 3: - save_table() - -func on_options_pressed(index : int) -> void: - match index: - 0: - ChangeDelimiterDialog.popup() - -func table_ruler(rows : int, columns : int): - for child in Vertical.get_children(): - child.queue_free() - for child in Horizontal.get_children(): - child.queue_free() - for i in range(0,rows): - var lb = Label.new() - lb.set_h_size_flags(2) - lb.set_h_size_flags(3) - lb.set_text(str(i+1)) - Vertical.add_child(lb) - var lb = Label.new() - lb.set_text(" ") - Horizontal.add_child(lb) - for j in range(0,columns): - var lb2 = Label.new() - lb2.set_h_size_flags(2) - lb2.set_h_size_flags(3) - lb2.set_align(1) - lb2.set_text(str(j+1)) - Horizontal.add_child(lb2) - -func update_dimensions(rows : int, columns : int): - self.rows = rows - self.columns = columns - table_ruler(rows,columns) - Table.set_columns(columns) - FileInfo.get_node("rows").set_text(str(rows)) - FileInfo.get_node("columns").set_text(str(columns)) - -func _on_Readonly_toggled(button_pressed): - if button_pressed: - ReadOnly.set_text("Read Only") - for cell in Table.get_children(): - cell.set_editable(false) - else: - ReadOnly.set_text("Can Edit") - for cell in Table.get_children(): - cell.set_editable(true) - -func save_table(): - var content : Array = [] - var column = 0 - var row_ : PoolStringArray = [] - for cell in Table.get_children(): - if column < columns: - row_.append(cell.get_text()) - column+=1 - else: - content.append(row_) - row_ = [] - row_.append(cell.get_text()) - column = 1 - content.append(row_) - - var file = File.new() - file.open(filepath, File.WRITE) - for line in content: - file.store_csv_line(line,csv_delimiter) - file.close() - - emit_signal("update_file") - -func on_changedelimiter_confirmed(): - change_delimiter(ChangeDelimiterDialog.get_node("VBoxContainer/delim_read").get_text()) - -func change_delimiter(delim : String): - csv_delimiter = delim - reload() - -func reload(): - for element in Table.get_children(): - element.queue_free() - open_csv_file(current_file_path,csv_delimiter) - FileInfo.show() - -func _on_visibility_changed(): - if visible: - reload()