summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorPoommetee Ketson <poommetee@protonmail.com>2017-08-28 10:24:50 +0700
committerPoommetee Ketson <poommetee@protonmail.com>2017-08-29 07:09:47 +0700
commit6bb290f6a7dc031ba44e5e018d0e9d4ac80b0a9d (patch)
treeba2296b9bf06419809ce3f2c9b1c88214acc5088 /editor
parent213887f2096e6ab9176b527634b5304280b032d1 (diff)
EditorNode: enhance open scene error dialog
Diffstat (limited to 'editor')
-rw-r--r--editor/editor_node.cpp52
-rw-r--r--editor/editor_node.h3
2 files changed, 43 insertions, 12 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index c376efca34..8804f9332b 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -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);
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 08c7e11c85..60c0609e33 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -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();