Merge pull request #64847 from Mickeon/editor-docs-hierarchy-icons

Add type icons to editor docs' hierarchy
This commit is contained in:
Rémi Verschelde 2022-08-28 17:09:34 +02:00 committed by GitHub
commit dd9602e74c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 11 deletions

View File

@ -216,6 +216,27 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum) {
class_desc->pop(); class_desc->pop();
} }
void EditorHelp::_add_type_icon(const String &p_type, int p_size) {
Ref<Texture2D> icon;
if (has_theme_icon(p_type, SNAME("EditorIcons"))) {
icon = get_theme_icon(p_type, SNAME("EditorIcons"));
} else if (ClassDB::class_exists(p_type) && ClassDB::is_parent_class(p_type, "Object")) {
icon = get_theme_icon(SNAME("Object"), SNAME("EditorIcons"));
} else {
icon = get_theme_icon(SNAME("ArrowRight"), SNAME("EditorIcons"));
}
Vector2i size = Vector2i(icon->get_width(), icon->get_height());
if (p_size > 0) {
// Ensures icon scales proportionally on both axis, based on icon height.
float ratio = p_size / float(size.height);
size.width *= ratio;
size.height *= ratio;
}
class_desc->add_image(icon, size.width, size.height);
}
String EditorHelp::_fix_constant(const String &p_constant) const { String EditorHelp::_fix_constant(const String &p_constant) const {
if (p_constant.strip_edges() == "4294967295") { if (p_constant.strip_edges() == "4294967295") {
return "0xFFFFFFFF"; return "0xFFFFFFFF";
@ -506,22 +527,13 @@ void EditorHelp::_update_doc() {
DocData::ClassDoc cd = doc->class_list[edited_class]; // Make a copy, so we can sort without worrying. DocData::ClassDoc cd = doc->class_list[edited_class]; // Make a copy, so we can sort without worrying.
Ref<Texture2D> icon;
if (has_theme_icon(edited_class, SNAME("EditorIcons"))) {
icon = get_theme_icon(edited_class, SNAME("EditorIcons"));
} else if (ClassDB::class_exists(edited_class) && ClassDB::is_parent_class(edited_class, "Object")) {
icon = get_theme_icon(SNAME("Object"), SNAME("EditorIcons"));
} else {
icon = get_theme_icon(SNAME("ArrowRight"), SNAME("EditorIcons"));
}
// Class name // Class name
section_line.push_back(Pair<String, int>(TTR("Top"), 0)); section_line.push_back(Pair<String, int>(TTR("Top"), 0));
class_desc->push_font(doc_title_font); class_desc->push_font(doc_title_font);
class_desc->push_font_size(doc_title_font_size); class_desc->push_font_size(doc_title_font_size);
class_desc->push_color(title_color); class_desc->push_color(title_color);
class_desc->add_text(TTR("Class:") + " "); class_desc->add_text(TTR("Class:") + " ");
class_desc->add_image(icon, icon->get_width(), icon->get_height()); _add_type_icon(edited_class, doc_title_font_size);
class_desc->add_text(" "); class_desc->add_text(" ");
class_desc->push_color(headline_color); class_desc->push_color(headline_color);
_add_text(edited_class); _add_text(edited_class);
@ -542,6 +554,8 @@ void EditorHelp::_update_doc() {
String inherits = cd.inherits; String inherits = cd.inherits;
while (!inherits.is_empty()) { while (!inherits.is_empty()) {
_add_type_icon(inherits);
class_desc->add_text(" "); // Extra space, otherwise icon borrows hyperlink from _add_type().
_add_type(inherits); _add_type(inherits);
inherits = doc->class_list[inherits].inherits; inherits = doc->class_list[inherits].inherits;
@ -573,7 +587,8 @@ void EditorHelp::_update_doc() {
if (prev) { if (prev) {
class_desc->add_text(" , "); class_desc->add_text(" , ");
} }
_add_type_icon(E.value.name);
class_desc->add_text(" "); // Extra space, otherwise icon borrows hyperlink from _add_type().
_add_type(E.value.name); _add_type(E.value.name);
prev = true; prev = true;
} }

View File

@ -152,6 +152,7 @@ class EditorHelp : public VBoxContainer {
//void _button_pressed(int p_idx); //void _button_pressed(int p_idx);
void _add_type(const String &p_type, const String &p_enum = String()); void _add_type(const String &p_type, const String &p_enum = String());
void _add_type_icon(const String &p_type, int p_size = 0);
void _add_method(const DocData::MethodDoc &p_method, bool p_overview = true); void _add_method(const DocData::MethodDoc &p_method, bool p_overview = true);
void _add_bulletpoint(); void _add_bulletpoint();