[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18127] branches/blender2.5/blender/source /blender/editors/space_node: 2.5 / Nodes

Nathan Letwory jesterking at letwory.net
Sun Dec 28 21:49:37 CET 2008


Revision: 18127
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18127
Author:   jesterking
Date:     2008-12-28 21:49:37 +0100 (Sun, 28 Dec 2008)

Log Message:
-----------
2.5 / Nodes
* shift-select operator, inheriting from normal select operator.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h
    branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_select.c

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c	2008-12-28 19:16:07 UTC (rev 18126)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c	2008-12-28 20:49:37 UTC (rev 18127)
@@ -1365,6 +1365,7 @@
 		return nodeGetActive(ntree);
 }
 
+#endif /* 0 */
 
 /* no undo here! */
 void node_deselectall(SpaceNode *snode, int swap)
@@ -1378,7 +1379,6 @@
 		if(node==NULL) {
 			for(node= snode->edittree->nodes.first; node; node= node->next)
 				node->flag |= SELECT;
-			// allqueue(REDRAWNODE, 0);
 			return;
 		}
 		/* else pass on to deselect */
@@ -1386,10 +1386,10 @@
 	
 	for(node= snode->edittree->nodes.first; node; node= node->next)
 		node->flag &= ~SELECT;
-	
-	// allqueue(REDRAWNODE, 0);
 }
 
+#if 0
+
 int node_has_hidden_sockets(bNode *node)
 {
 	bNodeSocket *sock;

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h	2008-12-28 19:16:07 UTC (rev 18126)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h	2008-12-28 20:49:37 UTC (rev 18127)
@@ -52,6 +52,7 @@
 
 /* node_select.c */
 void NODE_OT_select(struct wmOperatorType *ot);
+void NODE_OT_extend_select(struct wmOperatorType *ot);
 
 /* drawnode.c */
 void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link);
@@ -63,6 +64,7 @@
 void scale_node(SpaceNode *snode, bNode *node);
 void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
 void node_set_active(SpaceNode *snode, bNode *node);
+void node_deselectall(SpaceNode *snode, int swap);
 
 #endif /* ED_NODE_INTERN_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c	2008-12-28 19:16:07 UTC (rev 18126)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c	2008-12-28 20:49:37 UTC (rev 18127)
@@ -47,6 +47,7 @@
 void node_operatortypes(void)
 {
 	WM_operatortype_append(NODE_OT_select);
+	WM_operatortype_append(NODE_OT_extend_select);
 }
 
 void node_keymap(struct wmWindowManager *wm)
@@ -54,4 +55,5 @@
 	ListBase *keymap= WM_keymap_listbase(wm, "Node", SPACE_NODE, 0);
 	
 	RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
+	RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_extend_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_select.c	2008-12-28 19:16:07 UTC (rev 18126)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_select.c	2008-12-28 20:49:37 UTC (rev 18127)
@@ -183,7 +183,7 @@
 	return 0;
 }
 
-static void node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval)
+static void node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, short modifier)
 {
 	bNode *node;
 	float mx, my;
@@ -210,29 +210,24 @@
 			break;
 	}
 	if(node) {
-		// XXX if((G.qual & LR_SHIFTKEY)==0)
-		//	node_deselectall(snode, 0);
+		if((modifier & KM_SHIFT)==0)
+			node_deselectall(snode, 0);
 		
-		// XXX
-		/*
-		if(G.qual & LR_SHIFTKEY) {
+		if(modifier & KM_SHIFT) {
 			if(node->flag & SELECT)
 				node->flag &= ~SELECT;
 			else
 				node->flag |= SELECT;
 		}
-		else */
+		else
 			node->flag |= SELECT;
 		
 		node_set_active(snode, node);
 		
 		/* viewer linking */
-		//if(G.qual & LR_CTRLKEY)
-		//	node_link_viewer(snode, node);
+		if(modifier & KM_CTRL)
+			;//	node_link_viewer(snode, node);
 		
-		/* not so nice (no event), but function below delays redraw otherwise */
-		//force_draw(0);
-		
 		//std_rmouse_transform(node_transform_ext);	/* does undo push for select */
 		ED_region_tag_redraw(ar);
 	}
@@ -244,6 +239,7 @@
 	ARegion *ar= CTX_wm_region(C);
 	int select_type;
 	short mval[2];
+	short modifier;
 
 	select_type = RNA_enum_get(op->ptr, "select_type");
 	
@@ -251,7 +247,8 @@
 		case NODE_SELECT_MOUSE:
 			mval[0] = RNA_int_get(op->ptr, "mx");
 			mval[1] = RNA_int_get(op->ptr, "my");
-			node_mouse_select(snode, ar, mval);
+			modifier = RNA_int_get(op->ptr, "modifier");
+			node_mouse_select(snode, ar, mval, modifier);
 			break;
 	}
 	return OPERATOR_FINISHED;
@@ -271,12 +268,39 @@
 	return node_select_exec(C,op);
 }
 
+static int node_extend_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+	RNA_int_set(op->ptr, "modifier", KM_SHIFT);
+
+	return node_select_invoke(C, op, event);
+}
+
 /* operators */
 
 static EnumPropertyItem prop_select_items[] = {
 	{NODE_SELECT_MOUSE, "NORMAL", "Normal Select", "Select using the mouse"},
 	{0, NULL, NULL, NULL}};
 
+void NODE_OT_extend_select(wmOperatorType *ot)
+{
+	PropertyRNA *prop;
+	
+	/* identifiers */
+	ot->name= "Activate/Select (Shift)";
+	ot->idname= "NODE_OT_extend_select";
+	
+	/* api callbacks */
+	ot->invoke= node_extend_select_invoke;
+	ot->poll= ED_operator_node_active;
+	
+	prop = RNA_def_property(ot->srna, "select_type", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_items(prop, prop_select_items);
+	
+	prop = RNA_def_property(ot->srna, "mx", PROP_INT, PROP_NONE);
+	prop = RNA_def_property(ot->srna, "my", PROP_INT, PROP_NONE);
+	prop = RNA_def_property(ot->srna, "modifier", PROP_INT, PROP_NONE);
+}
+
 void NODE_OT_select(wmOperatorType *ot)
 {
 	PropertyRNA *prop;
@@ -294,4 +318,5 @@
 	
 	prop = RNA_def_property(ot->srna, "mx", PROP_INT, PROP_NONE);
 	prop = RNA_def_property(ot->srna, "my", PROP_INT, PROP_NONE);
+	prop = RNA_def_property(ot->srna, "modifier", PROP_INT, PROP_NONE);
 }





More information about the Bf-blender-cvs mailing list