struct bContext;
typedef struct bContext bContext;
-typedef void bContextDataMember;
-
struct bContextDataResult;
typedef struct bContextDataResult bContextDataResult;
+enum {
+ CTX_DATA_MAIN,
+ CTX_DATA_SCENE,
+ CTX_DATA_TOOL_SETTINGS,
+
+ CTX_DATA_SELECTED_OBJECTS,
+ CTX_DATA_SELECTED_BASES,
+ CTX_DATA_SELECTED_EDITABLE_OBJECTS,
+ CTX_DATA_SELECTED_EDITABLE_BASES,
+ CTX_DATA_VISIBLE_OBJECTS,
+ CTX_DATA_VISIBLE_BASES,
+
+ CTX_DATA_ACTIVE_OBJECT,
+ CTX_DATA_ACTIVE_BASE,
+ CTX_DATA_EDIT_OBJECT,
+
+ CTX_DATA_EDIT_IMAGE,
+ CTX_DATA_EDIT_IMAGE_BUFFER,
+
+ CTX_DATA_SELECTED_NODES
+};
+
+typedef int bContextDataMember;
+
typedef int (*bContextDataCallback)(const bContext *C,
- const bContextDataMember *member, bContextDataResult *result);
+ bContextDataMember member, bContextDataResult *result);
/* Context */
void (*keymap)(struct wmWindowManager *);
/* return context data */
- int (*context)(const struct bContext *, const void *, struct bContextDataResult *);
+ int (*context)(const struct bContext *, int, struct bContextDataResult *);
/* region type definitions */
ListBase regiontypes;
void (*cursor)(struct wmWindow *, struct ScrArea *, struct ARegion *ar);
/* return context data */
- int (*context)(const struct bContext *, const void *, struct bContextDataResult *);
+ int (*context)(const struct bContext *, int, struct bContextDataResult *);
/* custom drawing callbacks */
ListBase drawcalls;
/* data context utility functions */
-struct bContextDataMember {
- StructRNA *rna;
- const char *name;
- int collection;
-};
-
struct bContextDataResult {
void *pointer;
ListBase list;
};
-static int ctx_data_get(bContext *C, const bContextDataMember *member, bContextDataResult *result)
+static int ctx_data_get(bContext *C, bContextDataMember member, bContextDataResult *result)
{
int done= 0, recursion= C->data.recursion;
return done;
}
-static void *ctx_data_pointer_get(const bContext *C, const bContextDataMember *member)
+static void *ctx_data_pointer_get(const bContext *C, bContextDataMember member)
{
bContextDataResult result;
return NULL;
}
-static int ctx_data_pointer_verify(const bContext *C, const bContextDataMember *member, void **pointer)
+static int ctx_data_pointer_verify(const bContext *C, bContextDataMember member, void **pointer)
{
bContextDataResult result;
}
}
-static int ctx_data_collection_get(const bContext *C, const bContextDataMember *member, ListBase *list)
+static int ctx_data_collection_get(const bContext *C, bContextDataMember member, ListBase *list)
{
bContextDataResult result;
{
Main *bmain;
- if(ctx_data_pointer_verify(C, CTX_data_main, (void*)&bmain))
+ if(ctx_data_pointer_verify(C, CTX_DATA_MAIN, (void*)&bmain))
return bmain;
else
return C->data.main;
{
Scene *scene;
- if(ctx_data_pointer_verify(C, CTX_data_scene, (void*)&scene))
+ if(ctx_data_pointer_verify(C, CTX_DATA_SCENE, (void*)&scene))
return scene;
else
return C->data.scene;
int CTX_data_selected_nodes(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_selected_nodes, list);
+ return ctx_data_collection_get(C, CTX_DATA_SELECTED_NODES, list);
}
int CTX_data_selected_editable_objects(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_selected_editable_objects, list);
+ return ctx_data_collection_get(C, CTX_DATA_SELECTED_EDITABLE_OBJECTS, list);
}
int CTX_data_selected_editable_bases(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_selected_editable_bases, list);
+ return ctx_data_collection_get(C, CTX_DATA_SELECTED_EDITABLE_BASES, list);
}
int CTX_data_selected_objects(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_selected_objects, list);
+ return ctx_data_collection_get(C, CTX_DATA_SELECTED_OBJECTS, list);
}
int CTX_data_selected_bases(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_selected_bases, list);
+ return ctx_data_collection_get(C, CTX_DATA_SELECTED_BASES, list);
}
int CTX_data_visible_objects(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_visible_objects, list);
+ return ctx_data_collection_get(C, CTX_DATA_VISIBLE_OBJECTS, list);
}
int CTX_data_visible_bases(const bContext *C, ListBase *list)
{
- return ctx_data_collection_get(C, CTX_data_visible_bases, list);
+ return ctx_data_collection_get(C, CTX_DATA_VISIBLE_BASES, list);
}
struct Object *CTX_data_active_object(const bContext *C)
{
- return ctx_data_pointer_get(C, CTX_data_active_object);
+ return ctx_data_pointer_get(C, CTX_DATA_ACTIVE_OBJECT);
}
struct Base *CTX_data_active_base(const bContext *C)
{
- return ctx_data_pointer_get(C, CTX_data_active_base);
+ return ctx_data_pointer_get(C, CTX_DATA_ACTIVE_BASE);
}
struct Object *CTX_data_edit_object(const bContext *C)
{
- return ctx_data_pointer_get(C, CTX_data_edit_object);
+ return ctx_data_pointer_get(C, CTX_DATA_EDIT_OBJECT);
}
struct Image *CTX_data_edit_image(const bContext *C)
{
- return ctx_data_pointer_get(C, CTX_data_edit_image);
+ return ctx_data_pointer_get(C, CTX_DATA_EDIT_IMAGE);
}
struct ImBuf *CTX_data_edit_image_buffer(const bContext *C)
{
- return ctx_data_pointer_get(C, CTX_data_edit_image_buffer);
+ return ctx_data_pointer_get(C, CTX_DATA_EDIT_IMAGE_BUFFER);
}
/* data evaluation */
#include "BKE_context.h"
#include "BKE_utildefines.h"
-int ed_screen_context(const bContext *C, const bContextDataMember *member, bContextDataResult *result)
+int ed_screen_context(const bContext *C, bContextDataMember member, bContextDataResult *result)
{
bScreen *sc= CTX_wm_screen(C);
Scene *scene= sc->scene;
Base *base;
- if(member == CTX_data_scene) {
+ if(member == CTX_DATA_SCENE) {
CTX_data_pointer_set(result, scene);
return 1;
}
- else if(ELEM(member, CTX_data_selected_objects, &CTX_data_selected_bases)) {
+ else if(ELEM(member, CTX_DATA_SELECTED_OBJECTS, CTX_DATA_SELECTED_BASES)) {
for(base=scene->base.first; base; base=base->next) {
if((base->flag & SELECT) && (base->lay & scene->lay)) {
- if(member == CTX_data_selected_objects)
+ if(member == CTX_DATA_SELECTED_OBJECTS)
CTX_data_list_add(result, base->object);
else
CTX_data_list_add(result, base);
return 1;
}
- else if(member == CTX_data_active_base) {
+ else if(member == CTX_DATA_ACTIVE_BASE) {
if(scene->basact)
CTX_data_pointer_set(result, scene->basact);
return 1;
}
- else if(member == CTX_data_active_object) {
+ else if(member == CTX_DATA_ACTIVE_OBJECT) {
if(scene->basact)
CTX_data_pointer_set(result, scene->basact->object);
return 1;
}
- else if(member == CTX_data_edit_object) {
+ else if(member == CTX_DATA_EDIT_OBJECT) {
/* convenience for now, 1 object per scene in editmode */
if(scene->obedit)
CTX_data_pointer_set(result, scene->obedit);
void ed_screen_fullarea(bContext *C);
/* screen_context.c */
-void ed_screen_context(const bContext *C, const bContextDataMember *member, bContextDataResult *result);
+void ed_screen_context(const bContext *C, bContextDataMember member, bContextDataResult *result);
#endif /* ED_SCREEN_INTERN_H */
}
}
-static int image_context(const bContext *C, const bContextDataMember *member, bContextDataResult *result)
+static int image_context(const bContext *C, bContextDataMember member, bContextDataResult *result)
{
SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- if(member == CTX_data_edit_image) {
+ if(member == CTX_DATA_EDIT_IMAGE) {
CTX_data_pointer_set(result, get_space_image(sima));
return 1;
}
- else if(member == CTX_data_edit_image_buffer) {
+ else if(member == CTX_DATA_EDIT_IMAGE_BUFFER) {
CTX_data_pointer_set(result, get_space_image_buffer(sima));
return 1;
}
}
}
-static int node_context(const bContext *C, const bContextDataMember *member, bContextDataResult *result)
+static int node_context(const bContext *C, bContextDataMember member, bContextDataResult *result)
{
SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
- if(member == CTX_data_selected_nodes) {
+ if(member == CTX_DATA_SELECTED_NODES) {
bNode *node;
for(next_node(snode->edittree); (node=next_node(NULL));) {
return 0;
}
-static int view3d_context(const bContext *C, const bContextDataMember *member, bContextDataResult *result)
+static int view3d_context(const bContext *C, bContextDataMember member, bContextDataResult *result)
{
View3D *v3d= CTX_wm_view3d(C);
Scene *scene= CTX_data_scene(C);
Base *base;
if(v3d==NULL) return 0;
-
- if(ELEM(member, CTX_data_selected_objects, CTX_data_selected_bases)) {
+
+ if(ELEM(member, CTX_DATA_SELECTED_OBJECTS, CTX_DATA_SELECTED_BASES)) {
for(base=scene->base.first; base; base=base->next) {
if((base->flag & SELECT) && (base->lay & v3d->lay)) {
if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
- if(member == CTX_data_selected_objects)
+ if(member == CTX_DATA_SELECTED_OBJECTS)
CTX_data_list_add(result, base->object);
else
CTX_data_list_add(result, base);
return 1;
}
- else if(ELEM(member, CTX_data_selected_editable_objects, CTX_data_selected_editable_bases)) {
+ else if(ELEM(member, CTX_DATA_SELECTED_EDITABLE_OBJECTS, CTX_DATA_SELECTED_EDITABLE_BASES)) {
for(base=scene->base.first; base; base=base->next) {
if((base->flag & SELECT) && (base->lay & v3d->lay)) {
if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
if(0==object_is_libdata(base->object)) {
- if(member == CTX_data_selected_editable_objects)
+ if(member == CTX_DATA_SELECTED_EDITABLE_OBJECTS)
CTX_data_list_add(result, base->object);
else
CTX_data_list_add(result, base);
return 1;
}
- else if(ELEM(member, CTX_data_visible_objects, CTX_data_visible_bases)) {
+ else if(ELEM(member, CTX_DATA_VISIBLE_OBJECTS, CTX_DATA_VISIBLE_BASES)) {
for(base=scene->base.first; base; base=base->next) {
if(base->lay & v3d->lay) {
if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
- if(member == CTX_data_visible_objects)
+ if(member == CTX_DATA_VISIBLE_OBJECTS)
CTX_data_list_add(result, base->object);
else
CTX_data_list_add(result, base);
return 1;
}
- else if(member == CTX_data_active_base) {
+ else if(member == CTX_DATA_ACTIVE_BASE) {
if(scene->basact && (scene->basact->lay & v3d->lay))
if((scene->basact->object->restrictflag & OB_RESTRICT_VIEW)==0)
CTX_data_pointer_set(result, scene->basact);
return 1;
}
- else if(member == CTX_data_active_object) {
+ else if(member == CTX_DATA_ACTIVE_OBJECT) {
if(scene->basact && (scene->basact->lay & v3d->lay))
if((scene->basact->object->restrictflag & OB_RESTRICT_VIEW)==0)
CTX_data_pointer_set(result, scene->basact->object);
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_wpaint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
/* TODO - this is just while we have no way to load a text datablock */
- km = WM_keymap_add_item(keymap, "SCRIPT_OT_run_pyfile", PKEY, KM_PRESS, 0, 0);
- RNA_string_set(km->ptr, "filename", "test.py");
+ RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_run_pyfile", PKEY, KM_PRESS, 0, 0)->ptr, "filename", "test.py");
transform_keymap_for_space(wm, keymap, SPACE_VIEW3D);