Merge pull request #6187 from TheHX/pr-pinfo-function

Added add_property_info function to Globals and EditorSettings classes
This commit is contained in:
Rémi Verschelde 2016-08-27 22:04:50 +02:00 committed by GitHub
commit c29c70275e
5 changed files with 83 additions and 0 deletions

View file

@ -1375,6 +1375,25 @@ Vector<String> 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) { void Globals::set_custom_property_info(const String& p_prop,const PropertyInfo& p_info) {
ERR_FAIL_COND(!props.has(p_prop)); 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("get_order","name"),&Globals::get_order);
ObjectTypeDB::bind_method(_MD("set_persisting","name","enable"),&Globals::set_persisting); 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("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("clear","name"),&Globals::clear);
ObjectTypeDB::bind_method(_MD("localize_path","path"),&Globals::localize_path); ObjectTypeDB::bind_method(_MD("localize_path","path"),&Globals::localize_path);
ObjectTypeDB::bind_method(_MD("globalize_path","path"),&Globals::globalize_path); ObjectTypeDB::bind_method(_MD("globalize_path","path"),&Globals::globalize_path);

View file

@ -96,6 +96,8 @@ protected:
bool _load_resource_pack(const String& p_pack); bool _load_resource_pack(const String& p_pack);
void _add_property_info_bind(const Dictionary& p_info);
protected: protected:
static void _bind_methods(); static void _bind_methods();

View file

@ -11738,6 +11738,24 @@
[/codeblock] [/codeblock]
</description> </description>
<methods> <methods>
<method name="add_property_info">
<argument index="0" name="info" type="Dictionary">
</argument>
<description>
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]
</description>
</method>
<method name="erase"> <method name="erase">
<argument index="0" name="property" type="String"> <argument index="0" name="property" type="String">
</argument> </argument>
@ -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. 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.
</description> </description>
<methods> <methods>
<method name="add_property_info">
<argument index="0" name="hint" type="Dictionary">
</argument>
<description>
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]
</description>
</method>
<method name="clear"> <method name="clear">
<argument index="0" name="name" type="String"> <argument index="0" name="name" type="String">
</argument> </argument>

View file

@ -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) { void EditorSettings::add_property_hint(const PropertyInfo& p_hint) {
_THREAD_SAFE_METHOD_ _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_settings_path"),&EditorSettings::get_settings_path);
ObjectTypeDB::bind_method(_MD("get_project_settings_path"),&EditorSettings::get_project_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("set_favorite_dirs","dirs"),&EditorSettings::set_favorite_dirs);
ObjectTypeDB::bind_method(_MD("get_favorite_dirs"),&EditorSettings::get_favorite_dirs); ObjectTypeDB::bind_method(_MD("get_favorite_dirs"),&EditorSettings::get_favorite_dirs);

View file

@ -104,6 +104,8 @@ private:
Map<String,Ref<ShortCut> > shortcuts; Map<String,Ref<ShortCut> > shortcuts;
void _add_property_info_bind(const Dictionary& p_info);
protected: protected:
static void _bind_methods(); static void _bind_methods();