mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Allow configuring the script filename casing rule
Defaults to "Auto", which detects the casing based on the preference of the currently selected language (C# for example prefers PascalCase whereas GDScript prefers snake_case).
This commit is contained in:
parent
a07dd0d6a5
commit
2bd714e34e
15 changed files with 103 additions and 57 deletions
|
@ -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));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue