Merge pull request #3276 from TheHX/pr-quick-open

Quick open now can open multiple scenes and scripts
This commit is contained in:
Rémi Verschelde 2016-01-11 11:42:13 +01:00
commit cbab728049
4 changed files with 52 additions and 17 deletions

View File

@ -2081,21 +2081,21 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
} break; } break;
case FILE_QUICK_OPEN_SCENE: { case FILE_QUICK_OPEN_SCENE: {
quick_open->popup("PackedScene"); quick_open->popup("PackedScene", true);
quick_open->set_title("Quick Open Scene.."); quick_open->set_title("Quick Open Scene..");
} break; } break;
case FILE_QUICK_OPEN_SCRIPT: { case FILE_QUICK_OPEN_SCRIPT: {
quick_open->popup("Script"); quick_open->popup("Script", true);
quick_open->set_title("Quick Open Script.."); quick_open->set_title("Quick Open Script..");
} break; } break;
case FILE_QUICK_OPEN_FILE: { case FILE_QUICK_OPEN_FILE: {
quick_open->popup("Resource",false,true); quick_open->popup("Resource", false, true);
quick_open->set_title("Quick Search File.."); quick_open->set_title("Quick Search File..");
} break; } break;
@ -3931,19 +3931,26 @@ void EditorNode::hide_animation_player_editors() {
emit_signal("hide_animation_player_editors"); emit_signal("hide_animation_player_editors");
} }
void EditorNode::_quick_opened(const String& p_resource) { void EditorNode::_quick_opened() {
if (current_option==FILE_QUICK_OPEN_FILE) { if (current_option==FILE_QUICK_OPEN_FILE) {
scenes_dock->open(p_resource); String res_path = quick_open->get_selected();
scenes_dock->open(res_path);
return; return;
} }
if (quick_open->get_base_type()=="PackedScene") { Vector<String> files = quick_open->get_selected_files();
open_request(p_resource);
} else {
load_resource(p_resource);
}
for (int i = 0; i < files.size(); i++) {
String res_path = files[i];
if (quick_open->get_base_type()=="PackedScene") {
open_request(res_path);
} else {
load_resource(res_path);
}
}
} }
void EditorNode::_quick_run(const String& p_resource) { void EditorNode::_quick_run(const String& p_resource) {

View File

@ -440,7 +440,7 @@ class EditorNode : public Node {
void _update_keying(); void _update_keying();
void _hide_top_editors(); void _hide_top_editors();
void _quick_opened(const String& p_resource); void _quick_opened();
void _quick_run(const String& p_resource); void _quick_run(const String& p_resource);
void _run(bool p_current=false, const String &p_custom=""); void _run(bool p_current=false, const String &p_custom="");

View File

@ -30,7 +30,7 @@
#include "os/keyboard.h" #include "os/keyboard.h"
void EditorQuickOpen::popup(const StringName &p_base, bool p_dontclear, bool p_add_dirs) { void EditorQuickOpen::popup(const StringName &p_base, bool p_enable_multi, bool p_add_dirs, bool p_dontclear) {
add_directories=p_add_dirs; add_directories=p_add_dirs;
popup_centered_ratio(0.6); popup_centered_ratio(0.6);
@ -38,13 +38,38 @@ void EditorQuickOpen::popup(const StringName &p_base, bool p_dontclear, bool p_a
search_box->select_all(); search_box->select_all();
else else
search_box->clear(); search_box->clear();
if (p_enable_multi)
search_options->set_select_mode(Tree::SELECT_MULTI);
else
search_options->set_select_mode(Tree::SELECT_SINGLE);
search_box->grab_focus(); search_box->grab_focus();
base_type=p_base; base_type=p_base;
_update_search(); _update_search();
} }
String EditorQuickOpen::get_selected() const {
TreeItem *ti = search_options->get_selected();
if (!ti)
return String();
return "res://" + ti->get_text(0);
}
Vector<String> EditorQuickOpen::get_selected_files() const {
Vector<String> files;
TreeItem* item = search_options->get_next_selected(search_options->get_root());
while (item) {
files.push_back("res://"+item->get_text(0));
item = search_options->get_next_selected(item);
}
return files;
}
void EditorQuickOpen::_text_changed(const String& p_newtext) { void EditorQuickOpen::_text_changed(const String& p_newtext) {
@ -132,7 +157,7 @@ void EditorQuickOpen::_confirmed() {
TreeItem *ti = search_options->get_selected(); TreeItem *ti = search_options->get_selected();
if (!ti) if (!ti)
return; return;
emit_signal("quick_open","res://"+ti->get_text(0)); emit_signal("quick_open");
hide(); hide();
} }
@ -156,7 +181,7 @@ void EditorQuickOpen::_bind_methods() {
ObjectTypeDB::bind_method(_MD("_confirmed"),&EditorQuickOpen::_confirmed); ObjectTypeDB::bind_method(_MD("_confirmed"),&EditorQuickOpen::_confirmed);
ObjectTypeDB::bind_method(_MD("_sbox_input"),&EditorQuickOpen::_sbox_input); ObjectTypeDB::bind_method(_MD("_sbox_input"),&EditorQuickOpen::_sbox_input);
ADD_SIGNAL(MethodInfo("quick_open",PropertyInfo(Variant::STRING,"respath"))); ADD_SIGNAL(MethodInfo("quick_open"));
} }

View File

@ -61,7 +61,10 @@ public:
StringName get_base_type() const; StringName get_base_type() const;
void popup(const StringName& p_base,bool p_dontclear=false,bool p_add_dirs=false); String get_selected() const;
Vector<String> get_selected_files() const;
void popup(const StringName& p_base,bool p_enable_multi=false,bool p_add_dirs=false,bool p_dontclear=false);
EditorQuickOpen(); EditorQuickOpen();
}; };