Blender V5.0
node_ops.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#include "DNA_node_types.h"
10
11#include "ED_node_c.hh"
12#include "ED_screen.hh"
13
14#include "RNA_access.hh"
15
16#include "WM_api.hh"
17#include "WM_types.hh"
18
19#include "node_intern.hh" /* own include */
20
22
24{
34
36
39
50
55
62
69
71
73
75
78
83
94
96
101
107
110
112
115
118
120
121 for (bke::bNodeType *ntype : bke::node_types_get()) {
122 if (ntype->register_operators) {
123 ntype->register_operators();
124 }
125 }
126}
127
129{
130 /* Entire Editor only ----------------- */
131 WM_keymap_ensure(keyconf, "Node Generic", SPACE_NODE, RGN_TYPE_WINDOW);
132
133 /* Main Region only ----------------- */
134 WM_keymap_ensure(keyconf, "Node Editor", SPACE_NODE, RGN_TYPE_WINDOW);
135
136 node_link_modal_keymap(keyconf);
138}
139
140} // namespace blender::ed::space_node
141
143{
146
147 ot = WM_operatortype_append_macro("NODE_OT_select_link_viewer",
148 "Link Viewer",
149 "Select node and link it to a viewer node",
151 mot = WM_operatortype_macro_define(ot, "NODE_OT_select");
152 RNA_boolean_set(mot->ptr, "extend", false);
153 RNA_boolean_set(mot->ptr, "socket_select", true);
154 RNA_boolean_set(mot->ptr, "clear_viewer", true);
155 WM_operatortype_macro_define(ot, "NODE_OT_link_viewer");
156
158 "NODE_OT_join_named",
159 "Join in Named Frame",
160 "Create a new frame node around the selected nodes and name it immediately",
162 WM_operatortype_macro_define(ot, "NODE_OT_join");
163 mot = WM_operatortype_macro_define(ot, "WM_OT_call_panel");
164 RNA_string_set(mot->ptr, "name", "TOPBAR_PT_name");
165 RNA_boolean_set(mot->ptr, "keep_open", false);
166
167 ot = WM_operatortype_append_macro("NODE_OT_translate_attach",
168 "Move and Attach",
169 "Move nodes and attach to frame",
171 mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
172 WM_operatortype_macro_define(ot, "NODE_OT_attach");
173
174 /* `NODE_OT_translate_attach` with remove_on_cancel set to true. */
175 ot = WM_operatortype_append_macro("NODE_OT_translate_attach_remove_on_cancel",
176 "Move and Attach",
177 "Move nodes and attach to frame",
179 mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
180 RNA_boolean_set(mot->ptr, "remove_on_cancel", true);
181 RNA_boolean_set(mot->ptr, "view2d_edge_pan", true);
182 WM_operatortype_macro_define(ot, "NODE_OT_attach");
183
184 /* NOTE: Currently not in a default keymap or menu due to messy keymaps
185 * and tricky invoke functionality.
186 * Kept around in case users want to make own shortcuts.
187 */
188 ot = WM_operatortype_append_macro("NODE_OT_detach_translate_attach",
189 "Detach and Move",
190 "Detach nodes, move and attach to frame",
192 WM_operatortype_macro_define(ot, "NODE_OT_detach");
193 mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
194 WM_operatortype_macro_define(ot, "NODE_OT_attach");
195
196 ot = WM_operatortype_append_macro("NODE_OT_duplicate_move",
197 "Duplicate",
198 "Duplicate selected nodes and move them",
200 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
201 RNA_boolean_set(mot->ptr, "linked", false);
202 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
203
205 "NODE_OT_duplicate_move_linked",
206 "Duplicate Linked",
207 "Duplicate selected nodes, but not their node trees, and move them",
209 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
210 RNA_boolean_set(mot->ptr, "linked", true);
211 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
212
213 /* modified operator call for duplicating with input links */
214 ot = WM_operatortype_append_macro("NODE_OT_duplicate_move_keep_inputs",
215 "Duplicate",
216 "Duplicate selected nodes keeping input links and move them",
218 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
219 RNA_boolean_set(mot->ptr, "keep_inputs", true);
220 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
221
222 ot = WM_operatortype_append_macro("NODE_OT_move_detach_links",
223 "Detach",
224 "Move a node to detach links",
226 WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
227 WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
228
229 ot = WM_operatortype_append_macro("NODE_OT_move_detach_links_release",
230 "Detach",
231 "Move a node to detach links",
233 WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
234 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
235}
@ RGN_TYPE_WINDOW
@ SPACE_NODE
@ OPTYPE_UNDO
Definition WM_types.hh:182
@ OPTYPE_REGISTER
Definition WM_types.hh:180
Span< bNodeType * > node_types_get()
Definition node.cc:2447
void NODE_OT_parent_set(wmOperatorType *ot)
void NODE_OT_test_inlining_shader_nodes(wmOperatorType *ot)
void NODE_OT_delete(wmOperatorType *ot)
void NODE_OT_add_group_input_node(wmOperatorType *ot)
Definition node_add.cc:1476
void NODE_OT_cryptomatte_layer_add(wmOperatorType *ot)
void NODE_OT_add_object(wmOperatorType *ot)
Definition node_add.cc:734
void NODE_OT_read_viewlayers(wmOperatorType *ot)
wmKeyMap * node_resize_modal_keymap(wmKeyConfig *keyconf)
Definition node_edit.cc:959
void NODE_OT_clipboard_copy(wmOperatorType *ot)
Definition clipboard.cc:372
void NODE_OT_select_circle(wmOperatorType *ot)
void NODE_OT_add_mask(wmOperatorType *ot)
Definition node_add.cc:1110
void NODE_OT_backimage_sample(wmOperatorType *ot)
Definition node_view.cc:707
void NODE_OT_add_reroute(wmOperatorType *ot)
Definition node_add.cc:275
void NODE_OT_node_copy_color(wmOperatorType *ot)
void NODE_OT_detach(wmOperatorType *ot)
void NODE_OT_viewer_border(wmOperatorType *ot)
void NODE_OT_find_node(wmOperatorType *ot)
void NODE_OT_activate_viewer(wmOperatorType *ot)
void NODE_OT_select_lasso(wmOperatorType *ot)
void NODE_OT_new_compositing_node_group(wmOperatorType *ot)
Definition node_add.cc:1740
void NODE_OT_add_collection(wmOperatorType *ot)
Definition node_add.cc:823
void NODE_OT_backimage_zoom(wmOperatorType *ot)
Definition node_view.cc:351
void NODE_OT_select(wmOperatorType *ot)
void NODE_OT_insert_offset(wmOperatorType *ot)
void NODE_OT_group_make(wmOperatorType *ot)
void NODE_OT_deactivate_viewer(wmOperatorType *ot)
void NODE_OT_add_group_asset(wmOperatorType *ot)
Definition node_add.cc:635
void NODE_OT_resize(wmOperatorType *ot)
void NODE_OT_backimage_move(wmOperatorType *ot)
Definition node_view.cc:314
void NODE_OT_clipboard_paste(wmOperatorType *ot)
Definition clipboard.cc:555
void NODE_OT_render_changed(wmOperatorType *ot)
void NODE_OT_links_detach(wmOperatorType *ot)
void NODE_OT_group_insert(wmOperatorType *ot)
void NODE_OT_delete_reconnect(wmOperatorType *ot)
void NODE_OT_shader_script_update(wmOperatorType *ot)
void NODE_OT_links_cut(wmOperatorType *ot)
void NODE_OT_hide_socket_toggle(wmOperatorType *ot)
void NODE_OT_duplicate_compositing_node_group(wmOperatorType *ot)
Definition node_add.cc:1784
void NODE_OT_swap_group_asset(wmOperatorType *ot)
Definition node_add.cc:650
void NODE_OT_select_grouped(wmOperatorType *ot)
void NODE_OT_join(wmOperatorType *ot)
void NODE_OT_add_color(wmOperatorType *ot)
Definition node_add.cc:1601
void NODE_OT_attach(wmOperatorType *ot)
void NODE_OT_view_selected(wmOperatorType *ot)
Definition node_view.cc:186
void NODE_OT_link_viewer(wmOperatorType *ot)
void NODE_OT_select_linked_from(wmOperatorType *ot)
void NODE_OT_new_compositor_sequencer_node_group(wmOperatorType *operator_type)
Definition node_add.cc:1865
void NODE_OT_select_same_type_step(wmOperatorType *ot)
void NODE_OT_preview_toggle(wmOperatorType *ot)
void NODE_OT_clear_viewer_border(wmOperatorType *ot)
void NODE_OT_select_linked_to(wmOperatorType *ot)
void NODE_OT_link_make(wmOperatorType *ot)
void NODE_OT_view_all(wmOperatorType *ot)
Definition node_view.cc:153
wmKeyMap * node_link_modal_keymap(wmKeyConfig *keyconf)
void NODE_OT_group_edit(wmOperatorType *ot)
void NODE_OT_group_separate(wmOperatorType *ot)
void NODE_OT_add_import_node(wmOperatorType *ot)
Definition node_add.cc:1299
void NODE_OT_sockets_sync(wmOperatorType *ot)
void NODE_OT_duplicate(wmOperatorType *ot)
void NODE_OT_join_nodes(wmOperatorType *ot)
void NODE_OT_add_image(wmOperatorType *ot)
Definition node_add.cc:1042
void NODE_OT_options_toggle(wmOperatorType *ot)
void node_keymap(wmKeyConfig *keyconf)
Definition node_ops.cc:128
void NODE_OT_toggle_viewer(wmOperatorType *ot)
void NODE_OT_add_group(wmOperatorType *ot)
Definition node_add.cc:436
void NODE_OT_group_enter_exit(wmOperatorType *ot)
void NODE_OT_link(wmOperatorType *ot)
void NODE_OT_collapse_toggle(wmOperatorType *ot)
void NODE_OT_links_mute(wmOperatorType *ot)
void NODE_OT_default_group_width_set(wmOperatorType *ot)
void NODE_OT_add_material(wmOperatorType *ot)
Definition node_add.cc:1187
void NODE_OT_select_box(wmOperatorType *ot)
void NODE_OT_select_all(wmOperatorType *ot)
void NODE_OT_group_ungroup(wmOperatorType *ot)
void NODE_OT_new_node_tree(wmOperatorType *ot)
Definition node_add.cc:1686
void NODE_OT_cryptomatte_layer_remove(wmOperatorType *ot)
void NODE_OT_backimage_fit(wmOperatorType *ot)
Definition node_view.cc:416
void NODE_OT_mute_toggle(wmOperatorType *ot)
void ED_operatormacros_node()
Definition node_ops.cc:142
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
Defines a node type.
Definition BKE_node.hh:238
wmOperatorType * ot
Definition wm_files.cc:4237
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
Definition wm_keymap.cc:895
wmOperatorTypeMacro * WM_operatortype_macro_define(wmOperatorType *ot, const char *idname)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))
wmOperatorType * WM_operatortype_append_macro(const char *idname, const char *name, const char *description, int flag)