2.5: Various Fixes
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 24 Jul 2009 16:41:12 +0000 (16:41 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 24 Jul 2009 16:41:12 +0000 (16:41 +0000)
* Fix crash loading particle AnimData. This crashed many BBB
  files. If you have a .blend file that crashes when loading
  it in 2.5, please mail me, I'd like to know.

* Image window zoom ratio did not work correct with py 2.x.
* Other minor fixes for image window RNA.

* Buttons window now remembers the tab that was last clicked
  by the user, even if that tab is no longer available due
  to context, and then enable the tab again if the context
  for it is back.
* Cleaned up buttons space DNA a bit, removing unused vars.

* Armature bone rename outside edit mode did not call right
  function yet.
* Armature layers are now editable even if lib linked. This
  is useful for proxies. For this purpose a PROP_LIB_EXCEPTION
  flag was added. Need to think over proxy / RNA a bit though,
  not sure what the requirements are yet.
* Parent to Armature Deform now has options to create vertex
  groups, instead of always creating them.

16 files changed:
release/ui/space_image.py
source/blender/blenloader/intern/readfile.c
source/blender/editors/armature/editarmature.c
source/blender/editors/include/ED_armature.h
source/blender/editors/object/object_edit.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/space_buttons/buttons_context.c
source/blender/editors/space_buttons/buttons_header.c
source/blender/editors/space_buttons/space_buttons.c
source/blender/editors/space_outliner/outliner.c
source/blender/makesdna/DNA_space_types.h
source/blender/makesrna/RNA_types.h
source/blender/makesrna/intern/rna_access.c
source/blender/makesrna/intern/rna_armature.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_space.c

index cdb22fb04422b431b4bb9a65bd317654d5723270..f89508929576a446a6417c90207ae7ac1a83c9c8 100644 (file)
@@ -32,7 +32,7 @@ class IMAGE_MT_view(bpy.types.Menu):
 
                for a, b in ratios:
                        text = "Zoom %d:%d" % (a, b)
-                       layout.item_floatO("image.view_zoom_ratio", "ratio", a/b, text=text)
+                       layout.item_floatO("image.view_zoom_ratio", "ratio", a/float(b), text=text)
 
                layout.itemS()
 
@@ -225,34 +225,6 @@ class IMAGE_HT_header(bpy.types.Header):
 
                layout.template_ID(sima, "image", new="image.new")
 
-               """
-               /* image select */
-
-               pinflag= (show_render)? 0: UI_ID_PIN;
-               xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)sima->image, ID_IM, &sima->pin, xco, yco,
-                       sima_idpoin_handle, UI_ID_BROWSE|UI_ID_BROWSE_RENDER|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_OPEN|UI_ID_DELETE|pinflag);
-               xco += 8;
-               """
-
-               """
-               if(ima && !ELEM3(ima->source, IMA_SRC_SEQUENCE, IMA_SRC_MOVIE, IMA_SRC_VIEWER) && ima->ok) {
-                       /* XXX this should not be a static var */
-                       static int headerbuttons_packdummy;
-                       
-                       headerbuttons_packdummy = 0;
-
-                       if (ima->packedfile) {
-                               headerbuttons_packdummy = 1;
-                       }
-                       if (ima->packedfile && ibuf && (ibuf->userflags & IB_BITMAPDIRTY))
-                               uiDefIconButBitI(block, TOG, 1, 0 /* XXX B_SIMA_REPACK */, ICON_UGLYPACKAGE,    xco,yco,XIC,YIC, &headerbuttons_packdummy, 0, 0, 0, 0, "Re-Pack this image as PNG");
-                       else
-                               uiDefIconButBitI(block, TOG, 1, 0 /* XXX B_SIMAPACKIMA */, ICON_PACKAGE,        xco,yco,XIC,YIC, &headerbuttons_packdummy, 0, 0, 0, 0, "Pack/Unpack this image");
-                               
-                       xco+= XIC+8;
-               }
-               """
-
                # uv editing
                if show_uvedit:
                        uvedit = sima.uv_editor
@@ -294,7 +266,8 @@ class IMAGE_HT_header(bpy.types.Header):
                        if ima.type == "COMPOSITE" and ima.source in ("MOVIE", "SEQUENCE"):
                                row.itemO("image.play_composite", icon="ICON_PLAY")
                
-               layout.itemR(sima, "update_automatically", text="")
+               if show_uvedit or sima.image_painting:
+                       layout.itemR(sima, "update_automatically", text="")
 
 class IMAGE_PT_game_properties(bpy.types.Panel):
        __space_type__ = "IMAGE_EDITOR"
index 8e33979b1346b45f48cf060c48b253dee92d2a1d..9f4a24565671e23b297ecbd8590947f8542d2581 100644 (file)
@@ -4345,9 +4345,10 @@ static void lib_link_screen(FileData *fd, Main *main)
                                        }
                                        else if(sl->spacetype==SPACE_BUTS) {
                                                SpaceButs *sbuts= (SpaceButs *)sl;
-                                               sbuts->lockpoin= NULL;
                                                sbuts->ri= NULL;
                                                sbuts->pinid= newlibadr(fd, sc->id.lib, sbuts->pinid);
+                                               sbuts->mainbo= sbuts->mainb;
+                                               sbuts->mainbuser= sbuts->mainb;
                                                if(main->versionfile<132)
                                                        butspace_version_132(sbuts);
                                        }
