From 9f242ed6e553df947c3696be5f23cd06649deab0 Mon Sep 17 00:00:00 2001 From: Franklin Sobrinho Date: Tue, 16 Aug 2016 17:10:53 -0300 Subject: [PATCH 1/2] Added add_property_info function to Globals and EditorSettings classes --- core/globals.cpp | 20 ++++++++++++++++++++ core/globals.h | 2 ++ tools/editor/editor_settings.cpp | 21 +++++++++++++++++++++ tools/editor/editor_settings.h | 2 ++ 4 files changed, 45 insertions(+) diff --git a/core/globals.cpp b/core/globals.cpp index e760bc00d44..3f0edd68f44 100644 --- a/core/globals.cpp +++ b/core/globals.cpp @@ -1375,6 +1375,25 @@ Vector Globals::get_optimizer_presets() const { } +void Globals::_add_property_info_bind(const Dictionary& p_info) { + + ERR_FAIL_COND(!p_info.has("name")); + ERR_FAIL_COND(!p_info.has("type")); + + PropertyInfo pinfo; + pinfo.name = p_info["name"]; + ERR_FAIL_COND(!props.has(pinfo.name)); + pinfo.type = Variant::Type(p_info["type"].operator int()); + ERR_FAIL_INDEX(pinfo.type, Variant::VARIANT_MAX); + + if (p_info.has("hint")) + pinfo.hint = PropertyHint(p_info["hint"].operator int()); + if (p_info.has("hint_string")) + pinfo.hint_string = p_info["hint_string"]; + + set_custom_property_info(pinfo.name, pinfo); +} + void Globals::set_custom_property_info(const String& p_prop,const PropertyInfo& p_info) { ERR_FAIL_COND(!props.has(p_prop)); @@ -1399,6 +1418,7 @@ void Globals::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_order","name"),&Globals::get_order); ObjectTypeDB::bind_method(_MD("set_persisting","name","enable"),&Globals::set_persisting); ObjectTypeDB::bind_method(_MD("is_persisting","name"),&Globals::is_persisting); + ObjectTypeDB::bind_method(_MD("add_property_info", "hint"),&Globals::_add_property_info_bind); ObjectTypeDB::bind_method(_MD("clear","name"),&Globals::clear); ObjectTypeDB::bind_method(_MD("localize_path","path"),&Globals::localize_path); ObjectTypeDB::bind_method(_MD("globalize_path","path"),&Globals::globalize_path); diff --git a/core/globals.h b/core/globals.h index 68bb859ace1..f24b2daf798 100644 --- a/core/globals.h +++ b/core/globals.h @@ -96,6 +96,8 @@ protected: bool _load_resource_pack(const String& p_pack); + void _add_property_info_bind(const Dictionary& p_info); + protected: static void _bind_methods(); diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 582462aa194..d77234bece5 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -731,6 +731,25 @@ void EditorSettings::notify_changes() { } +void EditorSettings::_add_property_info_bind(const Dictionary& p_info) { + + ERR_FAIL_COND(!p_info.has("name")); + ERR_FAIL_COND(!p_info.has("type")); + + PropertyInfo pinfo; + pinfo.name = p_info["name"]; + ERR_FAIL_COND(!props.has(pinfo.name)); + pinfo.type = Variant::Type(p_info["type"].operator int()); + ERR_FAIL_INDEX(pinfo.type, Variant::VARIANT_MAX); + + if (p_info.has("hint")) + pinfo.hint = PropertyHint(p_info["hint"].operator int()); + if (p_info.has("hint_string")) + pinfo.hint_string = p_info["hint_string"]; + + add_property_hint(pinfo); +} + void EditorSettings::add_property_hint(const PropertyInfo& p_hint) { _THREAD_SAFE_METHOD_ @@ -1001,6 +1020,8 @@ void EditorSettings::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_settings_path"),&EditorSettings::get_settings_path); ObjectTypeDB::bind_method(_MD("get_project_settings_path"),&EditorSettings::get_project_settings_path); + ObjectTypeDB::bind_method(_MD("add_property_info", "info"),&EditorSettings::_add_property_info_bind); + ObjectTypeDB::bind_method(_MD("set_favorite_dirs","dirs"),&EditorSettings::set_favorite_dirs); ObjectTypeDB::bind_method(_MD("get_favorite_dirs"),&EditorSettings::get_favorite_dirs); diff --git a/tools/editor/editor_settings.h b/tools/editor/editor_settings.h index 937956a3662..2a7d3bb4f02 100644 --- a/tools/editor/editor_settings.h +++ b/tools/editor/editor_settings.h @@ -104,6 +104,8 @@ private: Map > shortcuts; + void _add_property_info_bind(const Dictionary& p_info); + protected: static void _bind_methods(); From 038e99e1074111c31d9d73d2d389f73078dcd07e Mon Sep 17 00:00:00 2001 From: Franklin Sobrinho Date: Tue, 16 Aug 2016 17:11:30 -0300 Subject: [PATCH 2/2] Update Globals and EditorSettings docs --- doc/base/classes.xml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 4b6f5f510df..3866a6af9cc 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -11738,6 +11738,24 @@ [/codeblock] + + + + + Add a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see TYPE_* in [@Global Scope]), and optionally hint:[int](see PROPERTY_HINT_* in [@Global Scope]), hint_string:[String]. + Example:[codeblock] + editor_settings.set("category/property_name", 0) + + var property_info = { + "name": "category/property_name", + "type": TYPE_INT, + "hint": PROPERTY_HINT_ENUM, + "hint_string": "one,two,three" + } + + editor_settings.add_property_info(property_info)[/codeblock] + + @@ -13754,6 +13772,26 @@ Contains global variables accessible from everywhere. Use the normal [Object] API, such as "Globals.get(variable)", "Globals.set(variable,value)" or "Globals.has(variable)" to access them. Variables stored in engine.cfg are also loaded into globals, making this object very useful for reading custom game configuration options. + + + + + Add a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see TYPE_* in [@Global Scope]), and optionally hint:[int](see PROPERTY_HINT_* in [@Global Scope]), hint_string:[String]. + Example: + [codeblock] + Globals.set("category/property_name", 0) + + var property_info = { + "name": "category/property_name", + "type": TYPE_INT, + "hint": PROPERTY_HINT_ENUM, + "hint_string": "one,two,three" + } + + Globals.add_property_info(property_info) + [/codeblock] + +