[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19331] branches/blender2.5/blender/source /blender: Context

Joshua Leung aligorith at gmail.com
Fri Mar 20 04:06:32 CET 2009


Hi Brecht,

It looks like you've forgotten a few files:
* rna_context.c is missing
* the linking order/depedencies for 'creator' when using scons seems broken
also

Joshua

On Fri, Mar 20, 2009 at 8:03 AM, Brecht Van Lommel <brecht at blender.org>wrote:

> Revision: 19331
>
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19331
> Author:   blendix
> Date:     2009-03-19 20:03:38 +0100 (Thu, 19 Mar 2009)
>
> Log Message:
> -----------
> Context
>
> * Made it based on string lookups rather than fixed enum, to make
>  it extensible by python scripts.
> * Context callbacks now also have to specify RNA type when returning
>  pointers or collections. For non-RNA wrapped data, UnknownType can
>  be used.
> * RNA wrapped context. The WM entries are fixed, for data context
>  only main and scene are defined properties. Other data entries have
>  to be dynamically looked up.
> * I've added some special code in python for the dynamic context
>  lookups. Tried to hide it behind RNA but didn't find a clean way to
>  do it yet. Still unused/untested.
>
> * Also minor fix for warning about propertional edit property in
>  transform code, and fix for usage of operator poll with checking if
>  it was NULL.
>
> Modified Paths:
> --------------
>    branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
>    branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h
>    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
>    branches/blender2.5/blender/source/blender/editors/interface/interface.c
>
>  branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
>
>  branches/blender2.5/blender/source/blender/editors/screen/screen_intern.h
>
>  branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
>    branches/blender2.5/blender/source/blender/editors/space_info/Makefile
>    branches/blender2.5/blender/source/blender/editors/space_info/SConscript
>    branches/blender2.5/blender/source/blender/editors/space_nla/Makefile
>    branches/blender2.5/blender/source/blender/editors/space_nla/SConscript
>
>  branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
>    branches/blender2.5/blender/source/blender/editors/space_sound/Makefile
>
>  branches/blender2.5/blender/source/blender/editors/space_sound/SConscript
>
>  branches/blender2.5/blender/source/blender/editors/space_text/space_text.c
>
>  branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
>
>  branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c
>    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
>    branches/blender2.5/blender/source/blender/makesrna/RNA_types.h
>
>  branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt
>    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
>    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
>
>  branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
>    branches/blender2.5/blender/source/blender/makesrna/intern/rna_rna.c
>    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
>
> Modified:
> branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
> ===================================================================
> --- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
> 2009-03-19 01:50:45 UTC (rev 19330)
> +++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
> 2009-03-19 19:03:38 UTC (rev 19331)
> @@ -33,6 +33,7 @@
>  #endif
>
>  #include "DNA_listBase.h"
> +#include "RNA_types.h"
>
>  struct ARegion;
>  struct bScreen;
> @@ -58,6 +59,7 @@
>  struct wmWindowManager;
>  struct SpaceText;
>  struct SpaceImage;
> +struct ID;
>
>  /* Structs */
>
> @@ -67,45 +69,8 @@
>  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_EDIT_TEXT,
> -
> -       CTX_DATA_SELECTED_NODES,
> -
> -       CTX_DATA_SELECTED_BONES,
> -       CTX_DATA_SELECTED_EDITABLE_BONES,
> -       CTX_DATA_SELECTED_PCHANS,
> -
> -       CTX_DATA_ACTIVE_BONE,
> -       CTX_DATA_ACTIVE_PCHAN,
> -
> -       CTX_DATA_VISIBLE_BONES,
> -       CTX_DATA_EDITABLE_BONES,
> -       CTX_DATA_VISIBLE_PCHANS,
> -};
> -
> -typedef int bContextDataMember;
> -
>  typedef int (*bContextDataCallback)(const bContext *C,
> -       bContextDataMember member, bContextDataResult *result);
> +       const char *member, bContextDataResult *result);
>
>  /* Context */
>
> @@ -158,16 +123,28 @@
>    - note: listbases consist of LinkData items and must be
>      freed with BLI_freelistN! */
>
> -void CTX_data_pointer_set(bContextDataResult *result, void *data);
> -void CTX_data_list_add(bContextDataResult *result, void *data);
> +PointerRNA CTX_data_pointer_get(bContext *C, const char *member);
> +ListBase CTX_data_collection_get(bContext *C, const char *member);
> +void CTX_data_get(bContext *C, const char *member, PointerRNA *r_ptr,
> ListBase *r_lb);
>
> +void CTX_data_id_pointer_set(bContextDataResult *result, struct ID *id);
> +void CTX_data_pointer_set(bContextDataResult *result, struct ID *id,
> StructRNA *type, void *data);
> +
> +void CTX_data_id_list_add(bContextDataResult *result, struct ID *id);
> +void CTX_data_list_add(bContextDataResult *result, struct ID *id,
> StructRNA *type, void *data);
> +
> +int CTX_data_equals(const char *member, const char *str);
> +
> +/*void CTX_data_pointer_set(bContextDataResult *result, void *data);
> +void CTX_data_list_add(bContextDataResult *result, void *data);*/
> +
>  #define CTX_DATA_BEGIN(C, Type, instance, member) \
>        { \
>                ListBase ctx_data_list; \
> -               LinkData *link; \
> +               CollectionPointerLink *ctx_link; \
>                CTX_data_##member(C, &ctx_data_list); \
> -               for(link=ctx_data_list.first; link; link=link->next) { \
> -                       Type instance= link->data;
> +               for(ctx_link=ctx_data_list.first; ctx_link;
> ctx_link=ctx_link->next) { \
> +                       Type instance= ctx_link->ptr.data;
>
>  #define CTX_DATA_END \
>                } \
> @@ -202,7 +179,6 @@
>  struct Object *CTX_data_edit_object(const bContext *C);
>
>  struct Image *CTX_data_edit_image(const bContext *C);
> -struct ImBuf *CTX_data_edit_image_buffer(const bContext *C);
>
>  struct Text *CTX_data_edit_text(const bContext *C);
>
>
> Modified:
> branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h
> ===================================================================
> --- branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h
>  2009-03-19 01:50:45 UTC (rev 19330)
> +++ branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h
>  2009-03-19 19:03:38 UTC (rev 19331)
> @@ -77,7 +77,7 @@
>        void            (*keymap)(struct wmWindowManager *);
>
>        /* return context data */
> -       int                     (*context)(const struct bContext *, int,
> struct bContextDataResult *);
> +       int                     (*context)(const struct bContext *, const
> char*, struct bContextDataResult *);
>
>        /* region type definitions */
>        ListBase        regiontypes;
> @@ -117,7 +117,7 @@
>        void            (*cursor)(struct wmWindow *, struct ScrArea *,
> struct ARegion *ar);
>
>        /* return context data */
> -       int                     (*context)(const struct bContext *, int,
> struct bContextDataResult *);
> +       int                     (*context)(const struct bContext *, const
> char *, struct bContextDataResult *);
>
>        /* custom drawing callbacks */
>        ListBase        drawcalls;
>
> Modified:
> branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
> ===================================================================
> --- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
>      2009-03-19 01:50:45 UTC (rev 19330)
> +++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
>      2009-03-19 19:03:38 UTC (rev 19331)
> @@ -27,6 +27,7 @@
>
>  #include "MEM_guardedalloc.h"
>
> +#include "DNA_ID.h"
>  #include "DNA_listBase.h"
>  #include "DNA_scene_types.h"
>  #include "DNA_screen_types.h"
> @@ -254,11 +255,11 @@
>  /* data context utility functions */
>
>  struct bContextDataResult {
> -       void *pointer;
> +       PointerRNA ptr;
>        ListBase list;
>  };
>
> -static int ctx_data_get(bContext *C, bContextDataMember member,
> bContextDataResult *result)
> +static int ctx_data_get(bContext *C, const char *member,
> bContextDataResult *result)
>  {
>        int done= 0, recursion= C->data.recursion;
>
> @@ -292,22 +293,22 @@
>        return done;
>  }
>
> -static void *ctx_data_pointer_get(const bContext *C, bContextDataMember
> member)
> +static void *ctx_data_pointer_get(const bContext *C, const char *member)
>  {
>        bContextDataResult result;
>
>        if(ctx_data_get((bContext*)C, member, &result))
> -               return result.pointer;
> +               return result.ptr.data;
>
>        return NULL;
>  }
>
> -static int ctx_data_pointer_verify(const bContext *C, bContextDataMember
> member, void **pointer)
> +static int ctx_data_pointer_verify(const bContext *C, const char *member,
> void **pointer)
>  {
>        bContextDataResult result;
>
>        if(ctx_data_get((bContext*)C, member, &result)) {
> -               *pointer= result.pointer;
> +               *pointer= result.ptr.data;
>                return 1;
>        }
>        else {
> @@ -316,7 +317,7 @@
>        }
>  }
>
> -static int ctx_data_collection_get(const bContext *C, bContextDataMember
> member, ListBase *list)
> +static int ctx_data_collection_get(const bContext *C, const char *member,
> ListBase *list)
>  {
>        bContextDataResult result;
>
> @@ -328,21 +329,84 @@
>        return 0;
>  }
>
> -void CTX_data_pointer_set(bContextDataResult *result, void *data)
> +PointerRNA CTX_data_pointer_get(bContext *C, const char *member)
>  {
> -       result->pointer= data;
> +       bContextDataResult result;
> +
> +       if(ctx_data_get((bContext*)C, member, &result)) {
> +               return result.ptr;
> +       }
> +       else {
> +               PointerRNA ptr;
> +               memset(&ptr, 0, sizeof(ptr));
> +               return ptr;
> +       }
> +
>  }
>
> -void CTX_data_list_add(bContextDataResult *result, void *data)
> +ListBase CTX_data_collection_get(bContext *C, const char *member)
>  {
> -       LinkData *link;
> -
> -       link= MEM_callocN(sizeof(LinkData), "LinkData");
> -       link->data= data;
> +       bContextDataResult result;
>
> +       if(ctx_data_get((bContext*)C, member, &result)) {
> +               return result.list;
> +       }
> +       else {
> +               ListBase list;
> +               memset(&list, 0, sizeof(list));
> +               return list;
> +       }
> +}
> +
> +void CTX_data_get(bContext *C, const char *member, PointerRNA *r_ptr,
> ListBase *r_lb)
> +{
> +       bContextDataResult result;
> +
> +       if(ctx_data_get((bContext*)C, member, &result)) {
> +               *r_ptr= result.ptr;
> +               *r_lb= result.list;
> +       }
> +       else {
> +               memset(r_ptr, 0, sizeof(*r_ptr));
> +               memset(r_lb, 0, sizeof(*r_lb));
> +       }
> +}
> +
> +int CTX_data_equals(const char *member, const char *str)
> +{
> +       return (strcmp(member, str) == 0);
> +}
> +
> +void CTX_data_id_pointer_set(bContextDataResult *result, ID *id)
> +{
> +       RNA_id_pointer_create(id, &result->ptr);
> +}
> +
> +void CTX_data_pointer_set(bContextDataResult *result, ID *id, StructRNA
> *type, void *data)
> +{
> +       RNA_pointer_create(id, type, data, &result->ptr);
> +}
> +
> +void CTX_data_id_list_add(bContextDataResult *result, ID *id)
> +{
> +       CollectionPointerLink *link;
> +
> +       link= MEM_callocN(sizeof(CollectionPointerLink),
> "CTX_data_id_list_add");
> +       RNA_id_pointer_create(id, &link->ptr);
> +
>        BLI_addtail(&result->list, link);
>  }
>
> +void CTX_data_list_add(bContextDataResult *result, ID *id, StructRNA
> *type, void *data)
> +{
> +       CollectionPointerLink *link;
> +
> +       link= MEM_callocN(sizeof(CollectionPointerLink),
> "CTX_data_list_add");
> +       RNA_pointer_create(id, type, data, &link->ptr);
> +
> +       BLI_addtail(&result->list, link);
> +}
> +
>  int ctx_data_list_count(const bContext *C, int (*func)(const bContext*,
> ListBase*))
>  {
>        ListBase list;
> @@ -362,7 +426,7 @@
>  {
>        Main *bmain;
>
> -       if(ctx_data_pointer_verify(C, CTX_DATA_MAIN, (void*)&bmain))
> +       if(ctx_data_pointer_verify(C, "main", (void*)&bmain))
>                return bmain;
>        else
>                return C->data.main;
> @@ -377,7 +441,7 @@
>  {
>        Scene *scene;
>
> -       if(ctx_data_pointer_verify(C, CTX_DATA_SCENE, (void*)&scene))
> +       if(ctx_data_pointer_verify(C, "scene", (void*)&scene))
>                return scene;
>        else
>                return C->data.scene;
> @@ -400,107 +464,102 @@
>
>  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, "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, "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, "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, "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, "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, "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, "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, "active_object");
>  }
>
>  struct Base *CTX_data_active_base(const bContext *C)
>  {
> -       return ctx_data_pointer_get(C, CTX_DATA_ACTIVE_BASE);
>
> @@ Diff output truncated at 10240 characters. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-committers/attachments/20090320/9479c987/attachment-0001.htm 


More information about the Bf-committers mailing list