diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/editor/resources_dock.cpp | 67 |
1 files changed, 20 insertions, 47 deletions
diff --git a/tools/editor/resources_dock.cpp b/tools/editor/resources_dock.cpp index a05fe425b3..495225b91e 100644 --- a/tools/editor/resources_dock.cpp +++ b/tools/editor/resources_dock.cpp @@ -69,36 +69,8 @@ void ResourcesDock::_tool_selected(int p_tool) { TreeItem *ti = resources->get_selected(); if (!ti) break; - Ref<Resource> current_res = ti->get_metadata(0); - - RES res(current_res); - - List<String> extensions; - ResourceSaver::get_recognized_extensions(res,&extensions); - file->set_mode(FileDialog::MODE_SAVE_FILE); - //not for now? - - if (current_res->get_path()!="" && current_res->get_path().find("::")==-1) { - - file->set_current_path(current_res->get_path()); - } else { - String existing; - if (extensions.size()) { - existing="new_"+res->get_type().to_lower()+"."+extensions.front()->get().to_lower(); - } - - file->set_current_file(existing); - } - - file->clear_filters(); - for(int i=0;i<extensions.size();i++) { - - file->add_filter("*."+extensions[i]+" ; "+extensions[i].to_upper()); - } - - //file->set_current_path(current_path); - file->popup_centered_ratio(); + save_resource_as(ti->get_metadata(0)); } break; @@ -174,33 +146,34 @@ void ResourcesDock::save_resource(const String& p_path,const Ref<Resource>& p_re void ResourcesDock::save_resource_as(const Ref<Resource>& p_resource) { + current_action=TOOL_SAVE_AS; - add_resource(p_resource); - TreeItem *root=resources->get_root(); - ERR_FAIL_COND(!root); + RES res(p_resource); - TreeItem *existing=root->get_children(); + List<String> extensions; + ResourceSaver::get_recognized_extensions(res,&extensions); + file->set_mode(FileDialog::MODE_SAVE_FILE); - while(existing) { + if (p_resource->get_path()!="" && p_resource->get_path().find("::")==-1) { - Ref<Resource> r = existing->get_metadata(0); - if (r==p_resource) { - //existing->move_to_top(); - existing->select(0); - resources->ensure_cursor_is_visible(); - return; // existing - } - existing=existing->get_next(); - } - - ERR_FAIL_COND(!existing); + file->set_current_path(p_resource->get_path()); + } else { - existing->select(0); + String existing; + if (extensions.size()) { + existing="new_"+res->get_type().to_lower()+"."+extensions.front()->get().to_lower(); + } - _tool_selected(TOOL_SAVE_AS); + file->set_current_file(existing); + } + file->clear_filters(); + for(int i=0;i<extensions.size();i++) { + file->add_filter("*."+extensions[i]+" ; "+extensions[i].to_upper()); + } + file->popup_centered_ratio(); } |