Revision: 15712
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15712
Author:   aligorith
Date:     2008-07-23 14:27:08 +0200 (Wed, 23 Jul 2008)

Log Message:
-----------
== Grease Pencil - UI Improvements ==

Based on user feedback, I've made some changes to the Grease Pencil UI (most 
notably in 'Time Editing' facilities). 
* 'Edit Timing' button gone
* Pin button and '<Grease Pencil Data' string gone from Action Editor
* Action Editor in 'Grease Pencil' mode now displays all grease-pencil 
datablocks for current screen. 
* AE: GP-Datablocks are drawn like 'groups', with an expand/collapse button to 
show/hide layers. Its name shows the type of space it comes from, and shows 
indicative status info (i.e. for 3d-view, it shows view-angle)
* Added refresh calls for action editor after editing relevant data.

I haven't tested all tools yet, but most should be stable. 

Also, I've removed some unnecessary buttons, and added a few tooltips. There's 
also some experimental code to try to get clearer indication of 'active' layer.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/include/BDR_gpencil.h
    trunk/blender/source/blender/include/BIF_editaction.h
    trunk/blender/source/blender/include/BSE_drawview.h
    trunk/blender/source/blender/makesdna/DNA_action_types.h
    trunk/blender/source/blender/makesdna/DNA_gpencil_types.h
    trunk/blender/source/blender/src/drawaction.c
    trunk/blender/source/blender/src/drawgpencil.c
    trunk/blender/source/blender/src/drawnode.c
    trunk/blender/source/blender/src/drawseq.c
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/editaction.c
    trunk/blender/source/blender/src/editaction_gpencil.c
    trunk/blender/source/blender/src/gpencil.c
    trunk/blender/source/blender/src/header_action.c
    trunk/blender/source/blender/src/interface.c
    trunk/blender/source/blender/src/interface_draw.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2008-07-23 
11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2008-07-23 
12:27:08 UTC (rev 15712)
@@ -4161,15 +4161,6 @@
                                        link_gpencil(fd, sseq->gpd);
                                }
                        }
-                       else if(sl->spacetype==SPACE_ACTION) {
-                               SpaceAction *sact= (SpaceAction *)sl;
-                               
-                               /* WARNING: action-editor doesn't have it's own 
gpencil data! 
-                                * so only adjust pointer, but DON'T LINK
-                                */
-                               if (sact->gpd) 
-                                       sact->gpd= newdataadr(fd, sact->gpd);
-                       }
                }
 
                sa->v1= newdataadr(fd, sa->v1);

Modified: trunk/blender/source/blender/include/BDR_gpencil.h
===================================================================
--- trunk/blender/source/blender/include/BDR_gpencil.h  2008-07-23 11:50:51 UTC 
(rev 15711)
+++ trunk/blender/source/blender/include/BDR_gpencil.h  2008-07-23 12:27:08 UTC 
(rev 15712)
@@ -53,8 +53,6 @@
 
 struct bGPdata *gpencil_data_getactive(struct ScrArea *sa);
 short gpencil_data_setactive(struct ScrArea *sa, struct bGPdata *gpd);
-struct bGPdata *gpencil_data_getetime(struct bScreen *sc);
-void gpencil_data_setetime(struct bScreen *sc, struct bGPdata *gpd);
 
 void gpencil_frame_delete_laststroke(struct bGPDframe *gpf);
 

Modified: trunk/blender/source/blender/include/BIF_editaction.h
===================================================================
--- trunk/blender/source/blender/include/BIF_editaction.h       2008-07-23 
11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/include/BIF_editaction.h       2008-07-23 
12:27:08 UTC (rev 15712)
@@ -49,7 +49,9 @@
        ACTTYPE_FILLCON,
        ACTTYPE_IPO,
        ACTTYPE_SHAPEKEY,
-       ACTTYPE_GPLAYER
+       ACTTYPE_GPDATABLOCK,
+       ACTTYPE_GPLAYER,
+       ACTTYPE_SPECIALDATA
 };
 
 /* Macros for easier/more consistant state testing */
@@ -70,6 +72,8 @@
 #define EDITABLE_ICU(icu) ((icu->flag & IPO_PROTECT)==0)
 #define SEL_ICU(icu) (icu->flag & IPO_SELECT)
 
+#define EXPANDED_GPD(gpd) (gpd->flag & GP_DATA_EXPAND) 
+
 #define EDITABLE_GPL(gpl) ((gpl->flag & GP_LAYER_LOCKED)==0)
 #define SEL_GPL(gpl) ((gpl->flag & GP_LAYER_ACTIVE) || (gpl->flag & 
GP_LAYER_SELECT))
 
@@ -185,7 +189,7 @@
 /* Grease-Pencil Data */
 void gplayer_make_cfra_list(struct bGPDlayer *gpl, ListBase *elems, short 
onlysel);
 
-void deselect_gpencil_layers(struct bGPdata *gpd, short select_mode);
+void deselect_gpencil_layers(void *data, short select_mode);
 
 short is_gplayer_frame_selected(struct bGPDlayer *gpl);
 void set_gplayer_frame_selection(struct bGPDlayer *gpl, short mode);
@@ -204,7 +208,7 @@
 struct Key *get_action_mesh_key(void);
 int get_nearest_key_num(struct Key *key, short *mval, float *x);
 
-void *get_nearest_act_channel(short mval[], short *ret_type);
+void *get_nearest_act_channel(short mval[], short *ret_type, void **owner);
 
 /* Action */
 struct bActionChannel *get_hilighted_action_channel(struct bAction* action);

Modified: trunk/blender/source/blender/include/BSE_drawview.h
===================================================================
--- trunk/blender/source/blender/include/BSE_drawview.h 2008-07-23 11:50:51 UTC 
(rev 15711)
+++ trunk/blender/source/blender/include/BSE_drawview.h 2008-07-23 12:27:08 UTC 
(rev 15712)
@@ -76,6 +76,7 @@
 int play_anim(int mode);
 
 void make_axis_color(char *col, char *col2, char axis);
+char *view3d_get_name(struct View3D *v3d);
 
 /* SMOOTHVIEW */
 void smooth_view(struct View3D *v3d, float *ofs, float *quat, float *dist, 
float *lens);

Modified: trunk/blender/source/blender/makesdna/DNA_action_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_action_types.h    2008-07-23 
11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/makesdna/DNA_action_types.h    2008-07-23 
12:27:08 UTC (rev 15712)
@@ -184,7 +184,6 @@
        View2D v2d;     
        
        bAction         *action;                /* the currently active action 
*/
-       bGPdata         *gpd;           /* the currently active gpencil block 
(for editing) */
        
        char  mode, autosnap;           /* mode: editing context; autosnap: 
automatic keyframe snapping mode   */
        short flag, actnr;                      /* flag: bitmapped settings; */

Modified: trunk/blender/source/blender/makesdna/DNA_gpencil_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_gpencil_types.h   2008-07-23 
11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/makesdna/DNA_gpencil_types.h   2008-07-23 
12:27:08 UTC (rev 15712)
@@ -131,8 +131,8 @@
 #define GP_DATA_DISP           (1<<0)
        /* show debugging info in viewport (i.e. status print) */
 #define GP_DATA_DISPINFO       (1<<1)
-       /* is the block being shown in Action Editor */
-#define GP_DATA_EDITTIME       (1<<2)
+       /* in Action Editor, show as expanded channel */
+#define GP_DATA_EXPAND (1<<2)
        /* is the block overriding all clicks? */
 #define GP_DATA_EDITPAINT      (1<<3)
        /* new strokes are added in viewport space */

Modified: trunk/blender/source/blender/src/drawaction.c
===================================================================
--- trunk/blender/source/blender/src/drawaction.c       2008-07-23 11:50:51 UTC 
(rev 15711)
+++ trunk/blender/source/blender/src/drawaction.c       2008-07-23 12:27:08 UTC 
(rev 15712)
@@ -89,6 +89,7 @@
 
 #include "BSE_drawnla.h"
 #include "BSE_drawipo.h"
+#include "BSE_drawview.h"
 #include "BSE_editaction_types.h"
 #include "BSE_editipo.h"
 #include "BSE_time.h"
@@ -467,7 +468,7 @@
                        bActionGroup *grp = NULL;
                        short indent= 0, offset= 0, sel= 0, group=0;
                        int expand= -1, protect = -1, special= -1, mute = -1;
-                       char name[32];
+                       char name[64];
                        
                        /* determine what needs to be drawn */
                        switch (ale->type) {
@@ -625,6 +626,70 @@
                                        sprintf(name, "Constraint");
                                }
                                        break;
+                               case ACTTYPE_GPDATABLOCK: /* gpencil datablock 
*/
+                               {
+                                       bGPdata *gpd = (bGPdata *)ale->data;
+                                       ScrArea *sa = (ScrArea *)ale->owner;
+                                       
+                                       indent = 0;
+                                       group= 3;
+                                       
+                                       /* only show expand if there are any 
channels */
+                                       if (gpd->layers.first) {
+                                               if (gpd->flag & GP_DATA_EXPAND)
+                                                       expand = ICON_TRIA_DOWN;
+                                               else
+                                                       expand = 
ICON_TRIA_RIGHT;
+                                       }
+                                       
+                                       switch (sa->spacetype) {
+                                               case SPACE_VIEW3D:
+                                               {
+                                                       /* this shouldn't cause 
any overflow... */
+                                                       sprintf(name, "3D-View: 
<%s>", view3d_get_name(sa->spacedata.first));
+                                                       special= ICON_VIEW3D;
+                                               }
+                                                       break;
+                                               case SPACE_NODE:
+                                               {
+                                                       SpaceNode *snode= 
sa->spacedata.first;
+                                                       char treetype[12];
+                                                       
+                                                       if (snode->treetype == 
1)
+                                                               
sprintf(treetype, "Composite");
+                                                       else
+                                                               
sprintf(treetype, "Material");
+                                                       sprintf(name, "Nodes: 
%s", treetype);
+                                                       
+                                                       special= ICON_NODE;
+                                               }
+                                                       break;
+                                               case SPACE_SEQ:
+                                               {
+                                                       SpaceSeq *sseq= 
sa->spacedata.first;
+                                                       char imgpreview[10];
+                                                       
+                                                       switch (sseq->mainb) {
+                                                               case 1:         
sprintf(imgpreview, "Image...");        break;
+                                                               case 2:         
sprintf(imgpreview, "Luma...");         break;
+                                                               case 3:         
sprintf(imgpreview, "Chroma...");       break;
+                                                               case 4:         
sprintf(imgpreview, "Histogram");       break;
+                                                               
+                                                               default:        
sprintf(imgpreview, "Sequence");        break;
+                                                       }
+                                                       sprintf(name, 
"Sequencer: %s", imgpreview);
+                                                       
+                                                       special= ICON_SEQUENCE;
+                                               }
+                                                       break;
+                                               
+                                               default:
+                                                       sprintf(name, 
"GP-Data");
+                                                       special= -1;
+                                                       break;
+                                       }
+                               }
+                                       break;
                                case ACTTYPE_GPLAYER: /* gpencil layer */
                                {
                                        bGPDlayer *gpl = (bGPDlayer *)ale->data;
@@ -632,7 +697,8 @@
                                        indent = 0;
                                        special = -1;
                                        expand = -1;
-                                               
+                                       group = 1;
+                                       
                                        if (EDITABLE_GPL(gpl))
                                                protect = ICON_UNLOCKED;
                                        else
@@ -651,8 +717,19 @@
 
                        /* now, start drawing based on this information */
                        /* draw backing strip behind channel name */
-                       if (group == 2) {
-                               /* only for group-channels */
+                       if (group == 3) {
+                               /* only for gp-data channels */
+                               if (ale->owner == curarea) // fixme... 
currently useless
+                                       BIF_ThemeColorShade(TH_GROUP_ACTIVE, 
10);
+                               else
+                                       BIF_ThemeColorShade(TH_GROUP, 20);
+                               uiSetRoundBox((expand == ICON_TRIA_DOWN)? 
(1):(1|8));
+                               gl_round_box(GL_POLYGON, x,  yminc, 
(float)NAMEWIDTH, ymaxc, 8);
+                               
+                               offset = 0;
+                       }
+                       else if (group == 2) {
+                               /* only for action group channels */
                                if (ale->flag & AGRP_ACTIVE)
                                        BIF_ThemeColorShade(TH_GROUP_ACTIVE, 
10);
                                else
@@ -1148,12 +1225,6 @@
                                        G.saction->action= NULL;
                        }
                                break;
-                       case SACTCONT_GPENCIL:
-                       {
-                               /* this searching could be slow (so users 
should pin after this is found) */
-                               G.saction->gpd= 
gpencil_data_getetime(G.curscreen);
-                       }
-                               break;
                }
        }
        

Modified: trunk/blender/source/blender/src/drawgpencil.c
===================================================================
--- trunk/blender/source/blender/src/drawgpencil.c      2008-07-23 11:50:51 UTC 
(rev 15711)
+++ trunk/blender/source/blender/src/drawgpencil.c      2008-07-23 12:27:08 UTC 
(rev 15712)
@@ -94,6 +94,7 @@
 void gp_ui_activelayer_cb (void *gpd, void *gpl)
 {
        gpencil_layer_setactive(gpd, gpl);
+       force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* rename layer and set active */
@@ -104,18 +105,21 @@
        
        BLI_uniquename(&gpd->layers, gpl, "GP_Layer", offsetof(bGPDlayer, 
info[0]), 128);
        gpencil_layer_setactive(gpd, gpl);
+       force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* add a new layer */
 void gp_ui_addlayer_cb (void *gpd, void *dummy)
 {
        gpencil_layer_addnew(gpd);
+       force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* delete active layer */
 void gp_ui_dellayer_cb (void *gpd, void *dummy)
 {
        gpencil_layer_delactive(gpd);
+       force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* delete last stroke of active layer */
@@ -134,22 +138,10 @@
        
        gpencil_layer_setactive(gpd, gpl);
        gpencil_layer_delframe(gpl, gpf);
-}
-
-
-/* set this set of gpencil data for editing in action editor */
-void gp_ui_dotime_cb (void *gpd_arg, void *dummy)
-{
-       bGPdata *gpd= (bGPdata *)gpd_arg;
        
-       /* check if setting or clearing (note: setting was just set...) */
-       if (gpd->flag & GP_DATA_EDITTIME)
-               gpencil_data_setetime(G.curscreen, gpd);
-       else    
-               gpencil_data_setetime(G.curscreen, NULL);
+       force_draw_plus(SPACE_ACTION, 0);
 }
 
-
 /* ------- Drawing Code ------- */
 
 /* draw the controls for a given layer */
@@ -168,35 +160,31 @@
                uiBlockSetEmboss(block, UI_EMBOSSN);
                
                /* rounded header */

@@ 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