A few fixes:
authorJoshua Leung <aligorith@gmail.com>
Thu, 8 Oct 2009 11:29:27 +0000 (11:29 +0000)
committerJoshua Leung <aligorith@gmail.com>
Thu, 8 Oct 2009 11:29:27 +0000 (11:29 +0000)
* Loading old files didn't initialise the new rotation variables properly
* Fixed some errors with the newly added operator for copying RNA-paths for properties
* Auto-keyframing now correctly refreshes animation editors after adding keyframes. Made the keyingsets code send notifiers again, but now using the newly added WM_main_event_add()  (thanks Brecht)
* A few UI tweaks again for animation stuff (timeline, keyingsets UI)

release/scripts/ui/buttons_object.py
release/scripts/ui/buttons_scene.py
release/scripts/ui/space_time.py
source/blender/blenloader/intern/readfile.c
source/blender/editors/animation/drivers.c
source/blender/editors/animation/keyingsets.c
source/blender/editors/interface/interface_anim.c
source/blender/editors/space_outliner/outliner.c
source/blender/makesrna/intern/rna_animation_api.c

index d546ddb8fd898dce18c9186f022218962c91cdf5..98ac462f2d43a2aa71c14972262bfe3470a9d343 100644 (file)
@@ -26,8 +26,6 @@ class OBJECT_PT_transform(ObjectButtonsPanel):
                
                ob = context.object
                
-               
-
                row = layout.row()
                
                row.column().itemR(ob, "location")
index 9bd0019bd6c5c7510e252e136a291b242eca2a82..2b153737be398d0c7f0c882d9d913b9eb27f9b2b 100644 (file)
@@ -474,7 +474,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel):
                scene = context.scene
                
                row = layout.row()
-               row.itemL(text="Keying Sets")
+               row.itemL(text="Keying Sets:")
                
                row = layout.row()
                
@@ -512,7 +512,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
                ks = scene.active_keying_set
                
                row = layout.row()
-               row.itemL(text="Paths")
+               row.itemL(text="Paths:")
                
                row = layout.row()
                
index 696dcf186234ad1aeb1fdbafe62fbfbd26060d4e..fdb01d5c216065b5242858e89d2cc7bacedc1d41 100644 (file)
@@ -100,7 +100,7 @@ class TIME_MT_frame(bpy.types.Menu):
                layout.itemS()
                
                sub = layout.row()
-               sub.active = tools.enable_auto_key
+               #sub.active = tools.enable_auto_key
                sub.itemM("TIME_MT_autokey")
 
 class TIME_MT_playback(bpy.types.Menu):
index a832cae161b74600ebef42071865a2022be18075..ae18d7cac012db167f83722b3985ec97c5bf676f 100644 (file)
@@ -9912,6 +9912,24 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
 
        /* put 2.50 compatibility code here until next subversion bump */
        {
+               Object *ob;
+               
+               /* New variables for axis-angle rotations and/or quaternion rotations were added, and need proper initialisation */
+               for (ob= main->object.first; ob; ob= ob->id.next) {
+                       /* new variables for all objects */
+                       ob->quat[0]= 1.0f;
+                       ob->rotAxis[1]= 1.0f;
+                       
+                       /* bones */
+                       if (ob->pose) {
+                               bPoseChannel *pchan;
+                               
+                               for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+                                       /* just need to initalise rotation axis properly... */
+                                       pchan->rotAxis[1]= 1.0f;
+                               }
+                       }
+               }
        }
 
        /* WATCH IT!!!: pointers from libdata have not been converted yet here! */
index 7a4575486236bf3127b8e210b0062f7a78a5b8ee..bf3fd0f4cf1bcf17977b5af0b59112519a79ae12 100644 (file)
@@ -565,7 +565,7 @@ void ANIM_OT_paste_driver_button (wmOperatorType *ot)
 }
 
 