@@ -4556,7 +4557,6 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
                                }
                                else if(sl->spacetype==SPACE_BUTS) {
                                        SpaceButs *sbuts= (SpaceButs *)sl;
-                                       sbuts->lockpoin= NULL;
                                        sbuts->pinid = restore_pointer_by_name(newmain, sbuts->pinid, 0);
                                        //XXX if (sbuts->ri) sbuts->ri->curtile = 0;
                                }
@@ -6267,7 +6267,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
        }
 
        if(main->versionfile <= 191) {
-               bScreen *sc= main->screen.first;
                Object *ob= main->object.first;
                Material *ma = main->mat.first;
 
@@ -6283,22 +6282,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
                        /*ob->quat[1]= 1.0f;*/ /* quats arnt used yet */
                        ob= ob->id.next;
                }
-
-               while(sc) {
-                       ScrArea *sa= sc->areabase.first;
-                       while(sa) {
-                               SpaceLink *sl= sa->spacedata.first;
-                               while(sl) {
-                                       if(sl->spacetype==SPACE_BUTS) {
-                                               SpaceButs *sbuts= (SpaceButs*) sl;
-                                               sbuts->scaflag= BUTS_SENS_LINK|BUTS_SENS_ACT|BUTS_CONT_ACT|BUTS_ACT_ACT|BUTS_ACT_LINK;
-                                       }
-                                       sl= sl->next;
-                               }
-                               sa= sa->next;
-                       }
-                       sc= sc->id.next;
-               }
        }
 
        if(main->versionfile <= 193) {
@@ -9764,7 +9747,8 @@ static void expand_particlesettings(FileData *fd, Main *mainvar, ParticleSetting
        expand_doit(fd, mainvar, part->eff_group);
        expand_doit(fd, mainvar, part->bb_ob);
        
-       expand_animdata(fd, mainvar, part->adt);
+       if(part->adt)
+               expand_animdata(fd, mainvar, part->adt);
 }
 
 static void expand_group(FileData *fd, Main *mainvar, Group *group)
index 2da49731a9585fa20e9a4ac2cae0a71bf3fd2eab..cfae8ebb3a9c6f07ab78c5ea085cf09761a314c9 100644 (file)
@@ -4614,44 +4614,28 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m
        MEM_freeN(verts);
 }
 
