Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/screen/screen_ops.c
| Show First 20 Lines • Show All 4,849 Lines • ▼ Show 20 Lines | static const EnumPropertyItem modal_items[] = { | ||||
| {KM_MODAL_SNAP_ON, "SNAP", 0, "Snap on", ""}, | {KM_MODAL_SNAP_ON, "SNAP", 0, "Snap on", ""}, | ||||
| {KM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap off", ""}, | {KM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap off", ""}, | ||||
| {0, NULL, 0, NULL, NULL}}; | {0, NULL, 0, NULL, NULL}}; | ||||
| wmKeyMap *keymap; | wmKeyMap *keymap; | ||||
| /* Standard Modal keymap ------------------------------------------------ */ | /* Standard Modal keymap ------------------------------------------------ */ | ||||
| keymap = WM_modalkeymap_add(keyconf, "Standard Modal Map", modal_items); | keymap = WM_modalkeymap_add(keyconf, "Standard Modal Map", modal_items); | ||||
| WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_CANCEL); | |||||
| WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, KM_MODAL_APPLY); | |||||
| WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); | |||||
| WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); | |||||
| WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_SNAP_ON); | |||||
| WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_MODAL_SNAP_OFF); | |||||
| WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move"); | WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move"); | ||||
| } | } | ||||
| static bool blend_file_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *UNUSED(event), const char **UNUSED(tooltip)) | static bool blend_file_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *UNUSED(event), const char **UNUSED(tooltip)) | ||||
| { | { | ||||
| if (drag->type == WM_DRAG_PATH) { | if (drag->type == WM_DRAG_PATH) { | ||||
| if (drag->icon == ICON_FILE_BLEND) | if (drag->icon == ICON_FILE_BLEND) | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| static void blend_file_drop_copy(wmDrag *drag, wmDropBox *drop) | static void blend_file_drop_copy(wmDrag *drag, wmDropBox *drop) | ||||
| { | { | ||||
| /* copy drag path to properties */ | /* copy drag path to properties */ | ||||
| RNA_string_set(drop->ptr, "filepath", drag->path); | RNA_string_set(drop->ptr, "filepath", drag->path); | ||||
| } | } | ||||
| /* called in spacetypes.c */ | /* called in spacetypes.c */ | ||||
| void ED_keymap_screen(wmKeyConfig *keyconf) | void ED_keymap_screen(wmKeyConfig *keyconf) | ||||
| { | { | ||||
| ListBase *lb; | ListBase *lb; | ||||
| wmKeyMap *keymap; | |||||
| wmKeyMapItem *kmi; | |||||
| /* Screen Editing ------------------------------------------------ */ | /* Screen Editing ------------------------------------------------ */ | ||||
| keymap = WM_keymap_ensure(keyconf, "Screen Editing", 0, 0); | WM_keymap_ensure(keyconf, "Screen Editing", 0, 0); | ||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "modifier", 0); | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "modifier", 1); | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "modifier", 2); | |||||
| /* screen tools */ | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE_AREA, 0, 0, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE_AREA, 0, 0, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_area_dupli", EVT_ACTIONZONE_AREA, 0, KM_SHIFT, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_area_swap", EVT_ACTIONZONE_AREA, 0, KM_CTRL, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_region_scale", EVT_ACTIONZONE_REGION, 0, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", EVT_ACTIONZONE_FULLSCREEN, 0, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_hide_panels", true); | |||||
| /* area move after action zones */ | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_area_options", RIGHTMOUSE, KM_PRESS, 0, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_header", F9KEY, KM_PRESS, KM_ALT, 0); | |||||
| #endif | |||||
| /* Header Editing ------------------------------------------------ */ | /* Header Editing ------------------------------------------------ */ | ||||
| /* note: this is only used when the cursor is inside the header */ | /* note: this is only used when the cursor is inside the header */ | ||||
| keymap = WM_keymap_ensure(keyconf, "Header", 0, 0); | WM_keymap_ensure(keyconf, "Header", 0, 0); | ||||
| WM_keymap_add_item(keymap, "SCREEN_OT_header_context_menu", RIGHTMOUSE, KM_PRESS, 0, 0); | |||||
| /* Screen General ------------------------------------------------ */ | /* Screen General ------------------------------------------------ */ | ||||
| keymap = WM_keymap_ensure(keyconf, "Screen", 0, 0); | WM_keymap_ensure(keyconf, "Screen", 0, 0); | ||||
| /* standard timers */ | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_step", TIMER0, KM_ANY, KM_ANY, 0); | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_region_blend", TIMERREGION, KM_ANY, KM_ANY, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1); | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_CTRL, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_hide_panels", true); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_screenshot", F3KEY, KM_PRESS, KM_CTRL, 0); | |||||
| #endif | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", TABKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_NEXT); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", TABKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_PREV); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_workspace_cycle", PAGEDOWNKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_NEXT); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_workspace_cycle", PAGEUPKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_PREV); | |||||
| /* tests */ | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_region_quadview", QKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", RKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_verify_item(keymap, "SCRIPT_OT_reload", F8KEY, KM_PRESS, 0, 0); | |||||
| #endif | |||||
| /* files */ | |||||
| WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "FILE_OT_execute", PADENTER, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "FILE_OT_cancel", ESCKEY, KM_PRESS, 0, 0); | |||||
| /* undo */ | |||||
| #ifdef __APPLE__ | |||||
| WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_OSKEY, 0); | |||||
| WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "ED_OT_undo_history", ZKEY, KM_PRESS, KM_ALT | KM_OSKEY, 0); | |||||
| #endif | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "ED_OT_undo_history", ZKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); | |||||
| #endif | |||||
| /* render */ | |||||
| kmi = WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_viewport", true); | |||||
| kmi = WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "animation", true); | |||||
| RNA_boolean_set(kmi->ptr, "use_viewport", true); | |||||
| WM_keymap_add_item(keymap, "RENDER_OT_view_cancel", ESCKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "RENDER_OT_view_show", F11KEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "RENDER_OT_play_rendered_anim", F11KEY, KM_PRESS, KM_CTRL, 0); | |||||
| /* user prefs */ | |||||
| #ifdef __APPLE__ | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", COMMAKEY, KM_PRESS, KM_OSKEY, 0); | |||||
| #endif | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", UKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| #endif | |||||
| /* Anim Playback ------------------------------------------------ */ | /* Anim Playback ------------------------------------------------ */ | ||||
| keymap = WM_keymap_ensure(keyconf, "Frames", 0, 0); | WM_keymap_ensure(keyconf, "Frames", 0, 0); | ||||
| /* frame offsets */ | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", 10); | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", -10); | |||||
| #endif | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -1); | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", 1); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELDOWNMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", 1); | |||||
| RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELUPMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", -1); | |||||
| RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", UPARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "end", true); | |||||
| RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", DOWNARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "end", false); | |||||
| #endif | |||||
| RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", true); | |||||
| RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", false); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", UPARROWKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "next", true); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", DOWNARROWKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "next", false); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", MEDIALAST, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "next", true); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", MEDIAFIRST, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "next", false); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| /* play (forward and backwards) */ | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_boolean_set( | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0)->ptr, | |||||
| "reverse", true); | |||||
| #else | |||||
| /* play (forward and backwards) */ | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", SPACEKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set( | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", SPACEKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, | |||||
| "reverse", true); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", MEDIAPLAY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", MEDIASTOP, KM_PRESS, 0, 0); | |||||
| /* Alternative keys for animation and sequencer playing */ | |||||
| #if 0 /* XXX: disabled for restoring later... bad implementation */ | |||||
| keymap = WM_keymap_ensure(keyconf, "Frames", 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "cycle_speed", true); | |||||
| kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "reverse", true); | |||||
| RNA_boolean_set(kmi->ptr, "cycle_speed", true); | |||||
| WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", DOWNARROWKEY, KM_PRESS, KM_ALT, 0); | |||||
| #endif | |||||
| /* dropbox for entire window */ | /* dropbox for entire window */ | ||||
| lb = WM_dropboxmap_find("Window", 0, 0); | lb = WM_dropboxmap_find("Window", 0, 0); | ||||
| WM_dropbox_add(lb, "WM_OT_drop_blend_file", blend_file_drop_poll, blend_file_drop_copy); | WM_dropbox_add(lb, "WM_OT_drop_blend_file", blend_file_drop_poll, blend_file_drop_copy); | ||||
| WM_dropbox_add(lb, "UI_OT_drop_color", UI_drop_color_poll, UI_drop_color_copy); | WM_dropbox_add(lb, "UI_OT_drop_color", UI_drop_color_poll, UI_drop_color_copy); | ||||
| keymap_modal_set(keyconf); | keymap_modal_set(keyconf); | ||||
| } | } | ||||
| /** \} */ | /** \} */ | ||||