-/* Paste Driver Button Operator ------------------------ */
+/* Copy to Clipboard Button Operator ------------------------ */
 
 static int copy_clipboard_button_exec(bContext *C, wmOperator *op)
 {
@@ -579,9 +579,9 @@ static int copy_clipboard_button_exec(bContext *C, wmOperator *op)
        memset(&ptr, 0, sizeof(PointerRNA));
        uiAnimContextProperty(C, &ptr, &prop, &index);
 
-       if (ptr.data && prop) { // && RNA_property_animateable(ptr.data, prop)
+       if (ptr.data && prop) {
                path= RNA_path_from_ID_to_property(&ptr, prop);
-
+               
                if (path) {
                        WM_clipboard_text_set(path, FALSE);
                        MEM_freeN(path);
@@ -597,15 +597,14 @@ void ANIM_OT_copy_clipboard_button(wmOperatorType *ot)
        /* identifiers */
        ot->name= "Copy Data Path";
        ot->idname= "ANIM_OT_copy_clipboard_button";
-       ot->description= "Copy the rna data path to the clipboard.";
+       ot->description= "Copy the RNA data path for this property to the clipboard.";
 
        /* callbacks */
        ot->exec= copy_clipboard_button_exec;
-       //op->poll= ??? // TODO: need to have some driver to be able to do this...
+       //op->poll= ??? // TODO: need to have some valid property before this can be done
 
        /* flags */
-       ot->flag= 0;
+       ot->flag= OPTYPE_REGISTER;
 }
 
-
 /* ************************************************** */
index afaa9e3f400674f93ccfae00111999808d0e61a7..d1ac624ec6f2121b667dad84d87dd569227707e4 100644 (file)
@@ -349,6 +349,7 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op)
                                
                        /* add path to this setting */
                        BKE_keyingset_add_destination(ks, ptr.id.data, NULL, path, index, pflag, KSP_GROUP_KSNAME);
+                       ks->active_path= BLI_countlist(&ks->paths);
                        success= 1;
                        
                        /* free the temp path created */
@@ -1354,6 +1355,9 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet
                                        }
                                                break;
                                }
+                               
+                               /* send notifiers for updates (this doesn't require context to work!) */
+                               WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
                        }
                }
        }
@@ -1484,6 +1488,9 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet
                                        }
                                                break;
                                }
+                               
+                               /* send notifiers for updates (this doesn't require context to work!) */
+                               WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
                        }
                }
        }
index facda32a41ef39942d99ca271b7cf537529db9cb..ca7401c36bed6d20b57cef28dd2732f38a49efa8 100644 (file)
@@ -309,10 +309,11 @@ void ui_but_anim_menu(bContext *C, uiBut *but)
                                uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button");
                        }
                }
-
+               
                uiItemS(layout);
-               uiItemBooleanO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button", "all", 1);
-
+               
+               uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button");
+               
                uiPupMenuEnd(C, pup);
        }
 }
index 3c10375c14b184b59ffc71df36b48ff8cf9fede1..641137c010b82751c22f3a558bc8f2e472616e38 100644 (file)
@@ -3939,6 +3939,7 @@ static void do_outliner_keyingset_editop(SpaceOops *soops, KeyingSet *ks, ListBa
                                                /* add a new path with the information obtained (only if valid) */
                                                // TODO: what do we do with group name? for now, we don't supply one, and just let this use the KeyingSet name
                                                BKE_keyingset_add_destination(ks, id, NULL, path, array_index, flag, groupmode);
+                                               ks->active_path= BLI_countlist(&ks->paths);
                                        }
                                                break;
                                        case KEYINGSET_EDITMODE_REMOVE:
@@ -3950,6 +3951,7 @@ static void do_outliner_keyingset_editop(SpaceOops *soops, KeyingSet *ks, ListBa
                                                        /* free path's data */
                                                        // TODO: we probably need an API method for this 
                                                        if (ksp->rna_path) MEM_freeN(ksp->rna_path);
+                                                       ks->active_path= 0;
                                                        
                                                        /* remove path from set */
                                                        BLI_freelinkN(&ks->paths, ksp);
index 6af87335e0219c7add0b1ea643e1dab7640cfefb..5852c494936e970da220da33c161af2b16db3b9c 100644 (file)
@@ -54,6 +54,7 @@ static void rna_KeyingSet_add_destination(KeyingSet *keyingset, ReportList *repo
        /* if data is valid, call the API function for this */
        if (keyingset) {
                BKE_keyingset_add_destination(keyingset, id, group_name, rna_path, array_index, flag, grouping_method);
+               keyingset->active_path= BLI_countlist(&keyingset->paths); 
        }
        else {
                BKE_report(reports, RPT_ERROR, "Keying Set Destination could not be added.");