-void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par)
+void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par, int mode)
 {
        /* Lets try to create some vertex groups 
         * based on the bones of the parent armature.
         */
        bArmature *arm= par->data;
-       short mode;
 
-       /* Prompt the user on whether/how they want the vertex groups
-        * added to the child mesh */
-    mode= pupmenu("Create Vertex Groups? %t|"
-                                 "Don't Create Groups %x1|"
-                                 "Name Groups %x2|"
-                  "Create From Envelopes %x3|"
-                                 "Create From Bone Heat %x4|");
-       
-       mode= 3; // XXX
-       
-       switch (mode) {
-       case 2:
+       if(mode == ARM_GROUPS_NAME) {
                /* Traverse the bone list, trying to create empty vertex 
                 * groups cooresponding to the bone.
                 */
-               bone_looper(ob, arm->bonebase.first, NULL,
-                                       add_defgroup_unique_bone);
+               bone_looper(ob, arm->bonebase.first, NULL, add_defgroup_unique_bone);
+
                if (ob->type == OB_MESH)
                        create_dverts(ob->data);
-               
-               break;
-       
-       case 3:
-       case 4:
+       }
+       else if(mode == ARM_GROUPS_ENVELOPE || mode == ARM_GROUPS_AUTO) {
                /* Traverse the bone list, trying to create vertex groups 
                 * that are populated with the vertices for which the
                 * bone is closest.
                 */
-               add_verts_to_dgroups(scene, ob, par, (mode == 4), 0);
-               break;
+               add_verts_to_dgroups(scene, ob, par, (mode == ARM_GROUPS_AUTO), 0);
        }
 } 
 /* ************* Clear Pose *****************************/
index 05ea4d2b50606f9fef81bf89397b97eac941496b..3b5932b29503953c8947a313727227070c71b3ba 100644 (file)
@@ -112,9 +112,14 @@ void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionVi
 
 void transform_armature_mirror_update(struct Object *obedit);
 void clear_armature(struct Scene *scene, struct Object *ob, char mode);
-void create_vgroups_from_armature(struct Scene *scene, struct Object *ob, struct Object *par);
 void docenter_armature (struct Scene *scene, struct View3D *v3d, struct Object *ob, int centermode);
 
+#define ARM_GROUPS_NAME                1
+#define ARM_GROUPS_ENVELOPE    2
+#define ARM_GROUPS_AUTO                3
+
+void create_vgroups_from_armature(struct Scene *scene, struct Object *ob, struct Object *par, int mode);
+
 void auto_align_armature(struct Scene *scene, struct View3D *v3d, short mode);
 void unique_editbone_name(struct ListBase *ebones, char *name, EditBone *bone); /* if bone is already in list, pass it as param to ignore it */
 void ED_armature_bone_rename(struct bArmature *arm, char *oldnamep, char *newnamep);
index cf37b0dd81296ac96264d169f26b233447b77240..5c6c55e956b41f56157c4e9f60e0bf5a9ec895a1 100644 (file)
@@ -2753,19 +2753,25 @@ void make_proxy(Scene *scene)
 
 /* ******************** make parent operator *********************** */
 
-#define PAR_OBJECT             0
-#define PAR_ARMATURE   1
-#define PAR_BONE               2
-#define PAR_CURVE              3
-#define PAR_FOLLOW             4
-#define PAR_PATH_CONST 5
-#define PAR_LATTICE            6
-#define PAR_VERTEX             7
-#define PAR_TRIA               8
+#define PAR_OBJECT                             0
+#define PAR_ARMATURE                   1
+#define PAR_ARMATURE_NAME              2
+#define PAR_ARMATURE_ENVELOPE  3
+#define PAR_ARMATURE_AUTO              4
+#define PAR_BONE                               5
+#define PAR_CURVE                              6
+#define PAR_FOLLOW                             7
+#define PAR_PATH_CONST                 8
+#define PAR_LATTICE                            9
+#define PAR_VERTEX                             10
+#define PAR_TRIA                               11
 
 static EnumPropertyItem prop_make_parent_types[] = {
        {PAR_OBJECT, "OBJECT", 0, "Object", ""},
        {PAR_ARMATURE, "ARMATURE", 0, "Armature Deform", ""},
+       {PAR_ARMATURE_NAME, "ARMATURE_NAME", 0, "   With Empty Groups", ""},
+       {PAR_ARMATURE_AUTO, "ARMATURE_AUTO", 0, "   With Automatic Weights", ""},
+       {PAR_ARMATURE_ENVELOPE, "ARMATURE_ENVELOPE", 0, "   With Envelope Weights", ""},
        {PAR_BONE, "BONE", 0, "Bone", ""},
        {PAR_CURVE, "CURVE", 0, "Curve Deform", ""},
        {PAR_FOLLOW, "FOLLOW", 0, "Follow Path", ""},
@@ -2809,6 +2815,7 @@ static int parent_set_exec(bContext *C, wmOperator *op)
        Object *par= CTX_data_active_object(C);
        bPoseChannel *pchan= NULL;
        int partype= RNA_enum_get(op->ptr, "type");
+       int pararm= ELEM4(partype, PAR_ARMATURE, PAR_ARMATURE_NAME, PAR_ARMATURE_ENVELOPE, PAR_ARMATURE_AUTO);
        
        par->recalc |= OB_RECALC_OB;
        
@@ -2880,24 +2887,20 @@ static int parent_set_exec(bContext *C, wmOperator *op)
                                        ob->loc[0] = vec[0];
                                        ob->loc[1] = vec[1];
                                }
-                               else if(partype==PAR_ARMATURE && ob->type==OB_MESH && par->type == OB_ARMATURE) {
+                               else if(pararm && ob->type==OB_MESH && par->type == OB_ARMATURE) {
+                                       if(partype == PAR_ARMATURE_NAME)
+                                               create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_NAME);
+                                       else if(partype == PAR_ARMATURE_ENVELOPE)
+                                               create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_ENVELOPE);
+                                       else if(partype == PAR_ARMATURE_AUTO)
+                                               create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_AUTO);
                                        
