Blender V4.5
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
48
53
60
66
68
70
72
75
80
91
93
97
102
105
107
110
113
114 for (bke::bNodeType *ntype : bke::node_types_get()) {
115 if (ntype->register_operators) {
116 ntype->register_operators();
117 }
118 }
119}
120
122{
123 /* Entire Editor only ----------------- */
124 WM_keymap_ensure(keyconf, "Node Generic", SPACE_NODE, RGN_TYPE_WINDOW);
125
126 /* Main Region only ----------------- */
127 WM_keymap_ensure(keyconf, "Node Editor", SPACE_NODE, RGN_TYPE_WINDOW);
128
129 node_link_modal_keymap(keyconf);
131}
132
133} // namespace blender::ed::space_node
134
136{
139
140 ot = WM_operatortype_append_macro("NODE_OT_select_link_viewer",
141 "Link Viewer",
142 "Select node and link it to a viewer node",
144 mot = WM_operatortype_macro_define(ot, "NODE_OT_select");
145 RNA_boolean_set(mot->ptr, "extend", false);
146 RNA_boolean_set(mot->ptr, "socket_select", true);
147 RNA_boolean_set(mot->ptr, "clear_viewer", true);
148 WM_operatortype_macro_define(ot, "NODE_OT_link_viewer");
149
151 "NODE_OT_join_named",
152 "Join in Named Frame",
153 "Create a new frame node around the selected nodes and name it immediately",
155 WM_operatortype_macro_define(ot, "NODE_OT_join");
156 mot = WM_operatortype_macro_define(ot, "WM_OT_call_panel");
157 RNA_string_set(mot->ptr, "name", "TOPBAR_PT_name");
158 RNA_boolean_set(mot->ptr, "keep_open", false);
159
160 ot = WM_operatortype_append_macro("NODE_OT_translate_attach",
161 "Move and Attach",
162 "Move nodes and attach to frame",
164 mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
165 WM_operatortype_macro_define(ot, "NODE_OT_attach");
166
167 /* `NODE_OT_translate_attach` with remove_on_cancel set to true. */
168 ot = WM_operatortype_append_macro("NODE_OT_translate_attach_remove_on_cancel",
169 "Move and Attach",
170 "Move nodes and attach to frame",
172 mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
173 RNA_boolean_set(mot->ptr, "remove_on_cancel", true);
174 RNA_boolean_set(mot->ptr, "view2d_edge_pan", true);
175 WM_operatortype_macro_define(ot, "NODE_OT_attach");
176
177 /* NOTE: Currently not in a default keymap or menu due to messy keymaps
178 * and tricky invoke functionality.
179 * Kept around in case users want to make own shortcuts.
180 */
181 ot = WM_operatortype_append_macro("NODE_OT_detach_translate_attach",
182 "Detach and Move",
183 "Detach nodes, move and attach to frame",
185 WM_operatortype_macro_define(ot, "NODE_OT_detach");
186 mot = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
187 WM_operatortype_macro_define(ot, "NODE_OT_attach");
188
189 ot = WM_operatortype_append_macro("NODE_OT_duplicate_move",
190 "Duplicate",
191 "Duplicate selected nodes and move them",
193 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
194 RNA_boolean_set(mot->ptr, "linked", false);
195 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
196
198 "NODE_OT_duplicate_move_linked",
199 "Duplicate Linked",
200 "Duplicate selected nodes, but not their node trees, and move them",
202 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
203 RNA_boolean_set(mot->ptr, "linked", true);
204 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
205
206 /* modified operator call for duplicating with input links */
207 ot = WM_operatortype_append_macro("NODE_OT_duplicate_move_keep_inputs",
208 "Duplicate",
209 "Duplicate selected nodes keeping input links and move them",
211 mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
212 RNA_boolean_set(mot->ptr, "keep_inputs", true);
213 WM_operatortype_macro_define(ot, "NODE_OT_translate_attach");
214
215 ot = WM_operatortype_append_macro("NODE_OT_move_detach_links",
216 "Detach",
217 "Move a node to detach links",
219 WM_operatortype_macro_define(ot, "NODE_OT_links_detach");
220 WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
221
222 ot = WM_operatortype_append_macro("NODE_OT_move_detach_links_release",
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, "NODE_OT_translate_attach");
228}
@ 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:2779
void NODE_OT_parent_set(wmOperatorType *ot)
void NODE_OT_delete(wmOperatorType *ot)
void NODE_OT_add_group_input_node(wmOperatorType *ot)
Definition node_add.cc:1328
void NODE_OT_cryptomatte_layer_add(wmOperatorType *ot)
void NODE_OT_add_object(wmOperatorType *ot)
Definition node_add.cc:586
void NODE_OT_read_viewlayers(wmOperatorType *ot)
wmKeyMap * node_resize_modal_keymap(wmKeyConfig *keyconf)
void NODE_OT_clipboard_copy(wmOperatorType *ot)
Definition clipboard.cc:335
void NODE_OT_select_circle(wmOperatorType *ot)
void NODE_OT_add_mask(wmOperatorType *ot)
Definition node_add.cc:962
void NODE_OT_backimage_sample(wmOperatorType *ot)
Definition node_view.cc:707
void NODE_OT_add_reroute(wmOperatorType *ot)
Definition node_add.cc:235
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_add_collection(wmOperatorType *ot)
Definition node_add.cc:675
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:502
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:518
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_select_grouped(wmOperatorType *ot)
void NODE_OT_output_file_remove_active_socket(wmOperatorType *ot)
void NODE_OT_join(wmOperatorType *ot)
void NODE_OT_add_color(wmOperatorType *ot)
Definition node_add.cc:1453
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_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:1151
void NODE_OT_duplicate(wmOperatorType *ot)
void NODE_OT_output_file_add_socket(wmOperatorType *ot)
void NODE_OT_add_image(wmOperatorType *ot)
Definition node_add.cc:894
void NODE_OT_options_toggle(wmOperatorType *ot)
void node_keymap(wmKeyConfig *keyconf)
Definition node_ops.cc:121
void NODE_OT_add_group(wmOperatorType *ot)
Definition node_add.cc:375
void NODE_OT_link(wmOperatorType *ot)
void NODE_OT_links_mute(wmOperatorType *ot)
void NODE_OT_default_group_width_set(wmOperatorType *ot)
void NODE_OT_hide_toggle(wmOperatorType *ot)
void NODE_OT_add_material(wmOperatorType *ot)
Definition node_add.cc:1039
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:1553
void NODE_OT_cryptomatte_layer_remove(wmOperatorType *ot)
void NODE_OT_backimage_fit(wmOperatorType *ot)
Definition node_view.cc:416
void NODE_OT_output_file_move_active_socket(wmOperatorType *ot)
void NODE_OT_mute_toggle(wmOperatorType *ot)
void ED_operatormacros_node()
Definition node_ops.cc:135
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:226
wmOperatorType * ot
Definition wm_files.cc:4225
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
Definition wm_keymap.cc:893
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)