110
127
wmOperatorType *ot;
111
128
wmOperatorTypeMacro *mot;
113
ot = WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
114
ot->description = "Duplicate selected nodes and move them";
130
ot = WM_operatortype_append_macro("NODE_OT_select_link_viewer", "Link Viewer",
131
"Select node and link it to a viewer node",
133
WM_operatortype_macro_define(ot, "NODE_OT_select");
134
WM_operatortype_macro_define(ot, "NODE_OT_link_viewer");
136
ot = WM_operatortype_append_macro("NODE_OT_translate_attach", "Move and Attach",
137
"Move nodes and attach to frame",
138
OPTYPE_UNDO | OPTYPE_REGISTER);
139
mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
140
RNA_boolean_set(mot->ptr, "release_confirm", TRUE);
141
WM_operatortype_macro_define(ot, "NODE_OT_attach");
143
ot = WM_operatortype_append_macro("NODE_OT_detach_translate_attach", "Detach and Move",
144
"Detach nodes, move and attach to frame",
145
OPTYPE_UNDO | OPTYPE_REGISTER);
146
WM_operatortype_macro_define(ot, "NODE_OT_detach");
147
mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
148
RNA_boolean_set(mot->ptr, "release_confirm", TRUE);
149
WM_operatortype_macro_define(ot, "NODE_OT_attach");
151
ot = WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate",
152
"Duplicate selected nodes and move them",
153
OPTYPE_UNDO | OPTYPE_REGISTER);
115
154
WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
116
WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
155
WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
118
157
/* modified operator call for duplicating with input links */
119
ot = WM_operatortype_append_macro("NODE_OT_duplicate_move_keep_inputs", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
120
ot->description = "Duplicate selected nodes keeping input links and move them";
158
ot = WM_operatortype_append_macro("NODE_OT_duplicate_move_keep_inputs", "Duplicate",
159
"Duplicate selected nodes keeping input links and move them",
160
OPTYPE_UNDO | OPTYPE_REGISTER);
121
161
mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
122
162
RNA_boolean_set(mot->ptr, "keep_inputs", TRUE);
123
WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
125
ot = WM_operatortype_append_macro("NODE_OT_select_link_viewer", "Link Viewer", OPTYPE_UNDO);
126
ot->description = "Select node and link it to a viewer node";
127
WM_operatortype_macro_define(ot, "NODE_OT_select");
128
WM_operatortype_macro_define(ot, "NODE_OT_link_viewer");
130
ot = WM_operatortype_append_macro("NODE_OT_move_detach_links", "Detach", OPTYPE_UNDO|OPTYPE_REGISTER);
131
ot->description = "Move a node to detach links";
132
WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
133
WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
135
ot = WM_operatortype_append_macro("NODE_OT_move_detach_links_release", "Detach", OPTYPE_UNDO|OPTYPE_REGISTER);
136
ot->description = "Move a node to detach links";
137
WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
138
mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
139
RNA_boolean_set(mot->ptr, "release_confirm", TRUE);
163
WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
165
ot = WM_operatortype_append_macro("NODE_OT_move_detach_links", "Detach", "Move a node to detach links",
166
OPTYPE_UNDO | OPTYPE_REGISTER);
167
WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
168
WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
170
ot = WM_operatortype_append_macro("NODE_OT_move_detach_links_release", "Detach", "Move a node to detach links",
171
OPTYPE_UNDO | OPTYPE_REGISTER);
172
WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
173
WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
176
/* helper function for repetitive select operator keymap */
177
static void node_select_keymap(wmKeyMap *keymap, int extend)
179
/* modifier combinations */
180
const int mod_single[] = { 0, KM_CTRL, KM_ALT, KM_CTRL | KM_ALT,
183
const int mod_extend[] = { KM_SHIFT, KM_SHIFT | KM_CTRL,
184
KM_SHIFT | KM_ALT, KM_SHIFT | KM_CTRL | KM_ALT,
187
const int *mod = (extend ? mod_extend : mod_single);
191
for (i = 0; mod[i] >= 0; ++i) {
192
kmi = WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, mod[i], 0);
193
RNA_boolean_set(kmi->ptr, "extend", extend);
194
kmi = WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, mod[i], 0);
195
RNA_boolean_set(kmi->ptr, "extend", extend);
142
199
void node_keymap(struct wmKeyConfig *keyconf)
155
213
/* mouse select in nodes used to be both keys, but perhaps this should be reduced?
156
214
* NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize
157
215
* NOTE 2: socket select is part of the node select operator, to handle overlapping cases
216
* NOTE 3: select op is registered for various combinations of modifier key, so the specialized
217
* grab operators (unlink, attach, etc.) can work easily on single nodes.
159
kmi = WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, 0, 0);
160
RNA_boolean_set(kmi->ptr, "extend", FALSE);
161
kmi = WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
162
RNA_boolean_set(kmi->ptr, "extend", FALSE);
163
kmi = WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
164
RNA_boolean_set(kmi->ptr, "extend", TRUE);
165
kmi = WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
166
RNA_boolean_set(kmi->ptr, "extend", TRUE);
219
node_select_keymap(keymap, FALSE);
220
node_select_keymap(keymap, TRUE);
167
222
kmi = WM_keymap_add_item(keymap, "NODE_OT_select_border", EVT_TWEAK_S, KM_ANY, 0, 0);
168
RNA_boolean_set(kmi->ptr, "tweak", TRUE);
223
RNA_boolean_set(kmi->ptr, "tweak", TRUE);
225
kmi = WM_keymap_add_item(keymap, "NODE_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0);
226
RNA_boolean_set(kmi->ptr, "deselect", FALSE);
227
kmi = WM_keymap_add_item(keymap, "NODE_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT | KM_ALT, 0);
228
RNA_boolean_set(kmi->ptr, "deselect", TRUE);
170
230
/* each of these falls through if not handled... */
171
231
WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0);
232
kmi = WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
233
RNA_boolean_set(kmi->ptr, "detach", TRUE);
172
234
WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0);
236
WM_keymap_add_item(keymap, "NODE_OT_add_reroute", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
174
237
WM_keymap_add_item(keymap, "NODE_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
175
WM_keymap_add_item(keymap, "NODE_OT_select_link_viewer", LEFTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
238
WM_keymap_add_item(keymap, "NODE_OT_select_link_viewer", LEFTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL, 0);
177
240
WM_keymap_add_item(keymap, "NODE_OT_backimage_move", MIDDLEMOUSE, KM_PRESS, KM_ALT, 0);
178
241
kmi = WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, 0, 0);
179
RNA_float_set(kmi->ptr, "factor", 0.83333f);
242
RNA_float_set(kmi->ptr, "factor", 0.83333f);
180
243
kmi = WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, KM_ALT, 0);
181
RNA_float_set(kmi->ptr, "factor", 1.2f);
244
RNA_float_set(kmi->ptr, "factor", 1.2f);
182
245
WM_keymap_add_item(keymap, "NODE_OT_backimage_sample", ACTIONMOUSE, KM_PRESS, KM_ALT, 0);
184
247
kmi = WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, 0, 0);
189
252
WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
190
253
WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
191
254
/* modified operator call for duplicating with input links */
192
WM_keymap_add_item(keymap, "NODE_OT_duplicate_move_keep_inputs", DKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
255
WM_keymap_add_item(keymap, "NODE_OT_duplicate_move_keep_inputs", DKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0);
257
WM_keymap_add_item(keymap, "NODE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
258
WM_keymap_add_item(keymap, "NODE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0);
259
WM_keymap_add_item(keymap, "NODE_OT_join", JKEY, KM_PRESS, KM_CTRL, 0);
194
261
WM_keymap_add_item(keymap, "NODE_OT_hide_toggle", HKEY, KM_PRESS, 0, 0);
195
262
WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0);
207
275
WM_keymap_add_item(keymap, "NODE_OT_delete", DELKEY, KM_PRESS, 0, 0);
208
276
WM_keymap_add_item(keymap, "NODE_OT_delete_reconnect", XKEY, KM_PRESS, KM_CTRL, 0);
210
WM_keymap_add_item(keymap, "NODE_OT_select_all", AKEY, KM_PRESS, 0, 0);
278
kmi = WM_keymap_add_item(keymap, "NODE_OT_select_all", AKEY, KM_PRESS, 0, 0);
279
RNA_enum_set(kmi->ptr, "action", SEL_TOGGLE);
280
kmi = WM_keymap_add_item(keymap, "NODE_OT_select_all", IKEY, KM_PRESS, KM_CTRL, 0);
281
RNA_enum_set(kmi->ptr, "action", SEL_INVERT);
211
283
WM_keymap_add_item(keymap, "NODE_OT_select_linked_to", LKEY, KM_PRESS, KM_SHIFT, 0);
212
284
WM_keymap_add_item(keymap, "NODE_OT_select_linked_from", LKEY, KM_PRESS, 0, 0);
213
285
WM_keymap_add_item(keymap, "NODE_OT_select_same_type", GKEY, KM_PRESS, KM_SHIFT, 0);
217
289
WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0);
218
290
WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0);
291
WM_keymap_add_item(keymap, "NODE_OT_group_separate", PKEY, KM_PRESS, 0, 0);
219
292
WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0);
221
294
WM_keymap_add_item(keymap, "NODE_OT_read_renderlayers", RKEY, KM_PRESS, KM_CTRL, 0);
222
295
WM_keymap_add_item(keymap, "NODE_OT_read_fullsamplelayers", RKEY, KM_PRESS, KM_SHIFT, 0);
223
296
WM_keymap_add_item(keymap, "NODE_OT_render_changed", ZKEY, KM_PRESS, 0, 0);
298
WM_keymap_add_item(keymap, "NODE_OT_clipboard_copy", CKEY, KM_PRESS, KM_CTRL, 0);
299
WM_keymap_add_item(keymap, "NODE_OT_clipboard_paste", VKEY, KM_PRESS, KM_CTRL, 0);
225
301
transform_keymap_for_space(keyconf, keymap, SPACE_NODE);