Browse Source

Allow to name built-in scripts upon creation

kobewi 3 years ago
parent
commit
64a2681cf0
2 changed files with 28 additions and 2 deletions
  1. 24 2
      editor/script_create_dialog.cpp
  2. 4 0
      editor/script_create_dialog.h

+ 24 - 2
editor/script_create_dialog.cpp

@@ -315,7 +315,9 @@ void ScriptCreateDialog::_create_new() {
 		}
 	}
 
-	if (!is_built_in) {
+	if (is_built_in) {
+		scr->set_name(internal_name->get_text());
+	} else {
 		String lpath = ProjectSettings::get_singleton()->localize_path(file_path->get_text());
 		scr->set_path(lpath);
 		Error err = ResourceSaver::save(lpath, scr, ResourceSaver::FLAG_CHANGE_PATH);
@@ -686,6 +688,11 @@ void ScriptCreateDialog::_update_dialog() {
 
 	builtin_warning_label->set_visible(is_built_in);
 
+	path_controls[0]->set_visible(!is_built_in);
+	path_controls[1]->set_visible(!is_built_in);
+	name_controls[0]->set_visible(is_built_in);
+	name_controls[1]->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());
@@ -868,9 +875,24 @@ ScriptCreateDialog::ScriptCreateDialog() {
 	path_button = memnew(Button);
 	path_button->connect("pressed", callable_mp(this, &ScriptCreateDialog::_browse_path), varray(false, true));
 	hb->add_child(path_button);
-	gc->add_child(memnew(Label(TTR("Path:"))));
+	Label *label = memnew(Label(TTR("Path:")));
+	gc->add_child(label);
 	gc->add_child(hb);
 	re_check_path = false;
+	path_controls[0] = label;
+	path_controls[1] = hb;
+
+	/* Name */
+
+	internal_name = memnew(LineEdit);
+	internal_name->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+	label = memnew(Label(TTR("Name:")));
+	gc->add_child(label);
+	gc->add_child(internal_name);
+	name_controls[0] = label;
+	name_controls[1] = internal_name;
+	label->hide();
+	internal_name->hide();
 
 	/* Dialog Setup */
 

+ 4 - 0
editor/script_create_dialog.h

@@ -57,6 +57,7 @@ class ScriptCreateDialog : public ConfirmationDialog {
 	OptionButton *language_menu;
 	OptionButton *template_menu;
 	LineEdit *file_path;
+	LineEdit *internal_name;
 	Button *path_button;
 	EditorFileDialog *file_browse;
 	CheckBox *internal;
@@ -81,6 +82,9 @@ class ScriptCreateDialog : public ConfirmationDialog {
 	int default_language;
 	bool re_check_path;
 
+	Control *path_controls[2];
+	Control *name_controls[2];
+
 	enum ScriptOrigin {
 		SCRIPT_ORIGIN_PROJECT,
 		SCRIPT_ORIGIN_EDITOR,