Merge pull request #11253 from djrm/pr_better_docs

Improved editor docs
This commit is contained in:
Rémi Verschelde 2017-09-14 12:06:36 +02:00 committed by GitHub
commit 8c08f2380d
12 changed files with 239 additions and 166 deletions

View File

@ -150,9 +150,9 @@ Comment: Noto Sans font
Copyright: 2012, Google Inc. Copyright: 2012, Google Inc.
License: OFL-1.1 License: OFL-1.1
Files: ./thirdparty/fonts/source_code_pro.otf Files: ./thirdparty/fonts/mononoki_Regular.ttf
Comment: Source Code Pro font Comment: Mononoki font
Copyright: 2010, 2012, Adobe Systems Incorporated Copyright: 2013, Matthias Tellen
License: OFL-1.1 License: OFL-1.1
Files: ./thirdparty/freetype/ Files: ./thirdparty/freetype/

View File

@ -78,8 +78,8 @@ static Ref<BitmapFont> make_font(int p_height, int p_ascent, int p_valign, int p
m_name.instance(); \ m_name.instance(); \
m_name->set_size(m_size); \ m_name->set_size(m_size); \
m_name->set_font_data(DefaultFont); \ m_name->set_font_data(DefaultFont); \
m_name->set_spacing(DynamicFont::SPACING_TOP, -1); \ m_name->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); \
m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -1); \ m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); \
MAKE_FALLBACKS(m_name); MAKE_FALLBACKS(m_name);
void editor_register_fonts(Ref<Theme> p_theme) { void editor_register_fonts(Ref<Theme> p_theme) {
@ -119,7 +119,7 @@ void editor_register_fonts(Ref<Theme> p_theme) {
Ref<DynamicFontData> dfmono; Ref<DynamicFontData> dfmono;
dfmono.instance(); 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? //dfd->set_force_autohinter(true); //just looks better..i think?
MAKE_DEFAULT_FONT(df, int(EditorSettings::get_singleton()->get("interface/font_size")) * EDSCALE); 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; Ref<DynamicFont> df_doc_code;
df_doc_code.instance(); 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); df_doc_code->set_font_data(dfmono);
MAKE_FALLBACKS(df_doc_code); MAKE_FALLBACKS(df_doc_code);

View File

@ -607,7 +607,9 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum) {
t = p_enum.get_slice(".", 0); 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 (can_ref) {
if (p_enum == "") { if (p_enum == "") {
class_desc->push_meta("#" + t); //class class_desc->push_meta("#" + t); //class
@ -642,24 +644,32 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
class_desc->clear(); class_desc->clear();
method_line.clear(); method_line.clear();
section_line.clear();
edited_class = p_class; edited_class = p_class;
//edited_class->show(); //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_font = get_font("doc", "EditorFonts");
Ref<Font> doc_title_font = get_font("doc_title", "EditorFonts"); Ref<Font> doc_title_font = get_font("doc_title", "EditorFonts");
Ref<Font> doc_code_font = get_font("doc_source", "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); String link_color_text = title_color.to_html(false);
h_color = Color(1, 1, 1, 1);
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_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); class_desc->push_color(title_color);
class_desc->add_text(TTR("Class:") + " "); 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); _add_text(p_class);
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
@ -668,7 +678,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (cd.inherits != "") { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Inherits:") + " "); class_desc->add_text(TTR("Inherits:") + " ");
class_desc->pop(); 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 (E->get().inherits == cd.name) {
if (!found) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Inherited by:") + " "); class_desc->add_text(TTR("Inherited by:") + " ");
class_desc->pop(); 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();
class_desc->add_newline(); class_desc->add_newline();
if (cd.brief_description != "") { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Brief Description:")); class_desc->add_text(TTR("Brief Description:"));
class_desc->pop(); 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->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_font(doc_font);
class_desc->push_indent(1); class_desc->push_indent(1);
_add_text(cd.brief_description); _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->pop();
class_desc->add_newline(); class_desc->add_newline();
class_desc->add_newline(); class_desc->add_newline();
class_desc->add_newline();
} }
Set<String> skip_methods; Set<String> skip_methods;
@ -757,7 +769,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (cd.properties.size()) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Members:")); class_desc->add_text(TTR("Members:"));
class_desc->pop(); 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_align(RichTextLabel::ALIGN_RIGHT);
class_desc->push_font(doc_code_font); class_desc->push_font(doc_code_font);
_add_type(cd.properties[i].type, cd.properties[i].enumeration); _add_type(cd.properties[i].type, cd.properties[i].enumeration);
class_desc->add_text(" ");
class_desc->pop(); class_desc->pop();
class_desc->pop(); 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_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); _add_text(cd.properties[i].name);
if (describe) { if (describe) {
@ -835,7 +847,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (sort_methods) if (sort_methods)
methods.sort(); 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->push_font(doc_title_font);
class_desc->add_text(TTR("Public Methods:")); class_desc->add_text(TTR("Public Methods:"));
class_desc->pop(); 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; 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 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_align(RichTextLabel::ALIGN_RIGHT);
class_desc->push_font(doc_code_font); class_desc->push_font(doc_code_font);
_add_type(methods[i].return_type, methods[i].return_enum); _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(); //align
class_desc->pop(); //font class_desc->pop(); //font
class_desc->pop(); //cell class_desc->pop(); //cell
class_desc->push_cell(); class_desc->push_cell();
class_desc->push_font(doc_code_font); class_desc->push_font(doc_code_font);
if (true || methods[i].description != "") { //always describe method if (methods[i].description != "") {
method_descr = true; method_descr = true;
class_desc->push_meta("@" + methods[i].name); 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); _add_text(methods[i].name);
class_desc->pop(); class_desc->pop();
if (methods[i].description != "") if (methods[i].description != "")
class_desc->pop(); class_desc->pop(); // pop meta
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->add_text(methods[i].arguments.size() || is_vararg ? "( " : "(");
class_desc->pop(); class_desc->pop();
for (int j = 0; j < methods[i].arguments.size(); j++) { 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) if (j > 0)
class_desc->add_text(", "); class_desc->add_text(", ");
_add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration); _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); _add_text(methods[i].arguments[j].name);
if (methods[i].arguments[j].default_value != "") { 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->add_text("=");
class_desc->pop(); class_desc->pop();
_add_text(methods[i].arguments[j].default_value); _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) { 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()) if (methods[i].arguments.size())
class_desc->add_text(", "); 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->add_text("...");
class_desc->pop(); class_desc->pop();
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->add_text(methods[i].arguments.size() || is_vararg ? " )" : ")");
class_desc->pop(); class_desc->pop();
if (methods[i].qualifiers != "") { 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(" "); class_desc->add_text(" ");
_add_text(methods[i].qualifiers); _add_text(methods[i].qualifiers);
class_desc->pop(); class_desc->pop();
@ -927,42 +941,54 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (cd.theme_properties.size()) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("GUI Theme Items:")); class_desc->add_text(TTR("GUI Theme Items:"));
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
class_desc->add_newline(); // class_desc->add_newline();
class_desc->push_indent(1); class_desc->push_indent(1);
class_desc->push_table(2);
class_desc->set_table_column_expand(1, 1);
//class_desc->add_newline(); //class_desc->add_newline();
for (int i = 0; i < cd.theme_properties.size(); i++) { 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 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); class_desc->push_font(doc_code_font);
_add_type(cd.theme_properties[i].type); _add_type(cd.theme_properties[i].type);
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); class_desc->pop();
class_desc->add_text(" "); 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); _add_text(cd.theme_properties[i].name);
class_desc->pop(); class_desc->pop();
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->push_font(doc_font);
class_desc->add_text(" "); 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); _add_text(cd.theme_properties[i].description);
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
} }
class_desc->pop(); // cell
class_desc->add_newline();
} }
class_desc->pop(); // table
class_desc->pop(); class_desc->pop();
class_desc->add_newline(); class_desc->add_newline();
class_desc->add_newline();
} }
if (cd.signals.size()) { if (cd.signals.size()) {
@ -970,7 +996,9 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (sort_methods) { if (sort_methods) {
cd.signals.sort(); 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->push_font(doc_title_font);
class_desc->add_text(TTR("Signals:")); class_desc->add_text(TTR("Signals:"));
class_desc->pop(); 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 class_desc->push_font(doc_code_font); // monofont
//_add_type("void"); //_add_type("void");
//class_desc->add_text(" "); //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); _add_text(cd.signals[i].name);
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(cd.signals[i].arguments.size() ? "( " : "("); class_desc->add_text(cd.signals[i].arguments.size() ? "( " : "(");
class_desc->pop(); class_desc->pop();
for (int j = 0; j < cd.signals[i].arguments.size(); j++) { 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) if (j > 0)
class_desc->add_text(", "); class_desc->add_text(", ");
_add_type(cd.signals[i].arguments[j].type); _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); _add_text(cd.signals[i].arguments[j].name);
if (cd.signals[i].arguments[j].default_value != "") { 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->add_text("=");
class_desc->pop(); class_desc->pop();
_add_text(cd.signals[i].arguments[j].default_value); _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->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->add_text(cd.signals[i].arguments.size() ? " )" : ")");
class_desc->pop(); class_desc->pop();
class_desc->pop(); // end monofont class_desc->pop(); // end monofont
if (cd.signals[i].description != "") { 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(" "); class_desc->add_text(" ");
_add_text(cd.signals[i].description); _add_text(cd.signals[i].description);
class_desc->pop(); class_desc->pop();
@ -1050,7 +1078,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (enums.size()) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Enumerations:")); class_desc->add_text(TTR("Enumerations:"));
class_desc->pop(); 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; 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->add_text(TTR("enum "));
class_desc->pop(); class_desc->pop();
class_desc->push_font(doc_code_font); 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); e = e.get_slice(".", 1);
} }
class_desc->push_color(highlight_color);
class_desc->add_text(e); class_desc->add_text(e);
class_desc->pop(); 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->add_text(":");
class_desc->pop(); class_desc->pop();
class_desc->add_newline(); 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++) { for (int i = 0; i < enum_list.size(); i++) {
class_desc->push_font(doc_code_font); 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); _add_text(enum_list[i].name);
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(" = "); class_desc->add_text(" = ");
class_desc->pop(); 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); _add_text(enum_list[i].value);
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
if (enum_list[i].description != "") { if (enum_list[i].description != "") {
class_desc->push_font(doc_font); class_desc->push_font(doc_font);
class_desc->add_text(" "); 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); _add_text(enum_list[i].description);
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
@ -1119,7 +1150,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (constants.size()) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Constants:")); class_desc->add_text(TTR("Constants:"));
class_desc->pop(); 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; constant_line[constants[i].name] = class_desc->get_line_count() - 2;
class_desc->push_font(doc_code_font); 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); _add_text(constants[i].name);
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(" = "); class_desc->add_text(" = ");
class_desc->pop(); 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); _add_text(constants[i].value);
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
if (constants[i].description != "") { if (constants[i].description != "") {
class_desc->push_font(doc_font); class_desc->push_font(doc_font);
class_desc->add_text(" "); 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); _add_text(constants[i].description);
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
@ -1162,16 +1194,16 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (cd.description != "") { 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; 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->push_font(doc_title_font);
class_desc->add_text(TTR("Description:")); class_desc->add_text(TTR("Description:"));
class_desc->pop(); class_desc->pop();
class_desc->pop(); class_desc->pop();
class_desc->add_newline(); class_desc->add_newline();
class_desc->add_newline(); class_desc->push_color(text_color);
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
class_desc->push_font(doc_font); class_desc->push_font(doc_font);
class_desc->push_indent(1); class_desc->push_indent(1);
_add_text(cd.description); _add_text(cd.description);
@ -1180,11 +1212,13 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
class_desc->pop(); class_desc->pop();
class_desc->add_newline(); class_desc->add_newline();
class_desc->add_newline(); class_desc->add_newline();
class_desc->add_newline();
} }
if (property_descr) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Property Description:")); class_desc->add_text(TTR("Property Description:"));
class_desc->pop(); 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); _add_type(cd.properties[i].type, cd.properties[i].enumeration);
class_desc->add_text(" "); 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); _add_text(cd.properties[i].name);
class_desc->pop(); //color 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_font(doc_font);
class_desc->push_indent(2); 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->add_text("Setter: ");
class_desc->pop(); 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->add_text(cd.properties[i].setter + "(value)");
class_desc->pop(); //color 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_font(doc_font);
class_desc->push_indent(2); 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->add_text("Getter: ");
class_desc->pop(); 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->add_text(cd.properties[i].getter + "()");
class_desc->pop(); //color 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->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_font(doc_font);
class_desc->push_indent(1); class_desc->push_indent(1);
if (cd.properties[i].description.strip_edges() != String()) { if (cd.properties[i].description.strip_edges() != String()) {
@ -1255,7 +1289,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
} else { } else {
class_desc->add_image(get_icon("Error", "EditorIcons")); class_desc->add_image(get_icon("Error", "EditorIcons"));
class_desc->add_text(" "); 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->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(); class_desc->pop();
} }
@ -1270,7 +1304,8 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (method_descr) { 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->push_font(doc_title_font);
class_desc->add_text(TTR("Method Description:")); class_desc->add_text(TTR("Method Description:"));
class_desc->pop(); 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); _add_type(methods[i].return_type, methods[i].return_enum);
class_desc->add_text(" "); 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); _add_text(methods[i].name);
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->add_text(methods[i].arguments.size() || is_vararg ? "( " : "(");
class_desc->pop(); class_desc->pop();
for (int j = 0; j < methods[i].arguments.size(); j++) { 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) if (j > 0)
class_desc->add_text(", "); class_desc->add_text(", ");
_add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration); _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); _add_text(methods[i].arguments[j].name);
if (methods[i].arguments[j].default_value != "") { 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->add_text("=");
class_desc->pop(); class_desc->pop();
_add_text(methods[i].arguments[j].default_value); _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) { 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()) if (methods[i].arguments.size())
class_desc->add_text(", "); 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->add_text("...");
class_desc->pop(); class_desc->pop();
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->add_text(methods[i].arguments.size() || is_vararg ? " )" : ")");
class_desc->pop(); class_desc->pop();
if (methods[i].qualifiers != "") { 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(" "); class_desc->add_text(" ");
_add_text(methods[i].qualifiers); _add_text(methods[i].qualifiers);
class_desc->pop(); class_desc->pop();
@ -1337,7 +1372,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
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_font(doc_font);
class_desc->push_indent(1); class_desc->push_indent(1);
if (methods[i].description.strip_edges() != String()) { if (methods[i].description.strip_edges() != String()) {
@ -1345,7 +1380,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
} else { } else {
class_desc->add_image(get_icon("Error", "EditorIcons")); class_desc->add_image(get_icon("Error", "EditorIcons"));
class_desc->add_text(" "); 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->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(); 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(); DocData *doc = EditorHelp::get_doc_data();
String base_path; 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_font = p_rt->get_font("doc", "EditorFonts");
Ref<Font> doc_code_font = p_rt->get_font("doc_source", "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(); 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; List<String> tag_stack;
int pos = 0;
while (pos < bbcode.length()) { while (pos < bbcode.length()) {
int brk_pos = bbcode.find("[", pos); 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); int brk_end = bbcode.find("]", brk_pos + 1);
if (brk_end == -1) { if (brk_end == -1) {
//no close, add the rest
p_rt->add_text(bbcode.substr(brk_pos, bbcode.length() - brk_pos)); p_rt->add_text(bbcode.substr(brk_pos, bbcode.length() - brk_pos));
break; 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()); bool tag_ok = tag_stack.size() && tag_stack.front()->get() == tag.substr(1, tag.length());
if (tag_stack.size()) { if (tag_stack.size()) {
} }
if (!tag_ok) { if (!tag_ok) {
p_rt->add_text("["); 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 ")) { } else if (tag.begins_with("method ")) {
String m = tag.substr(7, tag.length()); 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->push_meta("@" + m);
p_rt->add_text(m + "()"); p_rt->add_text(m + "()");
p_rt->pop(); 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)) { } 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->push_meta("#" + tag);
p_rt->add_text(tag); p_rt->add_text(tag);
p_rt->pop(); p_rt->pop();
@ -1552,13 +1533,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) {
} else if (tag == "i") { } else if (tag == "i") {
//use italics font //use italics font
Color text_color = EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"); p_rt->push_color(font_color_hl);
//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"));
pos = brk_end + 1; pos = brk_end + 1;
tag_stack.push_front(tag); tag_stack.push_front(tag);
} else if (tag == "code" || tag == "codeblock") { } else if (tag == "code" || tag == "codeblock") {
@ -1728,6 +1703,7 @@ void EditorHelp::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { 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))); class_desc->add_color_override("selection_color", EDITOR_DEF("text_editor/highlighting/selection_color", Color(0.2, 0.2, 1)));
} break; } break;
default: 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); _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() { void EditorHelp::popup_search() {
search_dialog->popup_centered(Size2(250, 80)); search_dialog->popup_centered(Size2(250, 80) * EDSCALE);
search->grab_focus(); search->grab_focus();
} }
@ -1825,7 +1815,6 @@ EditorHelp::EditorHelp() {
search_dialog->get_ok()->set_text(TTR("Find")); search_dialog->get_ok()->set_text(TTR("Find"));
search_dialog->connect("confirmed", this, "_search_cbk"); search_dialog->connect("confirmed", this, "_search_cbk");
search_dialog->set_hide_on_ok(false); search_dialog->set_hide_on_ok(false);
search_dialog->set_self_modulate(Color(1, 1, 1, 0.8));
/*class_search = memnew( EditorHelpSearch(editor) ); /*class_search = memnew( EditorHelpSearch(editor) );
editor->get_gui_base()->add_child(class_search); editor->get_gui_base()->add_child(class_search);

View File

@ -118,6 +118,7 @@ class EditorHelp : public VBoxContainer {
String edited_class; String edited_class;
Vector<Pair<String, int> > section_line;
Map<String, int> method_line; Map<String, int> method_line;
Map<String, int> signal_line; Map<String, int> signal_line;
Map<String, int> property_line; Map<String, int> property_line;
@ -168,6 +169,9 @@ public:
void go_to_help(const String &p_help); void go_to_help(const String &p_help);
void go_to_class(const String &p_class, int p_scroll = 0); 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 popup_search();
void search_again(); void search_again();

View File

@ -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/texture_preview_width", 48);
set("docks/property_editor/auto_refresh_interval", 0.3); set("docks/property_editor/auto_refresh_interval", 0.3);
set("text_editor/help/doc_path", ""); set("text_editor/help/doc_path", "");
set("text_editor/help/show_help_index", true);
set("filesystem/import/ask_save_before_reimport", false); set("filesystem/import/ask_save_before_reimport", false);

View File

@ -706,7 +706,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
//RichTextLabel //RichTextLabel
Color rtl_combined_bg_color = dark_color_1.linear_interpolate(script_bg_color, script_bg_color.a); 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_color("default_color", "RichTextLabel", rtl_font_color);
theme->set_stylebox("focus", "RichTextLabel", make_empty_stylebox()); theme->set_stylebox("focus", "RichTextLabel", make_empty_stylebox());
theme->set_stylebox("normal", "RichTextLabel", style_tree_bg); 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); style_code_focus->set_bg_color(rtl_combined_bg_color);
theme->set_stylebox("code_focus", "RichTextLabel", style_code_focus); 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 // Panel
theme->set_stylebox("panel", "Panel", make_flat_stylebox(dark_color_1, 6, 4, 6, 4)); theme->set_stylebox("panel", "Panel", make_flat_stylebox(dark_color_1, 6, 4, 6, 4));

View File

@ -421,8 +421,10 @@ void ScriptEditor::_go_to_tab(int p_idx) {
_update_history_arrows(); _update_history_arrows();
_update_script_colors(); _update_script_colors();
_update_members_overview(); _update_members_overview();
_update_help_overview();
_update_selected_editor_menu(); _update_selected_editor_menu();
_update_members_overview_visibility(); _update_members_overview_visibility();
_update_help_overview_visibility();
} }
void ScriptEditor::_add_recent_script(String p_path) { 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_script_names();
_update_members_overview_visibility(); _update_members_overview_visibility();
_update_help_overview_visibility();
_save_layout(); _save_layout();
} }
@ -1110,6 +1113,7 @@ void ScriptEditor::_notification(int p_what) {
editor->connect("resource_saved", this, "_res_saved_callback"); editor->connect("resource_saved", this, "_res_saved_callback");
script_list->connect("item_selected", this, "_script_selected"); script_list->connect("item_selected", this, "_script_selected");
members_overview->connect("item_selected", this, "_members_overview_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"); script_split->connect("dragged", this, "_script_split_dragged");
autosave_timer->connect("timeout", this, "_autosave_scripts"); autosave_timer->connect("timeout", this, "_autosave_scripts");
{ {
@ -1278,6 +1282,15 @@ void ScriptEditor::_members_overview_selected(int p_idx) {
se->ensure_focus(); 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) { void ScriptEditor::_script_selected(int p_idx) {
grab_focus_block = !Input::get_singleton()->is_mouse_button_pressed(1); //amazing hack, simply amazing 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() { void ScriptEditor::_update_script_colors() {
bool script_temperature_enabled = EditorSettings::get_singleton()->get("text_editor/open_scripts/script_temperature_enabled"); 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_members_overview();
_update_help_overview();
_update_script_colors(); _update_script_colors();
} }
@ -1785,7 +1843,9 @@ void ScriptEditor::_editor_settings_changed() {
use_space_indentation = EditorSettings::get_singleton()->get("text_editor/indent/type"); 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"); 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_members_overview_visibility();
_update_help_overview_visibility();
float autosave_time = EditorSettings::get_singleton()->get("text_editor/files/autosave_interval_secs"); float autosave_time = EditorSettings::get_singleton()->get("text_editor/files/autosave_interval_secs");
if (autosave_time > 0) { 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("_update_script_names", &ScriptEditor::_update_script_names);
ClassDB::bind_method("_tree_changed", &ScriptEditor::_tree_changed); ClassDB::bind_method("_tree_changed", &ScriptEditor::_tree_changed);
ClassDB::bind_method("_members_overview_selected", &ScriptEditor::_members_overview_selected); 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_selected", &ScriptEditor::_script_selected);
ClassDB::bind_method("_script_created", &ScriptEditor::_script_created); ClassDB::bind_method("_script_created", &ScriptEditor::_script_created);
ClassDB::bind_method("_script_split_dragged", &ScriptEditor::_script_split_dragged); ClassDB::bind_method("_script_split_dragged", &ScriptEditor::_script_split_dragged);
@ -2193,6 +2254,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
pending_auto_reload = false; pending_auto_reload = false;
auto_reload_running_scripts = false; auto_reload_running_scripts = false;
members_overview_enabled = true; members_overview_enabled = true;
help_overview_enabled = true;
editor = p_editor; editor = p_editor;
VBoxContainer *main_container = memnew(VBoxContainer); 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_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); 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 = memnew(TabContainer);
tab_container->set_tabs_visible(false); tab_container->set_tabs_visible(false);
script_split->add_child(tab_container); script_split->add_child(tab_container);

View File

@ -187,6 +187,8 @@ class ScriptEditor : public PanelContainer {
HSplitContainer *script_split; HSplitContainer *script_split;
ItemList *members_overview; ItemList *members_overview;
bool members_overview_enabled; bool members_overview_enabled;
ItemList *help_overview;
bool help_overview_enabled;
VSplitContainer *list_split; VSplitContainer *list_split;
TabContainer *tab_container; TabContainer *tab_container;
EditorFileDialog *file_dialog; EditorFileDialog *file_dialog;
@ -294,6 +296,10 @@ class ScriptEditor : public PanelContainer {
void _members_overview_selected(int p_idx); void _members_overview_selected(int p_idx);
void _script_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 _find_scripts(Node *p_base, Node *p_current, Set<Ref<Script> > &used);
void _tree_changed(); void _tree_changed();

View File

@ -59,10 +59,10 @@ Files extracted from upstream source:
Use UI font if exists, because it has tight vertial metrix and good for UI. 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 - Upstream: https://github.com/madmalik/mononoki
- Version: 2.030 - Version: 1.2
- License: OFL-1.1 - License: OFL-1.1
### DroidSans*.ttf ### DroidSans*.ttf

View File

@ -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 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:
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 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 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 FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE. OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
thirdparty/fonts/mononoki_Regular.ttf vendored Normal file

Binary file not shown.

Binary file not shown.