**WARNING BEFORE PULLING**

This push changes the binary and XML formats and bumps the major version to 2.0. As such, files saved in this version WILL NO LONGER WORK IN PREVIOUS VERSIONS. This compatibility breakage with older versions was required in order to properly provide project refactoring tools.
If I were you, unless you are brave, I would wait a week or two before pulling, in case of bugs :)

Summary of Changes

-New Filesystem dock, with filesystem & tree view modes.
-New refactoring tools, to change or fix dependencies.
-Quick search dialog, to quickly search any file
This commit is contained in:
Juan Linietsky 2015-08-23 20:15:56 -03:00
parent 9d185ccc30
commit 07e9741425
59 changed files with 2694 additions and 402 deletions

View file

@ -1800,6 +1800,13 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
quick_open->popup("Script");
quick_open->set_title("Quick Open Script..");
} break;
case FILE_QUICK_OPEN_FILE: {
quick_open->popup("Resource",false,true);
quick_open->set_title("Quick Search File..");
} break;
case FILE_RUN_SCRIPT: {
@ -3047,7 +3054,21 @@ void EditorNode::set_current_scene(int p_idx) {
}
Error EditorNode::load_scene(const String& p_scene) {
bool EditorNode::is_scene_open(const String& p_path) {
for(int i=0;i<editor_data.get_edited_scene_count();i++) {
if (editor_data.get_scene_path(i)==p_path)
return true;
}
return false;
}
void EditorNode::fix_dependencies(const String& p_for_file) {
dependency_fixer->edit(p_for_file);
}
Error EditorNode::load_scene(const String& p_scene, bool p_ignore_broken_deps) {
if (!is_inside_tree()) {
defer_load_scene = p_scene;
@ -3093,6 +3114,8 @@ Error EditorNode::load_scene(const String& p_scene) {
//_cleanup_scene(); // i'm sorry but this MUST happen to avoid modified resources to not be reloaded.
dependency_errors.clear();
Ref<PackedScene> sdata = ResourceLoader::load(lpath,"",true);
if (!sdata.is_valid()) {
@ -3110,6 +3133,35 @@ Error EditorNode::load_scene(const String& p_scene) {
return ERR_FILE_NOT_FOUND;
}
if (!p_ignore_broken_deps && dependency_errors.has(lpath)) {
current_option=-1;
Vector<String> errors;
for(Set<String>::Element *E=dependency_errors[lpath].front();E;E=E->next()) {
errors.push_back(E->get());
}
dependency_error->show(lpath,errors);
opening_prev=false;
if (prev!=-1) {
set_current_scene(prev);
editor_data.remove_scene(idx);
}
return ERR_FILE_MISSING_DEPENDENCIES;
}
dependency_errors.erase(lpath); //at least not self path
for (Map<String,Set<String> >::Element *E=dependency_errors.front();E;E=E->next()) {
String txt="Scene '"+E->key()+"' has broken dependencies:\n";
for(Set<String>::Element *F=E->get().front();F;F=F->next()) {
txt+="\t"+F->get()+"\n";
}
add_io_error(txt);
}
sdata->set_path(lpath,true); //take over path
Node*new_scene=sdata->instance(true);
@ -3405,9 +3457,12 @@ void EditorNode::hide_animation_player_editors() {
void EditorNode::_quick_opened(const String& p_resource) {
print_line("quick_opened");
if (quick_open->get_base_type()=="PackedScene") {
if (current_option==FILE_QUICK_OPEN_FILE) {
scenes_dock->open(p_resource);
return;
}
if (quick_open->get_base_type()=="PackedScene") {
open_request(p_resource);
} else {
load_resource(p_resource);
@ -4117,6 +4172,7 @@ EditorNode::EditorNode() {
ResourceLoader::set_abort_on_missing_resources(false);
FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files"));
ResourceLoader::set_error_notify_func(this,_load_error_notify);
ResourceLoader::set_dependency_error_notify_func(this,_dependency_error_report);
ResourceLoader::set_timestamp_on_load(true);
ResourceSaver::set_timestamp_on_save(true);
@ -4490,6 +4546,7 @@ EditorNode::EditorNode() {
p->add_separator();
p->add_item("Quick Open Scene..",FILE_QUICK_OPEN_SCENE,KEY_MASK_SHIFT+KEY_MASK_CMD+KEY_O);
p->add_item("Quick Open Script..",FILE_QUICK_OPEN_SCRIPT,KEY_MASK_ALT+KEY_MASK_CMD+KEY_O);
p->add_item("Quick Search File..",FILE_QUICK_OPEN_FILE,KEY_MASK_ALT+KEY_MASK_CMD+KEY_P);
p->add_separator();
PopupMenu *pm_export = memnew(PopupMenu );
@ -4926,7 +4983,11 @@ EditorNode::EditorNode() {
dependency_error = memnew( DependencyErrorDialog );
gui_base->add_child(dependency_error);
dependency_fixer = memnew( DependencyEditor );
gui_base->add_child( dependency_fixer );
settings_config_dialog = memnew( EditorSettingsDialog );
gui_base->add_child(settings_config_dialog);