BPY RNA: add is_property_readonly()
.
This property may be defined dynamically, so mere access to static flag value through `bl_rna.properties[...].is_readonly` is not enough.
This commit is contained in:
@@ -3184,6 +3184,34 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA *self, PyObject *
|
|||||||
return PyBool_FromLong(RNA_property_flag(prop) & PROP_HIDDEN);
|
return PyBool_FromLong(RNA_property_flag(prop) & PROP_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(pyrna_struct_is_property_readonly_doc,
|
||||||
|
".. method:: is_property_readonly(property)\n"
|
||||||
|
"\n"
|
||||||
|
" Check if a property is readonly.\n"
|
||||||
|
"\n"
|
||||||
|
" :return: True when the property is readonly (not writable).\n"
|
||||||
|
" :rtype: boolean\n"
|
||||||
|
);
|
||||||
|
static PyObject *pyrna_struct_is_property_readonly(BPy_StructRNA *self, PyObject *args)
|
||||||
|
{
|
||||||
|
PropertyRNA *prop;
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
PYRNA_STRUCT_CHECK_OBJ(self);
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, "s:is_property_readonly", &name))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if ((prop = RNA_struct_find_property(&self->ptr, name)) == NULL) {
|
||||||
|
PyErr_Format(PyExc_TypeError,
|
||||||
|
"%.200s.is_property_readonly(\"%.200s\") not found",
|
||||||
|
RNA_struct_identifier(self->ptr.type), name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyBool_FromLong(!RNA_property_editable(&self->ptr, prop));
|
||||||
|
}
|
||||||
|
|
||||||
PyDoc_STRVAR(pyrna_struct_path_resolve_doc,
|
PyDoc_STRVAR(pyrna_struct_path_resolve_doc,
|
||||||
".. method:: path_resolve(path, coerce=True)\n"
|
".. method:: path_resolve(path, coerce=True)\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -4676,6 +4704,7 @@ static struct PyMethodDef pyrna_struct_methods[] = {
|
|||||||
{"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, pyrna_struct_is_property_set_doc},
|
{"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, pyrna_struct_is_property_set_doc},
|
||||||
{"property_unset", (PyCFunction)pyrna_struct_property_unset, METH_VARARGS, pyrna_struct_property_unset_doc},
|
{"property_unset", (PyCFunction)pyrna_struct_property_unset, METH_VARARGS, pyrna_struct_property_unset_doc},
|
||||||
{"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, pyrna_struct_is_property_hidden_doc},
|
{"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, pyrna_struct_is_property_hidden_doc},
|
||||||
|
{"is_property_readonly", (PyCFunction)pyrna_struct_is_property_readonly, METH_VARARGS, pyrna_struct_is_property_readonly_doc},
|
||||||
{"path_resolve", (PyCFunction)pyrna_struct_path_resolve, METH_VARARGS, pyrna_struct_path_resolve_doc},
|
{"path_resolve", (PyCFunction)pyrna_struct_path_resolve, METH_VARARGS, pyrna_struct_path_resolve_doc},
|
||||||
{"path_from_id", (PyCFunction)pyrna_struct_path_from_id, METH_VARARGS, pyrna_struct_path_from_id_doc},
|
{"path_from_id", (PyCFunction)pyrna_struct_path_from_id, METH_VARARGS, pyrna_struct_path_from_id_doc},
|
||||||
{"type_recast", (PyCFunction)pyrna_struct_type_recast, METH_NOARGS, pyrna_struct_type_recast_doc},
|
{"type_recast", (PyCFunction)pyrna_struct_type_recast, METH_NOARGS, pyrna_struct_type_recast_doc},
|
||||||
|
Reference in New Issue
Block a user