Blender
V3.3
|
#include <Python.h>
#include <stddef.h>
#include "MEM_guardedalloc.h"
#include "BLI_bitmap.h"
#include "BLI_utildefines.h"
#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "DNA_ID.h"
#include "DNA_key_types.h"
#include "DNA_object_types.h"
#include "WM_api.h"
#include "WM_types.h"
#include "bpy_capi_utils.h"
#include "bpy_rna_id_collection.h"
#include "../generic/py_capi_rna.h"
#include "../generic/py_capi_utils.h"
#include "../generic/python_utildefines.h"
#include "RNA_access.h"
#include "RNA_enum_types.h"
#include "RNA_types.h"
#include "bpy_rna.h"
Go to the source code of this file.
Classes | |
struct | IDUserMapData |
Typedefs | |
typedef struct IDUserMapData | IDUserMapData |
Functions | |
static int | id_code_as_index (const short idcode) |
static bool | id_check_type (const ID *id, const BLI_bitmap *types_bitmap) |
static int | foreach_libblock_id_user_map_callback (LibraryIDLinkCallbackData *cb_data) |
PyDoc_STRVAR (bpy_user_map_doc, ".. method:: user_map(subset, key_types, value_types)\n" "\n" " Returns a mapping of all ID data-blocks in current ``bpy.data`` to a set of all " "datablocks using them.\n" "\n" " For list of valid set members for key_types & value_types, see: " ":class:`bpy.types.KeyingSetPath.id_type`.\n" "\n" " :arg subset: When passed, only these data-blocks and their users will be " "included as keys/values in the map.\n" " :type subset: sequence\n" " :arg key_types: Filter the keys mapped by ID types.\n" " :type key_types: set of strings\n" " :arg value_types: Filter the values in the set by ID types.\n" " :type value_types: set of strings\n" " :return: dictionary of :class:`bpy.types.ID` instances, with sets of ID's as " "their values.\n" " :rtype: dict\n") | |
static PyObject * | bpy_user_map (PyObject *UNUSED(self), PyObject *args, PyObject *kwds) |
PyDoc_STRVAR (bpy_batch_remove_doc, ".. method:: batch_remove(ids)\n" "\n" " Remove (delete) several IDs at once.\n" "\n" " WARNING: Considered experimental feature currently.\n" "\n" " Note that this function is quicker than individual calls to :func:`remove()` " "(from :class:`bpy.types.BlendData`\n" " ID collections), but less safe/versatile (it can break Blender, e.g. by removing " "all scenes...).\n" "\n" " :arg ids: Iterables of IDs (types can be mixed).\n" " :type subset: sequence\n") | |
static PyObject * | bpy_batch_remove (PyObject *UNUSED(self), PyObject *args, PyObject *kwds) |
PyDoc_STRVAR (bpy_orphans_purge_doc, ".. method:: orphans_purge()\n" "\n" " Remove (delete) all IDs with no user.\n" "\n" " :arg do_local_ids: Include unused local IDs in the deletion, defaults to True\n" " :type do_local_ids: bool, optional\n" " :arg do_linked_ids: Include unused linked IDs in the deletion, defaults to True\n" " :type do_linked_ids: bool, optional\n" " :arg do_recursive: Recursively check for unused IDs, ensuring no orphaned one " "remain after a single run of that function, defaults to False\n" " :type do_recursive: bool, optional\n" " :return: The number of deleted IDs.\n") | |
static PyObject * | bpy_orphans_purge (PyObject *UNUSED(self), PyObject *args, PyObject *kwds) |
Variables | |
PyMethodDef | BPY_rna_id_collection_user_map_method_def |
PyMethodDef | BPY_rna_id_collection_batch_remove_method_def |
PyMethodDef | BPY_rna_id_collection_orphans_purge_method_def |
This file adds some helpers related to ID/Main handling, that cannot fit well in RNA itself.
Definition in file bpy_rna_id_collection.c.
typedef struct IDUserMapData IDUserMapData |
|
static |
Definition at line 288 of file bpy_rna_id_collection.c.
References BKE_id_multi_tagged_delete(), BKE_main_id_tag_all(), PointerRNA::data, error(), G_MAIN, id, LIB_TAG_DOIT, NC_WINDOW, NULL, BPy_StructRNA::ptr, pyrna_id_FromPyObject(), ret, and WM_main_add_notifier().
|
static |
Definition at line 364 of file bpy_rna_id_collection.c.
References BKE_id_multi_tagged_delete(), BKE_lib_query_unused_ids_tag(), PointerRNA::data, G_MAIN, INDEX_ID_MAX, INDEX_ID_NULL, LIB_TAG_DOIT, NC_WINDOW, NULL, BPy_StructRNA::ptr, PyC_ParseBool(), and WM_main_add_notifier().
|
static |
Definition at line 138 of file bpy_rna_id_collection.c.
References BKE_library_foreach_ID_link(), PointerRNA::data, error(), foreach_libblock_id_user_map_callback(), FOREACH_MAIN_LISTBASE_BEGIN, FOREACH_MAIN_LISTBASE_ID_BEGIN, FOREACH_MAIN_LISTBASE_ID_END, G_MAIN, id, id_check_type(), IDUserMapData::id_curr, IDWALK_CB_NOP, IDUserMapData::is_subset, MEM_freeN, NULL, BPy_StructRNA::ptr, IDUserMapData::py_id_curr, pyrna_enum_bitmap_from_set(), pyrna_id_CreatePyObject(), ret, rna_enum_id_type_items, IDUserMapData::types_bitmap, and IDUserMapData::user_map.
|
static |
Definition at line 68 of file bpy_rna_id_collection.c.
References LibraryIDLinkCallbackData::cb_flag, data, id_check_type(), LibraryIDLinkCallbackData::id_pointer, IDWALK_CB_EMBEDDED, IDWALK_CB_LOOPBACK, IDWALK_RET_NOP, NULL, pyrna_id_CreatePyObject(), and LibraryIDLinkCallbackData::user_data.
Referenced by bpy_user_map().
|
static |
Definition at line 63 of file bpy_rna_id_collection.c.
References BLI_BITMAP_TEST_BOOL, GS, id, id_code_as_index(), and ID::name.
Referenced by bpy_user_map(), and foreach_libblock_id_user_map_callback().
|
static |
Definition at line 58 of file bpy_rna_id_collection.c.
Referenced by id_check_type().
PyDoc_STRVAR | ( | bpy_batch_remove_doc | , |
".. method:: | batch_removeids)\n" "\n" " Remove (delete) several IDs at once.\n" "\n" " WARNING: Considered experimental feature currently.\n" "\n" " Note that this function is quicker than individual calls to :func:`remove()` " "(from :class:`bpy.types.BlendData`\n" " ID collections, | ||
but less safe/versatile(it can break Blender, e.g. by removing " "all scenes...).\n" "\n" " :arg ids:Iterables of IDs(types can be mixed).\n" " :type subset:sequence\n" | |||
) |
PyDoc_STRVAR | ( | bpy_orphans_purge_doc | , |
".. method:: orphans_purge()\n" "\n" " Remove (delete) all IDs with no user.\n" "\n" " :arg do_local_ids: Include unused local IDs in the | deletion, | ||
defaults to True\n" " :type do_local_ids:bool | , | ||
optional\n" " :arg do_linked_ids:Include unused linked IDs in the | deletion, | ||
defaults to True\n" " :type do_linked_ids:bool | , | ||
optional\n" " :arg do_recursive:Recursively check for unused | IDs, | ||
ensuring no orphaned one " "remain after a single run of that | function, | ||
defaults to False\n" " :type do_recursive:bool | , | ||
optional\n" " :return:The number of deleted IDs.\n" | |||
) |
PyDoc_STRVAR | ( | bpy_user_map_doc | , |
".. method:: user_map(subset, key_types, value_types)\n" "\n" " Returns a mapping of all ID data-blocks in current ``bpy.data`` to a set of all " "datablocks using them.\n" "\n" " For list of valid set members for key_types & | value_types, | ||
see:" ":class:`bpy.types.KeyingSetPath.id_type`.\n" "\n" " :arg subset:When | passed, | ||
only these data-blocks and their users will be " "included as keys/values in the map.\n" " :type subset:sequence\n" " :arg key_types:Filter the keys mapped by ID types.\n" " :type key_types:set of strings\n" " :arg value_types:Filter the values in the set by ID types.\n" " :type value_types:set of strings\n" " :return:dictionary of :class:`bpy.types.ID` | instances, | ||
with sets of ID 's as " "their values.\n" " :rtype:dict\n" | |||
) |
PyMethodDef BPY_rna_id_collection_batch_remove_method_def |
Definition at line 422 of file bpy_rna_id_collection.c.
Referenced by BPY_rna_types_extend_capi().
PyMethodDef BPY_rna_id_collection_orphans_purge_method_def |
Definition at line 428 of file bpy_rna_id_collection.c.
Referenced by BPY_rna_types_extend_capi().
PyMethodDef BPY_rna_id_collection_user_map_method_def |
Definition at line 416 of file bpy_rna_id_collection.c.
Referenced by BPY_rna_types_extend_capi().