Testing a new method that hopefully will be faster to use than finicky socket selection - now just select multiple nodes and press F - available output sockets on the selected nodes will get automatically connected to the active node. It works for one socket type each time, to avoid getting lots of extra connections when you join up, but as a shortcut you can easily press F again to connect up other socket types. For example, to connect a render layer node (with vector pass) to a vector blur node, select the render layer then the vector blur, and press F three times to connect up the Image, Z and Vector sockets. It now also preferences sockets with the same name to connect up first. There's also another option (ctrl F) which will replace existing input links, rather than only connecting up links to available input sockets. * Also changed socket link knife cut to a more convenient shortcut - Ctrl LMB tweak
145 lines
5.3 KiB
C
145 lines
5.3 KiB
C
/**
|
|
* $Id:
|
|
*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2008 Blender Foundation.
|
|
* All rights reserved.
|
|
*
|
|
*
|
|
* Contributor(s): Blender Foundation, Nathan Letwory
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
|
|
#include "DNA_node_types.h"
|
|
#include "DNA_material_types.h"
|
|
#include "DNA_texture_types.h"
|
|
#include "DNA_scene_types.h"
|
|
#include "DNA_space_types.h"
|
|
|
|
#include "BKE_context.h"
|
|
#include "BKE_node.h"
|
|
|
|
#include "ED_space_api.h"
|
|
#include "ED_screen.h"
|
|
#include "ED_transform.h"
|
|
|
|
#include "RNA_access.h"
|
|
#include "RNA_define.h"
|
|
|
|
#include "WM_api.h"
|
|
#include "WM_types.h"
|
|
|
|
#include "node_intern.h"
|
|
|
|
void node_operatortypes(void)
|
|
{
|
|
WM_operatortype_append(NODE_OT_properties);
|
|
|
|
WM_operatortype_append(NODE_OT_select);
|
|
WM_operatortype_append(NODE_OT_select_all);
|
|
WM_operatortype_append(NODE_OT_select_linked_to);
|
|
WM_operatortype_append(NODE_OT_select_linked_from);
|
|
WM_operatortype_append(NODE_OT_select_border);
|
|
|
|
WM_operatortype_append(NODE_OT_view_all);
|
|
WM_operatortype_append(NODE_OT_visibility_toggle);
|
|
WM_operatortype_append(NODE_OT_mute);
|
|
WM_operatortype_append(NODE_OT_hide);
|
|
WM_operatortype_append(NODE_OT_show_cyclic_dependencies);
|
|
|
|
WM_operatortype_append(NODE_OT_duplicate);
|
|
WM_operatortype_append(NODE_OT_delete);
|
|
WM_operatortype_append(NODE_OT_resize);
|
|
|
|
WM_operatortype_append(NODE_OT_link);
|
|
WM_operatortype_append(NODE_OT_link_make);
|
|
WM_operatortype_append(NODE_OT_links_cut);
|
|
|
|
WM_operatortype_append(NODE_OT_group_make);
|
|
WM_operatortype_append(NODE_OT_group_ungroup);
|
|
WM_operatortype_append(NODE_OT_group_edit);
|
|
}
|
|
|
|
void ED_operatormacros_node(void)
|
|
{
|
|
wmOperatorType *ot;
|
|
wmOperatorTypeMacro *otmacro;
|
|
|
|
ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
|
|
WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
|
|
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
|
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
|
}
|
|
|
|
void node_keymap(struct wmKeyConfig *keyconf)
|
|
{
|
|
wmKeyMap *keymap;
|
|
wmKeyMapItem *kmi;
|
|
|
|
/* Entire Editor only ----------------- */
|
|
keymap= WM_keymap_find(keyconf, "Node Generic", SPACE_NODE, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0);
|
|
|
|
/* Main Area only ----------------- */
|
|
keymap= WM_keymap_find(keyconf, "Node Editor", SPACE_NODE, 0);
|
|
|
|
/* mouse select in nodes used to be both keys, but perhaps this should be reduced?
|
|
* NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize
|
|
*/
|
|
WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
|
|
kmi= WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
|
|
RNA_boolean_set(kmi->ptr, "extend", 1);
|
|
kmi= WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
|
|
RNA_boolean_set(kmi->ptr, "extend", 1);
|
|
|
|
/* each of these falls through if not handled... */
|
|
WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_visibility_toggle", LEFTMOUSE, KM_PRESS, 0, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, 0, 0);
|
|
RNA_boolean_set(WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "replace", 1);
|
|
|
|
WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_hide", HKEY, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_mute", MKEY, KM_PRESS, 0, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_select_border", BKEY, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_delete", XKEY, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_delete", DELKEY, KM_PRESS, 0, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_select_all", AKEY, KM_PRESS, 0, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_select_linked_to", LKEY, KM_PRESS, KM_SHIFT, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_select_linked_from", LKEY, KM_PRESS, 0, 0);
|
|
|
|
WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0);
|
|
WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0);
|
|
|
|
transform_keymap_for_space(keyconf, keymap, SPACE_NODE);
|
|
}
|