-                                       if(1) {
-                                               /* Prompt the user as to whether he wants to
-                                               * add some vertex groups based on the bones
-                                               * in the parent armature.
-                                               */
-                                               create_vgroups_from_armature(scene, ob, par);
-                                               
-                                               /* get corrected inverse */
-                                               ob->partype= PAROBJECT;
-                                               what_does_parent(scene, ob, &workob);
-                                               
-                                               ob->partype= PARSKEL;
-                                       }
-                                       else
-                                               what_does_parent(scene, ob, &workob);
+                                       /* get corrected inverse */
+                                       ob->partype= PAROBJECT;
+                                       what_does_parent(scene, ob, &workob);
                                        
+                                       ob->partype= PARSKEL;
+
                                        Mat4Invert(ob->parentinv, workob.obmat);
                                }
                                else {
@@ -2908,7 +2911,7 @@ static int parent_set_exec(bContext *C, wmOperator *op)
                                
                                ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
                                
-                               if( ELEM3(partype, PAR_CURVE, PAR_ARMATURE, PAR_LATTICE) )
+                               if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm )
                                        ob->partype= PARSKEL; /* note, dna define, not operator property */
                                else
                                        ob->partype= PAROBJECT; /* note, dna define, not operator property */
@@ -2936,6 +2939,9 @@ static int parent_set_invoke(bContext *C, wmOperator *op, wmEvent *event)
        /* ob becomes parent, make the associated menus */
        if(ob->type==OB_ARMATURE) {
                uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE);
+               uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE_NAME);
+               uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE_ENVELOPE);
+               uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE_AUTO);
                uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_BONE);
        }
        else if(ob->type==OB_CURVE) {
index 09af626da4a0bbc08a5e548c25a2d467f7b55cc2..32f09f489a6fe17e5e5610f4f9d2ea0469d3b328 100644 (file)
@@ -210,7 +210,6 @@ int ED_operator_object_active(bContext *C)
 int ED_operator_editmesh(bContext *C)
 {
        Object *obedit= CTX_data_edit_object(C);
-       printf("em %p %d\n", obedit, (obedit)? obedit->type == OB_MESH: -1);
        if(obedit && obedit->type==OB_MESH)
                return NULL != ((Mesh *)obedit->data)->edit_mesh;
        return 0;
index 1ebab105086d04dc6e7a8a057e3da8608ef1e460..3a3f5bd83eeaebe7dfa16aa02e6c2b37c07e0761 100644 (file)
@@ -457,6 +457,11 @@ void buttons_context_compute(const bContext *C, SpaceButs *sbuts)
                }
        }
 
