[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28737] trunk/blender: Small change to Node Space and two new function.

Diego Borghetti bdiego at gmail.com
Wed May 12 15:55:09 CEST 2010


Revision: 28737
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28737
Author:   bdiego
Date:     2010-05-12 15:55:09 +0200 (Wed, 12 May 2010)

Log Message:
-----------
Small change to Node Space and two new function.

"Select all of the same type" now is binding to Shift + GKEY

Two new function, select next and prev node of the same type.

Select a node and press Shift + [ or Shift + ] go to the
previous and next node of the same type (of the active node).

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_node.py
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/editors/space_node/node_intern.h
    trunk/blender/source/blender/editors/space_node/node_ops.c
    trunk/blender/source/blender/editors/space_node/node_select.c

Modified: trunk/blender/release/scripts/ui/space_node.py
===================================================================
--- trunk/blender/release/scripts/ui/space_node.py	2010-05-12 12:03:38 UTC (rev 28736)
+++ trunk/blender/release/scripts/ui/space_node.py	2010-05-12 13:55:09 UTC (rev 28737)
@@ -109,6 +109,8 @@
         layout.operator("node.select_linked_from")
         layout.operator("node.select_linked_to")
         layout.operator("node.select_same_type")
+        layout.operator("node.select_same_type_next")
+        layout.operator("node.select_same_type_prev")
 
 
 class NODE_MT_node(bpy.types.Menu):

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2010-05-12 12:03:38 UTC (rev 28736)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2010-05-12 13:55:09 UTC (rev 28737)
@@ -954,6 +954,47 @@
 	return(redraw);
 }
 
+/* return 1 if we need redraw, otherwise zero.
+ * dir can be 0 == next or 0 != prev.
+ */
+int node_select_same_type_np(SpaceNode *snode, int dir)
+{
+	bNode *nac, *p;
+
+	/* search the active one. */
+	for (nac= snode->edittree->nodes.first; nac; nac= nac->next) {
+		if (nac->flag & SELECT)
+			break;
+	}
+
+	/* no active node, return. */
+	if (!nac)
+		return(0);
+
+	if (dir == 0)
+		p= nac->next;
+	else
+		p= nac->prev;
+
+	while (p) {
+		/* Now search the next with the same type. */
+		if (p->type == nac->type)
+			break;
+
+		if (dir == 0)
+			p= p->next;
+		else
+			p= p->prev;
+	}
+
+	if (p) {
+		node_deselectall(snode);
+		p->flag |= SELECT;
+		return(1);
+	}
+	return(0);
+}
+
 int node_has_hidden_sockets(bNode *node)
 {
 	bNodeSocket *sock;

Modified: trunk/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_intern.h	2010-05-12 12:03:38 UTC (rev 28736)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h	2010-05-12 13:55:09 UTC (rev 28737)
@@ -63,6 +63,8 @@
 void NODE_OT_view_all(struct wmOperatorType *ot);
 void NODE_OT_select_border(struct wmOperatorType *ot);
 void NODE_OT_select_same_type(struct wmOperatorType *ot);
+void NODE_OT_select_same_type_next(wmOperatorType *ot);
+void NODE_OT_select_same_type_prev(wmOperatorType *ot);
 
 /* drawnode.c */
 void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link);
@@ -82,6 +84,7 @@
 void node_set_active(SpaceNode *snode, bNode *node);
 void node_deselectall(SpaceNode *snode);
 int node_select_same_type(SpaceNode *snode);
+int node_select_same_type_np(SpaceNode *snode, int dir);
 void snode_composite_job(const struct bContext *C, ScrArea *sa);
 bNode *node_tree_get_editgroup(bNodeTree *ntree);
 void node_tree_verify_groups(bNodeTree *nodetree);

Modified: trunk/blender/source/blender/editors/space_node/node_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_ops.c	2010-05-12 12:03:38 UTC (rev 28736)
+++ trunk/blender/source/blender/editors/space_node/node_ops.c	2010-05-12 13:55:09 UTC (rev 28737)
@@ -52,7 +52,9 @@
 	WM_operatortype_append(NODE_OT_select_linked_from);
 	WM_operatortype_append(NODE_OT_select_border);
 	WM_operatortype_append(NODE_OT_select_same_type);
-	
+	WM_operatortype_append(NODE_OT_select_same_type_next);
+	WM_operatortype_append(NODE_OT_select_same_type_prev);
+
 	WM_operatortype_append(NODE_OT_view_all);
 	WM_operatortype_append(NODE_OT_visibility_toggle);
 	WM_operatortype_append(NODE_OT_mute);
@@ -155,7 +157,9 @@
 	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_select_same_type", FKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_select_same_type", GKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_select_same_type_next", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_select_same_type_prev", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 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);

Modified: trunk/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_select.c	2010-05-12 12:03:38 UTC (rev 28736)
+++ trunk/blender/source/blender/editors/space_node/node_select.c	2010-05-12 13:55:09 UTC (rev 28737)
@@ -388,3 +388,53 @@
 	/* flags */
 	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
 }
+
+/* ****** Select The Next/Prev Node Of The Same Type ****** */
+
+static int node_select_same_type_next_exec(bContext *C, wmOperator *op)
+{
+	SpaceNode *snode = CTX_wm_space_node(C);
+
+	node_select_same_type_np(snode, 0);
+	WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL);
+	return OPERATOR_FINISHED;
+}
+
+void NODE_OT_select_same_type_next(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Select Same Type Next";
+	ot->description = "Select the next node of the same type.";
+	ot->idname = "NODE_OT_select_same_type_next";
+	
+	/* api callbacks */
+	ot->exec = node_select_same_type_next_exec;
+	ot->poll = ED_operator_node_active;
+	
+	/* flags */
+	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+static int node_select_same_type_prev_exec(bContext *C, wmOperator *op)
+{
+	SpaceNode *snode = CTX_wm_space_node(C);
+
+	node_select_same_type_np(snode, 1);
+	WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL);
+	return OPERATOR_FINISHED;
+}
+
+void NODE_OT_select_same_type_prev(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Select Same Type Prev";
+	ot->description = "Select the prev node of the same type.";
+	ot->idname = "NODE_OT_select_same_type_prev";
+	
+	/* api callbacks */
+	ot->exec = node_select_same_type_prev_exec;
+	ot->poll = ED_operator_node_active;
+	
+	/* flags */
+	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+}





More information about the Bf-blender-cvs mailing list