Bone Layer feature: now also Armature layers have a hotkey menu; Shift+m.
authorTon Roosendaal <ton@blender.org>
Fri, 24 Nov 2006 18:58:59 +0000 (18:58 +0000)
committerTon Roosendaal <ton@blender.org>
Fri, 24 Nov 2006 18:58:59 +0000 (18:58 +0000)
Note that these menus again react to hotkeys, so making layer 4 visible
then is Shift+m, 4.

source/blender/include/BIF_toolbox.h
source/blender/src/editobject.c
source/blender/src/poseobject.c
source/blender/src/space.c
source/blender/src/toolbox.c

index eef78e482cc0b7ea897fa32eab78005699237e0d..d2ff84d18d8391f39c5f538c29f658e6236a2280 100644 (file)
@@ -50,8 +50,8 @@ short button (short *var, short min, short max, char *str);
 short fbutton (float *var, float min, float max, float a1, float a2, char *str);
 short sbutton (char *var, float min, float max, char *str);    /* __NLA */
 
-int movetolayer_buts (unsigned int *lay);
-int movetolayer_short_buts (short *lay);
+int movetolayer_buts (unsigned int *lay, char *title);
+int movetolayer_short_buts (short *lay, char *title);
 
 void draw_numbuts_tip (char *str, int x1, int y1, int x2, int y2);
 int do_clever_numbuts (char *name, int tot, int winevent);
index c25b28e8a283499fcc3d5762f350167cec1c75dd..665a67d5399814d72d077584b261c742f2c958a1 100644 (file)
@@ -2066,7 +2066,7 @@ void movetolayer(void)
                        base= base->next;
                }
        } else {
-               if( movetolayer_buts(&lay)==0 ) return;
+               if( movetolayer_buts(&lay, NULL)==0 ) return;
                
                /* normal non localview operation */
                base= FIRSTBASE;
index 9f9c1999a6f106a4e78335c259d7e50146d89c02..8b4908852a1289f3ce27967d67cf9794ad4f898e 100644 (file)
@@ -912,7 +912,18 @@ void pose_movetolayer(void)
        if(ob==NULL) return;
        arm= ob->data;
        
-       if(ob->flag & OB_POSEMODE) {
+       if(G.qual & LR_SHIFTKEY) {
+               lay= arm->layer;
+               if( movetolayer_short_buts(&lay, "Armature Layers")==0 ) return;
+               if(lay==0) return;
+               arm->layer= lay;
+               
+               allqueue(REDRAWVIEW3D, 0);
+               allqueue(REDRAWACTION, 0);
+               allqueue(REDRAWBUTSEDIT, 0);
+               
+       }
+       else if(ob->flag & OB_POSEMODE) {
                bPoseChannel *pchan;
                
                if(pose_has_protected_selected(ob, 0))
@@ -926,7 +937,7 @@ void pose_movetolayer(void)
                }
                if(lay==0) return;
                
-               if( movetolayer_short_buts(&lay)==0 ) return;
+               if( movetolayer_short_buts(&lay, "Bone Layers")==0 ) return;
                if(lay==0) return;
 
                for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
index 3c29d39056d13c1cc3a2988189e2056a53315a44..a85979b6fe948896b4370fd9dc449b86ed111d49 100644 (file)
@@ -1659,7 +1659,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
                                else if(G.qual & LR_CTRLKEY) {
                                        mirrormenu();
                                }
-                               else if(G.qual==0) {
+                               else if(G.qual==0 || G.qual==LR_SHIFTKEY) {
                                        if(ob && (ob->flag & OB_POSEMODE))
                                                pose_movetolayer();
                                        else
index fe75b7e0e0c349a44e1de779eca5b6b9507dbc4b..aeba6e8a66781c1eb63c8fd015ead7ed57263040 100644 (file)
@@ -351,7 +351,7 @@ short fbutton(float *var, float min, float max, float a1, float a2, char *str)
        return 0;
 }
 
-int movetolayer_buts(unsigned int *lay)
+int movetolayer_buts(unsigned int *lay, char *title)
 {
        uiBlock *block;
        ListBase listb={0, 0};
@@ -382,8 +382,10 @@ int movetolayer_buts(unsigned int *lay)
        dx= (sizex-5)/12;
        dy= sizey/2;
        
-       /* buttons have 0 as return event, to prevent menu to close on hotkeys */
+       if(title)
+               uiDefBut(block, LABEL, 0, title, (short)(x1), (short)y1+30, sizex, 20, NULL, 1, 0, 0, 0, "");
        
+       /* buttons have 0 as return event, to prevent menu to close on hotkeys */
        uiBlockBeginAlign(block);
        for(a=0; a<5; a++) 
                uiDefButBitI(block, TOGR, 1<<a, 0, "",(short)(x1+a*dx),(short)(y1+dy),(short)dx,(short)dy, lay, 0, 0, 0, 0, "");
@@ -409,7 +411,8 @@ int movetolayer_buts(unsigned int *lay)
        return 0;
 }
 
-int movetolayer_short_buts(short *lay)
+/* armature or bone */
+int movetolayer_short_buts(short *lay, char *title)
 {
        uiBlock *block;
        ListBase listb={0, 0};
@@ -435,8 +438,10 @@ int movetolayer_short_buts(short *lay)
        dx= (sizex-5)/10;
        dy= sizey/2;
        
+       if(title)
+               uiDefBut(block, LABEL, 0, title, (short)(x1), (short)y1+30, sizex, 20, NULL, 1, 0, 0, 0, "");
+
        /* buttons have 0 as return event, to prevent menu to close on hotkeys */
-       
        uiBlockBeginAlign(block);
        for(a=0; a<8; a++) 
                uiDefButBitS(block, TOGR, 1<<a, 0, "",(short)(x1+a*dx),(short)(y1+dy),(short)dx,(short)dy, lay, 0, 0, 0, 0, "");