diff options
author | Ton Roosendaal <ton@blender.org> | 2008-12-17 18:38:40 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2008-12-17 18:38:40 +0300 |
commit | 07d63eb67943e6f9e93443fbbb903436c9b9503d (patch) | |
tree | 17b20fffb625948666ae05b89f6cc26c2eb28ae2 /source/blender/editors | |
parent | 616edcca1222c25b53c13d4da4c3af4f7a0f349a (diff) |
2.5
- Made a nice generic 'OK confirm' implementation for operators.
Just use in operator type definition this line:
ot->invoke= WM_operator_confirm;
It will autmatically use operator name for asking OK. It will
also use properties (if set before).
Note for Brecht: the test okee_operator() you coded could better not
be used in operators themselves.
In future we can also add menus that get automatically generated
based on operator properties. Like 'add constraint' showing the
constraint types.
- Added this confirm call for most of the keys you'd expect it for.
(user settings, delete marker, rip area, split region, etc).
- Cleanup: moved ed_markers.c to the util/ directory, it doesnt belong
in space_time. Also made separate function for the marker keymap
definition.
- removed ancient redraw notifier from ghost event level (every key
press gave full screen draw)
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/include/ED_markers.h | 7 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_time/time_ops.c | 17 | ||||
-rw-r--r-- | source/blender/editors/util/ed_markers.c (renamed from source/blender/editors/space_time/ed_markers.c) | 23 |
4 files changed, 33 insertions, 22 deletions
diff --git a/source/blender/editors/include/ED_markers.h b/source/blender/editors/include/ED_markers.h index cad985ce37c..49f805e4ddb 100644 --- a/source/blender/editors/include/ED_markers.h +++ b/source/blender/editors/include/ED_markers.h @@ -34,13 +34,14 @@ enum { DRAW_MARKERS_LOCAL = (1<<1) }; - +struct wmWindowManager; void draw_markers_time(const bContext *C, int flag); -/* register operators, called in ED_operatortypes_screen() */ +/* called in screen_ops.c:ED_operatortypes_screen() */ void ED_marker_operatortypes(void); - +/* called in screen_ops.c:ED_keymap_screen() */ +void ED_marker_keymap(struct wmWindowManager *wm); #endif /* ED_MARKERS_H */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index d16ad075bf3..2ad839997db 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -271,7 +271,7 @@ void ED_SCR_OT_area_rip(wmOperatorType *ot) ot->name= "Rip Area into New Window"; ot->idname= "ED_SCR_OT_area_rip"; - ot->invoke= NULL; //WM_operator_confirm; + ot->invoke= WM_operator_confirm; ot->exec= screen_area_rip_op; ot->poll= ED_operator_areaactive; } @@ -1124,6 +1124,7 @@ void ED_SCR_OT_repeat_last(wmOperatorType *ot) ot->idname= "ED_SCR_OT_repeat_last"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= repeat_last_exec; ot->poll= ED_operator_screenactive; @@ -1161,6 +1162,7 @@ void ED_SCR_OT_region_split(wmOperatorType *ot) ot->idname= "ED_SCR_OT_region_split"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= region_split_exec; ot->poll= ED_operator_areaactive; @@ -1196,6 +1198,7 @@ void ED_SCR_OT_region_flip(wmOperatorType *ot) ot->idname= "ED_SCR_OT_region_flip"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= region_flip_exec; ot->poll= ED_operator_areaactive; @@ -1299,5 +1302,8 @@ void ED_keymap_screen(wmWindowManager *wm) RNA_enum_set(WM_keymap_add_item(keymap, "ED_SCR_OT_region_split", SKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "dir", 'v'); WM_keymap_add_item(keymap, "ED_SCR_OT_region_flip", F5KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ED_SCR_OT_repeat_last", F4KEY, KM_PRESS, 0, 0); + + /* screen level global keymaps */ + ED_marker_keymap(wm); } diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index c95e7fd7e9d..599594a3ec0 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -217,22 +217,5 @@ void time_keymap(wmWindowManager *wm) WM_keymap_verify_item(keymap, "ED_TIME_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ED_TIME_OT_toggle_time", TKEY, KM_PRESS, 0, 0); - - /* markers (XXX move to function?) */ - keymap= WM_keymap_listbase(wm, "Markers", 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_add", MKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "ED_MARKER_OT_move", GKEY, KM_PRESS, 0, 0); - - /* generates event, in end to make select work */ - WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0); - } diff --git a/source/blender/editors/space_time/ed_markers.c b/source/blender/editors/util/ed_markers.c index 0dc68fb4b27..843a81e7086 100644 --- a/source/blender/editors/space_time/ed_markers.c +++ b/source/blender/editors/util/ed_markers.c @@ -197,6 +197,7 @@ static int ed_marker_add(bContext *C, wmOperator *op) sprintf(marker->name, "Frame %d", frame); // XXX - temp code only BLI_addtail(markers, marker); + WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL); //BIF_undo_push("Add Marker"); return OPERATOR_FINISHED; @@ -824,6 +825,7 @@ static void ED_MARKER_OT_delete(wmOperatorType *ot) ot->idname= "ED_MARKER_OT_delete"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= ed_marker_delete_exec; ot->poll= ED_operator_areaactive; @@ -831,7 +833,7 @@ static void ED_MARKER_OT_delete(wmOperatorType *ot) /* ************************** registration **********************************/ -/* called in ED_operatortypes_screen() */ +/* called in screen_ops.c:ED_operatortypes_screen() */ void ED_marker_operatortypes(void) { WM_operatortype_append(ED_MARKER_OT_add); @@ -844,4 +846,23 @@ void ED_marker_operatortypes(void) WM_operatortype_append(ED_MARKER_OT_delete); } +/* called in screen_ops.c:ED_keymap_screen() */ +void ED_marker_keymap(wmWindowManager *wm) +{ + ListBase *keymap= WM_keymap_listbase(wm, "Markers", 0, 0); + + WM_keymap_verify_item(keymap, "ED_MARKER_OT_add", MKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ED_MARKER_OT_move", GKEY, KM_PRESS, 0, 0); + + /* generates event, in end to make select work */ + WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0); + +} |