extends Control const base_path: = "user://language_resources/" const save_file_path: = "user://prof_tool_save.tres" var save_file: ProfToolSave @onready var language_select_button: = %LanguageSelectButton @onready var new_language_container: = %NewLanguageContainer @onready var line_edit: = %LineEdit @onready var file_dialog: = $FileDialog @onready var file_dialog_export: = $FileDialogExport @onready var add_word_list_button: = $VBoxContainer/AddWordListButton func _ready() -> void: _update_add_word_list_button() if not ResourceLoader.exists(save_file_path): save_file = ProfToolSave.new() save_file.resource_path = save_file_path ResourceSaver.save(save_file, save_file_path) save_file = load(save_file_path) _display_available_languages() func _display_available_languages() -> void: for item in range(1, language_select_button.item_count): language_select_button.remove_item(item) var available_languages: = _get_available_languages() var ind: = 1 for available_language in available_languages: language_select_button.add_item(available_language) if available_language == save_file.selected_language: Database.language = save_file.selected_language language_select_button.select(ind) ind += 1 func _update_add_word_list_button() -> void: if FileAccess.file_exists(Database.get_additional_word_list_path()): add_word_list_button.text = "Change Word List" else: add_word_list_button.text = "Add Word List" func _on_gp_list_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/gp_list.tscn") func _on_word_list_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/word_list.tscn") func _on_syllable_list_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/syllable_list.tscn") func _on_sentence_list_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/sentence_list.tscn") func _on_lesson_list_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/lessons_list.tscn") func _on_tracing_builder_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/tracing_builder.tscn") func _on_data_loader_button_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/gp_image_and_sound_descriptions.tscn") func _on_data_loader_button_2_pressed() -> void: get_tree().change_scene_to_file("res://sources/language_tool/gp_video_descriptions.tscn") func _on_export_filename_selected(filename: String) -> void: for i in Database.get_lessons_count(): print("Lesson %s --------------------" % i) print("\t \t Words ---") var words: = "" for e in Database.get_words_for_lesson(i, true): words += e.Word + ", " print(words.trim_suffix(", ")) print("\n") print("\t \t Sentences ---") for e in Database.get_sentences_for_lesson(i, true): print(e.Sentence) print("\n\n") var folder_zipper: = FolderZipper.new() folder_zipper.compress(base_path.path_join(Database.language), filename) func _get_available_languages() -> Array[String]: var available_languages: Array[String] = [] var dir = DirAccess.open(base_path) if dir: dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": if dir.current_is_dir(): if FileAccess.file_exists(base_path.path_join(file_name).path_join("language.db")): available_languages.append(file_name) file_name = dir.get_next() return available_languages func _on_language_select_button_item_selected(index: int) -> void: if index == 0: new_language_container.show() line_edit.grab_focus() return save_file.selected_language = language_select_button.get_item_text(index) ResourceSaver.save(save_file, save_file_path) Database.language = save_file.selected_language func _on_line_edit_text_submitted(new_text: String) -> void: DirAccess.make_dir_recursive_absolute(base_path.path_join(new_text)) DirAccess.copy_absolute("res://language_resources/model_database.db", base_path.path_join(new_text).path_join("language.db")) save_file.selected_language = new_text ResourceSaver.save(save_file, save_file_path) get_tree().reload_current_scene() func _word_list_file_selected(file_path: String) -> void: if FileAccess.file_exists(file_path): DirAccess.copy_absolute(file_path, Database.get_additional_word_list_path()) Database.load_additional_word_list() func _on_add_word_list_button_pressed() -> void: file_dialog.filters = [] file_dialog.add_filter("*.csv", "csv") for connection in file_dialog.file_selected.get_connections(): connection["signal"].disconnect(connection["callable"]) file_dialog.file_selected.connect(_word_list_file_selected) file_dialog.show() _update_add_word_list_button() func _on_import_language_button_pressed() -> void: file_dialog.filters = [] file_dialog.add_filter("*.zip", "zip") for connection in file_dialog.file_selected.get_connections(): connection["signal"].disconnect(connection["callable"]) file_dialog.file_selected.connect(_language_data_selected) file_dialog.show() func _on_export_button_pressed() -> void: file_dialog_export.filters = [] file_dialog_export.add_filter("*.zip", "zip") for connection in file_dialog_export.file_selected.get_connections(): connection["signal"].disconnect(connection["callable"]) file_dialog_export.file_selected.connect(_on_export_filename_selected) file_dialog_export.show() func _language_data_selected(file_path: String) -> void: if FileAccess.file_exists(file_path): var folder_unzipper: = FolderUnzipper.new() folder_unzipper.extract(file_path, base_path, false)