132 if (!ctx || ctx->
used) {
160 if (!ctx || ctx->
used) {
217 return C->data.py_init;
221 C->data.py_init = value;
226 return C->data.py_context;
230 return C->data.py_context_orig;
238 C->data.py_context = value;
239 C->data.py_context_orig = value;
273 "PyContext '%s' is a '%s', expected a '%s'",
296 int done = 0, recursion =
C->data.recursion;
322 if (done != 1 && recursion < 1 && C->wm.store) {
323 C->data.recursion = 1;
334 C->data.recursion = 2;
338 done = -(-
ret | -done);
343 C->data.recursion = 3;
344 if (
area->type &&
area->type->context) {
347 done = -(-
ret | -done);
354 C->data.recursion = 4;
358 done = -(-
ret | -done);
363 C->data.recursion = recursion;
390 *pointer =
result.ptr.data;
430 for (ctx_object = ctx_object_list.
first; ctx_object; ctx_object = ctx_object->
next) {
466 "member '%s' is '%s', not '%s'",
510 memset(r_ptr, 0,
sizeof(*r_ptr));
511 memset(r_lb, 0,
sizeof(*r_lb));
522 if ((use_all ==
false) &&
STREQ(member,
"scene")) {
531 link->
data = (
void *)member;
542 const bool use_store,
553 memset(&lb, 0,
sizeof(lb));
556 char name[256], *nameptr;
569 if (name != nameptr) {
576 if (use_store &&
C->wm.store) {
579 for (entry =
C->wm.store->entries.first; entry; entry = entry->
next) {
630 return member[0] ==
'\0';
663 if (func(
C, &list)) {
691 return C->wm.manager;
696 return (
bool)
C->wm.manager->is_interface_locked;
743 return C->wm.gizmo_group;
748 return C->wm.manager ?
C->wm.manager->message_bus :
NULL;
754 return &(
C->wm.manager->reports);
764 return area->spacedata.first;
786 return area->spacedata.first;
795 return area->spacedata.first;
804 return area->spacedata.first;
813 return area->spacedata.first;
822 return area->spacedata.first;
831 return area->spacedata.first;
840 return area->spacedata.first;
849 return area->spacedata.first;
858 return area->spacedata.first;
867 return area->spacedata.first;
876 return area->spacedata.first;
885 return area->spacedata.first;
894 return area->spacedata.first;
903 return area->spacedata.first;
912 return area->spacedata.first;
921 return area->spacedata.first;
936 # define PYCTX_REGION_MEMBERS "region", "region_data"
937 # define PYCTX_AREA_MEMBERS "area", "space_data", PYCTX_REGION_MEMBERS
938 # define PYCTX_SCREEN_MEMBERS "screen", PYCTX_AREA_MEMBERS
939 # define PYCTX_WINDOW_MEMBERS "window", "scene", "workspace", PYCTX_SCREEN_MEMBERS
946 C->data.scene = win->
scene;
954 if (
C->data.py_context !=
NULL) {
962 C->wm.screen = screen;
967 if (
C->data.py_context !=
NULL) {
979 if (
C->data.py_context !=
NULL) {
987 C->wm.region = region;
990 if (
C->data.py_context !=
NULL) {
1003 C->wm.gizmo_group = gzgroup;
1008 C->wm.operator_poll_msg = msg;
1013 return IFACE_(
C->wm.operator_poll_msg);
1025 return C->data.main;
1030 C->data.main = bmain;
1041 return C->data.scene;
1084 return layer_collection;
1100 if (layer_collection) {
1115 switch (obedit->
type) {
1184 "mesh_edit",
"curve_edit",
"surface_edit",
"text_edit",
1185 "armature_edit",
"mball_edit",
"lattice_edit",
"posemode",
1186 "sculpt_mode",
"weightpaint",
"vertexpaint",
"imagepaint",
1187 "particlemode",
"objectmode",
"greasepencil_paint",
"greasepencil_edit",
1188 "greasepencil_sculpt",
"greasepencil_weight",
"greasepencil_vertex",
NULL,
1191 "Must have a string for each context mode")
1202 if (
C->data.py_context !=
NULL) {
@ CTX_DATA_TYPE_COLLECTION
@ CTX_MODE_WEIGHT_GPENCIL
@ CTX_MODE_VERTEX_GPENCIL
@ CTX_MODE_SCULPT_GPENCIL
const char * CTX_data_mode_string(const bContext *C)
int(* bContextDataCallback)(const bContext *C, const char *member, bContextDataResult *result)
struct LayerCollection * BKE_layer_collection_get_active(struct ViewLayer *view_layer)
struct ViewLayer * BKE_view_layer_default_view(const struct Scene *scene)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
bool BKE_view_layer_has_collection(struct ViewLayer *view_layer, const struct Collection *collection)
struct ViewLayer * BKE_view_layer_find(const struct Scene *scene, const char *layer_name)
struct Depsgraph * BKE_scene_get_depsgraph(const struct Scene *scene, const struct ViewLayer *view_layer)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
void BKE_scene_graph_evaluated_ensure(struct Depsgraph *depsgraph, struct Main *bmain)
void BKE_sound_init_main(struct Main *bmain)
struct WorkSpace * BKE_workspace_active_get(struct WorkSpaceInstanceHook *hook) GETTER_ATTRS
struct bScreen * BKE_workspace_active_screen_get(const struct WorkSpaceInstanceHook *hook) GETTER_ATTRS
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_rfindstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
int BLI_thread_is_main(void)
int BPY_context_member_get(struct bContext *C, const char *member, struct bContextDataResult *result)
#define BPY_context_dict_clear_members(C,...)
#define CLOG_WARN(clg_ref,...)
struct Depsgraph Depsgraph
void DEG_make_active(struct Depsgraph *depsgraph)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
#define RNA_PROP_BEGIN(sptr, itemptr, prop)
short CTX_data_type_get(bContextDataResult *result)
int CTX_data_get(const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb, short *r_type)
struct SpaceTopBar * CTX_wm_space_topbar(const bContext *C)
int CTX_data_visible_pose_bones(const bContext *C, ListBase *list)
void CTX_data_main_set(bContext *C, Main *bmain)
int CTX_data_selectable_objects(const bContext *C, ListBase *list)
ScrArea * CTX_wm_area(const bContext *C)
PointerRNA CTX_data_pointer_get(const bContext *C, const char *member)
bContext * CTX_copy(const bContext *C)
void CTX_store_set(bContext *C, bContextStore *store)
int CTX_data_visible_bones(const bContext *C, ListBase *list)
bool CTX_wm_interface_locked(const bContext *C)
BLI_STATIC_ASSERT(ARRAY_SIZE(data_mode_strings)==CTX_MODE_NUM+1, "Must have a string for each context mode") const
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
int ctx_data_list_count(const bContext *C, int(*func)(const bContext *, ListBase *))
struct SpaceInfo * CTX_wm_space_info(const bContext *C)
bGPDframe * CTX_data_active_gpencil_frame(const bContext *C)
void CTX_data_dir_set(bContextDataResult *result, const char **dir)
struct ARegion * CTX_wm_menu(const bContext *C)
PointerRNA CTX_data_pointer_get_type_silent(const bContext *C, const char *member, StructRNA *type)
struct SpaceNode * CTX_wm_space_node(const bContext *C)
struct SpaceProperties * CTX_wm_space_properties(const bContext *C)
void CTX_data_id_list_add(bContextDataResult *result, ID *id)
int CTX_data_selected_bones(const bContext *C, ListBase *list)
struct Object * CTX_data_edit_object(const bContext *C)
bool CTX_data_equals(const char *member, const char *str)
bool CTX_py_init_get(bContext *C)
int CTX_data_visible_objects(const bContext *C, ListBase *list)
const char * CTX_wm_operator_poll_msg_get(bContext *C)
void CTX_data_pointer_set(bContextDataResult *result, ID *id, StructRNA *type, void *data)
Depsgraph * CTX_data_depsgraph_on_load(const bContext *C)
int CTX_data_editable_objects(const bContext *C, ListBase *list)
Scene * CTX_data_scene(const bContext *C)
static eContextResult ctx_data_get(bContext *C, const char *member, bContextDataResult *result)
int CTX_data_selected_editable_bases(const bContext *C, ListBase *list)
int CTX_data_selected_objects(const bContext *C, ListBase *list)
bContextStore * CTX_store_add(ListBase *contexts, const char *name, const PointerRNA *ptr)
Collection * CTX_data_collection(const bContext *C)
struct Base * CTX_data_active_base(const bContext *C)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
void CTX_py_state_push(bContext *C, struct bContext_PyState *pystate, void *value)
bool CTX_data_dir(const char *member)
static void data_dir_add(ListBase *lb, const char *member, const bool use_all)
void CTX_data_id_pointer_set(bContextDataResult *result, ID *id)
static const char * data_mode_strings[]
void * CTX_py_dict_get(const bContext *C)
struct SpaceOutliner * CTX_wm_space_outliner(const bContext *C)
void * CTX_py_dict_get_orig(const bContext *C)
void CTX_wm_gizmo_group_set(bContext *C, struct wmGizmoGroup *gzgroup)
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
void CTX_wm_manager_set(bContext *C, wmWindowManager *wm)
bContext * CTX_create(void)
Depsgraph * CTX_data_expect_evaluated_depsgraph(const bContext *C)
void CTX_py_init_set(bContext *C, bool value)
int CTX_data_editable_gpencil_layers(const bContext *C, ListBase *list)
int CTX_data_selected_editable_bones(const bContext *C, ListBase *list)
struct Mask * CTX_data_edit_mask(const bContext *C)
struct SpaceSeq * CTX_wm_space_seq(const bContext *C)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
struct SpaceNla * CTX_wm_space_nla(const bContext *C)
int CTX_data_editable_bones(const bContext *C, ListBase *list)
struct SpaceSpreadsheet * CTX_wm_space_spreadsheet(const bContext *C)
bContextStore * CTX_store_copy(bContextStore *store)
void CTX_store_free(bContextStore *store)
int CTX_data_visible_bases(const bContext *C, ListBase *list)
void CTX_wm_operator_poll_msg_set(bContext *C, const char *msg)
static int ctx_data_pointer_verify(const bContext *C, const char *member, void **pointer)
struct MovieClip * CTX_data_edit_movieclip(const bContext *C)
Main * CTX_data_main(const bContext *C)
int CTX_data_editable_bases(const bContext *C, ListBase *list)
struct wmGizmoGroup * CTX_wm_gizmo_group(const bContext *C)
SpaceLink * CTX_wm_space_data(const bContext *C)
void CTX_free(bContext *C)
ListBase CTX_data_dir_get(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
bContextStore * CTX_store_add_all(ListBase *contexts, bContextStore *context)
ARegion * CTX_wm_region(const bContext *C)
struct EditBone * CTX_data_active_bone(const bContext *C)
void CTX_py_state_pop(bContext *C, struct bContext_PyState *pystate)
struct SpaceUserPref * CTX_wm_space_userpref(const bContext *C)
LayerCollection * CTX_data_layer_collection(const bContext *C)
void CTX_wm_screen_set(bContext *C, bScreen *screen)
void CTX_data_scene_set(bContext *C, Scene *scene)
int CTX_data_selected_ids(const bContext *C, ListBase *list)
ListBase CTX_data_dir_get_ex(const bContext *C, const bool use_store, const bool use_rna, const bool use_all)
struct SpaceGraph * CTX_wm_space_graph(const bContext *C)
bGPDlayer * CTX_data_active_gpencil_layer(const bContext *C)
struct Image * CTX_data_edit_image(const bContext *C)
static int ctx_data_collection_get(const bContext *C, const char *member, ListBase *list)
void * CTX_wm_region_data(const bContext *C)
void CTX_data_list_add(bContextDataResult *result, ID *id, StructRNA *type, void *data)
ViewLayer * CTX_data_view_layer(const bContext *C)
int CTX_data_selected_pose_bones(const bContext *C, ListBase *list)
void CTX_store_free_list(ListBase *contexts)
int CTX_data_visible_gpencil_layers(const bContext *C, ListBase *list)
enum eContextObjectMode CTX_data_mode_enum_ex(const Object *obedit, const Object *ob, const eObjectMode object_mode)
void CTX_wm_window_set(bContext *C, wmWindow *win)
void CTX_wm_menu_set(bContext *C, ARegion *menu)
View3D * CTX_wm_view3d(const bContext *C)
bGPdata * CTX_data_gpencil_data(const bContext *C)
static int ctx_data_base_collection_get(const bContext *C, const char *member, ListBase *list)
struct SpaceAction * CTX_wm_space_action(const bContext *C)
static void * ctx_data_pointer_get(const bContext *C, const char *member)
WorkSpace * CTX_wm_workspace(const bContext *C)
int CTX_data_selectable_bases(const bContext *C, ListBase *list)
struct ReportList * CTX_wm_reports(const bContext *C)
int CTX_data_selected_bases(const bContext *C, ListBase *list)
static void * ctx_wm_python_context_get(const bContext *C, const char *member, const StructRNA *member_type, void *fall_through)
struct wmMsgBus * CTX_wm_message_bus(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
struct SpaceText * CTX_wm_space_text(const bContext *C)
int CTX_data_selected_nodes(const bContext *C, ListBase *list)
RenderEngineType * CTX_data_engine_type(const bContext *C)
int CTX_data_selected_editable_objects(const bContext *C, ListBase *list)
ToolSettings * CTX_data_tool_settings(const bContext *C)
void CTX_wm_area_set(bContext *C, ScrArea *area)
void CTX_wm_region_set(bContext *C, ARegion *region)
struct CacheFile * CTX_data_edit_cachefile(const bContext *C)
int CTX_data_editable_gpencil_strokes(const bContext *C, ListBase *list)
struct SpaceImage * CTX_wm_space_image(const bContext *C)
ListBase CTX_data_collection_get(const bContext *C, const char *member)
int CTX_data_selected_pose_bones_from_active_object(const bContext *C, ListBase *list)
struct SpaceConsole * CTX_wm_space_console(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
struct SpaceFile * CTX_wm_space_file(const bContext *C)
void CTX_data_type_set(bContextDataResult *result, short type)
struct Text * CTX_data_edit_text(const bContext *C)
enum eContextObjectMode CTX_data_mode_enum(const bContext *C)
struct bPoseChannel * CTX_data_active_pose_bone(const bContext *C)
bContextStore * CTX_store_get(bContext *C)
const Depsgraph * depsgraph
RenderEngineType * RE_engines_find(const char *idname)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
const char * RNA_struct_identifier(const StructRNA *type)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
char * RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len)
const PointerRNA PointerRNA_NULL
PropertyRNA * RNA_struct_iterator_property(StructRNA *type)
struct SELECTID_Context context
bContextDataCallback context
struct ARegionType * type
struct CollectionPointerLink * next
struct Collection * collection
struct Collection * master_collection
struct ToolSettings * toolsettings
struct bContextStoreEntry * next
const char * operator_poll_msg
struct bContextStore * store
struct bContext::@84 data
struct wmGizmoGroup * gizmo_group
struct WorkSpace * workspace
struct wmWindowManager * manager
struct WorkSpaceInstanceHook * workspace_hook