mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2024-12-23 13:57:01 +01:00
This commit is contained in:
parent
f1beb87a69
commit
96e9b47aea
@ -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()
|
Loading…
Reference in New Issue
Block a user