Add type icons to editor docs' hierarchy
The "Inherits" and "Inherited by" section of the docs now display the icon of each Object on the side. Also scales the main class' icon to match title font
This commit is contained in:
parent
d0a2a4c981
commit
2b063eebee
2 changed files with 27 additions and 11 deletions
|
|
@ -239,6 +239,27 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum) {
|
|||
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 {
|
||||
if (p_constant.strip_edges() == "4294967295") {
|
||||
return "0xFFFFFFFF";
|
||||
|
|
@ -530,22 +551,13 @@ void EditorHelp::_update_doc() {
|
|||
|
||||
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
|
||||
section_line.push_back(Pair<String, int>(TTR("Top"), 0));
|
||||
class_desc->push_font(doc_title_font);
|
||||
class_desc->push_font_size(doc_title_font_size);
|
||||
class_desc->push_color(title_color);
|
||||
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->push_color(headline_color);
|
||||
_add_text(edited_class);
|
||||
|
|
@ -566,6 +578,8 @@ void EditorHelp::_update_doc() {
|
|||
String inherits = cd.inherits;
|
||||
|
||||
while (!inherits.is_empty()) {
|
||||
_add_type_icon(inherits);
|
||||
class_desc->add_text(" "); // Extra space, otherwise icon borrows hyperlink from _add_type().
|
||||
_add_type(inherits);
|
||||
|
||||
inherits = doc->class_list[inherits].inherits;
|
||||
|
|
@ -597,7 +611,8 @@ void EditorHelp::_update_doc() {
|
|||
if (prev) {
|
||||
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);
|
||||
prev = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue