[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29319] trunk/blender: node toggle preview and hidden socket key shortcuts (Ctrl+H, Shift+H)

Campbell Barton ideasman42 at gmail.com
Mon Jun 7 22:03:41 CEST 2010


Revision: 29319
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29319
Author:   campbellbarton
Date:     2010-06-07 22:03:40 +0200 (Mon, 07 Jun 2010)

Log Message:
-----------
node toggle preview and hidden socket key shortcuts (Ctrl+H, Shift+H)

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_state.c

Modified: trunk/blender/release/scripts/ui/space_node.py
===================================================================
--- trunk/blender/release/scripts/ui/space_node.py	2010-06-07 19:16:56 UTC (rev 29318)
+++ trunk/blender/release/scripts/ui/space_node.py	2010-06-07 20:03:40 UTC (rev 29319)
@@ -139,8 +139,10 @@
 
         layout.separator()
 
-        layout.operator("node.hide")
-        layout.operator("node.mute")
+        layout.operator("node.hide_toggle")
+        layout.operator("node.mute_toggle")
+        layout.operator("node.preview_toggle")
+        layout.operator("node.hide_socket_toggle")
 
         # XXX
         # layout.operator("node.rename")

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2010-06-07 19:16:56 UTC (rev 29318)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2010-06-07 20:03:40 UTC (rev 29319)
@@ -1988,53 +1988,136 @@
 
 /* ****************** Hide operator *********************** */
 
-static int node_hide_exec(bContext *C, wmOperator *op)
+static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag)
 {
-	SpaceNode *snode= CTX_wm_space_node(C);
+	int tot_eq= 0, tot_neq= 0;
 	bNode *node;
-	int nothidden=0, ishidden=0;
-	
-	/* sanity checking (poll callback checks this already) */
-	if((snode == NULL) || (snode->edittree == NULL))
-		return OPERATOR_CANCELLED;
-	
+
 	for(node= snode->edittree->nodes.first; node; node= node->next) {
 		if(node->flag & SELECT) {
-			if(node->flag & NODE_HIDDEN)
-				ishidden++;
+			if(node->flag & toggle_flag)
+				tot_eq++;
 			else
-				nothidden++;
+				tot_neq++;
 		}
 	}
 	for(node= snode->edittree->nodes.first; node; node= node->next) {
 		if(node->flag & SELECT) {
-			if( (ishidden && nothidden) || ishidden==0)
-				node->flag |= NODE_HIDDEN;
-			else 
-				node->flag &= ~NODE_HIDDEN;
+			if( (tot_eq && tot_neq) || tot_eq==0)
+				node->flag |= toggle_flag;
+			else
+				node->flag &= ~toggle_flag;
 		}
 	}
+}
+
+static int node_hide_exec(bContext *C, wmOperator *op)
+{
+	SpaceNode *snode= CTX_wm_space_node(C);
 	
+	/* sanity checking (poll callback checks this already) */
+	if((snode == NULL) || (snode->edittree == NULL))
+		return OPERATOR_CANCELLED;
+	
+	node_flag_toggle_exec(snode, NODE_HIDDEN);
+	
 	snode_notify(C, snode);
 	
 	return OPERATOR_FINISHED;
 }
 
