Revision: 22490
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22490
Author: aligorith
Date: 2009-08-16 04:21:43 +0200 (Sun, 16 Aug 2009)
Log Message:
-----------
Animation Editors: Code Cleanups (for Channel Lists) Part 2
Now the mute/protect/expand/etc. toggles are drawn using UI widgets. This means
that special event handling code to determine when they were clicked on is no
longer needed, and also means that there can now be tooltips for these items
too.
Also, added visibility toggles for ID-block expanders, which will cause all the
F-Curves in the linked datablock to not get drawn. The backend filtering code
to make this work will come later...
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_edit.c
branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
branches/blender2.5/blender/source/blender/editors/space_action/action_draw.c
branches/blender2.5/blender/source/blender/editors/space_action/action_intern.h
branches/blender2.5/blender/source/blender/editors/space_action/space_action.c
branches/blender2.5/blender/source/blender/editors/space_graph/graph_draw.c
branches/blender2.5/blender/source/blender/editors/space_graph/graph_intern.h
branches/blender2.5/blender/source/blender/editors/space_graph/space_graph.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_channels.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_draw.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_edit.c
branches/blender2.5/blender/source/blender/editors/space_nla/nla_intern.h
branches/blender2.5/blender/source/blender/editors/space_nla/space_nla.c
Modified:
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
===================================================================
---
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
2009-08-16 01:25:53 UTC (rev 22489)
+++
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
2009-08-16 02:21:43 UTC (rev 22490)
@@ -287,6 +287,10 @@
case ACHANNEL_SETTING_EXPAND:
return 1;
+ /* visible - only available in Graph Editor */
+ case ACHANNEL_SETTING_VISIBLE:
+ return ((ac) && (ac->spacetype == SPACE_IPO));
+
default:
return 0;
}
@@ -345,6 +349,10 @@
/* muted only in NLA */
case ACHANNEL_SETTING_MUTE:
return ((ac) && (ac->spacetype == SPACE_NLA));
+
+ /* visible only in Graph Editor */
+ case ACHANNEL_SETTING_VISIBLE:
+ return ((ac) && (ac->spacetype == SPACE_IPO));
/* only select and expand supported otherwise */
case ACHANNEL_SETTING_SELECT:
@@ -373,6 +381,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
+
default: /* unsupported */
return 0;
}
@@ -394,6 +406,7 @@
GET_ACF_FLAG_PTR(scene->flag);
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (scene->adt)
GET_ACF_FLAG_PTR(scene->adt->flag)
else
@@ -451,6 +464,10 @@
/* muted only in NLA */
case ACHANNEL_SETTING_MUTE:
return ((ac) && (ac->spacetype == SPACE_NLA));
+
+ /* visible only in Graph Editor */
+ case ACHANNEL_SETTING_VISIBLE:
+ return ((ac) && (ac->spacetype == SPACE_IPO));
/* only select and expand supported otherwise */
case ACHANNEL_SETTING_SELECT:
@@ -479,6 +496,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
+
default: /* unsupported */
return 0;
}
@@ -501,6 +522,7 @@
GET_ACF_FLAG_PTR(ob->nlaflag); // xxx
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (ob->adt)
GET_ACF_FLAG_PTR(ob->adt->flag)
else
@@ -560,8 +582,14 @@
/* check if some setting exists for this channel */
static short acf_group_setting_valid(bAnimContext *ac, bAnimListElem *ale, int
setting)
{
- /* for now, all settings are supported */
- return 1;
+ /* for now, all settings are supported, though some are only
conditionally */
+ switch (setting) {
+ case ACHANNEL_SETTING_VISIBLE: /* Only available in Graph
Editor */
+ return ((ac->sa) && (ac->sa->spacetype==SPACE_IPO));
+
+ default: /* always supported */
+ return 1;
+ }
}
/* get the appropriate flag(s) for the setting when it is valid */
@@ -641,6 +669,9 @@
return 1;
else
return 0; // NOTE: in this special case, we
need to draw ICON_ZOOMOUT
+
+ case ACHANNEL_SETTING_VISIBLE: /* Only available in Graph
Editor */
+ return ((ac->sa) && (ac->sa->spacetype==SPACE_IPO));
/* always available */
default:
@@ -962,6 +993,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -981,10 +1016,11 @@
GET_ACF_FLAG_PTR(ma->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (ma->adt)
GET_ACF_FLAG_PTR(ma->adt->flag)
else
- return NULL;
+ return NULL;
default: /* unsupported */
return NULL;
@@ -1026,6 +1062,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1045,10 +1085,11 @@
GET_ACF_FLAG_PTR(la->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (la->adt)
GET_ACF_FLAG_PTR(la->adt->flag)
else
- return NULL;
+ return NULL;
default: /* unsupported */
return NULL;
@@ -1090,6 +1131,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1109,6 +1154,7 @@
GET_ACF_FLAG_PTR(ca->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (ca->adt)
GET_ACF_FLAG_PTR(ca->adt->flag)
else
@@ -1154,6 +1200,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1173,6 +1223,7 @@
GET_ACF_FLAG_PTR(cu->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (cu->adt)
GET_ACF_FLAG_PTR(cu->adt->flag)
else
@@ -1218,6 +1269,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1237,6 +1292,7 @@
GET_ACF_FLAG_PTR(key->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (key->adt)
GET_ACF_FLAG_PTR(key->adt->flag)
else
@@ -1282,6 +1338,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1301,6 +1361,7 @@
GET_ACF_FLAG_PTR(wo->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (wo->adt)
GET_ACF_FLAG_PTR(wo->adt->flag)
else
@@ -1346,6 +1407,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1365,6 +1430,7 @@
GET_ACF_FLAG_PTR(part->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (part->adt)
GET_ACF_FLAG_PTR(part->adt->flag)
else
@@ -1410,6 +1476,10 @@
case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */
return ADT_NLA_EVAL_OFF;
+
+ case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph
Editor) */
+ *neg= 1;
+ return ADT_CURVES_NOT_VISIBLE;
default: /* unsupported */
return 0;
@@ -1429,6 +1499,7 @@
GET_ACF_FLAG_PTR(mb->flag);
case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */
+ case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor
only) */
if (mb->adt)
GET_ACF_FLAG_PTR(mb->adt->flag)
else
@@ -1805,7 +1876,7 @@
{
bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale);
View2D *v2d= &ac->ar->v2d;
- short selected, offset, enabled;
+ short selected, offset;
float y, ymid, ytext;
/* sanity checks - don't draw anything */
@@ -1815,8 +1886,6 @@
/* get initial offset */
if (acf->get_offset)
offset= acf->get_offset(ac, ale);
- else if (acf->get_indent_level)
- offset= acf->get_indent_level(ac, ale) * INDENT_STEP_SIZE;
else
offset= 0;
@@ -1844,9 +1913,7 @@
/* step 2) draw expand widget ....................................... */
if (acf->has_setting(ac, ale, ACHANNEL_SETTING_EXPAND)) {
- enabled= ANIM_channel_setting_get(ac, ale,
ACHANNEL_SETTING_EXPAND);
-
- UI_icon_draw(offset, ymid, ((enabled)? ICON_TRIA_DOWN :
ICON_TRIA_RIGHT));
+ /* just skip - drawn as widget now */
offset += ICON_WIDTH;
}
@@ -1862,8 +1929,6 @@
*/
if (ac->sa) {
if ((ac->spacetype == SPACE_IPO) && acf->has_setting(ac, ale,
ACHANNEL_SETTING_VISIBLE)) {
- enabled= ANIM_channel_setting_get(ac, ale,
ACHANNEL_SETTING_VISIBLE);
-
/* for F-Curves, draw color-preview of curve behind
checkbox */
if (ale->type == ANIMTYPE_FCURVE) {
FCurve *fcu= (FCurve *)ale->data;
@@ -1880,16 +1945,11 @@
glRectf(offset, yminc, offset+17, ymaxc);
}
- /* finally the icon itself */
- UI_icon_draw(offset, ymid, ((enabled)?
ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT));
+ /* icon is drawn as widget now... */
offset += ICON_WIDTH;
}
else if ((ac->spacetype == SPACE_NLA) && acf->has_setting(ac,
ale, ACHANNEL_SETTING_SOLO)) {
- /* simply draw glowing dot in NLA for whether the track
is enabled or not... */
- // NOTE: assumed to be for NLA track only for now...
- enabled= ANIM_channel_setting_get(ac, ale,
ACHANNEL_SETTING_SOLO);
-
- UI_icon_draw(offset, ymid, ((enabled)?
ICON_LAYER_ACTIVE : ICON_LAYER_USED));
+ /* just skip - drawn as widget now */
offset += ICON_WIDTH;
}
}
@@ -1927,21 +1987,198 @@
/* protect... */
if (acf->has_setting(ac, ale, ACHANNEL_SETTING_PROTECT)) {
- enabled= ANIM_channel_setting_get(ac, ale,
ACHANNEL_SETTING_PROTECT);
-
+ /* just skip - drawn as widget now */
offset += ICON_WIDTH;
- UI_icon_draw(v2d->cur.xmax-(float)offset, ymid,
((enabled)? ICON_LOCKED : ICON_UNLOCKED));
}
/* mute... */
if (acf->has_setting(ac, ale, ACHANNEL_SETTING_MUTE)) {
- enabled= ANIM_channel_setting_get(ac, ale,
ACHANNEL_SETTING_MUTE);
-
- offset += ICON_WIDTH;
- UI_icon_draw(v2d->cur.xmax-(float)offset, ymid,
((enabled)? ICON_MUTE_IPO_ON : ICON_MUTE_IPO_OFF));
+ /* just skip - drawn as widget now */
+ offset += ICON_WIDTH;
}
glDisable(GL_BLEND); /* End of blending with background */
}
}
@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs