Revision: 17453
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17453
Author:   aligorith
Date:     2008-11-14 05:07:47 +0100 (Fri, 14 Nov 2008)

Log Message:
-----------
AnimSys2: More DopeSheet/Action-Editor code tidy-ups

* Moved the context-checks to a centralised place.
* Disabled a few menus which will not work with the dopesheet

Modified Paths:
--------------
    branches/animsys2/source/blender/src/drawaction.c
    branches/animsys2/source/blender/src/editaction.c
    branches/animsys2/source/blender/src/header_action.c

Modified: branches/animsys2/source/blender/src/drawaction.c
===================================================================
--- branches/animsys2/source/blender/src/drawaction.c   2008-11-14 03:52:04 UTC 
(rev 17452)
+++ branches/animsys2/source/blender/src/drawaction.c   2008-11-14 04:07:47 UTC 
(rev 17453)
@@ -1472,30 +1472,6 @@
 
        /* warning: blocks need to be freed each time, handlers dont remove  */
        uiFreeBlocksWin(&sa->uiblocks, sa->win);
-
-       /* only try to refresh action that's displayed if not pinned */
-       // TODO: should this be moved into get_action_context instead???
-       if (G.saction->pin==0) {
-               /* depends on mode */
-               switch (G.saction->mode) {
-                       case SACTCONT_ACTION:
-                       {
-                               if (OBACT)
-                                       G.saction->action = OBACT->action;
-                               else
-                                       G.saction->action= NULL;
-                       }
-                               break;
-                       case SACTCONT_DOPESHEET:
-                       {
-                               /* update scene-pointer */
-                               G.saction->ads.source= (ID *)G.scene;
-                               
-                               // TODO: later, we may need to set flags?
-                       }
-                               break;
-               }
-       }
        
        /* get data */
        data = get_action_context(&datatype);
@@ -1589,7 +1565,7 @@
        }
 
        /* Draw Left-Hand Panel if enough space in window */
-       if (G.v2d->mask.xmin!=0) {
+       if (G.v2d->mask.xmin != 0) {
                /* Draw channel names */
                draw_channel_names();
                

Modified: branches/animsys2/source/blender/src/editaction.c
===================================================================
--- branches/animsys2/source/blender/src/editaction.c   2008-11-14 03:52:04 UTC 
(rev 17452)
+++ branches/animsys2/source/blender/src/editaction.c   2008-11-14 04:07:47 UTC 
(rev 17453)
@@ -1182,59 +1182,48 @@
 }
 
 void *get_action_context (short *datatype)
-{
-       bDopeSheet *ads;
-       bAction *act;
-       Key *key;
-       
-       /* get pointers to active action/shapekey blocks */
-       // TODO: should the checks for updating types really be here?
-       act = (G.saction)? G.saction->action: NULL;
-       ads = (G.saction)? &G.saction->ads: NULL;
-       key = get_action_mesh_key();
-       
+{      
        /* check mode selector */
        if (G.saction) {
+               /* sync settings with current view status, then return 
appropriate data */
                switch (G.saction->mode) {
-                       case SACTCONT_ACTION: 
+                       case SACTCONT_ACTION:
+                               /* if not pinned, sync with active object */
+                               if (G.saction->pin == 0) {
+                                       if (OBACT)
+                                               G.saction->action = 
OBACT->action;
+                                       else
+                                               G.saction->action= NULL;
+                               }
+                                       
                                *datatype= ACTCONT_ACTION;
-                               return act;
+                               return G.saction->action;
                                
                        case SACTCONT_SHAPEKEY:
                                *datatype= ACTCONT_SHAPEKEY;
-                               return key;
+                               return get_action_mesh_key();
                                
                        case SACTCONT_GPENCIL:
                                *datatype= ACTCONT_GPENCIL;
                                return G.curscreen; // FIXME: add that 
dopesheet type thing here!
+                               break;
                                
                        case SACTCONT_DOPESHEET:
+                               /* update scene-pointer (no need to check for 
pinning yet, as not implemented) */
+                               G.saction->ads.source= (ID *)G.scene;
+                               
                                *datatype= ACTCONT_DOPESHEET;
-                               return ads;
+                               return &G.saction->ads;
                        
-                       default: /* includes SACTCONT_DOPESHEET for now */
+                       default: /* unhandled yet */
                                *datatype= ACTCONT_NONE;
                                return NULL;
                }
        }
        else {
-               /* resort to guessing based on what is available */
-               if (act) {
-                       *datatype= ACTCONT_ACTION;
-                       return act;
-               }
-               else if (key) {
-                       *datatype= ACTCONT_SHAPEKEY;
-                       return key;
-               }
-               else if (ads) {
-                       *datatype= ACTCONT_DOPESHEET;
-                       return ads;
-               }
-               else {
-                       *datatype= ACTCONT_NONE;
-                       return NULL;
-               }
+               /* nothing should be available... */
+               *datatype= ACTCONT_NONE;
+               return NULL;
        }
 }
 

Modified: branches/animsys2/source/blender/src/header_action.c
===================================================================
--- branches/animsys2/source/blender/src/header_action.c        2008-11-14 
03:52:04 UTC (rev 17452)
+++ branches/animsys2/source/blender/src/header_action.c        2008-11-14 
04:07:47 UTC (rev 17453)
@@ -72,6 +72,7 @@
 #include "BDR_drawaction.h"
 #include "BSE_drawipo.h"
 #include "BSE_headerbuttons.h"
+#include "BSE_editaction_types.h"
 #include "BSE_time.h"
 
 #include "nla.h"
@@ -980,11 +981,13 @@
        uiDefIconTextBlockBut(block, action_channelmenu_groupmenu, 
                                                  NULL, ICON_RIGHTARROW_THIN, 
                                                  "Grouping", 0, yco-=20, 120, 
20, "");  
-                                                 
-       uiDefIconTextBlockBut(block, action_channelmenu_posmenu, 
-                                                 NULL, ICON_RIGHTARROW_THIN, 
-                                                 "Ordering", 0, yco-=20, 120, 
20, "");
        
+       if (G.saction->mode == SACTCONT_ACTION) {
+               uiDefIconTextBlockBut(block, action_channelmenu_posmenu, 
+                                                         NULL, 
ICON_RIGHTARROW_THIN, 
+                                                         "Ordering", 0, 
yco-=20, 120, 20, "");
+       }
+       
        uiDefIconTextBlockBut(block, action_channelmenu_settingsmenu, 
                                                  NULL, ICON_RIGHTARROW_THIN, 
                                                  "Settings", 0, yco-=20, 120, 
20, ""); 
@@ -1002,12 +1005,14 @@
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
                        "Toggle Show Hierachy|~", 0, yco-=20,
                        menuwidth, 19, NULL, 0.0, 0.0, 0, 
ACTMENU_CHANNELS_EXPANDALL, "");
+               
+       if (G.saction->mode == SACTCONT_ACTION) {
+               uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
+                               "Show Group-Hidden Channels|Shift ~", 0, 
yco-=20,
+                               menuwidth, 19, NULL, 0.0, 0.0, 0, 
ACTMENU_CHANNELS_SHOWACHANS, "");
+       }
                        
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
-                       "Show Group-Hidden Channels|Shift ~", 0, yco-=20,
-                       menuwidth, 19, NULL, 0.0, 0.0, 0, 
ACTMENU_CHANNELS_SHOWACHANS, "");
-                       
-       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
                        "Expand One Level|Ctrl NumPad+", 0, yco-=20,
                        menuwidth, 19, NULL, 0.0, 0.0, 0, 
ACTMENU_CHANNELS_OPENLEVELS, "");
                        
@@ -1478,7 +1483,7 @@
                                                  "Interpolation Mode", 0, 
yco-=20, 120, 20, "");
 
        
-       if(curarea->headertype==HEADERTOP) {
+       if (curarea->headertype==HEADERTOP) {
                uiBlockSetDirection(block, UI_DOWN);
        }
        else {
@@ -1626,24 +1631,16 @@
 
 void action_buttons(void)
 {
+       void *data;
+       short datatype;
+       
        uiBlock *block;
        short xco, xmax;
        char name[256];
        Object *ob;
        ID *from;
-
-       if (G.saction == NULL)
-               return;
-
-       /* copied from drawactionspace.... */
-       // FIXME: do for gpencil too?
-       if (!G.saction->pin) {
-               if (OBACT)
-                       G.saction->action = OBACT->action;
-               else
-                       G.saction->action= NULL;
-       }
-
+       
+       /* draw SPACETYPE SELECTOR */
        sprintf(name, "header %d", curarea->headwin);
        block= uiNewBlock(&curarea->uiblocks, name, 
                                          UI_EMBOSS, UI_HELV, curarea->headwin);
@@ -1664,6 +1661,7 @@
                                          "Click for menu of available types.");
 
        xco += XIC + 14;
+       
 
        uiBlockSetEmboss(block, UI_EMBOSSN);
        if (curarea->flag & HEADER_NO_PULLDOWN) {
@@ -1682,6 +1680,11 @@
        }
        uiBlockSetEmboss(block, UI_EMBOSS);
        xco+=XIC;
+       
+       /* get context... (also syncs data) */
+       data= get_action_context(&datatype);
+       if (datatype == ACTCONT_NONE) return;
+       
 
        if ((curarea->flag & HEADER_NO_PULLDOWN)==0) {
                /* pull down menus */


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to