+       /* always try to use the tab that was explicitly
+        * set to the user, so that once that context comes
+        * back, the tab is activated again */
+       sbuts->mainb= sbuts->mainbuser;
+
        /* in case something becomes invalid, change */
        if((flag & (1 << sbuts->mainb)) == 0) {
                if(flag & BCONTEXT_OBJECT) {
index 0f6ef6fe5701fc3d4038b7b041945eb76334ba8e..b5af1ab598cec5c8a088aa95733cc3039f4ea0eb 100644 (file)
@@ -81,6 +81,8 @@ static void do_buttons_buttons(bContext *C, void *arg, int event)
                        sbuts->preview= 1;
                        break;
        }
+
+       sbuts->mainbuser= sbuts->mainb;
 }
 
 void buttons_header_buttons(const bContext *C, ARegion *ar)
index 8284744d5196035facf7177166051500f5cb8425..78392fceacea8c9511f78e9a48532ab0acb4ae18 100644 (file)
@@ -70,7 +70,6 @@ static SpaceLink *buttons_new(const bContext *C)
        
        sbuts= MEM_callocN(sizeof(SpaceButs), "initbuts");
        sbuts->spacetype= SPACE_BUTS;
-       sbuts->scaflag= BUTS_SENS_LINK|BUTS_SENS_ACT|BUTS_CONT_ACT|BUTS_ACT_ACT|BUTS_ACT_LINK;
        sbuts->align= BUT_AUTO;
 
        /* header */
