|
@@ -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;
|