diff options
author | Juan Linietsky <reduzio@gmail.com> | 2015-08-25 23:00:11 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2015-08-25 23:00:11 -0300 |
commit | d50921b55089e0396ee5f11675b6093dd49b7cbb (patch) | |
tree | f3ecf2178ddadd4d507008061feb158d6e91e98c /core | |
parent | 04cb3c9eb13b3824f676bc29e037802bffc3bdac (diff) |
Show documentation for properties on hover.
This works if the property has been documented (about half are at this point)
Diffstat (limited to 'core')
-rw-r--r-- | core/object_type_db.cpp | 19 | ||||
-rw-r--r-- | core/object_type_db.h | 4 | ||||
-rw-r--r-- | core/ustring.cpp | 32 | ||||
-rw-r--r-- | core/ustring.h | 1 |
4 files changed, 55 insertions, 1 deletions
diff --git a/core/object_type_db.cpp b/core/object_type_db.cpp index c291714573..a64b3d2715 100644 --- a/core/object_type_db.cpp +++ b/core/object_type_db.cpp @@ -746,6 +746,25 @@ bool ObjectTypeDB::has_method(StringName p_type,StringName p_method,bool p_no_in } +bool ObjectTypeDB::get_setter_and_type_for_property(const StringName& p_class, const StringName& p_prop, StringName& r_class, StringName& r_setter) { + + TypeInfo *type=types.getptr(p_class); + TypeInfo *check=type; + while(check) { + + if (check->property_setget.has(p_prop)) { + r_class=check->name; + r_setter=check->property_setget[p_prop].setter; + return true; + } + + check=check->inherits_ptr; + } + + return false; + +} + #ifdef DEBUG_METHODS_ENABLED MethodBind* ObjectTypeDB::bind_methodfi(uint32_t p_flags, MethodBind *p_bind , const MethodDefinition &method_name, const Variant **p_defs, int p_defcount) { StringName mdname=method_name.name; diff --git a/core/object_type_db.h b/core/object_type_db.h index caa5baddd5..bfa0f921e5 100644 --- a/core/object_type_db.h +++ b/core/object_type_db.h @@ -475,7 +475,9 @@ public: static void get_integer_constant_list(const StringName& p_type, List<String> *p_constants, bool p_no_inheritance=false); static int get_integer_constant(const StringName& p_type, const StringName &p_name, bool *p_success=NULL); static StringName get_category(const StringName& p_node); - + + static bool get_setter_and_type_for_property(const StringName& p_class, const StringName& p_prop, StringName& r_class, StringName& r_setter); + static void set_type_enabled(StringName p_type,bool p_enable); static bool is_type_enabled(StringName p_type); diff --git a/core/ustring.cpp b/core/ustring.cpp index 3cfc1e4a3c..32ef1eb5ff 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -3048,6 +3048,38 @@ bool String::is_valid_identifier() const { //kind of poor should be rewritten properly +String String::world_wrap(int p_chars_per_line) const { + + int from=0; + int last_space=0; + String ret; + for(int i=0;i<length();i++) { + if (i-from>=p_chars_per_line) { + if (last_space==-1) { + ret+=substr(from,i-from+1)+"\n"; + from=i+1; + } else { + ret+=substr(from,last_space-from)+"\n"; + i=last_space; + from=i+1; + } + last_space=-1; + } else if (operator[](i)==' ' || operator[](i)=='\t') { + last_space=i; + } else if (operator[](i)=='\n') { + ret+=substr(from,i-from); + from=i+1; + last_space=-1; + } + } + + if (from<length()) { + ret+=substr(from,length()); + } + + return ret; +} + String String::c_unescape() const { String escaped=*this; diff --git a/core/ustring.h b/core/ustring.h index 1000c1cc8a..fa25a07eb0 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -209,6 +209,7 @@ public: String xml_unescape() const; String c_escape() const; String c_unescape() const; + String world_wrap(int p_chars_per_line) const; String percent_encode() const; String percent_decode() const; |