Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-06-08 00:03:40 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-06-08 00:03:40 +0400
commit416e82b022114d37cac94f4ac136ebb06a239b01 (patch)
tree1a49b871acf3c931fb74ff2edce9d8b99a11d43d /source/blender/editors/space_node/node_edit.c
parentd9690e92957beefb8c233313a040e54e06486b30 (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.c127
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;