|
@@ -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));
|
|
|
|