Revision: 24697
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24697
Author:   aligorith
Date:     2009-11-20 07:31:49 +0100 (Fri, 20 Nov 2009)

Log Message:
-----------
More Node Editor Fixups:
* Restored Mute and Hide Operators, M and H keys respectively
* Restored Make Links Operator (F). However, I can't figure out how to set the 
sockets so that this can be used
* Made Alt-RMB the new hotkey for breaking links by dragging, since Alt-LMB was 
taken for panning already

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      2009-11-20 05:09:57 UTC 
(rev 24696)
+++ trunk/blender/release/scripts/ui/space_node.py      2009-11-20 06:31:49 UTC 
(rev 24697)
@@ -106,25 +106,26 @@
         layout = self.layout
 
         layout.itemO("tfm.translate")
+        layout.itemO("tfm.rotate")
         layout.itemO("tfm.resize")
-        layout.itemO("tfm.rotate")
-
+        
         layout.itemS()
 
         layout.itemO("node.duplicate")
         layout.itemO("node.delete")
 
-        # XXX
-        # layout.itemS()
-        # layout.itemO("node.make_link")
         layout.itemS()
+        layout.itemO("node.link_make")
+        
+        layout.itemS()
         layout.itemO("node.group_edit")
         layout.itemO("node.group_ungroup")
         layout.itemO("node.group_make")
 
         layout.itemS()
 
-        layout.itemO("node.visibility_toggle")
+        layout.itemO("node.hide")
+        layout.itemO("node.mute")
 
         # XXX
         # layout.itemO("node.rename")

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2009-11-20 
05:09:57 UTC (rev 24696)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2009-11-20 
06:31:49 UTC (rev 24697)
@@ -1369,6 +1369,7 @@
 
 }
 
+// XXX duplicate function
 /*static*/ int do_header_node(SpaceNode *snode, bNode *node, float mx, float 
my)
 {
        rctf totr= node->totr;
@@ -1423,6 +1424,7 @@
        return 0;
 }
 