index e3b8ac10481bbb91724f5dc551325d8a4ceb4e86..f27dfcb4897fe358e11835bce00e90ef05699683 100644 (file)
@@ -1864,7 +1864,7 @@ static int tree_element_active_texture(Scene *scene, SpaceOops *soops, TreeEleme
                if(set) {
                        if(sbuts) {
                                // XXX sbuts->tabo= TAB_SHADING_TEX;    // hack from header_buttonswin.c
-                               sbuts->texfrom= 1;
+                               // XXX sbuts->texfrom= 1;
                        }
 // XXX                 extern_set_butspace(F6KEY, 0);  // force shading buttons texture
                        wrld->texact= te->index;
@@ -1878,7 +1878,7 @@ static int tree_element_active_texture(Scene *scene, SpaceOops *soops, TreeEleme
                if(set) {
                        if(sbuts) {
                                // XXX sbuts->tabo= TAB_SHADING_TEX;    // hack from header_buttonswin.c
-                               sbuts->texfrom= 2;
+                               // XXX sbuts->texfrom= 2;
                        }
 // XXX                 extern_set_butspace(F6KEY, 0);  // force shading buttons texture
                        la->texact= te->index;
@@ -1894,7 +1894,7 @@ static int tree_element_active_texture(Scene *scene, SpaceOops *soops, TreeEleme
                if(set) {
                        if(sbuts) {
                                //sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
-                               sbuts->texfrom= 0;
+                               // XXX sbuts->texfrom= 0;
                        }
 // XXX                 extern_set_butspace(F6KEY, 0);  // force shading buttons texture
                        ma->texact= (char)te->index;
index 4760fd00bf2cbf514b46ea0a880355814c1eb41e..3db9711209008299eb72c147d955d8b3485bbc56 100644 (file)
@@ -94,7 +94,7 @@ typedef struct SpaceIpo {
        float blockscale;
 
        short blockhandler[8];
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d; /* deprecated, copied to region */
        
        struct bDopeSheet *ads; /* settings for filtering animation data (NOTE: we use a pointer due to code-linking issues) */
        
@@ -116,24 +116,12 @@ typedef struct SpaceButs {
        
        struct RenderInfo *ri;
 
-       short cursens, curact;
-       short align, preview;           /* align for panels, preview is signal to refresh */
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d;                                             /* deprecated, copied to region */
        
-       short mainb, menunr;    /* texnr and menunr have to remain shorts */
-       short pin, mainbo;      
-       void *lockpoin;
-       
-       short texnr;
-       char texfrom, showgroup;
-       
-       short modeltype;
-       short scriptblock;
-       short scaflag;
-       short re_align;
-       
-       short oldkeypress;              /* for keeping track of the sub tab key cycling */
-       char flag, texact;
+       short mainb, mainbo, mainbuser; /* context tabs */
+       short re_align, align;                  /* align for panels */
+       short preview;                                  /* preview is signal to refresh */
+       char flag, pad[3];
        
        void *path;                             /* runtime */
        int pathflag, dataicon; /* runtime */
@@ -148,7 +136,7 @@ typedef struct SpaceSeq {
 
        short blockhandler[8];
 
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d; /* deprecated, copied to region */
        
        float xof, yof; /* offset for drawing the image preview */
        short mainb;
@@ -222,7 +210,7 @@ typedef struct SpaceOops {
 
        short blockhandler[8];
 
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d; /* deprecated, copied to region */
        
        ListBase tree;
        struct TreeStore *treestore;
@@ -277,7 +265,7 @@ typedef struct SpaceNla {
        int pad;
        
        struct bDopeSheet *ads;
-       View2D v2d;      /* depricated, copied to region */
+       View2D v2d;      /* deprecated, copied to region */
 } SpaceNla;
 
 typedef struct SpaceText {
@@ -349,7 +337,7 @@ typedef struct SpaceTime {
        int spacetype;
        float blockscale;
        
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d; /* deprecated, copied to region */
        
        int flag, redraws;
        
@@ -363,7 +351,7 @@ typedef struct SpaceNode {
        
        short blockhandler[8];
        
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d; /* deprecated, copied to region */
        
        struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
        short flag, menunr;                     /* menunr: browse id block in header */
@@ -412,7 +400,7 @@ typedef struct SpaceImaSel {
        
        short blockhandler[8];
 
-       View2D v2d; /* depricated, copied to region */
+       View2D v2d; /* deprecated, copied to region */
 
        struct FileList *files;
 
index 243551b527e68a2c27e521301309037ed4b4fd7a..a1e98ae8a1770817060a934a1095b061010efb53 100644 (file)
@@ -85,6 +85,11 @@ typedef enum PropertyFlag {
         * for pointers and collections. */
        PROP_EDITABLE = 1,
 
+       /* this property is editable even if it is lib linked,
+        * meaning it will get lost on reload, but it's useful
+        * for editing. */
+       PROP_LIB_EXCEPTION = 65536,
+
        /* animateable means the property can be driven by some
         * other input, be it animation curves, expressions, ..
         * properties are animateable by default except for pointers
index d9d4852a72cf3d5fa1904fcfd4164bb366f855b6..0a4cc2a023e84f7b49f631044baa2aa4c53ae80e 100644 (file)
@@ -752,7 +752,7 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop)
        
        id= ptr->id.data;
 
-       return (flag & PROP_EDITABLE) && (!id || !id->lib);
+       return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION));
 }
 
 int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop)
index d77517f420db32003fc0c0c84c36c38344f6b5e9..cf20e92b2892a862bcfadc0e789d5778fd633533 100644 (file)
@@ -157,6 +157,19 @@ static void rna_EditBone_name_set(PointerRNA *ptr, const char *value)
        ED_armature_bone_rename(arm, oldname, newname);
 }
 
+static void rna_Bone_name_set(PointerRNA *ptr, const char *value)
+{
+       bArmature *arm= (bArmature*)ptr->id.data;
+       Bone *bone= (Bone*)ptr->data;
+       char oldname[32], newname[32];
+       
+       /* need to be on the stack */
+       BLI_strncpy(newname, value, 32);
+       BLI_strncpy(oldname, bone->name, 32);
+       
+       ED_armature_bone_rename(arm, oldname, newname);
+}
+
 static void rna_EditBone_layer_get(PointerRNA *ptr, int values[16])
 {
        EditBone *data= (EditBone*)(ptr->data);
@@ -320,6 +333,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
        RNA_def_property_ui_text(prop, "Name", "");
        RNA_def_struct_name_property(srna, prop);
        if(editbone) RNA_def_property_string_funcs(prop, NULL, NULL, "rna_EditBone_name_set");
+       else RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Bone_name_set");
        RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
 
        /* flags */
@@ -573,6 +587,7 @@ void rna_def_armature(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Visible Layers", "Armature layer visibility.");
        RNA_def_property_boolean_funcs(prop, NULL, "rna_Armature_layer_set");
        RNA_def_property_update(prop, NC_OBJECT|ND_POSE, NULL);
+       RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
        
                /* layer protection */
        prop= RNA_def_property(srna, "layer_protection", PROP_BOOLEAN, PROP_NONE);
index 9e3f6948b1c631f52042e1cedcf7a0b31ea4308b..86e23c5bc8ef2776f091feddb7d1a6faa356a529 100644 (file)
@@ -1116,7 +1116,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
 #endif
 
        static EnumPropertyItem engine_items[] = {
-               {0, "BLENDER", 0, "Blender", ""},
+               {0, "BLENDER_RENDER", 0, "Blender Render", ""},
                {0, NULL, 0, NULL, NULL}};
 
        srna= RNA_def_struct(brna, "SceneRenderData", NULL);
index bf475d4904814ca8ac7b1f7927ec8136cfab91ab..2afa1e6102bfda359690678b5be8b58de11b3c7d 100644 (file)
@@ -242,17 +242,9 @@ StructRNA *rna_SpaceButtonsWindow_pin_id_typef(PointerRNA *ptr)
 void rna_SpaceButtonsWindow_align_set(PointerRNA *ptr, int value)
 {
        SpaceButs *sbuts= (SpaceButs*)(ptr->data);
-       bScreen *sc= (bScreen*)(ptr->id.data);
-       ScrArea *sa;
 
        sbuts->align= value;
        sbuts->re_align= 1;
-
-#if 0 // XXX -bad level call?
-       for(sa=sc->areabase.first; sa; sa=sa->next)
-               if(BLI_findindex(&sa->spacedata, sbuts) != -1)
-                       ED_area_tag_redraw(sa);
-#endif
 }
 
 /* Space Console */
@@ -321,8 +313,8 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
 
        static EnumPropertyItem sticky_mode_items[] = {
                {SI_STICKY_DISABLE, "DISABLED", ICON_STICKY_UVS_DISABLE, "Disabled", "Sticky vertex selection disabled."},
-               {SI_STICKY_LOC, "SHARED_LOCATION", ICON_STICKY_UVS_LOC, "SHARED_LOCATION", "Select UVs that are at the same location and share a mesh vertex."},
-               {SI_STICKY_VERTEX, "SHARED_VERTEX", ICON_STICKY_UVS_VERT, "SHARED_VERTEX", "Select UVs that share mesh vertex, irrespective if they are in the same location."},
+               {SI_STICKY_LOC, "SHARED_LOCATION", ICON_STICKY_UVS_LOC, "Shared Location", "Select UVs that are at the same location and share a mesh vertex."},
+               {SI_STICKY_VERTEX, "SHARED_VERTEX", ICON_STICKY_UVS_VERT, "Shared Vertex", "Select UVs that share mesh vertex, irrespective if they are in the same location."},
                {0, NULL, 0, NULL, NULL}};
 
        static EnumPropertyItem dt_uv_items[] = {
@@ -685,17 +677,17 @@ static void rna_def_space_buttons(BlenderRNA *brna)
        RNA_def_struct_sdna(srna, "SpaceButs");
        RNA_def_struct_ui_text(srna, "Buttons Space", "Buttons Window space data");
        
-       prop= RNA_def_property(srna, "buttons_context", PROP_ENUM, PROP_NONE);
+       prop= RNA_def_property(srna, "context", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "mainb");
        RNA_def_property_enum_items(prop, buttons_context_items);
-       RNA_def_property_ui_text(prop, "Buttons Context", "The type of active data to display and edit in the buttons window");
+       RNA_def_property_ui_text(prop, "Context", "Type of active data to display and edit.");
        RNA_def_property_update(prop, NC_WINDOW, NULL);
        
        prop= RNA_def_property(srna, "align", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "align");
        RNA_def_property_enum_items(prop, align_items);
        RNA_def_property_enum_funcs(prop, NULL, "rna_SpaceButtonsWindow_align_set", NULL);
-       RNA_def_property_ui_text(prop, "Align", "Arrangement of the panels within the buttons window");
+       RNA_def_property_ui_text(prop, "Align", "Arrangement of the panels.");
        RNA_def_property_update(prop, NC_WINDOW, NULL);
 
        /* pinned data */