broken_seals_2d/game/addons/data_manager/panels/AddFolderDialog.gd

75 lines
1.9 KiB
GDScript

tool
extends ConfirmationDialog
const DataManagerAddonSettings = preload("res://addons/data_manager/resources/data_manager_addon_settings.gd")
var _settings : DataManagerAddonSettings = null
var _module = null
signal folders_created
func _enter_tree():
if !is_connected("confirmed", self, "on_confirmed"):
connect("confirmed", self, "on_confirmed")
func setup() -> void:
var entry_container : Control = $ScrollContainer/VBoxContainer
for ch in entry_container.get_children():
ch.queue_free()
var dir : Directory = Directory.new()
var label_str : String = "= " + get_module_label_text(_module) + " ="
window_title = "Add folder(s) for " + label_str
var module_dir_base : String = _module.resource_path.get_base_dir()
for f in _settings.folders:
if dir.dir_exists(module_dir_base + "/" + f.folder):
continue
var ecb : CheckBox = CheckBox.new()
ecb.text = f.folder + " (" + f.type + ")"
ecb.set_meta("folder", f.folder)
entry_container.add_child(ecb)
func on_confirmed() -> void:
var entry_container : Control = $ScrollContainer/VBoxContainer
var dir : Directory = Directory.new()
var module_dir_base : String = _module.resource_path.get_base_dir()
for c in entry_container.get_children():
if !(c is CheckBox):
continue
if !c.pressed:
continue
var folder : String = c.get_meta("folder")
var d : String = module_dir_base + "/" + folder
if !dir.dir_exists(d):
dir.make_dir(d)
emit_signal("folders_created")
func set_module(module, settings : DataManagerAddonSettings) -> void:
_module = module
_settings = settings
setup()
#popup_centered()
popup_centered()
func get_module_label_text(module) -> String:
var label_str : String = module.resource_name
if label_str == "":
label_str = module.resource_path
label_str = label_str.replace("res://", "")
label_str = label_str.replace("/game_module.tres", "")
label_str = label_str.replace("game_module.tres", "")
return label_str