diff options
| author | Ryan Roden-Corrent <ryan@rcorre.net> | 2020-03-22 09:31:46 -0400 | 
|---|---|---|
| committer | Ryan Roden-Corrent <ryan@rcorre.net> | 2021-09-18 21:59:32 -0400 | 
| commit | 470b94fe22b83fb97bb5132a1e4855cd196c956d (patch) | |
| tree | 178497bc60ea659b5a960e3ca34c31296410d8b2 | |
| parent | d169087b67995b58a6a6b1394b41bc46e640bd77 (diff) | |
Add QuickLoad option to resource picker.
When clicking on a resource field in the inspector dock, you now have
the "Quick Load" option in addition to "Load". This opens a QuickOpen
dialog allowing the user to type in a phrase to quickly locate the
desired resource (similar to "Quick Open Scene").
In my experience, this is much faster than clicking through the File
Dialog.
Relates to godotengine/godot-proposals#346.
| -rw-r--r-- | editor/editor_resource_picker.cpp | 20 | ||||
| -rw-r--r-- | editor/editor_resource_picker.h | 4 | 
2 files changed, 23 insertions, 1 deletions
diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp index a4ab749db4..31c62880e2 100644 --- a/editor/editor_resource_picker.cpp +++ b/editor/editor_resource_picker.cpp @@ -135,6 +135,10 @@ void EditorResourcePicker::_file_selected(const String &p_path) {  	_update_resource();  } +void EditorResourcePicker::_file_quick_selected() { +	_file_selected(quick_open->get_selected()); +} +  void EditorResourcePicker::_update_menu() {  	_update_menu_items(); @@ -153,7 +157,10 @@ void EditorResourcePicker::_update_menu_items() {  	// Add options for creating specific subtypes of the base resource type.  	set_create_options(edit_menu); -	// Add an option to load a resource from a file. +	// Add an option to load a resource from a file using the QuickOpen dialog. +	edit_menu->add_icon_item(get_theme_icon(SNAME("Load"), SNAME("EditorIcons")), TTR("Quick Load"), OBJ_MENU_QUICKLOAD); + +	// Add an option to load a resource from a file using the regular file dialog.  	edit_menu->add_icon_item(get_theme_icon(SNAME("Load"), SNAME("EditorIcons")), TTR("Load"), OBJ_MENU_LOAD);  	// Add options for changing existing value of the resource. @@ -246,6 +253,17 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {  			file_dialog->popup_file_dialog();  		} break; +		case OBJ_MENU_QUICKLOAD: { +			if (!quick_open) { +				quick_open = memnew(EditorQuickOpen); +				add_child(quick_open); +				quick_open->connect("quick_open", callable_mp(this, &EditorResourcePicker::_file_quick_selected)); +			} + +			quick_open->popup_dialog(base_type); +			quick_open->set_title(TTR("Resource")); +		} break; +  		case OBJ_MENU_EDIT: {  			if (edited_resource.is_valid()) {  				emit_signal(SNAME("resource_selected"), edited_resource); diff --git a/editor/editor_resource_picker.h b/editor/editor_resource_picker.h index d77c31f831..d0dad0287b 100644 --- a/editor/editor_resource_picker.h +++ b/editor/editor_resource_picker.h @@ -32,6 +32,7 @@  #define EDITOR_RESOURCE_PICKER_H  #include "editor_file_dialog.h" +#include "quick_open.h"  #include "scene/gui/box_container.h"  #include "scene/gui/button.h"  #include "scene/gui/popup_menu.h" @@ -54,9 +55,11 @@ class EditorResourcePicker : public HBoxContainer {  	TextureRect *preview_rect;  	Button *edit_button;  	EditorFileDialog *file_dialog = nullptr; +	EditorQuickOpen *quick_open = nullptr;  	enum MenuOption {  		OBJ_MENU_LOAD, +		OBJ_MENU_QUICKLOAD,  		OBJ_MENU_EDIT,  		OBJ_MENU_CLEAR,  		OBJ_MENU_MAKE_UNIQUE, @@ -75,6 +78,7 @@ class EditorResourcePicker : public HBoxContainer {  	void _update_resource_preview(const String &p_path, const Ref<Texture2D> &p_preview, const Ref<Texture2D> &p_small_preview, ObjectID p_obj);  	void _resource_selected(); +	void _file_quick_selected();  	void _file_selected(const String &p_path);  	void _update_menu();  |