summaryrefslogtreecommitdiffstats
path: root/editor/script_create_dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/script_create_dialog.cpp')
-rw-r--r--editor/script_create_dialog.cpp63
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));