Blender  V2.59
view3d_ops.c
Go to the documentation of this file.
00001 /*
00002  * $Id: view3d_ops.c 38908 2011-08-02 04:28:05Z merwin $
00003  *
00004  * ***** BEGIN GPL LICENSE BLOCK *****
00005  *
00006  * This program is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU General Public License
00008  * as published by the Free Software Foundation; either version 2
00009  * of the License, or (at your option) any later version. 
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program; if not, write to the Free Software Foundation,
00018  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00019  *
00020  * The Original Code is Copyright (C) 2008 Blender Foundation.
00021  * All rights reserved.
00022  *
00023  * 
00024  * Contributor(s): Blender Foundation
00025  *
00026  * ***** END GPL LICENSE BLOCK *****
00027  */
00028 
00034 #include <stdlib.h>
00035 #include <math.h>
00036 
00037 
00038 #include "DNA_object_types.h"
00039 #include "DNA_scene_types.h"
00040 #include "DNA_screen_types.h"
00041 #include "DNA_space_types.h"
00042 #include "DNA_view3d_types.h"
00043 
00044 #include "BLI_math.h"
00045 #include "BLI_blenlib.h"
00046 #include "BLI_utildefines.h"
00047 
00048 #include "RNA_access.h"
00049 
00050 #include "WM_api.h"
00051 #include "WM_types.h"
00052 
00053 #include "ED_transform.h"
00054 
00055 #include "view3d_intern.h"
00056 
00057 
00058 /* ************************** registration **********************************/
00059 
00060 void view3d_operatortypes(void)
00061 {
00062         WM_operatortype_append(VIEW3D_OT_rotate);
00063         WM_operatortype_append(VIEW3D_OT_move);
00064         WM_operatortype_append(VIEW3D_OT_zoom);
00065         WM_operatortype_append(VIEW3D_OT_zoom_camera_1_to_1);
00066         WM_operatortype_append(VIEW3D_OT_dolly);
00067         WM_operatortype_append(VIEW3D_OT_ndof_orbit);
00068         WM_operatortype_append(VIEW3D_OT_ndof_pan);
00069         WM_operatortype_append(VIEW3D_OT_view_all);
00070         WM_operatortype_append(VIEW3D_OT_viewnumpad);
00071         WM_operatortype_append(VIEW3D_OT_view_orbit);
00072         WM_operatortype_append(VIEW3D_OT_view_pan);
00073         WM_operatortype_append(VIEW3D_OT_view_persportho);
00074         WM_operatortype_append(VIEW3D_OT_background_image_add);
00075         WM_operatortype_append(VIEW3D_OT_background_image_remove);
00076         WM_operatortype_append(VIEW3D_OT_view_selected);
00077         WM_operatortype_append(VIEW3D_OT_view_center_cursor);
00078         WM_operatortype_append(VIEW3D_OT_view_center_camera);
00079         WM_operatortype_append(VIEW3D_OT_select);
00080         WM_operatortype_append(VIEW3D_OT_select_border);
00081         WM_operatortype_append(VIEW3D_OT_clip_border);
00082         WM_operatortype_append(VIEW3D_OT_select_circle);
00083         WM_operatortype_append(VIEW3D_OT_smoothview);
00084         WM_operatortype_append(VIEW3D_OT_render_border);
00085         WM_operatortype_append(VIEW3D_OT_zoom_border);
00086         WM_operatortype_append(VIEW3D_OT_manipulator);
00087         WM_operatortype_append(VIEW3D_OT_enable_manipulator);
00088         WM_operatortype_append(VIEW3D_OT_cursor3d);
00089         WM_operatortype_append(VIEW3D_OT_select_lasso);
00090         WM_operatortype_append(VIEW3D_OT_setcameratoview);
00091         WM_operatortype_append(VIEW3D_OT_object_as_camera);
00092         WM_operatortype_append(VIEW3D_OT_localview);
00093         WM_operatortype_append(VIEW3D_OT_game_start);
00094         WM_operatortype_append(VIEW3D_OT_fly);
00095         WM_operatortype_append(VIEW3D_OT_layers);
00096         
00097         WM_operatortype_append(VIEW3D_OT_properties);
00098         WM_operatortype_append(VIEW3D_OT_toolshelf);
00099         
00100         WM_operatortype_append(VIEW3D_OT_snap_selected_to_grid);
00101         WM_operatortype_append(VIEW3D_OT_snap_selected_to_cursor);
00102         WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid);
00103         WM_operatortype_append(VIEW3D_OT_snap_cursor_to_center);
00104         WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected);
00105         WM_operatortype_append(VIEW3D_OT_snap_cursor_to_active);
00106                 
00107         transform_operatortypes();
00108 }
00109 
00110 void view3d_keymap(wmKeyConfig *keyconf)
00111 {
00112         wmKeyMap *keymap;
00113         wmKeyMapItem *kmi;
00114         
00115         keymap= WM_keymap_find(keyconf, "3D View Generic", SPACE_VIEW3D, 0);
00116         
00117         WM_keymap_add_item(keymap, "VIEW3D_OT_properties", NKEY, KM_PRESS, 0, 0);
00118         WM_keymap_add_item(keymap, "VIEW3D_OT_toolshelf", TKEY, KM_PRESS, 0, 0);
00119         
00120         /* only for region 3D window */
00121         keymap= WM_keymap_find(keyconf, "3D View", SPACE_VIEW3D, 0);
00122         
00123         kmi = WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_ANY, 0);
00124         RNA_boolean_set(kmi->ptr, "release_confirm", 1);
00125         /*
00126          * Doesn't work with KM_SHIFT, have to use KM_ANY and filter in invoke
00127          * */
00128         // WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
00129         
00130         WM_keymap_verify_item(keymap, "VIEW3D_OT_cursor3d", ACTIONMOUSE, KM_PRESS, 0, 0);
00131         
00132         WM_keymap_verify_item(keymap, "VIEW3D_OT_rotate", MIDDLEMOUSE, KM_PRESS, 0, 0);
00133         WM_keymap_verify_item(keymap, "VIEW3D_OT_move", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0);
00134         WM_keymap_verify_item(keymap, "VIEW3D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0);
00135         WM_keymap_verify_item(keymap, "VIEW3D_OT_dolly", MIDDLEMOUSE, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
00136         WM_keymap_verify_item(keymap, "VIEW3D_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
00137         WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center_cursor", PADPERIOD, KM_PRESS, KM_CTRL, 0);
00138         
00139         WM_keymap_verify_item(keymap, "VIEW3D_OT_fly", FKEY, KM_PRESS, KM_SHIFT, 0);
00140 
00141         WM_keymap_verify_item(keymap, "VIEW3D_OT_smoothview", TIMER1, KM_ANY, KM_ANY, 0);
00142         
00143         WM_keymap_add_item(keymap, "VIEW3D_OT_rotate", MOUSEPAN, 0, KM_ALT, 0);
00144         WM_keymap_add_item(keymap, "VIEW3D_OT_rotate", MOUSEROTATE, 0, 0, 0);
00145         WM_keymap_add_item(keymap, "VIEW3D_OT_move", MOUSEPAN, 0, 0, 0);
00146         WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MOUSEZOOM, 0, 0, 0);
00147         
00148         /*numpad +/-*/
00149         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADPLUSKEY, KM_PRESS, 0, 0)->ptr, "delta", 1);
00150         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADMINUS, KM_PRESS, 0, 0)->ptr, "delta", -1);
00151 
00152         /*ctrl +/-*/
00153         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", EQUALKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1);
00154         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MINUSKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1);
00155         
00156         /*wheel mouse forward/back*/
00157         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1);
00158         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1);
00159 
00160         WM_keymap_add_item(keymap, "VIEW3D_OT_zoom_camera_1_to_1", PADENTER, KM_PRESS, KM_SHIFT, 0);
00161 
00162         WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_camera", HOMEKEY, KM_PRESS, 0, 0); /* only with camera view */
00163         RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0); /* only without camera view */
00164         RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "center", 1);
00165 
00166         /* 3D mouse */
00167         WM_keymap_add_item(keymap, "VIEW3D_OT_ndof_orbit", NDOF_MOTION, 0, 0, 0);
00168         WM_keymap_add_item(keymap, "VIEW3D_OT_ndof_pan", NDOF_MOTION, 0, KM_SHIFT, 0);
00169         WM_keymap_add_item(keymap, "VIEW3D_OT_view_selected", NDOF_BUTTON_FIT, KM_PRESS, 0, 0);
00170         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_FRONT, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT);
00171         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_BACK, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_BACK);
00172         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_LEFT, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_LEFT);
00173         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_RIGHT, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT);
00174         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_TOP, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP);
00175         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_BOTTOM, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_BOTTOM);
00176 
00177         /* numpad view hotkeys*/
00178         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD0, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_CAMERA);
00179         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT);
00180         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN);
00181         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT);
00182         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT);
00183         WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 0, 0);
00184         
00185         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT);
00186         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP);
00187         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP);
00188         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BACK);
00189         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_LEFT);
00190         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BOTTOM);
00191         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD2, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANDOWN);
00192         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD4, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANLEFT);
00193         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD6, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANRIGHT);
00194         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANUP);
00195         
00196         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANRIGHT);
00197         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANLEFT);
00198         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", V3D_VIEW_PANUP);
00199         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", V3D_VIEW_PANDOWN);
00200 
00201         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELUPMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPLEFT);
00202         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPRIGHT);
00203         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELUPMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPUP);
00204         RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPDOWN);
00205         
00206         /* active aligned, replaces '*' key in 2.4x */
00207         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT, 0);
00208         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT);
00209         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00210         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT, 0);
00211         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT);
00212         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00213         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT, 0);
00214         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP);
00215         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00216         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
00217         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BACK);
00218         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00219         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
00220         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_LEFT);
00221         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00222         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
00223         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM);
00224         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00225 
00226         /* 3D mouse align */
00227         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_FRONT, KM_PRESS, KM_SHIFT, 0);
00228         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT);
00229         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00230         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_RIGHT, KM_PRESS, KM_SHIFT, 0);
00231         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT);
00232         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00233         kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", NDOF_BUTTON_TOP, KM_PRESS, KM_SHIFT, 0);
00234         RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP);
00235         RNA_boolean_set(kmi->ptr, "align_active", TRUE);
00236 
00237         WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0);
00238         
00239         /* layers, shift + alt are properties set in invoke() */
00240         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ACCENTGRAVEKEY, KM_PRESS, 0, 0)->ptr, "nr", 0);
00241         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ONEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 1);
00242         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", TWOKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 2);
00243         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", THREEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 3);
00244         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", FOURKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 4);
00245         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", FIVEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 5);
00246         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", SIXKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 6);
00247         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", SEVENKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 7);
00248         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", EIGHTKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 8);
00249         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", NINEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 9);
00250         RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ZEROKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 10);
00251         
00252         /* drawtype */
00253 
00254         kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0);
00255         RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shade");
00256         RNA_string_set(kmi->ptr, "value_1", "SOLID");
00257         RNA_string_set(kmi->ptr, "value_2", "WIREFRAME");
00258 
00259         kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0);
00260         RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shade");
00261         RNA_string_set(kmi->ptr, "value_1", "TEXTURED");
00262         RNA_string_set(kmi->ptr, "value_2", "SOLID");
00263 
00264         /* selection*/
00265         WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
00266         RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE);
00267         RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "center", TRUE);
00268         RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "enumerate", TRUE);
00269 
00270         /* selection key-combinations */
00271         kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
00272         RNA_boolean_set(kmi->ptr, "center", TRUE);
00273         RNA_boolean_set(kmi->ptr, "extend", TRUE);
00274         kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0);
00275         RNA_boolean_set(kmi->ptr, "center", TRUE);
00276         RNA_boolean_set(kmi->ptr, "enumerate", TRUE);
00277         kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0);
00278         RNA_boolean_set(kmi->ptr, "extend", TRUE);
00279         RNA_boolean_set(kmi->ptr, "enumerate", TRUE);
00280         kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL|KM_ALT, 0);
00281         RNA_boolean_set(kmi->ptr, "center", TRUE);
00282         RNA_boolean_set(kmi->ptr, "extend", TRUE);
00283         RNA_boolean_set(kmi->ptr, "enumerate", TRUE);
00284 
00285         WM_keymap_add_item(keymap, "VIEW3D_OT_select_border", BKEY, KM_PRESS, 0, 0);
00286         WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0);
00287         RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT|KM_CTRL, 0)->ptr, "deselect", 1);
00288         WM_keymap_add_item(keymap, "VIEW3D_OT_select_circle", CKEY, KM_PRESS, 0, 0);
00289         
00290         WM_keymap_add_item(keymap, "VIEW3D_OT_clip_border", BKEY, KM_PRESS, KM_ALT, 0);
00291         WM_keymap_add_item(keymap, "VIEW3D_OT_zoom_border", BKEY, KM_PRESS, KM_SHIFT, 0);
00292         WM_keymap_add_item(keymap, "VIEW3D_OT_render_border", BKEY, KM_PRESS, KM_SHIFT, 0);
00293         
00294         WM_keymap_add_item(keymap, "VIEW3D_OT_camera_to_view", PAD0, KM_PRESS, KM_ALT|KM_CTRL, 0);
00295         WM_keymap_add_item(keymap, "VIEW3D_OT_object_as_camera", PAD0, KM_PRESS, KM_CTRL, 0);
00296         
00297         WM_keymap_add_menu(keymap, "VIEW3D_MT_snap", SKEY, KM_PRESS, KM_SHIFT, 0);
00298         
00299         /* context ops */
00300         kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0);
00301         RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point");
00302         RNA_string_set(kmi->ptr, "value", "BOUNDING_BOX_CENTER");
00303 
00304         kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */
00305         RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point");
00306         RNA_string_set(kmi->ptr, "value", "MEDIAN_POINT");
00307 
00308         kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */
00309         RNA_string_set(kmi->ptr, "data_path", "space_data.use_pivot_point_align");
00310 
00311         kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */
00312         RNA_string_set(kmi->ptr, "data_path", "space_data.show_manipulator");
00313 
00314         kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0);
00315         RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point");
00316         RNA_string_set(kmi->ptr, "value", "CURSOR");
00317 
00318         kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0);
00319         RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point");
00320         RNA_string_set(kmi->ptr, "value", "INDIVIDUAL_ORIGINS");
00321 
00322         kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0);
00323         RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point");
00324         RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT");
00325 
00326         transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D);
00327 
00328         fly_modal_keymap(keyconf);
00329         viewrotate_modal_keymap(keyconf);
00330         viewmove_modal_keymap(keyconf);
00331         viewzoom_modal_keymap(keyconf);
00332         viewdolly_modal_keymap(keyconf);
00333 }
00334