|
Blender
V2.59
|
00001 /* 00002 * $Id: node_ops.c 38459 2011-07-17 18:17:35Z lukastoenne $ 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, Nathan Letwory 00025 * 00026 * ***** END GPL LICENSE BLOCK ***** 00027 */ 00028 00034 #include "DNA_node_types.h" 00035 #include "DNA_scene_types.h" 00036 00037 #include "BKE_context.h" 00038 00039 #include "ED_node.h" 00040 #include "ED_screen.h" 00041 #include "ED_transform.h" 00042 00043 #include "RNA_access.h" 00044 00045 #include "WM_api.h" 00046 #include "WM_types.h" 00047 00048 #include "node_intern.h" 00049 00050 void node_operatortypes(void) 00051 { 00052 WM_operatortype_append(NODE_OT_properties); 00053 00054 WM_operatortype_append(NODE_OT_select); 00055 WM_operatortype_append(NODE_OT_select_all); 00056 WM_operatortype_append(NODE_OT_select_linked_to); 00057 WM_operatortype_append(NODE_OT_select_linked_from); 00058 WM_operatortype_append(NODE_OT_select_border); 00059 WM_operatortype_append(NODE_OT_select_same_type); 00060 WM_operatortype_append(NODE_OT_select_same_type_next); 00061 WM_operatortype_append(NODE_OT_select_same_type_prev); 00062 00063 WM_operatortype_append(NODE_OT_view_all); 00064 WM_operatortype_append(NODE_OT_visibility_toggle); 00065 WM_operatortype_append(NODE_OT_mute_toggle); 00066 WM_operatortype_append(NODE_OT_hide_toggle); 00067 WM_operatortype_append(NODE_OT_preview_toggle); 00068 WM_operatortype_append(NODE_OT_hide_socket_toggle); 00069 WM_operatortype_append(NODE_OT_show_cyclic_dependencies); 00070 00071 WM_operatortype_append(NODE_OT_duplicate); 00072 WM_operatortype_append(NODE_OT_delete); 00073 WM_operatortype_append(NODE_OT_delete_reconnect); 00074 WM_operatortype_append(NODE_OT_resize); 00075 00076 WM_operatortype_append(NODE_OT_link); 00077 WM_operatortype_append(NODE_OT_link_make); 00078 WM_operatortype_append(NODE_OT_links_cut); 00079 00080 WM_operatortype_append(NODE_OT_group_make); 00081 WM_operatortype_append(NODE_OT_group_ungroup); 00082 WM_operatortype_append(NODE_OT_group_edit); 00083 WM_operatortype_append(NODE_OT_group_socket_add); 00084 WM_operatortype_append(NODE_OT_group_socket_remove); 00085 WM_operatortype_append(NODE_OT_group_socket_move_up); 00086 WM_operatortype_append(NODE_OT_group_socket_move_down); 00087 00088 WM_operatortype_append(NODE_OT_link_viewer); 00089 00090 WM_operatortype_append(NODE_OT_read_renderlayers); 00091 WM_operatortype_append(NODE_OT_read_fullsamplelayers); 00092 WM_operatortype_append(NODE_OT_render_changed); 00093 00094 WM_operatortype_append(NODE_OT_backimage_move); 00095 WM_operatortype_append(NODE_OT_backimage_zoom); 00096 WM_operatortype_append(NODE_OT_backimage_sample); 00097 00098 WM_operatortype_append(NODE_OT_add_file); 00099 } 00100 00101 void ED_operatormacros_node(void) 00102 { 00103 wmOperatorType *ot; 00104 wmOperatorTypeMacro *mot; 00105 00106 ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); 00107 WM_operatortype_macro_define(ot, "NODE_OT_duplicate"); 00108 WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); 00109 00110 /* modified operator call for duplicating with input links */ 00111 ot= WM_operatortype_append_macro("NODE_OT_duplicate_move_keep_inputs", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); 00112 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate"); 00113 RNA_boolean_set(mot->ptr, "keep_inputs", 1); 00114 WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); 00115 00116 ot= WM_operatortype_append_macro("NODE_OT_select_link_viewer", "Link Viewer", OPTYPE_UNDO); 00117 WM_operatortype_macro_define(ot, "NODE_OT_select"); 00118 WM_operatortype_macro_define(ot, "NODE_OT_link_viewer"); 00119 } 00120 00121 void node_keymap(struct wmKeyConfig *keyconf) 00122 { 00123 wmKeyMap *keymap; 00124 wmKeyMapItem *kmi; 00125 00126 /* Entire Editor only ----------------- */ 00127 keymap= WM_keymap_find(keyconf, "Node Generic", SPACE_NODE, 0); 00128 00129 WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0); 00130 00131 /* Main Area only ----------------- */ 00132 keymap= WM_keymap_find(keyconf, "Node Editor", SPACE_NODE, 0); 00133 00134 /* mouse select in nodes used to be both keys, but perhaps this should be reduced? 00135 * NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize 00136 */ 00137 WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, 0, 0); 00138 WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); 00139 kmi= WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); 00140 RNA_boolean_set(kmi->ptr, "extend", 1); 00141 kmi= WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); 00142 RNA_boolean_set(kmi->ptr, "extend", 1); 00143 RNA_boolean_set(WM_keymap_add_item(keymap, "NODE_OT_select_border", EVT_TWEAK_S, KM_ANY, 0, 0)->ptr, "tweak", 1); 00144 00145 /* each of these falls through if not handled... */ 00146 WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0); 00147 WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0); 00148 WM_keymap_add_item(keymap, "NODE_OT_visibility_toggle", LEFTMOUSE, KM_PRESS, 0, 0); 00149 00150 WM_keymap_add_item(keymap, "NODE_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); 00151 WM_keymap_add_item(keymap, "NODE_OT_select_link_viewer", LEFTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0); 00152 00153 WM_keymap_add_item(keymap, "NODE_OT_backimage_move", MIDDLEMOUSE, KM_PRESS, KM_ALT, 0); 00154 kmi= WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, 0, 0); 00155 RNA_float_set(kmi->ptr, "factor", 0.83333f); 00156 kmi= WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, KM_ALT, 0); 00157 RNA_float_set(kmi->ptr, "factor", 1.2f); 00158 WM_keymap_add_item(keymap, "NODE_OT_backimage_sample", ACTIONMOUSE, KM_PRESS, KM_ALT, 0); 00159 00160 WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, 0, 0); 00161 RNA_boolean_set(WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "replace", 1); 00162 00163 WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); 00164 WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); 00165 /* modified operator call for duplicating with input links */ 00166 WM_keymap_add_item(keymap, "NODE_OT_duplicate_move_keep_inputs", DKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); 00167 00168 WM_keymap_add_item(keymap, "NODE_OT_hide_toggle", HKEY, KM_PRESS, 0, 0); 00169 WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0); 00170 WM_keymap_add_item(keymap, "NODE_OT_preview_toggle", HKEY, KM_PRESS, KM_SHIFT, 0); 00171 WM_keymap_add_item(keymap, "NODE_OT_hide_socket_toggle", HKEY, KM_PRESS, KM_CTRL, 0); 00172 00173 WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0); 00174 00175 WM_keymap_add_item(keymap, "NODE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); 00176 WM_keymap_add_item(keymap, "NODE_OT_select_border", BKEY, KM_PRESS, 0, 0); 00177 WM_keymap_add_item(keymap, "NODE_OT_delete", XKEY, KM_PRESS, 0, 0); 00178 WM_keymap_add_item(keymap, "NODE_OT_delete", DELKEY, KM_PRESS, 0, 0); 00179 WM_keymap_add_item(keymap, "NODE_OT_delete_reconnect", XKEY, KM_PRESS, KM_CTRL, 0); 00180 00181 WM_keymap_add_item(keymap, "NODE_OT_select_all", AKEY, KM_PRESS, 0, 0); 00182 WM_keymap_add_item(keymap, "NODE_OT_select_linked_to", LKEY, KM_PRESS, KM_SHIFT, 0); 00183 WM_keymap_add_item(keymap, "NODE_OT_select_linked_from", LKEY, KM_PRESS, 0, 0); 00184 WM_keymap_add_item(keymap, "NODE_OT_select_same_type", GKEY, KM_PRESS, KM_SHIFT, 0); 00185 WM_keymap_add_item(keymap, "NODE_OT_select_same_type_next", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); 00186 WM_keymap_add_item(keymap, "NODE_OT_select_same_type_prev", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); 00187 00188 WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0); 00189 WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0); 00190 WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0); 00191 00192 WM_keymap_add_item(keymap, "NODE_OT_read_renderlayers", RKEY, KM_PRESS, KM_CTRL, 0); 00193 WM_keymap_add_item(keymap, "NODE_OT_read_fullsamplelayers", RKEY, KM_PRESS, KM_SHIFT, 0); 00194 WM_keymap_add_item(keymap, "NODE_OT_render_changed", ZKEY, KM_PRESS, 0, 0); 00195 00196 00197 transform_keymap_for_space(keyconf, keymap, SPACE_NODE); 00198 }