From 5af21f84a81e05eb3c983299f1f283d2cce5a46c Mon Sep 17 00:00:00 2001 From: Rodolphe Suescun Date: Sun, 11 Jul 2021 10:25:46 +0200 Subject: [PATCH] Added Delete key to remove directories from recent/favorite lists --- material_maker/main_window.gd | 10 ++++++---- .../image_picker_button/image_picker_button.gd | 10 ++++++---- material_maker/windows/file_dialog/left_panel.gd | 12 ++++++++++++ material_maker/windows/file_dialog/left_panel.tscn | 2 ++ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/material_maker/main_window.gd b/material_maker/main_window.gd index 523aa73f..821af480 100644 --- a/material_maker/main_window.gd +++ b/material_maker/main_window.gd @@ -459,7 +459,7 @@ func _on_ExportMaterial_id_pressed(id) -> void: if material_node == null: return var profile = material_node.get_export_profiles()[id] - var dialog : FileDialog = FileDialog.new() + var dialog = preload("res://material_maker/windows/file_dialog/file_dialog.tscn").instance() dialog.rect_min_size = Vector2(500, 500) dialog.access = FileDialog.ACCESS_FILESYSTEM dialog.mode = FileDialog.MODE_SAVE_FILE @@ -468,9 +468,11 @@ func _on_ExportMaterial_id_pressed(id) -> void: if config_cache.has_section_key("path", config_key): dialog.current_dir = config_cache.get_value("path", config_key) add_child(dialog) - dialog.connect("file_selected", self, "export_material", [ profile ]) - dialog.connect("popup_hide", dialog, "queue_free") - dialog.popup_centered() + var files = dialog.select_files() + while files is GDScriptFunctionState: + files = yield(files, "completed") + if files.size() > 0: + export_material(files[0], profile) func create_menu_set_theme(menu) -> void: diff --git a/material_maker/widgets/image_picker_button/image_picker_button.gd b/material_maker/widgets/image_picker_button/image_picker_button.gd index 1afd345f..165d3221 100644 --- a/material_maker/widgets/image_picker_button/image_picker_button.gd +++ b/material_maker/widgets/image_picker_button/image_picker_button.gd @@ -21,7 +21,7 @@ func set_image_path(path) -> void: emit_signal("on_file_selected", path) func _on_ImagePicker_pressed(): - var dialog = FileDialog.new() + var dialog = preload("res://material_maker/windows/file_dialog/file_dialog.tscn").instance() add_child(dialog) dialog.rect_min_size = Vector2(500, 500) dialog.access = FileDialog.ACCESS_FILESYSTEM @@ -34,9 +34,11 @@ func _on_ImagePicker_pressed(): dialog.add_filter("*.svg;SVG Image") dialog.add_filter("*.tga;TGA Image") dialog.add_filter("*.webp;WebP Image") - dialog.connect("file_selected", self, "set_image_path") - dialog.connect("popup_hide", dialog, "queue_free") - dialog.popup_centered() + var files = dialog.select_files() + while files is GDScriptFunctionState: + files = yield(files, "completed") + if files.size() > 0: + set_image_path(files[0]) func on_drop_image_file(file_name : String) -> void: set_image_path(file_name) diff --git a/material_maker/windows/file_dialog/left_panel.gd b/material_maker/windows/file_dialog/left_panel.gd index 11ab674c..a9f50db6 100644 --- a/material_maker/windows/file_dialog/left_panel.gd +++ b/material_maker/windows/file_dialog/left_panel.gd @@ -56,3 +56,15 @@ func _on_FavList_item_activated(index): func _on_RecentList_item_activated(index): emit_signal("open_directory", $RecentList.get_item_tooltip(index)) + +func _on_FavList_gui_input(event): + if event is InputEventKey and event.pressed and event.scancode == KEY_DELETE: + if ! $FavList.get_selected_items().empty(): + favorites.remove($FavList.get_selected_items()[0]) + update_lists() + +func _on_RecentList_gui_input(event): + if event is InputEventKey and event.pressed and event.scancode == KEY_DELETE: + if ! $RecentList.get_selected_items().empty(): + recents.remove($RecentList.get_selected_items()[0]) + update_lists() diff --git a/material_maker/windows/file_dialog/left_panel.tscn b/material_maker/windows/file_dialog/left_panel.tscn index 5b61da28..41b9a131 100644 --- a/material_maker/windows/file_dialog/left_panel.tscn +++ b/material_maker/windows/file_dialog/left_panel.tscn @@ -42,5 +42,7 @@ __meta__ = { "_edit_use_anchors_": false } +[connection signal="gui_input" from="RecentList" to="." method="_on_RecentList_gui_input"] [connection signal="item_activated" from="RecentList" to="." method="_on_RecentList_item_activated"] +[connection signal="gui_input" from="FavList" to="." method="_on_FavList_gui_input"] [connection signal="item_activated" from="FavList" to="." method="_on_FavList_item_activated"]