EditorNode: enhance open scene error dialog

This commit is contained in:
Poommetee Ketson 2017-08-28 10:24:50 +07:00
parent 213887f209
commit 6bb290f6a7
2 changed files with 43 additions and 12 deletions

View file

@ -559,7 +559,7 @@ void EditorNode::_menu_confirm_current() {
_menu_option_confirm(current_option, true);
}
void EditorNode::_dialog_display_file_error(String p_file, Error p_error) {
void EditorNode::_dialog_display_save_error(String p_file, Error p_error) {
if (p_error) {
@ -586,6 +586,41 @@ void EditorNode::_dialog_display_file_error(String p_file, Error p_error) {
}
}
void EditorNode::_dialog_display_load_error(String p_file, Error p_error) {
if (p_error) {
current_option = -1;
accept->get_ok()->set_text(TTR("I see.."));
switch (p_error) {
case ERR_CANT_OPEN: {
accept->set_text(vformat(TTR("Can't open '%s'."), p_file.get_file()));
} break;
case ERR_PARSE_ERROR: {
accept->set_text(vformat(TTR("Error while parsing '%s'."), p_file.get_file()));
} break;
case ERR_FILE_CORRUPT: {
accept->set_text(vformat(TTR("Unexpected end of file '%s'."), p_file.get_file()));
} break;
case ERR_FILE_NOT_FOUND: {
accept->set_text(vformat(TTR("Missing '%s' or its dependencies."), p_file.get_file()));
} break;
default: {
accept->set_text(vformat(TTR("Error while loading '%s'."), p_file.get_file()));
} break;
}
accept->popup_centered_minsize();
}
}
void EditorNode::_get_scene_metadata(const String &p_file) {
Node *scene = editor_data.get_edited_scene_root();
@ -899,7 +934,7 @@ void EditorNode::_save_scene(String p_file, int idx) {
_update_scene_tabs();
} else {
_dialog_display_file_error(p_file, err);
_dialog_display_save_error(p_file, err);
}
}
@ -2778,13 +2813,11 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
dependency_errors.clear();
Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", true);
Error err;
Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", true, &err);
if (!sdata.is_valid()) {
current_option = -1;
accept->get_ok()->set_text(TTR("Ugh"));
accept->set_text(TTR("Error loading scene."));
accept->popup_centered_minsize();
_dialog_display_load_error(lpath, err);
opening_prev = false;
if (prev != -1) {
@ -2841,10 +2874,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
if (!new_scene) {
sdata.unref();
current_option = -1;
accept->get_ok()->set_text(TTR("Ugh"));
accept->set_text(TTR("Error loading scene."));
accept->popup_centered_minsize();
_dialog_display_load_error(lpath, ERR_FILE_NOT_FOUND);
opening_prev = false;
if (prev != -1) {
set_current_scene(prev);

View file

@ -404,7 +404,8 @@ private:
void _dialog_action(String p_file);
void _edit_current();
void _dialog_display_file_error(String p_file, Error p_error);
void _dialog_display_save_error(String p_file, Error p_error);
void _dialog_display_load_error(String p_file, Error p_error);
int current_option;
void _resource_created();