diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-09-14 12:06:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-14 12:06:36 +0200 |
commit | 8c08f2380d30e300f4f80dd292e9ff83f7bb84fd (patch) | |
tree | c460c1e4378f921823d67e3f7f75aea0a8fa81be | |
parent | 395eb7a3adc3a5fb9bec4ba846fcf789a0eeac28 (diff) | |
parent | d21f20eb5fb6dab41f2afb2069a216c8973a294e (diff) |
Merge pull request #11253 from djrm/pr_better_docs
Improved editor docs
-rw-r--r-- | COPYRIGHT.txt | 6 | ||||
-rw-r--r-- | editor/editor_fonts.cpp | 20 | ||||
-rw-r--r-- | editor/editor_help.cpp | 281 | ||||
-rw-r--r-- | editor/editor_help.h | 4 | ||||
-rw-r--r-- | editor/editor_settings.cpp | 1 | ||||
-rw-r--r-- | editor/editor_themes.cpp | 6 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 67 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.h | 6 | ||||
-rw-r--r-- | thirdparty/README.md | 6 | ||||
-rw-r--r-- | thirdparty/fonts/LICENSE_Mononoki (renamed from thirdparty/fonts/LICENSE.SourceCodePro.txt) | 8 | ||||
-rw-r--r-- | thirdparty/fonts/mononoki_Regular.ttf | bin | 0 -> 90216 bytes | |||
-rw-r--r-- | thirdparty/fonts/source_code_pro.otf | bin | 145556 -> 0 bytes |
12 files changed, 239 insertions, 166 deletions
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index 5709f3d8d6..16ef854f1f 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -150,9 +150,9 @@ Comment: Noto Sans font Copyright: 2012, Google Inc. License: OFL-1.1 -Files: ./thirdparty/fonts/source_code_pro.otf -Comment: Source Code Pro font -Copyright: 2010, 2012, Adobe Systems Incorporated +Files: ./thirdparty/fonts/mononoki_Regular.ttf +Comment: Mononoki font +Copyright: 2013, Matthias Tellen License: OFL-1.1 Files: ./thirdparty/freetype/ diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp index 3ab3f05906..d806b825ba 100644 --- a/editor/editor_fonts.cpp +++ b/editor/editor_fonts.cpp @@ -73,13 +73,13 @@ static Ref<BitmapFont> make_font(int p_height, int p_ascent, int p_valign, int p m_name->add_fallback(FontFallback); // the custom spacings might only work with Noto Sans -#define MAKE_DEFAULT_FONT(m_name, m_size) \ - Ref<DynamicFont> m_name; \ - m_name.instance(); \ - m_name->set_size(m_size); \ - m_name->set_font_data(DefaultFont); \ - m_name->set_spacing(DynamicFont::SPACING_TOP, -1); \ - m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -1); \ +#define MAKE_DEFAULT_FONT(m_name, m_size) \ + Ref<DynamicFont> m_name; \ + m_name.instance(); \ + m_name->set_size(m_size); \ + m_name->set_font_data(DefaultFont); \ + m_name->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); \ + m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); \ MAKE_FALLBACKS(m_name); void editor_register_fonts(Ref<Theme> p_theme) { @@ -119,7 +119,7 @@ void editor_register_fonts(Ref<Theme> p_theme) { Ref<DynamicFontData> dfmono; dfmono.instance(); - dfmono->set_font_ptr(_font_source_code_pro, _font_source_code_pro_size); + dfmono->set_font_ptr(_font_mononoki_Regular, _font_mononoki_Regular_size); //dfd->set_force_autohinter(true); //just looks better..i think? MAKE_DEFAULT_FONT(df, int(EditorSettings::get_singleton()->get("interface/font_size")) * EDSCALE); @@ -147,7 +147,9 @@ void editor_register_fonts(Ref<Theme> p_theme) { Ref<DynamicFont> df_doc_code; df_doc_code.instance(); - df_doc_code->set_size(int(EDITOR_DEF("text_editor/help/help_source_font_size", 14)) * EDSCALE); + df_doc_code->set_size(int(EDITOR_DEF("text_editor/help/help_source_font_size", 18)) * EDSCALE); + df_doc_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); + df_doc_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); df_doc_code->set_font_data(dfmono); MAKE_FALLBACKS(df_doc_code); diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index a5baf62ea0..6c8bd0f14b 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<Font> doc_font = get_font("doc", "EditorFonts"); Ref<Font> doc_title_font = get_font("doc_title", "EditorFonts"); Ref<Font> 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<String, int>(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(); @@ -730,10 +740,11 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { } 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<String> 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<String, int>(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<String, int>(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<String, int>(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<String, int>(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<String, int>(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<String, int>(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<String, int>(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<String, int>(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<String, int>(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<Font> doc_font = p_rt->get_font("doc", "EditorFonts"); Ref<Font> 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<String> 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<Pair<String, int> > EditorHelp::get_sections() { + Vector<Pair<String, int> > sections; + + for (int i = 0; i < section_line.size(); i++) { + sections.push_back(Pair<String, int>(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 f937e4a723..92c0e2f4d1 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -118,6 +118,7 @@ class EditorHelp : public VBoxContainer { String edited_class; + Vector<Pair<String, int> > section_line; Map<String, int> method_line; Map<String, int> signal_line; Map<String, int> 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<Pair<String, int> > 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 3bb6345d73..d7266df67c 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -739,6 +739,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> 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 25e1f0ecb8..304d6acd62 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -706,7 +706,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> 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); @@ -717,6 +718,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> 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 fce9732919..44a9bc6d2e 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<EditorHelp>(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<EditorHelp>(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<EditorHelp>(current); + if (!se) { + return; + } + + help_overview->clear(); + + Vector<Pair<String, int> > 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 d2677c6a4a..03fc4da7ce 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<Ref<Script> > &used); void _tree_changed(); diff --git a/thirdparty/README.md b/thirdparty/README.md index 6eb2422f36..80fab9442b 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -59,10 +59,10 @@ Files extracted from upstream source: Use UI font if exists, because it has tight vertial metrix and good for UI. -### Adobe Source Code Pro Regular +### Mononoki Regular -- Upstream: https://github.com/adobe-fonts/source-code-pro -- Version: 2.030 +- Upstream: https://github.com/madmalik/mononoki +- Version: 1.2 - License: OFL-1.1 ### DroidSans*.ttf diff --git a/thirdparty/fonts/LICENSE.SourceCodePro.txt b/thirdparty/fonts/LICENSE_Mononoki index f430ee5dbe..6ef130c5ef 100644 --- a/thirdparty/fonts/LICENSE.SourceCodePro.txt +++ b/thirdparty/fonts/LICENSE_Mononoki @@ -1,8 +1,9 @@ -Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. +Copyright (c) 2013, Matthias Tellen matthias.tellen@googlemail.com, +with Reserved Font Name monoOne. This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL ----------------------------------------------------------- @@ -91,4 +92,3 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - diff --git a/thirdparty/fonts/mononoki_Regular.ttf b/thirdparty/fonts/mononoki_Regular.ttf Binary files differnew file mode 100644 index 0000000000..9510ac85d1 --- /dev/null +++ b/thirdparty/fonts/mononoki_Regular.ttf diff --git a/thirdparty/fonts/source_code_pro.otf b/thirdparty/fonts/source_code_pro.otf Binary files differdeleted file mode 100644 index 1bae0027ff..0000000000 --- a/thirdparty/fonts/source_code_pro.otf +++ /dev/null |