diff options
Diffstat (limited to 'editor/script_create_dialog.cpp')
-rw-r--r-- | editor/script_create_dialog.cpp | 63 |
1 files changed, 18 insertions, 45 deletions
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp index d111fe8f36..6ca128138e 100644 --- a/editor/script_create_dialog.cpp +++ b/editor/script_create_dialog.cpp @@ -125,7 +125,6 @@ void ScriptCreateDialog::_notification(int p_what) { for (int i = 0; i < language_menu->get_item_count(); i++) { if (language_menu->get_item_text(i) == last_language) { language_menu->select(i); - current_language = i; break; } } @@ -146,8 +145,8 @@ void ScriptCreateDialog::_notification(int p_what) { void ScriptCreateDialog::_path_hbox_sorted() { if (is_visible()) { - int filename_start_pos = initial_bp.rfind("/") + 1; - int filename_end_pos = initial_bp.length(); + int filename_start_pos = file_path->get_text().rfind("/") + 1; + int filename_end_pos = file_path->get_text().length(); if (!is_built_in) { file_path->select(filename_start_pos, filename_end_pos); @@ -166,26 +165,30 @@ bool ScriptCreateDialog::_can_be_built_in() { return (supports_built_in && built_in_enabled); } +String ScriptCreateDialog::_adjust_file_path(const String &p_base_path) const { + if (p_base_path.is_empty()) { + return p_base_path; + } + + String base_dir = p_base_path.get_base_dir(); + String file_name = p_base_path.get_file().get_basename(); + file_name = EditorNode::adjust_script_name_casing(file_name, language->preferred_file_name_casing()); + String extension = language->get_extension(); + return base_dir.path_join(file_name + "." + extension); +} + void ScriptCreateDialog::config(const String &p_base_name, const String &p_base_path, bool p_built_in_enabled, bool p_load_enabled) { parent_name->set_text(p_base_name); parent_name->deselect(); built_in_name->set_text(""); - if (!p_base_path.is_empty()) { - initial_bp = p_base_path.get_basename(); - file_path->set_text(initial_bp + "." + ScriptServer::get_language(language_menu->get_selected())->get_extension()); - current_language = language_menu->get_selected(); - } else { - initial_bp = ""; - file_path->set_text(""); - } + file_path->set_text(p_base_path); file_path->deselect(); built_in_enabled = p_built_in_enabled; load_enabled = p_load_enabled; - _language_changed(current_language); - _path_changed(file_path->get_text()); + _language_changed(language_menu->get_selected()); } void ScriptCreateDialog::set_inheritance_base_type(const String &p_base) { @@ -388,38 +391,9 @@ void ScriptCreateDialog::_language_changed(int l) { is_built_in = false; } - String selected_ext = "." + language->get_extension(); String path = file_path->get_text(); - String extension = ""; - if (!path.is_empty()) { - if (path.contains(".")) { - extension = path.get_extension(); - } - - if (extension.length() == 0) { - // Add extension if none. - path += selected_ext; - _path_changed(path); - } else { - // Change extension by selected language. - List<String> extensions; - // Get all possible extensions for script. - for (int m = 0; m < language_menu->get_item_count(); m++) { - ScriptServer::get_language(m)->get_recognized_extensions(&extensions); - } - - for (const String &E : extensions) { - if (E.nocasecmp_to(extension) == 0) { - path = path.get_basename() + selected_ext; - _path_changed(path); - break; - } - } - } - } else { - path = "class" + selected_ext; - _path_changed(path); - } + path = _adjust_file_path(path); + _path_changed(path); file_path->set_text(path); EditorSettings::get_singleton()->set_project_metadata("script_setup", "last_selected_language", language_menu->get_item_text(language_menu->get_selected())); @@ -896,7 +870,6 @@ ScriptCreateDialog::ScriptCreateDialog() { if (default_language >= 0) { language_menu->select(default_language); } - current_language = default_language; language_menu->connect("item_selected", callable_mp(this, &ScriptCreateDialog::_language_changed)); |