+// XXX duplicate function
 /*static*/ int do_header_hidden_node(SpaceNode *snode, bNode *node, float mx, 
float my)
 {
        rctf totr= node->totr;
@@ -1578,7 +1580,7 @@
        
        if(snode->edittree==NULL) return 0;
        
-       /* deselect socks */
+       /* deselect sockets */
        for(node= snode->edittree->nodes.first; node; node= node->next) {
                for(sock= node->inputs.first; sock; sock= sock->next) {
                        if(sock->flag & SELECT) {
@@ -1721,34 +1723,10 @@
        return node;
 }
 
-#if 0
+/* ****************** Duplicate *********************** */
 
-void node_mute(SpaceNode *snode)
+static int node_duplicate_exec(bContext *C, wmOperator *op)
 {
-       bNode *node;
-
-       /* no disabling inside of groups */
-       if(node_tree_get_editgroup(snode->nodetree))
-               return;
-       
-       for(node= snode->edittree->nodes.first; node; node= node->next) {
-               if(node->flag & SELECT) {
-                       if(node->inputs.first && node->outputs.first) {
-                               if(node->flag & NODE_MUTED)
-                                       node->flag &= ~NODE_MUTED;
-                               else
-                                       node->flag |= NODE_MUTED;
-                       }
-               }
-       }
-       
-
-}
-
-#endif
-
-int node_duplicate_exec(bContext *C, wmOperator *op)
-{
        SpaceNode *snode= CTX_wm_space_node(C);
        
        ntreeCopyTree(snode->edittree, 1);      /* 1 == internally selected 
nodes */
@@ -1764,6 +1742,7 @@
 {
        node_duplicate_exec(C, op);
        
+       // todo... remove this - this is for a modal op instead!
        RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
        WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, 
op->ptr);
        
@@ -1772,7 +1751,6 @@
 
 void NODE_OT_duplicate(wmOperatorType *ot)
 {
-       
        /* identifiers */
        ot->name= "Duplicate Nodes";
        ot->description = "Duplicate the nodes.";
@@ -1791,44 +1769,6 @@
        RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 
0, INT_MAX);
 }
 
-#if 0
-
-static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
-{
-       bNode *newnode= NULL;
-       
-       if(link->fromsock->type==SOCK_RGBA && link->tosock->type==SOCK_VALUE) {
-               if(snode->edittree->type==NTREE_SHADER)
-                       newnode= node_add_node(snode, SH_NODE_RGBTOBW, 0.0f, 
0.0f);
-               else if(snode->edittree->type==NTREE_COMPOSIT)
-                       newnode= node_add_node(snode, CMP_NODE_RGBTOBW, 0.0f, 
0.0f);
-               else
-                       newnode= NULL;
-       }
-       else if(link->fromsock->type==SOCK_VALUE && 
link->tosock->type==SOCK_RGBA) {
-               if(snode->edittree->type==NTREE_SHADER)
-                       newnode= node_add_node(snode, SH_NODE_VALTORGB, 0.0f, 
0.0f);
-               else if(snode->edittree->type==NTREE_COMPOSIT)
-                       newnode= node_add_node(snode, CMP_NODE_VALTORGB, 0.0f, 
0.0f);
-               else
-                       newnode= NULL;
-       }
-       
-       if(newnode) {
-               /* dangerous assumption to use first in/out socks, but thats 
fine for now */
-               newnode->flag |= NODE_HIDDEN;
-               newnode->locx= 0.5f*(link->fromsock->locx + link->tosock->locx);
-               newnode->locy= 0.5f*(link->fromsock->locy + link->tosock->locy) 
+ HIDDEN_RAD;
-               
-               nodeAddLink(snode->edittree, newnode, newnode->outputs.first, 
link->tonode, link->tosock);
-               link->tonode= newnode;
-               link->tosock= newnode->inputs.first;
-       }
-}
-
-
-#endif /* 0 */
-
 /* *************************** add link op ******************** */
 
 /* temp data to pass on to modal */
@@ -2073,57 +2013,57 @@
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
 }
 
+/* ********************** Make Link operator ***************** */
 
-void node_hide(SpaceNode *snode)
-{
-       bNode *node;
-       int nothidden=0, ishidden=0;
-       
-       for(node= snode->edittree->nodes.first; node; node= node->next) {
-               if(node->flag & SELECT) {
-                       if(node->flag & NODE_HIDDEN)
-                               ishidden++;
-                       else
-                               nothidden++;
-               }
-       }
-       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 0
-
 /* makes a link between selected output and input sockets */
-void node_make_link(SpaceNode *snode)
+static int node_make_link_exec(bContext *C, wmOperator *op)
 {
+       SpaceNode *snode= CTX_wm_space_node(C);
        bNode *fromnode, *tonode;
        bNodeLink *link;
        bNodeSocket *outsock= snode->edittree->selout;
        bNodeSocket *insock= snode->edittree->selin;
+       
+       if (!insock || !outsock) {
+               BKE_report(op->reports, RPT_ERROR, "No input or output 
socket(s) selected");
+               return OPERATOR_CANCELLED;
+       }
+       if (nodeFindLink(snode->edittree, outsock, insock)) {
+               BKE_report(op->reports, RPT_ERROR, "There is already a link 
between these sockets");
+               return OPERATOR_CANCELLED;
+       }
 
-       if(!insock || !outsock) return;
-       if(nodeFindLink(snode->edittree, outsock, insock)) return;
-
-       if(nodeFindNode(snode->edittree, outsock, &fromnode, NULL) &&
-               nodeFindNode(snode->edittree, insock, &tonode, NULL)) {
+       if (nodeFindNode(snode->edittree, outsock, &fromnode, NULL) &&
+               nodeFindNode(snode->edittree, insock, &tonode, NULL)) 
+       {
                link= nodeAddLink(snode->edittree, fromnode, outsock, tonode, 
insock);
                NodeTagChanged(snode->edittree, tonode);
                node_remove_extra_links(snode, insock, link);
        }
-       else return;
+       else 
+               return OPERATOR_CANCELLED;
 
        ntreeSolveOrder(snode->edittree);
        node_tree_verify_groups(snode->nodetree);
-       // XXX                  snode_handle_recalc(snode);
+       snode_handle_recalc(C, snode);
+       
+       return OPERATOR_FINISHED;
+}
 
+void NODE_OT_link_make(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Make Links";
+       ot->description= "Makes a link between selected output in input 
sockets.";
+       ot->idname= "NODE_OT_link_make";
+       
+       /* callbacks */
+       ot->exec= node_make_link_exec;
+       ot->poll= ED_operator_node_active; // XXX we need a special poll which 
checks that there are selected input/output sockets
+       
+       /* flags */
+       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
-#endif
 
 /* ********************** Cut Link operator ***************** */
 
@@ -2172,7 +2112,7 @@
                                nodeRemLink(snode->edittree, link);
                        }
                }
-
+               
                ntreeSolveOrder(snode->edittree);
                node_tree_verify_groups(snode->nodetree);
                snode_handle_recalc(C, snode);
@@ -2206,6 +2146,7 @@
 }
 
 /* ******************************** */
+// XXX some code needing updating to operators...
 
 /* goes over all scenes, reads render layerss */
 void node_read_renderlayers(SpaceNode *snode)
@@ -2293,7 +2234,7 @@
                                if(gnode->type==CMP_NODE_R_LAYERS)
                                        break;
                }
-
+               
                if(gnode) {
                        BKE_report(op->reports, RPT_ERROR, "Can not add 
RenderLayer in a Group");
                        return OPERATOR_CANCELLED;
@@ -2311,7 +2252,7 @@
        }
        
        snode_handle_recalc(C, snode);
-
+       
        return OPERATOR_FINISHED;
 }
 
@@ -2330,6 +2271,142 @@
        ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
+/* ****************** Hide operator *********************** */
+
+static int node_hide_exec(bContext *C, wmOperator *op)
+{
+       SpaceNode *snode= CTX_wm_space_node(C);
+       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++;
+                       else
+                               nothidden++;
+               }
+       }
+       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;
+               }
+       }
+       
+       snode_handle_recalc(C, snode);
+       
+       return OPERATOR_FINISHED;
+}
+
+void NODE_OT_hide(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Hide Nodes";
+       ot->description= "Toggle hiding of the nodes.";
+       ot->idname= "NODE_OT_hide";
+       
+       /* callbacks */
+       ot->exec= node_hide_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)
+{
+       SpaceNode *snode= CTX_wm_space_node(C);
+       bNode *node;
+
+       /* no disabling inside of groups */
+       if(node_tree_get_editgroup(snode->nodetree))
+               return OPERATOR_CANCELLED;
+       
+       for(node= snode->edittree->nodes.first; node; node= node->next) {
+               if(node->flag & SELECT) {
+                       if(node->inputs.first && node->outputs.first) {
+                               node->flag ^= NODE_MUTED;
+                       }
+               }
+       }
+       
+       snode_handle_recalc(C, snode);
+       
+       return OPERATOR_FINISHED;
+}
+
+void NODE_OT_mute(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Mute Nodes";
+       ot->description= "Toggle muting of the nodes.";
+       ot->idname= "NODE_OT_mute";
+       
+       /* callbacks */
+       ot->exec= node_mute_exec;
+       ot->poll= ED_operator_node_active;
+       
+       /* flags */
+       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/* ****************** Delete operator ******************* */
+
+static int node_delete_exec(bContext *C, wmOperator *op)
+{
+       SpaceNode *snode= CTX_wm_space_node(C);
+       bNode *node, *next;
+       bNodeSocket *sock;
+       
+       for(node= snode->edittree->nodes.first; node; node= next) {
+               next= node->next;
+               if(node->flag & SELECT) {

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to