44 #include "RNA_prototypes.h"
134 if (!ctx || ctx->
used) {
162 if (!ctx || ctx->
used) {
235 return C->data.py_init;
239 C->data.py_init = value;
244 return C->data.py_context;
248 return C->data.py_context_orig;
256 C->data.py_context = value;
257 C->data.py_context_orig = value;
291 "PyContext '%s' is a '%s', expected a '%s'",
314 int done = 0, recursion =
C->data.recursion;
340 if (done != 1 && recursion < 1 && C->wm.store) {
341 C->data.recursion = 1;
351 C->data.recursion = 2;
355 done = -(-
ret | -done);
360 C->data.recursion = 3;
361 if (
area->type &&
area->type->context) {
364 done = -(-
ret | -done);
371 C->data.recursion = 4;
375 done = -(-
ret | -done);
380 C->data.recursion = recursion;
407 *pointer =
result.ptr.data;
447 for (ctx_object = ctx_object_list.
first; ctx_object; ctx_object = ctx_object->
next) {
483 "member '%s' is '%s', not '%s'",
527 memset(r_ptr, 0,
sizeof(*r_ptr));
528 memset(r_lb, 0,
sizeof(*r_lb));
539 if ((use_all ==
false) &&
STREQ(member,
"scene")) {
548 link->
data = (
void *)member;
553 const bool use_store,
564 memset(&lb, 0,
sizeof(lb));
567 char name[256], *nameptr;
580 if (name != nameptr) {
587 if (use_store &&
C->wm.store) {
590 for (entry =
C->wm.store->entries.first; entry; entry = entry->
next) {
641 return member[0] ==
'\0';
687 if (func(
C, &list)) {
715 return C->wm.manager;
720 return (
bool)
C->wm.manager->is_interface_locked;
767 return C->wm.gizmo_group;
772 return C->wm.manager ?
C->wm.manager->message_bus :
NULL;
778 return &(
C->wm.manager->reports);
788 return area->spacedata.first;
810 return area->spacedata.first;
819 return area->spacedata.first;
828 return area->spacedata.first;
837 return area->spacedata.first;
846 return area->spacedata.first;
855 return area->spacedata.first;
864 return area->spacedata.first;
873 return area->spacedata.first;
882 return area->spacedata.first;
891 return area->spacedata.first;
900 return area->spacedata.first;
909 return area->spacedata.first;
918 return area->spacedata.first;
927 return area->spacedata.first;
936 return area->spacedata.first;
945 return area->spacedata.first;
960 # define PYCTX_REGION_MEMBERS "region", "region_data"
961 # define PYCTX_AREA_MEMBERS "area", "space_data", PYCTX_REGION_MEMBERS
962 # define PYCTX_SCREEN_MEMBERS "screen", PYCTX_AREA_MEMBERS
963 # define PYCTX_WINDOW_MEMBERS "window", "scene", "workspace", PYCTX_SCREEN_MEMBERS
970 C->data.scene = win->
scene;
978 if (
C->data.py_context !=
NULL) {
986 C->wm.screen = screen;
991 if (
C->data.py_context !=
NULL) {
1000 C->wm.region =
NULL;
1003 if (
C->data.py_context !=
NULL) {
1011 C->wm.region = region;
1014 if (
C->data.py_context !=
NULL) {
1027 C->wm.gizmo_group = gzgroup;
1040 C->wm.operator_poll_msg =
NULL;
1046 C->wm.operator_poll_msg = msg;
1054 C->wm.operator_poll_msg_dyn_params = *
params;
1069 return IFACE_(
C->wm.operator_poll_msg);
1081 return C->data.main;
1086 C->data.main = bmain;
1097 return C->data.scene;
1133 return layer_collection;
1149 if (layer_collection) {
1164 switch (obedit->
type) {
1256 "greasepencil_paint",
1257 "greasepencil_edit",
1258 "greasepencil_sculpt",
1259 "greasepencil_weight",
1260 "greasepencil_vertex",
1265 "Must have a string for each context mode")
1276 if (
C->data.py_context !=
NULL) {
1484 if (asset_handle_p) {
1486 return *asset_handle_p;
1501 *r_is_valid =
false;
@ 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)
bool BKE_view_layer_has_collection(const struct ViewLayer *view_layer, const struct Collection *collection)
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)
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_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_rfindstring(const struct ListBase *listbase, const char *id, 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, 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)
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)
AssetHandle CTX_wm_asset_handle(const bContext *C, bool *r_is_valid)
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_wm_operator_poll_msg_clear(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)
const AssetLibraryReference * CTX_wm_asset_library_ref(const bContext *C)
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)
const char * CTX_wm_operator_poll_msg_get(bContext *C, bool *r_free)
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)
void CTX_data_list_add_ptr(bContextDataResult *result, const PointerRNA *ptr)
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)
void CTX_data_pointer_set_ptr(bContextDataResult *result, const PointerRNA *ptr)
void CTX_wm_operator_poll_msg_set_dynamic(bContext *C, const struct bContextPollMsgDyn_Params *params)
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)
const PointerRNA * CTX_store_ptr_lookup(const bContextStore *store, const char *name, const StructRNA *type)
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)
bContextDataCallback context
struct ARegionType * type
struct CollectionPointerLink * next
struct Collection * collection
struct Collection * master_collection
struct ToolSettings * toolsettings
struct bContextStoreEntry * next
struct bContext::@87 data
struct bContextPollMsgDyn_Params operator_poll_msg_dyn_params
const char * operator_poll_msg
struct bContextStore * store
struct wmGizmoGroup * gizmo_group
struct WorkSpace * workspace
struct wmWindowManager * manager
struct WorkSpaceInstanceHook * workspace_hook