Merge pull request #55559 from pycbouh/docs-overridden-cross-linked

This commit is contained in:
Rémi Verschelde 2021-12-05 18:37:19 +01:00 committed by GitHub
commit 49799ab454
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 130 additions and 97 deletions

View file

@ -341,11 +341,17 @@ void DocTools::generate(bool p_basic_types) {
}
DocData::PropertyDoc prop;
prop.name = E.name;
prop.overridden = inherited;
if (inherited) {
String parent = ClassDB::get_parent_class(c.name);
while (!ClassDB::has_property(parent, prop.name, true)) {
parent = ClassDB::get_parent_class(parent);
}
prop.overrides = parent;
}
bool default_value_valid = false;
Variant default_value;
@ -1357,7 +1363,7 @@ Error DocTools::save_classes(const String &p_default_path, const Map<String, Str
const DocData::PropertyDoc &p = c.properties[i];
if (c.properties[i].overridden) {
_write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\" override=\"true\"" + additional_attributes + " />");
_write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\" overrides=\"" + p.overrides + "\"" + additional_attributes + " />");
} else {
_write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\"" + additional_attributes + ">");
_write_string(f, 3, p.description.strip_edges().xml_escape());

View file

@ -673,7 +673,7 @@ void EditorHelp::_update_doc() {
class_desc->add_newline();
class_desc->push_font(doc_code_font);
class_desc->push_indent(1);
class_desc->push_table(2);
class_desc->push_table(4);
class_desc->set_table_column_expand(1, true);
for (int i = 0; i < cd.properties.size(); i++) {
@ -683,13 +683,14 @@ void EditorHelp::_update_doc() {
}
property_line[cd.properties[i].name] = class_desc->get_line_count() - 2; //gets overridden if description
// Property type.
class_desc->push_cell();
class_desc->push_paragraph(RichTextLabel::ALIGN_RIGHT, Control::TEXT_DIRECTION_AUTO, "");
class_desc->push_font(doc_code_font);
_add_type(cd.properties[i].type, cd.properties[i].enumeration);
class_desc->pop();
class_desc->pop();
class_desc->pop();
class_desc->pop(); // cell
bool describe = false;
@ -710,6 +711,7 @@ void EditorHelp::_update_doc() {
describe = false;
}
// Property name.
class_desc->push_cell();
class_desc->push_font(doc_code_font);
class_desc->push_color(headline_color);
@ -725,18 +727,43 @@ void EditorHelp::_update_doc() {
property_descr = true;
}
class_desc->pop();
class_desc->pop();
class_desc->pop(); // cell
// Property value.
class_desc->push_cell();
class_desc->push_font(doc_code_font);
if (cd.properties[i].default_value != "") {
class_desc->push_color(symbol_color);
class_desc->add_text(cd.properties[i].overridden ? " [" + TTR("override:") + " " : " [" + TTR("default:") + " ");
if (cd.properties[i].overridden) {
class_desc->add_text(" [");
class_desc->push_meta("@member " + cd.properties[i].overrides + "." + cd.properties[i].name);
_add_text(vformat(TTR("overrides %s:"), cd.properties[i].overrides));
class_desc->pop();
class_desc->add_text(" ");
} else {
class_desc->add_text(" [" + TTR("default:") + " ");
}
class_desc->pop();
class_desc->push_color(value_color);
_add_text(_fix_constant(cd.properties[i].default_value));
class_desc->pop();
class_desc->push_color(symbol_color);
class_desc->add_text("]");
class_desc->pop();
}
class_desc->pop();
class_desc->pop(); // cell
// Property setters and getters.
class_desc->push_cell();
class_desc->push_font(doc_code_font);
if (cd.is_script_doc && (cd.properties[i].setter != "" || cd.properties[i].getter != "")) {
class_desc->push_color(symbol_color);
class_desc->add_text(" [" + TTR("property:") + " ");
@ -764,12 +791,10 @@ void EditorHelp::_update_doc() {
}
class_desc->pop();
class_desc->pop();
class_desc->pop();
class_desc->pop(); // cell
}
class_desc->pop(); //table
class_desc->pop(); // table
class_desc->pop();
class_desc->pop(); // font
class_desc->add_newline();