~ubuntu-branches/ubuntu/trusty/blender/trusty

« back to all changes in this revision

Viewing changes to source/blender/editors/space_node/node_ops.c

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2013-03-06 12:08:47 UTC
  • mfrom: (1.5.1) (14.1.8 experimental)
  • Revision ID: package-import@ubuntu.com-20130306120847-frjfaryb2zrotwcg
Tags: 2.66a-1ubuntu1
* Resynchronize with Debian (LP: #1076930, #1089256, #1052743, #999024,
  #1122888, #1147084)
* debian/control:
  - Lower build-depends on libavcodec-dev since we're not
    doing the libav9 transition in Ubuntu yet

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 
31
31
 
32
32
#include "DNA_node_types.h"
33
 
#include "DNA_scene_types.h"
34
33
 
35
34
#include "BKE_context.h"
36
35
 
37
36
#include "BLI_utildefines.h"
38
37
 
39
 
#include "ED_node.h"
 
38
#include "ED_node.h"  /* own include */
40
39
#include "ED_screen.h"
41
40
#include "ED_transform.h"
42
41
 
45
44
#include "WM_api.h"
46
45
#include "WM_types.h"
47
46
 
48
 
#include "node_intern.h"
 
47
#include "node_intern.h"  /* own include */
49
48
 
50
49
void node_operatortypes(void)
51
50
{
52
51
        WM_operatortype_append(NODE_OT_properties);
 
52
        WM_operatortype_append(NODE_OT_toolbar);
53
53
        
54
54
        WM_operatortype_append(NODE_OT_select);
55
55
        WM_operatortype_append(NODE_OT_select_all);
56
56
        WM_operatortype_append(NODE_OT_select_linked_to);
57
57
        WM_operatortype_append(NODE_OT_select_linked_from);
58
58
        WM_operatortype_append(NODE_OT_select_border);
 
59
        WM_operatortype_append(NODE_OT_select_lasso);
59
60
        WM_operatortype_append(NODE_OT_select_same_type);
60
61
        WM_operatortype_append(NODE_OT_select_same_type_next);
61
62
        WM_operatortype_append(NODE_OT_select_same_type_prev);
62
63
 
63
64
        WM_operatortype_append(NODE_OT_view_all);
 
65
        WM_operatortype_append(NODE_OT_view_selected);
64
66
 
65
67
        WM_operatortype_append(NODE_OT_mute_toggle);
66
68
        WM_operatortype_append(NODE_OT_hide_toggle);
68
70
        WM_operatortype_append(NODE_OT_options_toggle);
69
71
        WM_operatortype_append(NODE_OT_hide_socket_toggle);
70
72
        WM_operatortype_append(NODE_OT_show_cyclic_dependencies);
 
73
        WM_operatortype_append(NODE_OT_node_copy_color);
71
74
        
72
75
        WM_operatortype_append(NODE_OT_duplicate);
73
76
        WM_operatortype_append(NODE_OT_delete);
78
81
        WM_operatortype_append(NODE_OT_link_make);
79
82
        WM_operatortype_append(NODE_OT_links_cut);
80
83
        WM_operatortype_append(NODE_OT_links_detach);
 
84
        WM_operatortype_append(NODE_OT_add_reroute);
81
85
 
82
86
        WM_operatortype_append(NODE_OT_group_make);
83
87
        WM_operatortype_append(NODE_OT_group_ungroup);
 
88
        WM_operatortype_append(NODE_OT_group_separate);
84
89
        WM_operatortype_append(NODE_OT_group_edit);
85
90
        WM_operatortype_append(NODE_OT_group_socket_add);
86
91
        WM_operatortype_append(NODE_OT_group_socket_remove);
103
108
        
104
109
        WM_operatortype_append(NODE_OT_output_file_add_socket);
105
110
        WM_operatortype_append(NODE_OT_output_file_remove_active_socket);
 
111
        WM_operatortype_append(NODE_OT_output_file_move_active_socket);
 
112
        
 
113
        WM_operatortype_append(NODE_OT_parent_set);
 
114
        WM_operatortype_append(NODE_OT_parent_clear);
 
115
        WM_operatortype_append(NODE_OT_join);
 
116
        WM_operatortype_append(NODE_OT_attach);
 
117
        WM_operatortype_append(NODE_OT_detach);
 
118
        
 
119
        WM_operatortype_append(NODE_OT_clipboard_copy);
 
120
        WM_operatortype_append(NODE_OT_clipboard_paste);
 
121
        
 
122
        WM_operatortype_append(NODE_OT_shader_script_update);
106
123
}
107
124
 
108
125
void ED_operatormacros_node(void)
110
127
        wmOperatorType *ot;
111
128
        wmOperatorTypeMacro *mot;
112
129
        
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",
 
132
                                          OPTYPE_UNDO);
 
133
        WM_operatortype_macro_define(ot, "NODE_OT_select");
 
134
        WM_operatortype_macro_define(ot, "NODE_OT_link_viewer");
 
135
 
 
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");
 
142
 
 
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");
 
150
 
 
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");
117
156
 
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");
124
 
 
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");
129
 
 
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");
134
 
 
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");
 
164
 
 
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");
 
169
 
 
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");
 
174
}
 
175
 
 
176
/* helper function for repetitive select operator keymap */
 
177
static void node_select_keymap(wmKeyMap *keymap, int extend)
 
178
{
 
179
        /* modifier combinations */
 
180
        const int mod_single[] = { 0, KM_CTRL, KM_ALT, KM_CTRL | KM_ALT,
 
181
                                   -1 /* terminator */
 
182
        };
 
183
        const int mod_extend[] = { KM_SHIFT, KM_SHIFT | KM_CTRL,
 
184
                                   KM_SHIFT | KM_ALT, KM_SHIFT | KM_CTRL | KM_ALT,
 
185
                                   -1 /* terminator */
 
186
        };
 
187
        const int *mod = (extend ? mod_extend : mod_single);
 
188
        wmKeyMapItem *kmi;
 
189
        int i;
 
190
        
 
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);
 
196
        }
140
197
}
141
198
 
142
199
void node_keymap(struct wmKeyConfig *keyconf)
148
205
        keymap = WM_keymap_find(keyconf, "Node Generic", SPACE_NODE, 0);
149
206
        
150
207
        WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0);
 
208
        WM_keymap_add_item(keymap, "NODE_OT_toolbar", TKEY, KM_PRESS, 0, 0);
151
209
        
152
210
        /* Main Area only ----------------- */
153
211
        keymap = WM_keymap_find(keyconf, "Node Editor", SPACE_NODE, 0);
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.
158
218
         */
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);
 
221
        
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);
169
224
        
 
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);
 
229
 
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);
173
235
        
 
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);
176
239
        
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);
183
246
 
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);
 
256
        
 
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);
193
260
        
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);
199
266
        WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0);
200
267
        
201
268
        WM_keymap_add_item(keymap, "NODE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
 
269
        WM_keymap_add_item(keymap, "NODE_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
202
270
 
203
271
        kmi = WM_keymap_add_item(keymap, "NODE_OT_select_border", BKEY, KM_PRESS, 0, 0);
204
272
        RNA_boolean_set(kmi->ptr, "tweak", FALSE);
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);
209
277
 
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);
 
282
 
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);
216
288
 
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);
220
293
        
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);
224
297
        
 
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);
 
300
        
225
301
        transform_keymap_for_space(keyconf, keymap, SPACE_NODE);
226
302
}