diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-03-15 08:45:01 +0100 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-03-15 08:45:01 +0100 |
commit | c1a1adae280c6a25fa776dfd083b6d7a48f580c0 (patch) | |
tree | 83d6deda15a30edf4c47a6fbb56b5d74742c9210 /scene | |
parent | 9e97e9f39d3893174f42803b5eabc73819d68ac2 (diff) | |
parent | 751c1deef1086cd3c708e6ef063700ed3ffdf79b (diff) |
Merge pull request #4051 from AlexHolly/fileeditor-open-any
(editor)filedialog open file and dir MODE_OPEN_ANY
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/file_dialog.cpp | 14 | ||||
-rw-r--r-- | scene/gui/file_dialog.h | 3 |
2 files changed, 10 insertions, 7 deletions
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index b8b8c99c39..64fdfdfefe 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -181,12 +181,10 @@ void FileDialog::_action_pressed() { String f=dir_access->get_current_dir().plus_file(file->get_text()); - if (mode==MODE_OPEN_FILE && dir_access->file_exists(f)) { + if ((mode==MODE_OPEN_ANY || mode==MODE_OPEN_FILE) && dir_access->file_exists(f)) { emit_signal("file_selected",f); hide(); - } - - if (mode==MODE_OPEN_DIR) { + }else if (mode==MODE_OPEN_ANY || mode==MODE_OPEN_DIR) { String path=dir_access->get_current_dir(); @@ -304,7 +302,7 @@ void FileDialog::_tree_dc_selected() { if (d["dir"]) { dir_access->change_dir(d["name"]); - if (mode==MODE_OPEN_FILE || mode==MODE_OPEN_FILES || mode==MODE_OPEN_DIR) + if (mode==MODE_OPEN_FILE || mode==MODE_OPEN_FILES || mode==MODE_OPEN_DIR || mode==MODE_OPEN_ANY) file->set_text(""); call_deferred("_update_file_list"); call_deferred("_update_dir"); @@ -552,8 +550,9 @@ void FileDialog::set_mode(Mode p_mode) { case MODE_OPEN_FILE: get_ok()->set_text("Open"); set_title("Open a File"); makedir->hide(); break; case MODE_OPEN_FILES: get_ok()->set_text("Open"); set_title("Open File(s)"); makedir->hide(); break; - case MODE_SAVE_FILE: get_ok()->set_text("Save"); set_title("Save a File"); makedir->show(); break; case MODE_OPEN_DIR: get_ok()->set_text("Open"); set_title("Open a Directory"); makedir->show(); break; + case MODE_OPEN_ANY: get_ok()->set_text("Open"); set_title("Open a File or Directory"); makedir->show(); break; + case MODE_SAVE_FILE: get_ok()->set_text("Save"); set_title("Save a File"); makedir->show(); break; } if (mode==MODE_OPEN_FILES) { @@ -710,6 +709,8 @@ void FileDialog::_bind_methods() { BIND_CONSTANT( MODE_OPEN_FILE ); BIND_CONSTANT( MODE_OPEN_FILES ); BIND_CONSTANT( MODE_OPEN_DIR ); + BIND_CONSTANT( MODE_OPEN_ANY ); + BIND_CONSTANT( MODE_SAVE_FILE ); BIND_CONSTANT( ACCESS_RESOURCES ); @@ -877,3 +878,4 @@ LineEditFileChooser::LineEditFileChooser() { dialog->connect("files_selected",this,"_chosen"); } + diff --git a/scene/gui/file_dialog.h b/scene/gui/file_dialog.h index 2042adbc20..1fcf8387ce 100644 --- a/scene/gui/file_dialog.h +++ b/scene/gui/file_dialog.h @@ -57,7 +57,8 @@ public: MODE_OPEN_FILE, MODE_OPEN_FILES, MODE_OPEN_DIR, - MODE_SAVE_FILE, + MODE_OPEN_ANY, + MODE_SAVE_FILE }; typedef Ref<Texture> (*GetIconFunc)(const String&); |