[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28736] trunk/blender: Node Space: Small feature for Venomgfx, Shift + F select node of the same type
Diego Borghetti
bdiego at gmail.com
Wed May 12 14:03:40 CEST 2010
Revision: 28736
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28736
Author: bdiego
Date: 2010-05-12 14:03:38 +0200 (Wed, 12 May 2010)
Log Message:
-----------
Node Space: Small feature for Venomgfx, Shift + F select node of the same type
This is a small request from Venomgfx, select a node
and then press Shift + F to select all the nodes of the
same type (of the active node).
The key binding can be change, we thing in a "Find Next" (that is
way the FKEY) with venomgfx, but no problem with change that.
Also I add the entry in the select menu.
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 08:53:44 UTC (rev 28735)
+++ trunk/blender/release/scripts/ui/space_node.py 2010-05-12 12:03:38 UTC (rev 28736)
@@ -108,6 +108,7 @@
layout.operator("node.select_all")
layout.operator("node.select_linked_from")
layout.operator("node.select_linked_to")
+ layout.operator("node.select_same_type")
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 08:53:44 UTC (rev 28735)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2010-05-12 12:03:38 UTC (rev 28736)
@@ -922,6 +922,38 @@
node->flag &= ~SELECT;
}
+/* return 1 if we need redraw otherwise zero. */
+int node_select_same_type(SpaceNode *snode)
+{
+ bNode *nac, *p;
+ int redraw;
+
+ /* search for the active node. */
+ for (nac= snode->edittree->nodes.first; nac; nac= nac->next) {
+ if (nac->flag & SELECT)
+ break;
+ }
+
+ /* no active node, return. */
+ if (!nac)
+ return(0);
+
+ redraw= 0;
+ for (p= snode->edittree->nodes.first; p; p= p->next) {
+ if (p->type != nac->type && p->flag & SELECT) {
+ /* if it's selected but different type, unselect */
+ redraw= 1;
+ p->flag &= ~SELECT;
+ }
+ else if (p->type == nac->type && (!(p->flag & SELECT))) {
+ /* if it's the same type and is not selected, select! */
+ redraw= 1;
+ p->flag |= SELECT;
+ }
+ }
+ return(redraw);
+}
+
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 08:53:44 UTC (rev 28735)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h 2010-05-12 12:03:38 UTC (rev 28736)
@@ -62,6 +62,7 @@
void NODE_OT_visibility_toggle(struct wmOperatorType *ot);
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);
/* drawnode.c */
void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link);
@@ -80,6 +81,7 @@
void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
void node_set_active(SpaceNode *snode, bNode *node);
void node_deselectall(SpaceNode *snode);
+int node_select_same_type(SpaceNode *snode);
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 08:53:44 UTC (rev 28735)
+++ trunk/blender/source/blender/editors/space_node/node_ops.c 2010-05-12 12:03:38 UTC (rev 28736)
@@ -51,6 +51,7 @@
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_select_same_type);
WM_operatortype_append(NODE_OT_view_all);
WM_operatortype_append(NODE_OT_visibility_toggle);
@@ -154,6 +155,7 @@
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_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 08:53:44 UTC (rev 28735)
+++ trunk/blender/source/blender/editors/space_node/node_select.c 2010-05-12 12:03:38 UTC (rev 28736)
@@ -363,3 +363,28 @@
ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/* ****** Select Same Type ****** */
+
+static int node_select_same_type_exec(bContext *C, wmOperator *op)
+{
+ SpaceNode *snode = CTX_wm_space_node(C);
+
+ node_select_same_type(snode);
+ WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL);
+ return OPERATOR_FINISHED;
+}
+
+void NODE_OT_select_same_type(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select Same Type";
+ ot->description = "Select all the same type";
+ ot->idname = "NODE_OT_select_same_type";
+
+ /* api callbacks */
+ ot->exec = node_select_same_type_exec;
+ ot->poll = ED_operator_node_active;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+}
More information about the Bf-blender-cvs
mailing list