WorkSpace: UI filtering for add-ons
Allows for each workspace to have it's own add-ons on display. Filtering for: Panels, Menus, Keymaps & Manipulators. Automatically applies to add-ons at the moment. Access from workspace, toggled off by default once enabled, add-ons can be white-listed. See D3076
This commit is contained in:
@@ -376,6 +376,9 @@ void BPy_init_modules(void)
|
||||
PyModule_AddObject(mod, meth_bpy_register_class.ml_name, (PyObject *)PyCFunction_New(&meth_bpy_register_class, NULL));
|
||||
PyModule_AddObject(mod, meth_bpy_unregister_class.ml_name, (PyObject *)PyCFunction_New(&meth_bpy_unregister_class, NULL));
|
||||
|
||||
PyModule_AddObject(mod, meth_bpy_owner_id_get.ml_name, (PyObject *)PyCFunction_New(&meth_bpy_owner_id_get, NULL));
|
||||
PyModule_AddObject(mod, meth_bpy_owner_id_set.ml_name, (PyObject *)PyCFunction_New(&meth_bpy_owner_id_set, NULL));
|
||||
|
||||
/* add our own modules dir, this is a python package */
|
||||
bpy_package_py = bpy_import_test("bpy");
|
||||
}
|
||||
|
||||
@@ -8257,6 +8257,43 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/* Access to 'owner_id' internal global. */
|
||||
|
||||
static PyObject *pyrna_bl_owner_id_get(PyObject *UNUSED(self))
|
||||
{
|
||||
const char *name = RNA_struct_state_owner_get();
|
||||
if (name) {
|
||||
return PyUnicode_FromString(name);
|
||||
}
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *pyrna_bl_owner_id_set(PyObject *UNUSED(self), PyObject *value)
|
||||
{
|
||||
const char *name;
|
||||
if (value == Py_None) {
|
||||
name = NULL;
|
||||
}
|
||||
else if (PyUnicode_Check(value)) {
|
||||
name = _PyUnicode_AsString(value);
|
||||
}
|
||||
else {
|
||||
PyErr_Format(PyExc_ValueError,
|
||||
"owner_set(...): "
|
||||
"expected None or a string, not '%.200s'", Py_TYPE(value)->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
RNA_struct_state_owner_set(name);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyMethodDef meth_bpy_owner_id_get = {
|
||||
"_bl_owner_id_get", (PyCFunction)pyrna_bl_owner_id_get, METH_NOARGS, NULL,
|
||||
};
|
||||
PyMethodDef meth_bpy_owner_id_set = {
|
||||
"_bl_owner_id_set", (PyCFunction)pyrna_bl_owner_id_set, METH_O, NULL,
|
||||
};
|
||||
|
||||
/* currently this is fairly limited, we would need to make some way to split up
|
||||
* pyrna_callback_classmethod_... if we want more than one callback per type */
|
||||
typedef struct BPyRNA_CallBack {
|
||||
|
||||
@@ -225,4 +225,8 @@ int pyrna_prop_validity_check(BPy_PropertyRNA *self);
|
||||
extern PyMethodDef meth_bpy_register_class;
|
||||
extern PyMethodDef meth_bpy_unregister_class;
|
||||
|
||||
/* bpy.utils._bl_owner_(get/set) */
|
||||
extern PyMethodDef meth_bpy_owner_id_set;
|
||||
extern PyMethodDef meth_bpy_owner_id_get;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user