-void NODE_OT_hide(wmOperatorType *ot)
+void NODE_OT_hide_toggle(wmOperatorType *ot)
 {
 	/* identifiers */
 	ot->name= "Hide";
-	ot->description= "Toggle hiding of the nodes";
-	ot->idname= "NODE_OT_hide";
+	ot->description= "Toggle hiding of selected nodes";
+	ot->idname= "NODE_OT_hide_toggle";
 	
 	/* callbacks */
 	ot->exec= node_hide_exec;
 	ot->poll= ED_operator_node_active;
-	
+
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
+static int node_preview_exec(bContext *C, wmOperator *op)
+{
+	SpaceNode *snode= CTX_wm_space_node(C);
+
+	/* sanity checking (poll callback checks this already) */
+	if((snode == NULL) || (snode->edittree == NULL))
+		return OPERATOR_CANCELLED;
+
+	node_flag_toggle_exec(snode, NODE_PREVIEW);
+
+	snode_notify(C, snode);
+
+	return OPERATOR_FINISHED;
+}
+
+void NODE_OT_preview_toggle(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Toggle Node Preview";
+	ot->description= "Toggle preview display for selected nodes";
+	ot->idname= "NODE_OT_preview_toggle";
+
+	/* callbacks */
+	ot->exec= node_preview_exec;
+	ot->poll= ED_operator_node_active;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+static int node_socket_toggle_exec(bContext *C, wmOperator *op)
+{
+	SpaceNode *snode= CTX_wm_space_node(C);
+	bNode *node;
+	int hidden= 0;
+
+	/* sanity checking (poll callback checks this already) */
+	if((snode == NULL) || (snode->edittree == NULL))
+		return OPERATOR_CANCELLED;
+
+	for(node= snode->edittree->nodes.first; node; node= node->next) {
+		if(node->flag & SELECT) {
+			if(node_has_hidden_sockets(node)) {
+				hidden= 1;
+				break;
+			}
+		}
+	}
+
+	for(node= snode->edittree->nodes.first; node; node= node->next) {
+		if(node->flag & SELECT) {
+			node_set_hidden_sockets(snode, node, !hidden);
+		}
+	}
+
+	node_tree_verify_groups(snode->nodetree);
+
+	snode_notify(C, snode);
+
+	return OPERATOR_FINISHED;
+}
+
+void NODE_OT_hide_socket_toggle(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Toggle Hidden Node Sockets";
+	ot->description= "Toggle unused node socket display";
+	ot->idname= "NODE_OT_hide_socket_toggle";
+
+	/* callbacks */
+	ot->exec= node_socket_toggle_exec;
+	ot->poll= ED_operator_node_active;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
 /* ****************** Mute operator *********************** */
 
 static int node_mute_exec(bContext *C, wmOperator *op)
@@ -2060,12 +2143,12 @@
 	return OPERATOR_FINISHED;
 }
 
-void NODE_OT_mute(wmOperatorType *ot)
+void NODE_OT_mute_toggle(wmOperatorType *ot)
 {
 	/* identifiers */
-	ot->name= "Mute";
+	ot->name= "Toggle Node Mute";
 	ot->description= "Toggle muting of the nodes";
-	ot->idname= "NODE_OT_mute";
+	ot->idname= "NODE_OT_mute_toggle";
 	
 	/* callbacks */
 	ot->exec= node_mute_exec;

Modified: trunk/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_intern.h	2010-06-07 19:16:56 UTC (rev 29318)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h	2010-06-07 20:03:40 UTC (rev 29319)
@@ -90,7 +90,9 @@
 void node_tree_verify_groups(bNodeTree *nodetree);
 void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace);
 int node_has_hidden_sockets(bNode *node);
+void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set);
 
+
 void NODE_OT_duplicate(struct wmOperatorType *ot);
 void NODE_OT_delete(struct wmOperatorType *ot);
 void NODE_OT_resize(struct wmOperatorType *ot);
@@ -103,8 +105,10 @@
 void NODE_OT_group_ungroup(struct wmOperatorType *ot);
 void NODE_OT_group_edit(struct wmOperatorType *ot);
 
-void NODE_OT_mute(struct wmOperatorType *ot);
-void NODE_OT_hide(struct wmOperatorType *ot);
+void NODE_OT_mute_toggle(struct wmOperatorType *ot);
+void NODE_OT_hide_toggle(struct wmOperatorType *ot);
+void NODE_OT_hide_socket_toggle(struct wmOperatorType *ot);
+void NODE_OT_preview_toggle(struct wmOperatorType *ot);
 
 void NODE_OT_show_cyclic_dependencies(struct wmOperatorType *ot);
 void NODE_OT_link_viewer(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/space_node/node_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_ops.c	2010-06-07 19:16:56 UTC (rev 29318)
+++ trunk/blender/source/blender/editors/space_node/node_ops.c	2010-06-07 20:03:40 UTC (rev 29319)
@@ -57,8 +57,10 @@
 
 	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_mute_toggle);
+	WM_operatortype_append(NODE_OT_hide_toggle);
+	WM_operatortype_append(NODE_OT_preview_toggle);
+	WM_operatortype_append(NODE_OT_hide_socket_toggle);
 	WM_operatortype_append(NODE_OT_show_cyclic_dependencies);
 	
 	WM_operatortype_append(NODE_OT_duplicate);
@@ -143,8 +145,10 @@
 	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_hide_toggle", HKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_preview_toggle", HKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_hide_socket_toggle", HKEY, KM_PRESS, KM_CTRL, 0);
 	
 	WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0);
 	

Modified: trunk/blender/source/blender/editors/space_node/node_state.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_state.c	2010-06-07 19:16:56 UTC (rev 29318)
+++ trunk/blender/source/blender/editors/space_node/node_state.c	2010-06-07 20:03:40 UTC (rev 29319)
@@ -51,12 +51,13 @@
 
 /* **************** Node Header Buttons ************** */
 
-static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node)
-{
+/* note: call node_tree_verify_groups(snode->nodetree) after this
+ */
+void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set)
+{	
 	bNodeSocket *sock;
-	
-	/* unhide all */
-	if( node_has_hidden_sockets(node) ) {
+
+	if(set==0) {
 		for(sock= node->inputs.first; sock; sock= sock->next)
 			sock->flag &= ~SOCK_HIDDEN;
 		for(sock= node->outputs.first; sock; sock= sock->next)
@@ -64,7 +65,7 @@
 	}
 	else {
 		bNode *gnode= node_tree_get_editgroup(snode->nodetree);
-		
+
 		/* hiding inside group should not break links in other group users */
 		if(gnode) {
 			nodeGroupSocketUseFlags((bNodeTree *)gnode->id);
@@ -89,7 +90,11 @@
 			}
 		}
 	}
+}
 
+static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node)
+{
+	node_set_hidden_sockets(snode, node, !node_has_hidden_sockets(node));
 	node_tree_verify_groups(snode->nodetree);
 }
 





More information about the Bf-blender-cvs mailing list