FunkPanion/scripts/config/open_file_dialog.gd
2024-11-23 14:36:52 -06:00

43 lines
1.6 KiB
GDScript

extends HBoxContainer
signal file_changed(path: String)
@onready var root = get_tree().root
@onready var open_file = $"switch"
@onready var path = $"value"
@onready var upload_file = $"save"
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
print("User data dir located in " + OS.get_data_dir())
open_file.pressed.connect(func():
var file_dialog = FileDialog.new()
file_dialog.use_native_dialog = true
file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE
file_dialog.access = FileDialog.ACCESS_FILESYSTEM
file_dialog.current_path = OS.get_data_dir().path_join("FunkPanion/")
file_dialog.file_selected.connect(func(path_string: String):
var localized = path_string.simplify_path().replace(OS.get_data_dir().path_join("FunkPanion/"), "user://")
path.text = localized
file_changed.emit(localized)
file_dialog.queue_free()
)
file_dialog.canceled.connect(func(path_string: String):
root.remove_child(file_dialog)
file_dialog.queue_free()
)
root.add_child(file_dialog)
file_dialog.popup()
)
upload_file.pressed.connect(func():
if path.text.length() > 0:
print("path text yes", path.text)
if FileAccess.file_exists(path.text) and path.text.findn("user://") != 0 and ProjectSettings.localize_path(path.text).findn("user://") != 0:
print("path exists")
if not DirAccess.dir_exists_absolute("user://uploads/"):
DirAccess.make_dir_absolute("user://uploads/")
var new_path = "user://uploads/".path_join(path.text.get_file())
DirAccess.copy_absolute(path.text, new_path)
path.text = new_path
file_changed.emit(new_path)
)