soc-2008-mxcurioni: merged changes to revision 23516
[blender.git] / source / blender / editors / object / object_ops.c
index f2e048284f4ceffb664319b4f48dacb773b9bf85..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);
@@ -79,21 +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_proxy_make);
-       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);
@@ -105,10 +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);
@@ -118,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);
@@ -144,6 +165,11 @@ 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);
@@ -152,29 +178,48 @@ void ED_operatortypes_object(void)
        WM_operatortype_append(LATTICE_OT_make_regular);
        
        /* macros */
-       ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
+       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);
@@ -193,11 +238,13 @@ 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_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
@@ -210,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);
 }