== NLA/IPO Muting ==
authorJoshua Leung <aligorith@gmail.com>
Fri, 22 Jun 2007 11:55:00 +0000 (11:55 +0000)
committerJoshua Leung <aligorith@gmail.com>
Fri, 22 Jun 2007 11:55:00 +0000 (11:55 +0000)
This commit adds a few open/closed 'eye' icons to the NLA editor to toggle IPO-block muting on Object (IPO) channels, and Action Strip muting on Action Strips, like in the Action Editor.

source/blender/src/drawnla.c
source/blender/src/editnla.c

index de35a0f2906f0b941a1a5a1ef4de8a0d5cd15bee..a7f81b758a3fd1484176f77ed17f4808350136d7 100644 (file)
@@ -148,6 +148,15 @@ static void draw_nla_channels(void)
                                else
                                        BIF_icon_draw(x+17, y-8, ICON_ACTION);
                        }       
+                       
+                       /* icon to indicate if ipo-channel muted */
+                       if (ob->ipo) {
+                               if (ob->ipo->muteipo) 
+                                       BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_ON);
+                               else 
+                                       BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_OFF);
+                       }
+                       
                        glDisable(GL_BLEND);
                        y-=NLACHANNELHEIGHT+NLACHANNELSKIP;
                        
@@ -192,16 +201,20 @@ static void draw_nla_channels(void)
                                                glRasterPos2f(x+48,  y-4);
                                                BMF_DrawString(G.font, strip->act->id.name+2);
                                                
-                                               if(strip->flag & ACTSTRIP_ACTIVE) {
-                                                       glEnable(GL_BLEND);
+                                               glEnable(GL_BLEND);
+                                               
+                                               if(strip->flag & ACTSTRIP_ACTIVE)
                                                        BIF_icon_draw(x+16, y-8, ICON_DOT);
-                                                       glDisable(GL_BLEND);
-                                               }
-                                               if(strip->modifiers.first) {
-                                                       glEnable(GL_BLEND);
+                                                       
+                                               if(strip->modifiers.first)
                                                        BIF_icon_draw(x+34, y-8, ICON_MODIFIER);
-                                                       glDisable(GL_BLEND);
-                                               }
+                                               
+                                               if(strip->flag & ACTSTRIP_MUTE)
+                                                       BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_ON);
+                                               else
+                                                       BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_OFF);
+                                               
+                                               glDisable(GL_BLEND);
                                        }
                                        
                                        y-=(NLACHANNELHEIGHT+NLACHANNELSKIP);
index c433f49df276ce226191d6707f615c9a91ab895c..2233db6e3461922b585650d1cb5bcbb9f6684742 100644 (file)
@@ -825,8 +825,12 @@ static void mouse_nlachannels(short mval[2])
        
        if(actclick) /* de-activate all strips */
                set_active_strip(ob, NULL);
-       else if(strip) /* set action */
-               set_active_strip(ob, strip);
+       else if(strip) {
+               if(mval[0] >= (NLAWIDTH-16)) /* toggle strip muting */
+                       strip->flag ^= ACTSTRIP_MUTE;
+               else /* set action */
+                       set_active_strip(ob, strip);
+       }
 
        /* icon toggles beside strip */
        if (obclick && mval[0]<20) {
@@ -837,6 +841,10 @@ static void mouse_nlachannels(short mval[2])
                /* override option for NLA */
                ob->nlaflag ^= OB_NLA_OVERRIDE;
        }
+       else if((obclick) && (ob->ipo) && (mval[0] >= (NLAWIDTH-16))) {
+               /* mute Object IPO-block */
+               ob->ipo->muteipo = (ob->ipo->muteipo)? 0: 1;
+       }
        
        ob->ctime= -1234567.0f; // eveil! 
        DAG_object_flush_update(G.scene, ob, OB_RECALC_OB|OB_RECALC_DATA);