diff options
author | Ton Roosendaal <ton@blender.org> | 2009-07-25 17:40:59 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-07-25 17:40:59 +0400 |
commit | dcfc0333d16a6a85c54f056edfce7a9089f64ef7 (patch) | |
tree | aa1f641575d431a23622d67ec88f846cd790c81e /source/blender/editors/object | |
parent | 90dfb61e046625b61c3af8a7f8bfee431a356832 (diff) |
2.5
Outliner: brought back to near full functioning:
- proper operators, like for open/close items, exec operations
(note: select is still same operator as activate, should
become modal ops later)
- rename works again (ctrl+click)
- proper notifiers for redraws
- select / extend select works again
- editmode in/out works again
- enter key opens/closes again
- right mouse operations work again
Didn't do:
- options for Sequence strips
- signals to change button views on clicks
- error/warning messages
UI:
- added new uiButSetRenameFunc(), which passes on the old name
- added uiButActiveOnly(), which ensures a button gets created in
active state, and gets removed when used. Needed for editing
names in outliner.
Andrea: check outliner.c for uiButActiveOnly(), very easy to use!
Also:
- Added posemode operator, CTRL+TAB tied to it.
Diffstat (limited to 'source/blender/editors/object')
-rw-r--r-- | source/blender/editors/object/object_edit.c | 36 | ||||
-rw-r--r-- | source/blender/editors/object/object_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/object/object_ops.c | 2 |
3 files changed, 39 insertions, 0 deletions
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 5c6c55e956b..1752f48990d 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -3717,6 +3717,42 @@ void OBJECT_OT_editmode_toggle(wmOperatorType *ot) /* *************************** */ +static int posemode_exec(bContext *C, wmOperator *op) +{ + Base *base= CTX_data_active_base(C); + + if(base->object->type==OB_ARMATURE) { + if(base->object==CTX_data_edit_object(C)) { + ED_object_exit_editmode(C, EM_FREEDATA); + ED_armature_enter_posemode(C, base); + } + else if(base->object->flag & OB_POSEMODE) + ED_armature_exit_posemode(C, base); + else + ED_armature_enter_posemode(C, base); + + return OPERATOR_FINISHED; + } + + return OPERATOR_PASS_THROUGH; +} + +void OBJECT_OT_posemode_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Pose Mode"; + ot->idname= "OBJECT_OT_posemode_toggle"; + ot->description= "Enables or disables posing/selecting bones"; + + /* api callbacks */ + ot->exec= posemode_exec; + ot->poll= ED_operator_object_active; + + /* flag */ + ot->flag= OPTYPE_REGISTER; +} + +/* *********************** */ void check_editmode(int type) { diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index fba49caba28..da1dd458555 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -40,6 +40,7 @@ struct Mesh; /* object_edit.c */ void OBJECT_OT_editmode_toggle(struct wmOperatorType *ot); +void OBJECT_OT_posemode_toggle(struct wmOperatorType *ot); void OBJECT_OT_parent_set(struct wmOperatorType *ot); void OBJECT_OT_parent_clear(struct wmOperatorType *ot); void OBJECT_OT_track_set(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index ad3d13ed511..27d481ef509 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -64,6 +64,7 @@ void ED_operatortypes_object(void) { WM_operatortype_append(OBJECT_OT_editmode_toggle); + WM_operatortype_append(OBJECT_OT_posemode_toggle); WM_operatortype_append(OBJECT_OT_parent_set); WM_operatortype_append(OBJECT_OT_parent_clear); WM_operatortype_append(OBJECT_OT_track_set); @@ -149,6 +150,7 @@ void ED_keymap_object(wmWindowManager *wm) /* Note: this keymap works disregarding mode */ WM_keymap_add_item(keymap, "OBJECT_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_posemode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_center_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0); /* Note: this keymap gets disabled in non-objectmode, */ |