|
@@ -238,6 +238,14 @@ String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+String ScriptCreateDialog::_get_class_name() const {
|
|
|
|
+ if (has_named_classes) {
|
|
|
|
+ return class_name->get_text();
|
|
|
|
+ } else {
|
|
|
|
+ return ProjectSettings::get_singleton()->localize_path(file_path->get_text()).get_file().get_basename();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
void ScriptCreateDialog::_class_name_changed(const String &p_name) {
|
|
void ScriptCreateDialog::_class_name_changed(const String &p_name) {
|
|
if (_validate_class(class_name->get_text())) {
|
|
if (_validate_class(class_name->get_text())) {
|
|
is_class_name_valid = true;
|
|
is_class_name_valid = true;
|
|
@@ -287,13 +295,7 @@ void ScriptCreateDialog::ok_pressed() {
|
|
}
|
|
}
|
|
|
|
|
|
void ScriptCreateDialog::_create_new() {
|
|
void ScriptCreateDialog::_create_new() {
|
|
- String cname_param;
|
|
|
|
-
|
|
|
|
- if (has_named_classes) {
|
|
|
|
- cname_param = class_name->get_text();
|
|
|
|
- } else {
|
|
|
|
- cname_param = ProjectSettings::get_singleton()->localize_path(file_path->get_text()).get_file().get_basename();
|
|
|
|
- }
|
|
|
|
|
|
+ String cname_param = _get_class_name();
|
|
|
|
|
|
Ref<Script> scr;
|
|
Ref<Script> scr;
|
|
if (script_template != "") {
|
|
if (script_template != "") {
|
|
@@ -687,6 +689,10 @@ void ScriptCreateDialog::_update_dialog() {
|
|
|
|
|
|
builtin_warning_label->set_visible(is_built_in);
|
|
builtin_warning_label->set_visible(is_built_in);
|
|
|
|
|
|
|
|
+ // Check if the script name is the same as the parent class.
|
|
|
|
+ // This warning isn't relevant if the script is built-in.
|
|
|
|
+ script_name_warning_label->set_visible(!is_built_in && _get_class_name() == parent_name->get_text());
|
|
|
|
+
|
|
if (is_built_in) {
|
|
if (is_built_in) {
|
|
get_ok_button()->set_text(TTR("Create"));
|
|
get_ok_button()->set_text(TTR("Create"));
|
|
parent_name->set_editable(true);
|
|
parent_name->set_editable(true);
|
|
@@ -768,6 +774,14 @@ ScriptCreateDialog::ScriptCreateDialog() {
|
|
builtin_warning_label->set_autowrap(true);
|
|
builtin_warning_label->set_autowrap(true);
|
|
builtin_warning_label->hide();
|
|
builtin_warning_label->hide();
|
|
|
|
|
|
|
|
+ script_name_warning_label = memnew(Label);
|
|
|
|
+ script_name_warning_label->set_text(
|
|
|
|
+ TTR("Warning: Having the script name be the same as a built-in type is usually not desired."));
|
|
|
|
+ vb->add_child(script_name_warning_label);
|
|
|
|
+ script_name_warning_label->add_theme_color_override("font_color", Color(1, 0.85, 0.4));
|
|
|
|
+ script_name_warning_label->set_autowrap(true);
|
|
|
|
+ script_name_warning_label->hide();
|
|
|
|
+
|
|
status_panel = memnew(PanelContainer);
|
|
status_panel = memnew(PanelContainer);
|
|
status_panel->set_h_size_flags(Control::SIZE_FILL);
|
|
status_panel->set_h_size_flags(Control::SIZE_FILL);
|
|
status_panel->add_child(vb);
|
|
status_panel->add_child(vb);
|