diff options
Diffstat (limited to 'source/blender/editors/space_nla/nla_buttons.c')
-rw-r--r-- | source/blender/editors/space_nla/nla_buttons.c | 66 |
1 files changed, 50 insertions, 16 deletions
diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index d75946c4317..b26d1662f6c 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -131,7 +131,6 @@ static int nla_panel_context(const bContext *C, PointerRNA *adt_ptr, PointerRNA case ANIMTYPE_SCENE: /* Top-Level Widgets doubling up as datablocks */ case ANIMTYPE_OBJECT: - case ANIMTYPE_FILLACTD: /* Action Expander */ case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */ case ANIMTYPE_DSLAM: case ANIMTYPE_DSCAM: @@ -142,19 +141,32 @@ static int nla_panel_context(const bContext *C, PointerRNA *adt_ptr, PointerRNA case ANIMTYPE_DSPART: case ANIMTYPE_DSMBALL: case ANIMTYPE_DSARM: + case ANIMTYPE_DSMESH: + case ANIMTYPE_DSTEX: + case ANIMTYPE_DSLAT: + case ANIMTYPE_DSLINESTYLE: case ANIMTYPE_DSSPK: { /* for these channels, we only do AnimData */ - if (ale->id && ale->adt) { - if (adt_ptr) { - /* AnimData pointer */ - RNA_pointer_create(ale->id, &RNA_AnimData, ale->adt, adt_ptr); - - /* set found status to -1, since setting to 1 would break the loop - * and potentially skip an active NLA-Track in some cases... - */ - found = -1; + if (ale->adt && adt_ptr) { + ID *id; + + if ((ale->data == NULL) || (ale->type == ANIMTYPE_OBJECT)) { + /* ale->data is not an ID block! */ + id = ale->id; } + else { + /* ale->data is always the proper ID block we need, but ale->id may not be (i.e. for textures) */ + id = (ID *)ale->data; + } + + /* AnimData pointer */ + RNA_pointer_create(id, &RNA_AnimData, ale->adt, adt_ptr); + + /* set found status to -1, since setting to 1 would break the loop + * and potentially skip an active NLA-Track in some cases... + */ + found = -1; } } break; @@ -247,6 +259,28 @@ static void nla_panel_animdata(const bContext *C, Panel *pa) block = uiLayoutGetBlock(layout); uiBlockSetHandleFunc(block, do_nla_region_buttons, NULL); + /* AnimData Source Properties ----------------------------------- */ + + /* icon + id-block name of block where AnimData came from to prevent + * accidentally changing the properties of the wrong action + */ + if (adt_ptr.id.data) { + ID *id = adt_ptr.id.data; + PointerRNA id_ptr; + + RNA_id_pointer_create(id, &id_ptr); + + /* ID-block name > AnimData */ + row = uiLayoutRow(layout, TRUE); + uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_LEFT); + + uiItemL(row, id->name + 2, RNA_struct_ui_icon(id_ptr.type)); /* id-block (src) */ + uiItemL(row, "", VICO_SMALL_TRI_RIGHT_VEC); /* expander */ + uiItemL(row, IFACE_("Animation Data"), ICON_ANIM_DATA); /* animdata */ + + uiItemS(layout); + } + /* Active Action Properties ------------------------------------- */ /* action */ row = uiLayoutRow(layout, TRUE); @@ -308,7 +342,7 @@ static void nla_panel_properties(const bContext *C, Panel *pa) /* strip extents */ column = uiLayoutColumn(layout, TRUE); - uiItemL(column, "Strip Extents:", ICON_NONE); + uiItemL(column, IFACE_("Strip Extents:"), ICON_NONE); uiItemR(column, &strip_ptr, "frame_start", 0, NULL, ICON_NONE); uiItemR(column, &strip_ptr, "frame_end", 0, NULL, ICON_NONE); @@ -343,7 +377,7 @@ static void nla_panel_properties(const bContext *C, Panel *pa) /* settings */ column = uiLayoutColumn(layout, TRUE); uiLayoutSetActive(column, !(RNA_boolean_get(&strip_ptr, "use_animated_influence") || RNA_boolean_get(&strip_ptr, "use_animated_time"))); - uiItemL(column, "Playback Settings:", ICON_NONE); + uiItemL(column, IFACE_("Playback Settings:"), ICON_NONE); uiItemR(column, &strip_ptr, "mute", 0, NULL, ICON_NONE); uiItemR(column, &strip_ptr, "use_reverse", 0, NULL, ICON_NONE); } @@ -373,15 +407,15 @@ static void nla_panel_actclip(const bContext *C, Panel *pa) /* action extents */ // XXX custom names were used here (to avoid the prefixes)... probably not necessary in future? column = uiLayoutColumn(layout, TRUE); - uiItemL(column, "Action Extents:", ICON_NONE); - uiItemR(column, &strip_ptr, "action_frame_start", 0, "Start Frame", ICON_NONE); - uiItemR(column, &strip_ptr, "action_frame_end", 0, "End Frame", ICON_NONE); + uiItemL(column, IFACE_("Action Extents:"), ICON_NONE); + uiItemR(column, &strip_ptr, "action_frame_start", 0, IFACE_("Start Frame"), ICON_NONE); + uiItemR(column, &strip_ptr, "action_frame_end", 0, IFACE_("End Frame"), ICON_NONE); uiItemO(column, NULL, ICON_NONE, "NLA_OT_action_sync_length"); /* action usage */ column = uiLayoutColumn(layout, TRUE); uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "use_animated_time") == FALSE); - uiItemL(column, "Playback Settings:", ICON_NONE); + uiItemL(column, IFACE_("Playback Settings:"), ICON_NONE); uiItemR(column, &strip_ptr, "scale", 0, NULL, ICON_NONE); uiItemR(column, &strip_ptr, "repeat", 0, NULL, ICON_NONE); } |