[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