Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/mesh/mesh_ops.c
| Show All 35 Lines | |||||
| #include "WM_api.h" | #include "WM_api.h" | ||||
| #include "WM_types.h" | #include "WM_types.h" | ||||
| #include "ED_object.h" | #include "ED_object.h" | ||||
| #include "ED_mesh.h" | #include "ED_mesh.h" | ||||
| #include "ED_screen.h" | #include "ED_screen.h" | ||||
| #include "ED_select_utils.h" | #include "ED_select_utils.h" | ||||
| #include "ED_keymap_templates.h" | |||||
| #include "mesh_intern.h" /* own include */ | #include "mesh_intern.h" /* own include */ | ||||
| /**************************** registration **********************************/ | /**************************** registration **********************************/ | ||||
| void ED_operatortypes_mesh(void) | void ED_operatortypes_mesh(void) | ||||
| { | { | ||||
| WM_operatortype_append(MESH_OT_select_all); | WM_operatortype_append(MESH_OT_select_all); | ||||
| ▲ Show 20 Lines • Show All 267 Lines • ▼ Show 20 Lines | void ED_operatormacros_mesh(void) | ||||
| otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); | otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); | ||||
| RNA_enum_set(otmacro->ptr, "proportional", 0); | RNA_enum_set(otmacro->ptr, "proportional", 0); | ||||
| RNA_boolean_set(otmacro->ptr, "mirror", false); | RNA_boolean_set(otmacro->ptr, "mirror", false); | ||||
| } | } | ||||
| /* note mesh keymap also for other space? */ | /* note mesh keymap also for other space? */ | ||||
| void ED_keymap_mesh(wmKeyConfig *keyconf) | void ED_keymap_mesh(wmKeyConfig *keyconf) | ||||
| { | { | ||||
| wmKeyMap *keymap; | wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Mesh", 0, 0); | ||||
| wmKeyMapItem *kmi; | |||||
| keymap = WM_keymap_ensure(keyconf, "Mesh", 0, 0); | |||||
| keymap->poll = ED_operator_editmesh; | keymap->poll = ED_operator_editmesh; | ||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_loopcut_slide", RKEY, KM_PRESS, KM_CTRL, 0); | |||||
| { | |||||
| PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "TRANSFORM_OT_edge_slide"); | |||||
| RNA_boolean_set(¯o_ptr, "release_confirm", false); | |||||
| } | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_offset_edge_loops_slide", RKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| { | |||||
| PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "TRANSFORM_OT_edge_slide"); | |||||
| RNA_boolean_set(¯o_ptr, "release_confirm", false); | |||||
| } | |||||
| WM_keymap_add_item(keymap, "MESH_OT_inset", IKEY, KM_PRESS, 0, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "MESH_OT_poke", PKEY, KM_PRESS, KM_ALT, 0); | |||||
| #endif | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_bevel", BKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "vertex_only", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_bevel", BKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "vertex_only", true); | |||||
| /* Selec Vert/Edge/Face. */ | |||||
| ED_keymap_editmesh_elem_mode(keyconf, keymap); | |||||
| /* standard mouse selection goes via space_view3d */ | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", false); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | |||||
| RNA_boolean_set(kmi->ptr, "toggle", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", false); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | |||||
| RNA_boolean_set(kmi->ptr, "toggle", true); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_edgering_select", SELECTMOUSE, KM_PRESS, KM_ALT | KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", false); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | |||||
| RNA_boolean_set(kmi->ptr, "toggle", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_edgering_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT | KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", false); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | |||||
| RNA_boolean_set(kmi->ptr, "toggle", true); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_shortest_path_pick", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_fill", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_shortest_path_pick", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_fill", true); | |||||
| ED_keymap_template_select_all(keymap, "MESH_OT_select_all"); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_next_item", PADPLUSKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_prev_item", PADMINUS, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_non_manifold", MKEY, KM_PRESS, (KM_CTRL | KM_SHIFT | KM_ALT), 0); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", true); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "MESH_OT_faces_select_linked_flat", FKEY, KM_PRESS, (KM_CTRL | KM_SHIFT | KM_ALT), 0); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "MESH_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| /* hide */ | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "unselected", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "unselected", true); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); | |||||
| /* tools */ | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "inside", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "inside", true); | |||||
| #else | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "inside", false); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "inside", true); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "VIEW3D_OT_edit_mesh_extrude_move_normal", EKEY, KM_PRESS, 0, 0); /* python operator */ | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_extrude", EKEY, KM_PRESS, KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "TRANSFORM_OT_edge_crease", EKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_ALT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); | |||||
| #endif | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_enum_set(kmi->ptr, "quad_method", MOD_TRIANGULATE_QUAD_BEAUTY); | |||||
| RNA_enum_set(kmi->ptr, "ngon_method", MOD_TRIANGULATE_NGON_BEAUTY); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "quad_method", MOD_TRIANGULATE_QUAD_FIXED); | |||||
| RNA_enum_set(kmi->ptr, "ngon_method", MOD_TRIANGULATE_NGON_EARCLIP); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_rip_move", VKEY, KM_PRESS, 0, 0); | |||||
| { | |||||
| PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "MESH_OT_rip"); | |||||
| RNA_boolean_set(¯o_ptr, "use_fill", false); | |||||
| } | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_rip_move", VKEY, KM_PRESS, KM_ALT, 0); | |||||
| { | |||||
| PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "MESH_OT_rip"); | |||||
| RNA_boolean_set(¯o_ptr, "use_fill", true); | |||||
| } | |||||
| WM_keymap_add_item(keymap, "MESH_OT_rip_edge_move", DKEY, KM_PRESS, KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "TRANSFORM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0); | |||||
| /* add/remove */ | |||||
| WM_keymap_add_item(keymap, "MESH_OT_edge_face_add", FKEY, KM_PRESS, 0, 0); | |||||
| // WM_keymap_add_item(keymap, "MESH_OT_skin", FKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); /* python, removed */ | |||||
| WM_keymap_add_item(keymap, "MESH_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_vert_connect_path", JKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_point_normals", LKEY, KM_PRESS, KM_ALT, 0); | |||||
| /* Vertex Slide */ | |||||
| WM_keymap_add_item(keymap, "TRANSFORM_OT_vert_slide", VKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| /* use KM_CLICK because same key is used for tweaks */ | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "rotate_source", true); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", ACTIONMOUSE, KM_CLICK, KM_SHIFT | KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "rotate_source", false); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_delete", XKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_delete", DELKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_dissolve_mode", XKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "MESH_OT_dissolve_mode", DELKEY, KM_PRESS, KM_CTRL, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_knife_tool", KKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_occlude_geometry", true); | |||||
| RNA_boolean_set(kmi->ptr, "only_selected", false); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| kmi = WM_keymap_add_item(keymap, "MESH_OT_knife_tool", KKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "use_occlude_geometry", false); | |||||
| RNA_boolean_set(kmi->ptr, "only_selected", true); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); | |||||
| /* menus */ | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_specials", WKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_faces", FKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_edges", EKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_vertices", VKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_uv_map", UKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_menu(keymap, "VIEW3D_MT_vertex_group", GKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "OBJECT_OT_vertex_group_remove_from", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| #ifdef USE_WM_KEYMAP_27X | |||||
| /* useful stuff from object-mode */ | |||||
| for (int i = 0; i <= 5; i++) { | |||||
| kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY + i, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_int_set(kmi->ptr, "level", i); | |||||
| } | |||||
| #endif | |||||
| ED_keymap_proportional_cycle(keyconf, keymap); | |||||
| ED_keymap_proportional_editmode(keyconf, keymap, true); | |||||
| knifetool_modal_keymap(keyconf); | knifetool_modal_keymap(keyconf); | ||||
| point_normals_modal_keymap(keyconf); | point_normals_modal_keymap(keyconf); | ||||
| } | } | ||||