soc-2008-mxcurioni: merged changes to revision 23516
[blender.git] / source / blender / editors / object / object_ops.c
index 27d481ef5098818e41ada50c5f4681c9fe0fe84f..7397cead505917995fb730e484e5002e96e91654 100644 (file)
 
 void ED_operatortypes_object(void)
 {
+       wmOperatorType *ot;
+
+       WM_operatortype_append(OBJECT_OT_location_clear);
+       WM_operatortype_append(OBJECT_OT_rotation_clear);
+       WM_operatortype_append(OBJECT_OT_scale_clear);
+       WM_operatortype_append(OBJECT_OT_origin_clear);
+       WM_operatortype_append(OBJECT_OT_visual_transform_apply);
+       WM_operatortype_append(OBJECT_OT_location_apply);
+       WM_operatortype_append(OBJECT_OT_scale_apply);
+       WM_operatortype_append(OBJECT_OT_rotation_apply);
+       WM_operatortype_append(OBJECT_OT_center_set);
+       
+       WM_operatortype_append(OBJECT_OT_mode_set);
        WM_operatortype_append(OBJECT_OT_editmode_toggle);
        WM_operatortype_append(OBJECT_OT_posemode_toggle);
+       WM_operatortype_append(OBJECT_OT_proxy_make);
+       WM_operatortype_append(OBJECT_OT_restrictview_clear);
+       WM_operatortype_append(OBJECT_OT_restrictview_set);
+       WM_operatortype_append(OBJECT_OT_shade_smooth);
+       WM_operatortype_append(OBJECT_OT_shade_flat);
+
        WM_operatortype_append(OBJECT_OT_parent_set);
        WM_operatortype_append(OBJECT_OT_parent_clear);
+       WM_operatortype_append(OBJECT_OT_vertex_parent_set);
        WM_operatortype_append(OBJECT_OT_track_set);
        WM_operatortype_append(OBJECT_OT_track_clear);
+       WM_operatortype_append(OBJECT_OT_slow_parent_set);
+       WM_operatortype_append(OBJECT_OT_slow_parent_clear);
+       WM_operatortype_append(OBJECT_OT_make_local);
+       WM_operatortype_append(OBJECT_OT_move_to_layer);
+
        WM_operatortype_append(OBJECT_OT_select_inverse);
        WM_operatortype_append(OBJECT_OT_select_random);
        WM_operatortype_append(OBJECT_OT_select_all_toggle);
@@ -76,20 +101,9 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(OBJECT_OT_select_by_layer);
        WM_operatortype_append(OBJECT_OT_select_linked);
        WM_operatortype_append(OBJECT_OT_select_grouped);
-       WM_operatortype_append(OBJECT_OT_location_clear);
-       WM_operatortype_append(OBJECT_OT_rotation_clear);
-       WM_operatortype_append(OBJECT_OT_scale_clear);
-       WM_operatortype_append(OBJECT_OT_origin_clear);
-       WM_operatortype_append(OBJECT_OT_restrictview_clear);
-       WM_operatortype_append(OBJECT_OT_restrictview_set);
-       WM_operatortype_append(OBJECT_OT_slowparent_set);
-       WM_operatortype_append(OBJECT_OT_slowparent_clear);
-       WM_operatortype_append(OBJECT_OT_center_set);
-       WM_operatortype_append(OBJECT_OT_duplicates_make_real);
-       WM_operatortype_append(OBJECT_OT_duplicate);
-       WM_operatortype_append(OBJECT_OT_join);
-       WM_operatortype_append(OBJECT_OT_shade_smooth);
-       WM_operatortype_append(OBJECT_OT_shade_flat);
+       WM_operatortype_append(OBJECT_OT_select_mirror);
+       WM_operatortype_append(OBJECT_OT_select_name); /* XXX - weak, not compat with linked objects */
+
        WM_operatortype_append(GROUP_OT_group_create);
        WM_operatortype_append(GROUP_OT_objects_remove);
        WM_operatortype_append(GROUP_OT_objects_add_active);
@@ -101,8 +115,15 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(OBJECT_OT_text_add);
        WM_operatortype_append(OBJECT_OT_surface_add);
        WM_operatortype_append(OBJECT_OT_armature_add);
-       WM_operatortype_append(OBJECT_OT_object_add);
+       WM_operatortype_append(OBJECT_OT_lamp_add);
+       WM_operatortype_append(OBJECT_OT_add);
        WM_operatortype_append(OBJECT_OT_primitive_add);
+       WM_operatortype_append(OBJECT_OT_mesh_add);
+       WM_operatortype_append(OBJECT_OT_metaball_add);
+       WM_operatortype_append(OBJECT_OT_duplicates_make_real);
+       WM_operatortype_append(OBJECT_OT_duplicate);
+       WM_operatortype_append(OBJECT_OT_join);
+       WM_operatortype_append(OBJECT_OT_convert);
 
        WM_operatortype_append(OBJECT_OT_modifier_add);
        WM_operatortype_append(OBJECT_OT_modifier_remove);
@@ -112,7 +133,13 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(OBJECT_OT_modifier_convert);
        WM_operatortype_append(OBJECT_OT_modifier_copy);
        WM_operatortype_append(OBJECT_OT_multires_subdivide);
-       WM_operatortype_append(OBJECT_OT_modifier_mdef_bind);
+       WM_operatortype_append(OBJECT_OT_multires_higher_levels_delete);
+       WM_operatortype_append(OBJECT_OT_meshdeform_bind);
+       WM_operatortype_append(OBJECT_OT_hook_reset);
+       WM_operatortype_append(OBJECT_OT_hook_recenter);
+       WM_operatortype_append(OBJECT_OT_hook_select);
+       WM_operatortype_append(OBJECT_OT_hook_assign);
+       WM_operatortype_append(OBJECT_OT_explode_refresh);
 
        WM_operatortype_append(OBJECT_OT_constraint_add);
        WM_operatortype_append(OBJECT_OT_constraint_add_with_targets);
@@ -125,6 +152,8 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(CONSTRAINT_OT_delete);
        WM_operatortype_append(CONSTRAINT_OT_move_up);
        WM_operatortype_append(CONSTRAINT_OT_move_down);
+       WM_operatortype_append(CONSTRAINT_OT_stretchto_reset);
+       WM_operatortype_append(CONSTRAINT_OT_limitdistance_reset);
        WM_operatortype_append(CONSTRAINT_OT_childof_set_inverse);
        WM_operatortype_append(CONSTRAINT_OT_childof_clear_inverse);
 
@@ -136,30 +165,61 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(OBJECT_OT_vertex_group_deselect);
        WM_operatortype_append(OBJECT_OT_vertex_group_copy_to_linked);
        WM_operatortype_append(OBJECT_OT_vertex_group_copy);
+       WM_operatortype_append(OBJECT_OT_vertex_group_menu);
+       WM_operatortype_append(OBJECT_OT_vertex_group_set_active);
+
+       WM_operatortype_append(OBJECT_OT_game_property_new);
+       WM_operatortype_append(OBJECT_OT_game_property_remove);
 
        WM_operatortype_append(OBJECT_OT_shape_key_add);
        WM_operatortype_append(OBJECT_OT_shape_key_remove);
 
        WM_operatortype_append(LATTICE_OT_select_all_toggle);
        WM_operatortype_append(LATTICE_OT_make_regular);
+       
+       /* macros */
+       ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
+       if(ot) {
+               WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
+               WM_operatortype_macro_define(ot, "TFM_OT_translate");
+       }
+}
+
+static int object_mode_poll(bContext *C)
+{
+       Object *ob= CTX_data_active_object(C);
+       return (!ob || ob->mode == OB_MODE_OBJECT);
 }
 
 void ED_keymap_object(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Object Non-modal", 0, 0);
+       wmKeyMap *keymap;
+       wmKeymapItem *kmi;
+       
+       keymap= WM_keymap_find(wm, "Object Non-modal", 0, 0);
        
        /* 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);
+       
+       kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", VKEY, KM_PRESS, 0, 0);
+               RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT);
+               RNA_boolean_set(kmi->ptr, "toggle", 1);
+       kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, KM_CTRL, 0);
+               RNA_enum_set(kmi->ptr, "mode", OB_MODE_WEIGHT_PAINT);
+               RNA_boolean_set(kmi->ptr, "toggle", 1);
+       
        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,  */
-       keymap= WM_keymap_listbase(wm, "Object Mode", 0, 0);
+       keymap= WM_keymap_find(wm, "Object Mode", 0, 0);
+       keymap->poll= object_mode_poll;
        
        WM_keymap_add_item(keymap, "OBJECT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
        WM_keymap_add_item(keymap, "OBJECT_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
        WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0);
        WM_keymap_add_item(keymap, "OBJECT_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0);
+       WM_keymap_add_item(keymap, "OBJECT_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
        
        WM_keymap_verify_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
        WM_keymap_verify_item(keymap, "OBJECT_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0);
@@ -178,11 +238,14 @@ void ED_keymap_object(wmWindowManager *wm)
        WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, 0, 0);
        RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1);
        
-       WM_keymap_verify_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0);
+       WM_keymap_add_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0);
+       WM_keymap_add_item(keymap, "OBJECT_OT_delete", DELKEY, KM_PRESS, 0, 0);
        WM_keymap_verify_item(keymap, "OBJECT_OT_primitive_add", AKEY, KM_PRESS, KM_SHIFT, 0);
-       WM_keymap_add_item(keymap, "OBJECT_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+       WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
        RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_duplicate", DKEY, KM_PRESS, KM_ALT, 0)->ptr, "linked", 1);
        WM_keymap_add_item(keymap, "OBJECT_OT_join", JKEY, KM_PRESS, KM_CTRL, 0);
+       WM_keymap_add_item(keymap, "OBJECT_OT_convert", CKEY, KM_PRESS, KM_ALT, 0);
+       WM_keymap_add_item(keymap, "OBJECT_OT_proxy_make", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
        
        // XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith
        WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0);
@@ -194,7 +257,8 @@ void ED_keymap_object(wmWindowManager *wm)
        WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
 
        /* Lattice */
-       keymap= WM_keymap_listbase(wm, "Lattice", 0, 0);
+       keymap= WM_keymap_find(wm, "Lattice", 0, 0);
+       keymap->poll= ED_operator_editlattice;
 
        WM_keymap_add_item(keymap, "LATTICE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
 }