Fix T88792: WindowManager.clipboard missing in Python API docs
Support RNA types using the Py/C-API PyGetSetDef defined properties. Currently `WindowManager.clipboard` is the only instance of this.
This commit is contained in:
@@ -1474,6 +1474,12 @@ def pyrna2sphinx(basepath):
|
|||||||
pyprop2sphinx(" ", fw, identifier, py_prop)
|
pyprop2sphinx(" ", fw, identifier, py_prop)
|
||||||
del py_properties, py_prop
|
del py_properties, py_prop
|
||||||
|
|
||||||
|
# C/Python attributes: `GetSetDescriptorType`.
|
||||||
|
key = descr = None
|
||||||
|
for key, descr in sorted(struct.get_py_c_properties_getset()):
|
||||||
|
py_descr2sphinx(" ", fw, descr, "bpy.types", struct_id, key)
|
||||||
|
del key, descr
|
||||||
|
|
||||||
for func in struct.functions:
|
for func in struct.functions:
|
||||||
args_str = ", ".join(prop.get_arg_default(force=False) for prop in func.args)
|
args_str = ", ".join(prop.get_arg_default(force=False) for prop in func.args)
|
||||||
|
|
||||||
|
|||||||
@@ -206,6 +206,14 @@ class InfoStructRNA:
|
|||||||
functions.append((identifier, attr))
|
functions.append((identifier, attr))
|
||||||
return functions
|
return functions
|
||||||
|
|
||||||
|
def get_py_c_properties_getset(self):
|
||||||
|
import types
|
||||||
|
properties_getset = []
|
||||||
|
for identifier, descr in self.py_class.__dict__.items():
|
||||||
|
if type(descr) == types.GetSetDescriptorType:
|
||||||
|
properties_getset.append((identifier, descr))
|
||||||
|
return properties_getset
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
||||||
txt = ""
|
txt = ""
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ static struct PyMethodDef pyrna_text_methods[] = {
|
|||||||
* and creating the buffer, causing writes past the allocated length.
|
* and creating the buffer, causing writes past the allocated length.
|
||||||
* \{ */
|
* \{ */
|
||||||
|
|
||||||
|
PyDoc_STRVAR(pyrna_WindowManager_clipboard_doc, "Clipboard text storage.\n\n:type: string");
|
||||||
static PyObject *pyrna_WindowManager_clipboard_get(PyObject *UNUSED(self), void *UNUSED(flag))
|
static PyObject *pyrna_WindowManager_clipboard_get(PyObject *UNUSED(self), void *UNUSED(flag))
|
||||||
{
|
{
|
||||||
int text_len = 0;
|
int text_len = 0;
|
||||||
@@ -154,7 +155,7 @@ static struct PyGetSetDef pyrna_windowmanager_getset[] = {
|
|||||||
{"clipboard",
|
{"clipboard",
|
||||||
pyrna_WindowManager_clipboard_get,
|
pyrna_WindowManager_clipboard_get,
|
||||||
pyrna_WindowManager_clipboard_set,
|
pyrna_WindowManager_clipboard_set,
|
||||||
NULL,
|
pyrna_WindowManager_clipboard_doc,
|
||||||
NULL},
|
NULL},
|
||||||
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
|
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user