diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-06-08 00:03:40 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-06-08 00:03:40 +0400 |
commit | 416e82b022114d37cac94f4ac136ebb06a239b01 (patch) | |
tree | 1a49b871acf3c931fb74ff2edce9d8b99a11d43d /source/blender/editors/space_node/node_edit.c | |
parent | d9690e92957beefb8c233313a040e54e06486b30 (diff) |
node toggle preview and hidden socket key shortcuts (Ctrl+H, Shift+H)
Diffstat (limited to 'source/blender/editors/space_node/node_edit.c')
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 127 |
1 files changed, 105 insertions, 22 deletions
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index ff93f701805..befb37a2432 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1988,49 +1988,132 @@ void NODE_OT_group_make(wmOperatorType *ot) /* ****************** 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; } @@ -2060,12 +2143,12 @@ static int node_mute_exec(bContext *C, wmOperator *op) 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; |