Browse Source

improved save path error messages for scene, textures and audio, fixes #1514

Juan Linietsky 10 years ago
parent
commit
2dfa1279ea

+ 9 - 0
core/os/dir_access.cpp

@@ -399,6 +399,15 @@ Error DirAccess::copy(String p_from,String p_to) {
 	return err;
 	return err;
 }
 }
 
 
+bool DirAccess::exists(String p_dir) {
+
+	DirAccess* da = DirAccess::create_for_path(p_dir);
+	bool valid = da->change_dir(p_dir)==OK;
+	memdelete(da);
+	return valid;
+
+}
+
 DirAccess::DirAccess(){
 DirAccess::DirAccess(){
 
 
 	_access_type=ACCESS_FILESYSTEM;
 	_access_type=ACCESS_FILESYSTEM;

+ 1 - 1
core/os/dir_access.h

@@ -93,7 +93,7 @@ public:
 
 
 	virtual bool file_exists(String p_file)=0;
 	virtual bool file_exists(String p_file)=0;
 	virtual bool dir_exists(String p_dir)=0;
 	virtual bool dir_exists(String p_dir)=0;
-
+	static bool exists(String p_dir);
 	virtual size_t get_space_left()=0;
 	virtual size_t get_space_left()=0;
 
 
 	virtual Error copy(String p_from,String p_to);
 	virtual Error copy(String p_from,String p_to);

+ 1 - 0
platform/x11/os_x11.cpp

@@ -266,6 +266,7 @@ void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
 				continue;
 				continue;
 			if (AudioDriverManagerSW::get_driver(i)->init()==OK) {
 			if (AudioDriverManagerSW::get_driver(i)->init()==OK) {
 				success=true;
 				success=true;
+				print_line("Audio Driver Failed: "+String(AudioDriverManagerSW::get_driver(p_audio_driver)->get_name()));
 				print_line("Using alternate audio driver: "+String(AudioDriverManagerSW::get_driver(i)->get_name()));
 				print_line("Using alternate audio driver: "+String(AudioDriverManagerSW::get_driver(i)->get_name()));
 				break;
 				break;
 			}
 			}

+ 18 - 0
tools/editor/io_plugins/editor_sample_import_plugin.cpp

@@ -254,6 +254,24 @@ public:
 			error_dialog->popup_centered(Size2(200,100));
 			error_dialog->popup_centered(Size2(200,100));
 		}
 		}
 
 
+		if (save_path->get_text().strip_edges()=="") {
+			error_dialog->set_text("Target path is empty.");
+			error_dialog->popup_centered_minsize();
+			return;
+		}
+
+		if (!save_path->get_text().begins_with("res://")) {
+			error_dialog->set_text("Target path must be full resource path.");
+			error_dialog->popup_centered_minsize();
+			return;
+		}
+
+		if (!DirAccess::exists(save_path->get_text())) {
+			error_dialog->set_text("Target path must exist.");
+			error_dialog->popup_centered_minsize();
+			return;
+		}
+
 		for(int i=0;i<samples.size();i++) {
 		for(int i=0;i<samples.size();i++) {
 
 
 			Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
 			Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );

+ 17 - 4
tools/editor/io_plugins/editor_scene_import_plugin.cpp

@@ -671,15 +671,28 @@ void EditorSceneImportDialog::_import(bool p_and_open) {
 	wip_open=p_and_open;
 	wip_open=p_and_open;
 //'	ImportMonitorBlock imb;
 //'	ImportMonitorBlock imb;
 
 
-	if (import_path->get_text()=="") {
+
+	if (import_path->get_text().strip_edges()=="") {
 		error_dialog->set_text("Source path is empty.");
 		error_dialog->set_text("Source path is empty.");
-		error_dialog->popup_centered(Size2(200,100));
+		error_dialog->popup_centered_minsize();
 		return;
 		return;
 	}
 	}
 
 
-	if (save_path->get_text()=="") {
+	if (save_path->get_text().strip_edges()=="") {
 		error_dialog->set_text("Target path is empty.");
 		error_dialog->set_text("Target path is empty.");
-		error_dialog->popup_centered(Size2(200,100));
+		error_dialog->popup_centered_minsize();
+		return;
+	}
+
+	if (!save_path->get_text().begins_with("res://")) {
+		error_dialog->set_text("Target path must be full resource path.");
+		error_dialog->popup_centered_minsize();
+		return;
+	}
+
+	if (!DirAccess::exists(save_path->get_text())) {
+		error_dialog->set_text("Target path must exist.");
+		error_dialog->popup_centered_minsize();
 		return;
 		return;
 	}
 	}
 
 

+ 14 - 3
tools/editor/io_plugins/editor_texture_import_plugin.cpp

@@ -321,12 +321,23 @@ void EditorTextureImportDialog::_import() {
 
 
 	String dst_path=save_path->get_text();
 	String dst_path=save_path->get_text();
 
 
-	if (dst_path.empty()) {
+	if (save_path->get_text().strip_edges()=="") {
+		error_dialog->set_text("Target path is empty.");
+		error_dialog->popup_centered_minsize();
+		return;
+	}
 
 
-		error_dialog->set_text("Please specify a valid target import path!");
-		error_dialog->popup_centered(Size2(200,100));
+	if (!save_path->get_text().begins_with("res://")) {
+		error_dialog->set_text("Target path must be full resource path.");
+		error_dialog->popup_centered_minsize();
 		return;
 		return;
+	}
+
 
 
+	if (!atlas && !DirAccess::exists(save_path->get_text())) {
+		error_dialog->set_text("Target path must exist.");
+		error_dialog->popup_centered_minsize();
+		return;
 	}
 	}
 
 
 	if (atlas) { //atlas
 	if (atlas) { //atlas