Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform_ops.c
| Show First 20 Lines • Show All 1,188 Lines • ▼ Show 20 Lines | void transform_operatortypes(void) | ||||
| WM_operatortype_append(TRANSFORM_OT_select_orientation); | WM_operatortype_append(TRANSFORM_OT_select_orientation); | ||||
| WM_operatortype_append(TRANSFORM_OT_create_orientation); | WM_operatortype_append(TRANSFORM_OT_create_orientation); | ||||
| WM_operatortype_append(TRANSFORM_OT_delete_orientation); | WM_operatortype_append(TRANSFORM_OT_delete_orientation); | ||||
| WM_operatortype_append(TRANSFORM_OT_from_gizmo); | WM_operatortype_append(TRANSFORM_OT_from_gizmo); | ||||
| } | } | ||||
| void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spaceid) | void ED_keymap_transform(wmKeyConfig *keyconf) | ||||
| { | { | ||||
| wmKeyMapItem *kmi; | wmKeyMap *modalmap = transform_modal_keymap(keyconf); | ||||
| wmKeyMap *modalmap; | |||||
| /* transform.c, only adds modal map once, checks if it's there */ | |||||
| modalmap = transform_modal_keymap(keyconf); | |||||
| /* assign map to operators only the first time */ | |||||
| if (modalmap) { | |||||
| TransformModeItem *tmode; | TransformModeItem *tmode; | ||||
| for (tmode = transform_modes; tmode->idname; tmode++) { | for (tmode = transform_modes; tmode->idname; tmode++) { | ||||
| WM_modalkeymap_assign(modalmap, tmode->idname); | WM_modalkeymap_assign(modalmap, tmode->idname); | ||||
| } | } | ||||
| WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform"); | WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform"); | ||||
| } | } | ||||
| switch (spaceid) { | |||||
| case SPACE_VIEW3D: | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_BEND, WKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, OP_TOSPHERE, SKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, OP_SHEAR, SKEY, KM_PRESS, KM_ALT | KM_CTRL | KM_SHIFT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use", true); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, OP_MIRROR, MKEY, KM_PRESS, KM_CTRL, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_snap"); | |||||
| WM_keymap_add_panel(keymap, "VIEW3D_PT_snapping", TABKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| /* Will fall-through to texture-space transform. */ | |||||
| kmi = WM_keymap_add_item(keymap, "OBJECT_OT_transform_axis_target", TKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| kmi = WM_keymap_add_item(keymap, OP_TRANSLATION, TKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "texture_space", true); | |||||
| kmi = WM_keymap_add_item(keymap, OP_RESIZE, TKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "texture_space", true); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, OP_SKIN_RESIZE, AKEY, KM_PRESS, KM_CTRL, 0); | |||||
| break; | |||||
| case SPACE_ACTION: | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_TRANSLATE); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_TRANSLATE); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_SCALE); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", TKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_SLIDE); | |||||
| break; | |||||
| case SPACE_IPO: | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); | |||||
| WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); | |||||
| break; | |||||
| case SPACE_NLA: | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TRANSLATION); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TRANSLATION); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_SCALE); | |||||
| break; | |||||
| case SPACE_NODE: | |||||
| WM_keymap_add_item(keymap, "NODE_OT_translate_attach", GKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "NODE_OT_translate_attach", EVT_TWEAK_A, KM_ANY, 0, 0); | |||||
| WM_keymap_add_item(keymap, "NODE_OT_translate_attach", EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| /* NB: small trick: macro operator poll may fail due to library data edit, | |||||
| * in that case the secondary regular operators are called with same keymap. | |||||
| */ | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "release_confirm", true); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_A, KM_ANY, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "release_confirm", true); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "release_confirm", true); | |||||
| WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); | |||||
| /* detach and translate */ | |||||
| WM_keymap_add_item(keymap, "NODE_OT_move_detach_links", DKEY, KM_PRESS, KM_ALT, 0); | |||||
| /* XXX release_confirm is set in the macro operator definition */ | |||||
| WM_keymap_add_item(keymap, "NODE_OT_move_detach_links_release", EVT_TWEAK_A, KM_ANY, KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "NODE_OT_move_detach_links", EVT_TWEAK_S, KM_ANY, KM_ALT, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_snap"); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", TABKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "tool_settings.snap_node_element"); | |||||
| break; | |||||
| case SPACE_SEQ: | |||||
| WM_keymap_add_item(keymap, OP_SEQ_SLIDE, GKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_SEQ_SLIDE, EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); | |||||
| break; | |||||
| case SPACE_IMAGE: | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_SHEAR, SKEY, KM_PRESS, KM_ALT | KM_CTRL | KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_snap"); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", TABKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "tool_settings.snap_uv_element"); | |||||
| break; | |||||
| case SPACE_CLIP: | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); | |||||
| break; | |||||
| default: | |||||
| break; | |||||
| } | |||||
| } | |||||