浏览代码

Merge pull request #722 from Marqin/master

[FIX] "File->Save As" in Script panel
Juan Linietsky 11 年之前
父节点
当前提交
a61325661e
共有 1 个文件被更改,包括 20 次插入47 次删除
  1. 20 47
      tools/editor/resources_dock.cpp

+ 20 - 47
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();
 
 }