diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index a5baf62ea0c..6c8bd0f14b5 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -607,7 +607,9 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum) { t = p_enum.get_slice(".", 0); } } - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color")); + const Color text_color = get_color("default_color", "RichTextLabel"); + const Color type_color = get_color("accent_color", "Editor").linear_interpolate(text_color, 0.5); + class_desc->push_color(type_color); if (can_ref) { if (p_enum == "") { class_desc->push_meta("#" + t); //class @@ -642,24 +644,32 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->clear(); method_line.clear(); + section_line.clear(); edited_class = p_class; //edited_class->show(); - DocData::ClassDoc cd = doc->class_list[p_class]; //make a copy, so we can sort without worrying + // Colors + const Color title_color = get_color("accent_color", "Editor"); + const Color text_color = get_color("font_color", "RichTextLabel"); + const Color highlight_color = get_color("highlight_color", "RichTextLabel"); + const Color base_type_color = title_color.linear_interpolate(text_color, 0.5); + const Color comment_color = Color(text_color.r, text_color.g, text_color.b, 0.6); + const Color symbol_color = comment_color; + const Color value_color = Color(text_color.r, text_color.g, text_color.b, 0.4); + const Color qualifier_color = Color(text_color.r, text_color.g, text_color.b, 0.8); - Color h_color; + DocData::ClassDoc cd = doc->class_list[p_class]; //make a copy, so we can sort without worrying Ref doc_font = get_font("doc", "EditorFonts"); Ref doc_title_font = get_font("doc_title", "EditorFonts"); Ref doc_code_font = get_font("doc_source", "EditorFonts"); - String link_color_text = Color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")).to_html(false); - - h_color = Color(1, 1, 1, 1); + String link_color_text = title_color.to_html(false); + section_line.push_back(Pair(TTR("Top"), 0)); class_desc->push_font(doc_title_font); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(title_color); class_desc->add_text(TTR("Class:") + " "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color")); + class_desc->push_color(highlight_color); _add_text(p_class); class_desc->pop(); class_desc->pop(); @@ -668,7 +678,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (cd.inherits != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Inherits:") + " "); class_desc->pop(); @@ -702,7 +712,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (E->get().inherits == cd.name) { if (!found) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Inherited by:") + " "); class_desc->pop(); @@ -729,11 +739,12 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->add_newline(); } + class_desc->add_newline(); class_desc->add_newline(); if (cd.brief_description != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Brief Description:")); class_desc->pop(); @@ -741,7 +752,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { //class_desc->add_newline(); class_desc->add_newline(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); class_desc->push_font(doc_font); class_desc->push_indent(1); _add_text(cd.brief_description); @@ -750,6 +761,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->pop(); class_desc->add_newline(); class_desc->add_newline(); + class_desc->add_newline(); } Set skip_methods; @@ -757,7 +769,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (cd.properties.size()) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("Members"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Members:")); class_desc->pop(); @@ -775,7 +788,6 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_align(RichTextLabel::ALIGN_RIGHT); class_desc->push_font(doc_code_font); _add_type(cd.properties[i].type, cd.properties[i].enumeration); - class_desc->add_text(" "); class_desc->pop(); class_desc->pop(); class_desc->pop(); @@ -800,7 +812,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { } class_desc->push_font(doc_code_font); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(highlight_color); _add_text(cd.properties[i].name); if (describe) { @@ -835,7 +847,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (sort_methods) methods.sort(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("Public Methods"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Public Methods:")); class_desc->pop(); @@ -852,9 +865,9 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { bool is_vararg = methods[i].qualifiers.find("vararg") != -1; - class_desc->push_cell(); - method_line[methods[i].name] = class_desc->get_line_count() - 2; //gets overridden if description + + class_desc->push_cell(); class_desc->push_align(RichTextLabel::ALIGN_RIGHT); class_desc->push_font(doc_code_font); _add_type(methods[i].return_type, methods[i].return_enum); @@ -862,23 +875,24 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->pop(); //align class_desc->pop(); //font class_desc->pop(); //cell + class_desc->push_cell(); class_desc->push_font(doc_code_font); - if (true || methods[i].description != "") { //always describe method + if (methods[i].description != "") { method_descr = true; class_desc->push_meta("@" + methods[i].name); } - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(highlight_color); _add_text(methods[i].name); class_desc->pop(); if (methods[i].description != "") - class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->pop(); // pop meta + class_desc->push_color(symbol_color); class_desc->add_text(methods[i].arguments.size() || is_vararg ? "( " : "("); class_desc->pop(); for (int j = 0; j < methods[i].arguments.size(); j++) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); if (j > 0) class_desc->add_text(", "); _add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration); @@ -886,7 +900,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { _add_text(methods[i].arguments[j].name); if (methods[i].arguments[j].default_value != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text("="); class_desc->pop(); _add_text(methods[i].arguments[j].default_value); @@ -896,21 +910,21 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { } if (is_vararg) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); if (methods[i].arguments.size()) class_desc->add_text(", "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text("..."); class_desc->pop(); class_desc->pop(); } - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(methods[i].arguments.size() || is_vararg ? " )" : ")"); class_desc->pop(); if (methods[i].qualifiers != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(qualifier_color); class_desc->add_text(" "); _add_text(methods[i].qualifiers); class_desc->pop(); @@ -927,42 +941,54 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (cd.theme_properties.size()) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("GUI Theme Items"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("GUI Theme Items:")); class_desc->pop(); class_desc->pop(); - class_desc->add_newline(); + // class_desc->add_newline(); class_desc->push_indent(1); + class_desc->push_table(2); + class_desc->set_table_column_expand(1, 1); //class_desc->add_newline(); for (int i = 0; i < cd.theme_properties.size(); i++) { theme_property_line[cd.theme_properties[i].name] = class_desc->get_line_count() - 2; //gets overridden if description + + class_desc->push_cell(); + class_desc->push_align(RichTextLabel::ALIGN_RIGHT); class_desc->push_font(doc_code_font); _add_type(cd.theme_properties[i].type); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); - class_desc->add_text(" "); + class_desc->pop(); + class_desc->pop(); + class_desc->pop(); + + class_desc->push_cell(); + class_desc->push_font(doc_code_font); + class_desc->push_color(highlight_color); _add_text(cd.theme_properties[i].name); class_desc->pop(); class_desc->pop(); - if (true || cd.theme_properties[i].description != "") { //always describe properties + if (cd.theme_properties[i].description != "") { class_desc->push_font(doc_font); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color")); + class_desc->push_color(comment_color); _add_text(cd.theme_properties[i].description); class_desc->pop(); class_desc->pop(); } - - class_desc->add_newline(); + class_desc->pop(); // cell } + class_desc->pop(); // table class_desc->pop(); class_desc->add_newline(); + class_desc->add_newline(); } if (cd.signals.size()) { @@ -970,7 +996,9 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (sort_methods) { cd.signals.sort(); } - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + + section_line.push_back(Pair(TTR("Signals"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Signals:")); class_desc->pop(); @@ -987,14 +1015,14 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_font(doc_code_font); // monofont //_add_type("void"); //class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(highlight_color); _add_text(cd.signals[i].name); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(cd.signals[i].arguments.size() ? "( " : "("); class_desc->pop(); for (int j = 0; j < cd.signals[i].arguments.size(); j++) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); if (j > 0) class_desc->add_text(", "); _add_type(cd.signals[i].arguments[j].type); @@ -1002,7 +1030,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { _add_text(cd.signals[i].arguments[j].name); if (cd.signals[i].arguments[j].default_value != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text("="); class_desc->pop(); _add_text(cd.signals[i].arguments[j].default_value); @@ -1011,13 +1039,13 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->pop(); } - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(cd.signals[i].arguments.size() ? " )" : ")"); class_desc->pop(); class_desc->pop(); // end monofont if (cd.signals[i].description != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color")); + class_desc->push_color(comment_color); class_desc->add_text(" "); _add_text(cd.signals[i].description); class_desc->pop(); @@ -1050,7 +1078,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (enums.size()) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("Enumerations"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Enumerations:")); class_desc->pop(); @@ -1064,7 +1093,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { enum_line[E->key()] = class_desc->get_line_count() - 2; - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(title_color); class_desc->add_text(TTR("enum ")); class_desc->pop(); class_desc->push_font(doc_code_font); @@ -1073,9 +1102,11 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { e = e.get_slice(".", 1); } + class_desc->push_color(highlight_color); class_desc->add_text(e); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->pop(); + class_desc->push_color(symbol_color); class_desc->add_text(":"); class_desc->pop(); class_desc->add_newline(); @@ -1086,20 +1117,20 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { for (int i = 0; i < enum_list.size(); i++) { class_desc->push_font(doc_code_font); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color")); + class_desc->push_color(highlight_color); _add_text(enum_list[i].name); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(" = "); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(value_color); _add_text(enum_list[i].value); class_desc->pop(); class_desc->pop(); if (enum_list[i].description != "") { class_desc->push_font(doc_font); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color")); + class_desc->push_color(comment_color); _add_text(enum_list[i].description); class_desc->pop(); class_desc->pop(); @@ -1119,7 +1150,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (constants.size()) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("Constants"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Constants:")); class_desc->pop(); @@ -1133,20 +1165,20 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { constant_line[constants[i].name] = class_desc->get_line_count() - 2; class_desc->push_font(doc_code_font); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color")); + class_desc->push_color(highlight_color); _add_text(constants[i].name); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(" = "); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(value_color); _add_text(constants[i].value); class_desc->pop(); class_desc->pop(); if (constants[i].description != "") { class_desc->push_font(doc_font); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color")); + class_desc->push_color(comment_color); _add_text(constants[i].description); class_desc->pop(); class_desc->pop(); @@ -1162,16 +1194,16 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (cd.description != "") { + section_line.push_back(Pair(TTR("Description"), class_desc->get_line_count() - 2)); description_line = class_desc->get_line_count() - 2; - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Description:")); class_desc->pop(); class_desc->pop(); class_desc->add_newline(); - class_desc->add_newline(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); class_desc->push_font(doc_font); class_desc->push_indent(1); _add_text(cd.description); @@ -1180,11 +1212,13 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->pop(); class_desc->add_newline(); class_desc->add_newline(); + class_desc->add_newline(); } if (property_descr) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("Properties"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Property Description:")); class_desc->pop(); @@ -1201,7 +1235,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { _add_type(cd.properties[i].type, cd.properties[i].enumeration); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(highlight_color); _add_text(cd.properties[i].name); class_desc->pop(); //color @@ -1214,11 +1248,11 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_font(doc_font); class_desc->push_indent(2); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(comment_color); class_desc->add_text("Setter: "); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); class_desc->add_text(cd.properties[i].setter + "(value)"); class_desc->pop(); //color @@ -1232,11 +1266,11 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_font(doc_font); class_desc->push_indent(2); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(comment_color); class_desc->add_text("Getter: "); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); class_desc->add_text(cd.properties[i].getter + "()"); class_desc->pop(); //color @@ -1247,7 +1281,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->add_newline(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); class_desc->push_font(doc_font); class_desc->push_indent(1); if (cd.properties[i].description.strip_edges() != String()) { @@ -1255,7 +1289,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { } else { class_desc->add_image(get_icon("Error", "EditorIcons")); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color")); + class_desc->push_color(comment_color); class_desc->append_bbcode(TTR("There is currently no description for this property. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text)); class_desc->pop(); } @@ -1270,7 +1304,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (method_descr) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + section_line.push_back(Pair(TTR("Methods"), class_desc->get_line_count() - 2)); + class_desc->push_color(title_color); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Method Description:")); class_desc->pop(); @@ -1289,14 +1324,14 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { _add_type(methods[i].return_type, methods[i].return_enum); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(highlight_color); _add_text(methods[i].name); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(methods[i].arguments.size() || is_vararg ? "( " : "("); class_desc->pop(); for (int j = 0; j < methods[i].arguments.size(); j++) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); if (j > 0) class_desc->add_text(", "); _add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration); @@ -1304,7 +1339,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { _add_text(methods[i].arguments[j].name); if (methods[i].arguments[j].default_value != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text("="); class_desc->pop(); _add_text(methods[i].arguments[j].default_value); @@ -1314,21 +1349,21 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { } if (is_vararg) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); if (methods[i].arguments.size()) class_desc->add_text(", "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text("..."); class_desc->pop(); class_desc->pop(); } - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->push_color(symbol_color); class_desc->add_text(methods[i].arguments.size() || is_vararg ? " )" : ")"); class_desc->pop(); if (methods[i].qualifiers != "") { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_color(qualifier_color); class_desc->add_text(" "); _add_text(methods[i].qualifiers); class_desc->pop(); @@ -1337,7 +1372,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->pop(); class_desc->add_newline(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); + class_desc->push_color(text_color); class_desc->push_font(doc_font); class_desc->push_indent(1); if (methods[i].description.strip_edges() != String()) { @@ -1345,7 +1380,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { } else { class_desc->add_image(get_icon("Error", "EditorIcons")); class_desc->add_text(" "); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color")); + class_desc->push_color(comment_color); class_desc->append_bbcode(TTR("There is currently no description for this method. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text)); class_desc->pop(); } @@ -1419,70 +1454,16 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { DocData *doc = EditorHelp::get_doc_data(); String base_path; - /*p_rt->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); - p_rt->push_font( get_font("normal","Fonts") ); - p_rt->push_indent(1);*/ - int pos = 0; - Ref doc_font = p_rt->get_font("doc", "EditorFonts"); Ref doc_code_font = p_rt->get_font("doc_source", "EditorFonts"); + Color font_color_hl = p_rt->get_color("highlight_color", "RichTextLabel"); + Color link_color = p_rt->get_color("accent_color", "Editor").linear_interpolate(font_color_hl, 0.8); String bbcode = p_bbcode.replace("\t", " ").replace("\r", " ").strip_edges(); - //change newlines for double newlines - for (int i = 0; i < bbcode.length(); i++) { - - //find valid newlines (double) - if (bbcode[i] == '\n') { - bool dnl = false; - int j = i + 1; - for (; j < p_bbcode.length(); j++) { - if (bbcode[j] == ' ') - continue; - if (bbcode[j] == '\n') { - dnl = true; - break; - } - break; - } - - if (dnl) { - bbcode[i] = 0xFFFF; - //keep - i = j; - } else { - bbcode = bbcode.insert(i, "\n"); - i++; - //bbcode[i]=' '; - //i=j-1; - } - } - } - - //remove double spaces or spaces after newlines - for (int i = 0; i < bbcode.length(); i++) { - - if (bbcode[i] == ' ' || bbcode[i] == '\n' || bbcode[i] == 0xFFFF) { - - for (int j = i + 1; j < p_bbcode.length(); j++) { - if (bbcode[j] == ' ') { - bbcode.remove(j); - j--; - continue; - } else { - break; - } - } - } - } - - //change newlines to double newlines - - CharType dnls[2] = { 0xFFFF, 0 }; - bbcode = bbcode.replace(dnls, "\n"); - List tag_stack; + int pos = 0; while (pos < bbcode.length()) { int brk_pos = bbcode.find("[", pos); @@ -1500,7 +1481,6 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { int brk_end = bbcode.find("]", brk_pos + 1); if (brk_end == -1) { - //no close, add the rest p_rt->add_text(bbcode.substr(brk_pos, bbcode.length() - brk_pos)); break; @@ -1512,6 +1492,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { bool tag_ok = tag_stack.size() && tag_stack.front()->get() == tag.substr(1, tag.length()); if (tag_stack.size()) { } + if (!tag_ok) { p_rt->add_text("["); @@ -1527,7 +1508,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { } else if (tag.begins_with("method ")) { String m = tag.substr(7, tag.length()); - p_rt->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + p_rt->push_color(link_color); p_rt->push_meta("@" + m); p_rt->add_text(m + "()"); p_rt->pop(); @@ -1536,7 +1517,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { } else if (doc->class_list.has(tag)) { - p_rt->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + p_rt->push_color(link_color); p_rt->push_meta("#" + tag); p_rt->add_text(tag); p_rt->pop(); @@ -1552,13 +1533,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { } else if (tag == "i") { //use italics font - Color text_color = EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"); - //no italics so emphasize with color - text_color.r *= 1.1; - text_color.g *= 1.1; - text_color.b *= 1.1; - p_rt->push_color(text_color); - //p_rt->push_font(get_font("italic","Fonts")); + p_rt->push_color(font_color_hl); pos = brk_end + 1; tag_stack.push_front(tag); } else if (tag == "code" || tag == "codeblock") { @@ -1728,6 +1703,7 @@ void EditorHelp::_notification(int p_what) { case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { class_desc->add_color_override("selection_color", EDITOR_DEF("text_editor/highlighting/selection_color", Color(0.2, 0.2, 1))); + } break; default: break; @@ -1744,9 +1720,23 @@ void EditorHelp::go_to_class(const String &p_class, int p_scroll) { _goto_desc(p_class, p_scroll); } +Vector > EditorHelp::get_sections() { + Vector > sections; + + for (int i = 0; i < section_line.size(); i++) { + sections.push_back(Pair(section_line[i].first, i)); + } + return sections; +} + +void EditorHelp::scroll_to_section(int p_section_index) { + int line = section_line[p_section_index].second; + class_desc->scroll_to_line(line); +} + void EditorHelp::popup_search() { - search_dialog->popup_centered(Size2(250, 80)); + search_dialog->popup_centered(Size2(250, 80) * EDSCALE); search->grab_focus(); } @@ -1825,7 +1815,6 @@ EditorHelp::EditorHelp() { search_dialog->get_ok()->set_text(TTR("Find")); search_dialog->connect("confirmed", this, "_search_cbk"); search_dialog->set_hide_on_ok(false); - search_dialog->set_self_modulate(Color(1, 1, 1, 0.8)); /*class_search = memnew( EditorHelpSearch(editor) ); editor->get_gui_base()->add_child(class_search); diff --git a/editor/editor_help.h b/editor/editor_help.h index f937e4a7235..92c0e2f4d17 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -118,6 +118,7 @@ class EditorHelp : public VBoxContainer { String edited_class; + Vector > section_line; Map method_line; Map signal_line; Map property_line; @@ -168,6 +169,9 @@ public: void go_to_help(const String &p_help); void go_to_class(const String &p_class, int p_scroll = 0); + Vector > get_sections(); + void scroll_to_section(int p_section_index); + void popup_search(); void search_again(); diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 3bb6345d734..d7266df67cc 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -739,6 +739,7 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { set("docks/property_editor/texture_preview_width", 48); set("docks/property_editor/auto_refresh_interval", 0.3); set("text_editor/help/doc_path", ""); + set("text_editor/help/show_help_index", true); set("filesystem/import/ask_save_before_reimport", false); diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index cacd26a20a5..4e35e504da4 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -704,7 +704,8 @@ Ref create_editor_theme(const Ref p_theme) { //RichTextLabel Color rtl_combined_bg_color = dark_color_1.linear_interpolate(script_bg_color, script_bg_color.a); - Color rtl_font_color = (rtl_combined_bg_color.r + rtl_combined_bg_color.g + rtl_combined_bg_color.b > 0.5 * 3) ? Color(0, 0, 0) : Color(1, 1, 1); + Color rtl_mono_color = (rtl_combined_bg_color.r + rtl_combined_bg_color.g + rtl_combined_bg_color.b > 1.5) ? Color(0, 0, 0) : Color(1, 1, 1); + Color rtl_font_color = rtl_mono_color.linear_interpolate(rtl_combined_bg_color, 0.25); theme->set_color("default_color", "RichTextLabel", rtl_font_color); theme->set_stylebox("focus", "RichTextLabel", make_empty_stylebox()); theme->set_stylebox("normal", "RichTextLabel", style_tree_bg); @@ -715,6 +716,9 @@ Ref create_editor_theme(const Ref p_theme) { style_code_focus->set_bg_color(rtl_combined_bg_color); theme->set_stylebox("code_focus", "RichTextLabel", style_code_focus); + theme->set_color("font_color", "RichTextLabel", rtl_font_color); + theme->set_color("highlight_color", "RichTextLabel", rtl_mono_color); + // Panel theme->set_stylebox("panel", "Panel", make_flat_stylebox(dark_color_1, 6, 4, 6, 4)); diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 6f03d086ca3..3b3847691f7 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -421,8 +421,10 @@ void ScriptEditor::_go_to_tab(int p_idx) { _update_history_arrows(); _update_script_colors(); _update_members_overview(); + _update_help_overview(); _update_selected_editor_menu(); _update_members_overview_visibility(); + _update_help_overview_visibility(); } void ScriptEditor::_add_recent_script(String p_path) { @@ -555,6 +557,7 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) { _update_script_names(); _update_members_overview_visibility(); + _update_help_overview_visibility(); _save_layout(); } @@ -1110,6 +1113,7 @@ void ScriptEditor::_notification(int p_what) { editor->connect("resource_saved", this, "_res_saved_callback"); script_list->connect("item_selected", this, "_script_selected"); members_overview->connect("item_selected", this, "_members_overview_selected"); + help_overview->connect("item_selected", this, "_help_overview_selected"); script_split->connect("dragged", this, "_script_split_dragged"); autosave_timer->connect("timeout", this, "_autosave_scripts"); { @@ -1278,6 +1282,15 @@ void ScriptEditor::_members_overview_selected(int p_idx) { se->ensure_focus(); } +void ScriptEditor::_help_overview_selected(int p_idx) { + Node *current = tab_container->get_child(tab_container->get_current_tab()); + EditorHelp *se = Object::cast_to(current); + if (!se) { + return; + } + se->scroll_to_section(help_overview->get_item_metadata(p_idx)); +} + void ScriptEditor::_script_selected(int p_idx) { grab_focus_block = !Input::get_singleton()->is_mouse_button_pressed(1); //amazing hack, simply amazing @@ -1387,6 +1400,50 @@ void ScriptEditor::_update_members_overview() { } } +void ScriptEditor::_update_help_overview_visibility() { + + int selected = tab_container->get_current_tab(); + if (selected < 0 || selected >= tab_container->get_child_count()) + return; + + Node *current = tab_container->get_child(tab_container->get_current_tab()); + EditorHelp *se = Object::cast_to(current); + if (!se) { + help_overview->set_visible(false); + return; + } + + if (help_overview_enabled) { + help_overview->set_visible(true); + } else { + help_overview->set_visible(false); + } +} + +void ScriptEditor::_update_help_overview() { + + int selected = tab_container->get_current_tab(); + if (selected < 0 || selected >= tab_container->get_child_count()) + return; + + Node *current = tab_container->get_child(tab_container->get_current_tab()); + EditorHelp *se = Object::cast_to(current); + if (!se) { + return; + } + + help_overview->clear(); + + Vector > sections = se->get_sections(); + for (int i = 0; i < sections.size(); i++) { + help_overview->add_item(sections[i].first); + help_overview->set_item_metadata(i, sections[i].second); + } +} + +void _help_overview_selected(int p_idx) { +} + void ScriptEditor::_update_script_colors() { bool script_temperature_enabled = EditorSettings::get_singleton()->get("text_editor/open_scripts/script_temperature_enabled"); @@ -1531,6 +1588,7 @@ void ScriptEditor::_update_script_names() { } _update_members_overview(); + _update_help_overview(); _update_script_colors(); } @@ -1785,7 +1843,9 @@ void ScriptEditor::_editor_settings_changed() { use_space_indentation = EditorSettings::get_singleton()->get("text_editor/indent/type"); members_overview_enabled = EditorSettings::get_singleton()->get("text_editor/open_scripts/show_members_overview"); + help_overview_enabled = EditorSettings::get_singleton()->get("text_editor/help/show_help_index"); _update_members_overview_visibility(); + _update_help_overview_visibility(); float autosave_time = EditorSettings::get_singleton()->get("text_editor/files/autosave_interval_secs"); if (autosave_time > 0) { @@ -2164,6 +2224,7 @@ void ScriptEditor::_bind_methods() { ClassDB::bind_method("_update_script_names", &ScriptEditor::_update_script_names); ClassDB::bind_method("_tree_changed", &ScriptEditor::_tree_changed); ClassDB::bind_method("_members_overview_selected", &ScriptEditor::_members_overview_selected); + ClassDB::bind_method("_help_overview_selected", &ScriptEditor::_help_overview_selected); ClassDB::bind_method("_script_selected", &ScriptEditor::_script_selected); ClassDB::bind_method("_script_created", &ScriptEditor::_script_created); ClassDB::bind_method("_script_split_dragged", &ScriptEditor::_script_split_dragged); @@ -2193,6 +2254,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { pending_auto_reload = false; auto_reload_running_scripts = false; members_overview_enabled = true; + help_overview_enabled = true; editor = p_editor; VBoxContainer *main_container = memnew(VBoxContainer); @@ -2221,6 +2283,11 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { members_overview->set_custom_minimum_size(Size2(0, 100)); //need to give a bit of limit to avoid it from disappearing members_overview->set_v_size_flags(SIZE_EXPAND_FILL); + help_overview = memnew(ItemList); + list_split->add_child(help_overview); + help_overview->set_custom_minimum_size(Size2(0, 100)); //need to give a bit of limit to avoid it from disappearing + help_overview->set_v_size_flags(SIZE_EXPAND_FILL); + tab_container = memnew(TabContainer); tab_container->set_tabs_visible(false); script_split->add_child(tab_container); diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index d2677c6a4a9..03fc4da7ce3 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -187,6 +187,8 @@ class ScriptEditor : public PanelContainer { HSplitContainer *script_split; ItemList *members_overview; bool members_overview_enabled; + ItemList *help_overview; + bool help_overview_enabled; VSplitContainer *list_split; TabContainer *tab_container; EditorFileDialog *file_dialog; @@ -294,6 +296,10 @@ class ScriptEditor : public PanelContainer { void _members_overview_selected(int p_idx); void _script_selected(int p_idx); + void _update_help_overview_visibility(); + void _update_help_overview(); + void _help_overview_selected(int p_idx); + void _find_scripts(Node *p_base, Node *p_current, Set > &used); void _tree_changed();