RNA/UI - Reset Settings to Default Values
Added a new operator for properties which resets RNA-based settings to their 'default' values, as defined in RNA. This currently only works for floats, ints, enums, and booleans (strings and pointers still need to be implemented). The current extensions to the RNA API that I've made here seem a bit excessive, and can be toned down if necessary. In short, I've just added accessor functions for the default-values of the property definitions. For this to be really useful, many properties in RNA will need to get defaults defined, since the current defaults for quite a few properties tested were less than ideal.
This commit is contained in:
@@ -1276,6 +1276,45 @@ void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int inde
|
||||
}
|
||||
}
|
||||
|
||||
int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
|
||||
return bprop->defaultvalue;
|
||||
}
|
||||
|
||||
void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
|
||||
{
|
||||
BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
|
||||
|
||||
if(prop->arraydimension == 0)
|
||||
values[0]= bprop->defaultvalue;
|
||||
else if(bprop->defaultarray)
|
||||
memcpy(values, bprop->defaultarray, sizeof(int)*prop->totarraylength);
|
||||
else
|
||||
memset(values, 0, sizeof(int)*prop->totarraylength);
|
||||
}
|
||||
|
||||
int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
{
|
||||
int tmp[RNA_MAX_ARRAY_LENGTH];
|
||||
int len= rna_ensure_property_array_length(ptr, prop);
|
||||
|
||||
if(len <= RNA_MAX_ARRAY_LENGTH) {
|
||||
RNA_property_boolean_get_default_array(ptr, prop, tmp);
|
||||
return tmp[index];
|
||||
}
|
||||
else {
|
||||
int *tmparray, value;
|
||||
|
||||
tmparray= MEM_callocN(sizeof(int)*len, "RNA_property_boolean_get_default_index");
|
||||
RNA_property_boolean_get_default_array(ptr, prop, tmparray);
|
||||
value= tmparray[index];
|
||||
MEM_freeN(tmparray);
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
|
||||
@@ -1404,6 +1443,45 @@ void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, i
|
||||
}
|
||||
}
|
||||
|
||||
int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
|
||||
return iprop->defaultvalue;
|
||||
}
|
||||
|
||||
void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
|
||||
{
|
||||
IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
|
||||
|
||||
if(prop->arraydimension == 0)
|
||||
values[0]= iprop->defaultvalue;
|
||||
else if(iprop->defaultarray)
|
||||
memcpy(values, iprop->defaultarray, sizeof(int)*prop->totarraylength);
|
||||
else
|
||||
memset(values, 0, sizeof(int)*prop->totarraylength);
|
||||
}
|
||||
|
||||
int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
{
|
||||
int tmp[RNA_MAX_ARRAY_LENGTH];
|
||||
int len= rna_ensure_property_array_length(ptr, prop);
|
||||
|
||||
if(len <= RNA_MAX_ARRAY_LENGTH) {
|
||||
RNA_property_int_get_default_array(ptr, prop, tmp);
|
||||
return tmp[index];
|
||||
}
|
||||
else {
|
||||
int *tmparray, value;
|
||||
|
||||
tmparray= MEM_callocN(sizeof(int)*len, "RNA_property_int_get_default_index");
|
||||
RNA_property_int_get_default_array(ptr, prop, tmparray);
|
||||
value= tmparray[index];
|
||||
MEM_freeN(tmparray);
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
|
||||
@@ -1559,6 +1637,45 @@ void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index,
|
||||
}
|
||||
}
|
||||
|
||||
float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
|
||||
return fprop->defaultvalue;
|
||||
}
|
||||
|
||||
void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
|
||||
{
|
||||
FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
|
||||
|
||||
if(prop->arraydimension == 0)
|
||||
values[0]= fprop->defaultvalue;
|
||||
else if(fprop->defaultarray)
|
||||
memcpy(values, fprop->defaultarray, sizeof(float)*prop->totarraylength);
|
||||
else
|
||||
memset(values, 0, sizeof(float)*prop->totarraylength);
|
||||
}
|
||||
|
||||
float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
{
|
||||
float tmp[RNA_MAX_ARRAY_LENGTH];
|
||||
int len= rna_ensure_property_array_length(ptr, prop);
|
||||
|
||||
if(len <= RNA_MAX_ARRAY_LENGTH) {
|
||||
RNA_property_float_get_default_array(ptr, prop, tmp);
|
||||
return tmp[index];
|
||||
}
|
||||
else {
|
||||
float *tmparray, value;
|
||||
|
||||
tmparray= MEM_callocN(sizeof(float)*len, "RNA_property_float_get_default_index");
|
||||
RNA_property_float_get_default_array(ptr, prop, tmparray);
|
||||
value= tmparray[index];
|
||||
MEM_freeN(tmparray);
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value)
|
||||
{
|
||||
StringPropertyRNA *sprop= (StringPropertyRNA*)prop;
|
||||
@@ -1637,7 +1754,6 @@ int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
|
||||
return eprop->defaultvalue;
|
||||
}
|
||||
|
||||
|
||||
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
|
||||
{
|
||||
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
|
||||
@@ -1660,6 +1776,13 @@ void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
|
||||
}
|
||||
}
|
||||
|
||||
int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
|
||||
return eprop->defaultvalue;
|
||||
}
|
||||
|
||||
|
||||
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop;
|
||||
|
||||
Reference in New Issue
Block a user