EditorNode: enhance open scene error dialog
This commit is contained in:
parent
213887f209
commit
6bb290f6a7
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue