mirror of
https://github.com/godotengine/godot.git
synced 2025-11-01 14:11:15 +00:00
Implement export_multiline support for Array[String] and Dictionary
For arrays, specifically check if it's a string array and pass the type on to the editor. For dictionaries, save the hint on the type and use it later to draw the multiline editor, except for when adding a string key, because that doesn't make much sense. All string values however will be drawn as multiline.
This commit is contained in:
parent
f382a2b59b
commit
60692b4e45
4 changed files with 34 additions and 1 deletions
|
|
@ -3793,6 +3793,26 @@ bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node
|
|||
variable->export_info.type = Variant::INT;
|
||||
}
|
||||
}
|
||||
if (p_annotation->name == SNAME("@export_multiline")) {
|
||||
if (export_type.builtin_type == Variant::ARRAY && export_type.has_container_element_type()) {
|
||||
DataType inner_type = export_type.get_container_element_type();
|
||||
if (inner_type.builtin_type != Variant::STRING) {
|
||||
push_error(vformat(R"("%s" annotation on arrays requires a string type but type "%s" was given instead.)", p_annotation->name.operator String(), inner_type.to_string()), variable);
|
||||
return false;
|
||||
}
|
||||
|
||||
String hint_prefix = itos(inner_type.builtin_type) + "/" + itos(variable->export_info.hint);
|
||||
variable->export_info.hint = PROPERTY_HINT_TYPE_STRING;
|
||||
variable->export_info.hint_string = hint_prefix + ":" + variable->export_info.hint_string;
|
||||
variable->export_info.type = Variant::ARRAY;
|
||||
|
||||
return true;
|
||||
} else if (export_type.builtin_type == Variant::DICTIONARY) {
|
||||
variable->export_info.type = Variant::DICTIONARY;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (p_annotation->name == SNAME("@export")) {
|
||||
if (variable->datatype_specifier == nullptr && variable->initializer == nullptr) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue