diff options
Diffstat (limited to 'editor/editor_help.cpp')
| -rw-r--r-- | editor/editor_help.cpp | 201 |
1 files changed, 165 insertions, 36 deletions
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 89d70ee92..86f31d758 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -582,7 +582,18 @@ void EditorHelp::_class_list_select(const String &p_select) { void EditorHelp::_class_desc_select(const String &p_select) { //print_line("LINK: "+p_select); - if (p_select.begins_with("#")) { + if (p_select.begins_with("$")) { //enum + //_goto_desc(p_select.substr(1,p_select.length())); + String select = p_select.substr(1, p_select.length()); + String class_name; + if (select.find(".") != -1) { + class_name = select.get_slice(".", 0); + } else { + class_name = "@Global Scope"; + } + emit_signal("go_to_help", "class_enum:" + class_name + ":" + select); + return; + } else if (p_select.begins_with("#")) { //_goto_desc(p_select.substr(1,p_select.length())); emit_signal("go_to_help", "class_name:" + p_select.substr(1, p_select.length())); return; @@ -614,16 +625,28 @@ void EditorHelp::_class_desc_input(const Ref<InputEvent> &p_input) { set_focused(); } -void EditorHelp::_add_type(const String &p_type) { +void EditorHelp::_add_type(const String &p_type, const String &p_enum) { String t = p_type; if (t == "") t = "void"; - bool can_ref = (t != "int" && t != "real" && t != "bool" && t != "void"); + bool can_ref = (t != "int" && t != "real" && t != "bool" && t != "void") || p_enum != String(); + if (p_enum != String()) { + if (p_enum.get_slice_count(".") > 1) { + t = p_enum.get_slice(".", 1); + } else { + t = p_enum.get_slice(".", 0); + } + } class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color")); - if (can_ref) - class_desc->push_meta("#" + t); //class + if (can_ref) { + if (p_enum == "") { + class_desc->push_meta("#" + t); //class + } else { + class_desc->push_meta("$" + p_enum); //class + } + } class_desc->add_text(t); if (can_ref) class_desc->pop(); @@ -782,7 +805,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_cell(); class_desc->push_align(RichTextLabel::ALIGN_RIGHT); class_desc->push_font(doc_code_font); - _add_type(cd.properties[i].type); + _add_type(cd.properties[i].type, cd.properties[i].enumeration); class_desc->add_text(" "); class_desc->pop(); class_desc->pop(); @@ -875,7 +898,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { method_line[methods[i].name] = class_desc->get_line_count() - 2; //gets overridden if description class_desc->push_align(RichTextLabel::ALIGN_RIGHT); class_desc->push_font(doc_code_font); - _add_type(methods[i].return_type); + _add_type(methods[i].return_type, methods[i].return_enum); //class_desc->add_text(" "); class_desc->pop(); //align class_desc->pop(); //font @@ -899,7 +922,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); if (j > 0) class_desc->add_text(", "); - _add_type(methods[i].arguments[j].type); + _add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration); class_desc->add_text(" "); _add_text(methods[i].arguments[j].name); if (methods[i].arguments[j].default_value != "") { @@ -1048,44 +1071,133 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { if (cd.constants.size()) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); - class_desc->push_font(doc_title_font); - class_desc->add_text(TTR("Constants:")); - class_desc->pop(); - class_desc->pop(); - class_desc->push_indent(1); - - class_desc->add_newline(); - //class_desc->add_newline(); + Map<String, Vector<DocData::ConstantDoc> > enums; + Vector<DocData::ConstantDoc> constants; for (int i = 0; i < cd.constants.size(); i++) { - constant_line[cd.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")); - _add_text(cd.constants[i].name); + if (cd.constants[i].enumeration != String()) { + if (!enums.has(cd.constants[i].enumeration)) { + enums[cd.constants[i].enumeration] = Vector<DocData::ConstantDoc>(); + } + + enums[cd.constants[i].enumeration].push_back(cd.constants[i]); + } else { + + constants.push_back(cd.constants[i]); + } + } + + if (enums.size()) { + + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->push_font(doc_title_font); + class_desc->add_text(TTR("Enumerations:")); class_desc->pop(); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); - class_desc->add_text(" = "); class_desc->pop(); + class_desc->push_indent(1); + + class_desc->add_newline(); + //class_desc->add_newline(); + + for (Map<String, Vector<DocData::ConstantDoc> >::Element *E = enums.front(); E; E = E->next()) { + + 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->add_text(TTR("enum ")); + class_desc->pop(); + class_desc->push_font(doc_code_font); + String e = E->key(); + if (e.get_slice_count(".")) { + e = e.get_slice(".", 1); + } + + class_desc->add_text(e); + class_desc->pop(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); + class_desc->add_text(":"); + class_desc->pop(); + class_desc->add_newline(); + + class_desc->push_indent(1); + Vector<DocData::ConstantDoc> enum_list = E->get(); + + 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")); + _add_text(enum_list[i].name); + class_desc->pop(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->add_text(" = "); + class_desc->pop(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_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")); + _add_text(enum_list[i].description); + class_desc->pop(); + class_desc->pop(); + } + + class_desc->add_newline(); + } + + class_desc->pop(); + + class_desc->add_newline(); + } + + class_desc->pop(); + class_desc->add_newline(); + } + + if (constants.size()) { + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color")); - _add_text(cd.constants[i].value); + class_desc->push_font(doc_title_font); + class_desc->add_text(TTR("Constants:")); class_desc->pop(); class_desc->pop(); - if (cd.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")); - _add_text(cd.constants[i].description); + class_desc->push_indent(1); + + class_desc->add_newline(); + //class_desc->add_newline(); + + for (int i = 0; i < constants.size(); i++) { + + 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")); + _add_text(constants[i].name); + class_desc->pop(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color")); + class_desc->add_text(" = "); + class_desc->pop(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_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")); + _add_text(constants[i].description); + class_desc->pop(); + class_desc->pop(); + } + + class_desc->add_newline(); } + class_desc->pop(); class_desc->add_newline(); } - - class_desc->pop(); - class_desc->add_newline(); } if (cd.description != "") { @@ -1126,7 +1238,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { method_line[cd.properties[i].name] = class_desc->get_line_count() - 2; class_desc->push_font(doc_code_font); - _add_type(cd.properties[i].type); + _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")); @@ -1204,7 +1316,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { method_line[methods[i].name] = class_desc->get_line_count() - 2; class_desc->push_font(doc_code_font); - _add_type(methods[i].return_type); + _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")); @@ -1217,7 +1329,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color")); if (j > 0) class_desc->add_text(", "); - _add_type(methods[i].arguments[j].type); + _add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration); class_desc->add_text(" "); _add_text(methods[i].arguments[j].name); if (methods[i].arguments[j].default_value != "") { @@ -1295,6 +1407,11 @@ void EditorHelp::_help_callback(const String &p_topic) { if (property_line.has(name)) line = property_line[name]; + } else if (what == "class_enum") { + + print_line("go to enum:"); + if (enum_line.has(name)) + line = enum_line[name]; } else if (what == "class_theme_item") { if (theme_property_line.has(name)) @@ -1743,8 +1860,20 @@ void EditorHelpBit::_go_to_help(String p_what) { void EditorHelpBit::_meta_clicked(String p_select) { + print_line("got meta " + p_select); //print_line("LINK: "+p_select); - if (p_select.begins_with("#")) { + if (p_select.begins_with("$")) { //enum + //_goto_desc(p_select.substr(1,p_select.length())); + String select = p_select.substr(1, p_select.length()); + String class_name; + if (select.find(".") != -1) { + class_name = select.get_slice(".", 0); + } else { + class_name = "@Global"; + } + _go_to_help("class_enum:" + class_name + ":" + select); + return; + } else if (p_select.begins_with("#")) { //_goto_desc(p_select.substr(1,p_select.length())); _go_to_help("class_name:" + p_select.substr(1, p_select.length())); return; |
