Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py29
-rw-r--r--release/scripts/startup/bl_ui/space_time.py25
-rw-r--r--source/blender/editors/animation/anim_filter.c20
-rw-r--r--source/blender/editors/include/ED_anim_api.h3
-rw-r--r--source/blender/makesdna/DNA_action_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_space.c1
6 files changed, 71 insertions, 9 deletions
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index 371ab088190..1b8582ba8f2 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Header, Menu
+from .space_time import *
#######################################
@@ -114,14 +115,35 @@ class DOPESHEET_HT_header(Header):
layout = self.layout
st = context.space_data
- toolsettings = context.tool_settings
row = layout.row(align=True)
row.template_header()
+
+ # XXX: perhaps our mode menu can be retired eventually when we get editor submodes in the main menu?
+ layout.prop(st, "mode", text="")
- DOPESHEET_MT_editor_menus.draw_collapsible(context, layout)
+ if st.mode == 'TIMELINE':
+ TIME_MT_editor_menus.draw_collapsible(context, layout)
+ TIME_HT_editor_buttons.draw_header(context, layout)
+ else:
+ DOPESHEET_MT_editor_menus.draw_collapsible(context, layout)
+ DOPESHEET_HT_editor_buttons.draw_header(context, layout)
- layout.prop(st, "mode", text="")
+
+# Header for "normal" dopesheet editor modes (e.g. Dope Sheet, Action, Shape Keys, etc.)
+# XXX: Temporary, until we have editor submodes in the actual editors menu
+class DOPESHEET_HT_editor_buttons(Header):
+ bl_idname = "DOPESHEET_HT_editor_buttons"
+ bl_space_type = 'DOPESHEET_EDITOR'
+ bl_label = ""
+
+ def draw(self, context):
+ pass
+
+ @staticmethod
+ def draw_header(context, layout):
+ st = context.space_data
+ toolsettings = context.tool_settings
if st.mode in {'ACTION', 'SHAPEKEY'}:
row = layout.row(align=True)
@@ -451,6 +473,7 @@ class DOPESHEET_MT_delete(Menu):
classes = (
DOPESHEET_HT_header,
+ DOPESHEET_HT_editor_buttons,
DOPESHEET_MT_editor_menus,
DOPESHEET_MT_view,
DOPESHEET_MT_select,
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index 9026a93aa99..669d146cb91 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -27,15 +27,29 @@ class TIME_HT_header(Header):
def draw(self, context):
layout = self.layout
- scene = context.scene
- toolsettings = context.tool_settings
- screen = context.screen
- userprefs = context.user_preferences
-
row = layout.row(align=True)
row.template_header()
TIME_MT_editor_menus.draw_collapsible(context, layout)
+ TIME_HT_editor_buttons.draw_header(context, layout)
+
+
+# Header buttons for actual timeline editor header
+# XXX: Temporary, until we have editor submodes in the actual editors menu
+class TIME_HT_editor_buttons(Header):
+ bl_idname = "TIME_HT_editor_buttons"
+ bl_space_type = 'TIMELINE' # XXX: Change this to 'DOPESHEET_EDITOR'
+ bl_label = ""
+
+ def draw(self, context):
+ pass
+
+ @staticmethod
+ def draw_header(context, layout):
+ scene = context.scene
+ toolsettings = context.tool_settings
+ screen = context.screen
+ userprefs = context.user_preferences
row = layout.row(align=True)
row.prop(scene, "use_preview_range", text="", toggle=True)
@@ -272,6 +286,7 @@ def marker_menu_generic(layout):
classes = (
TIME_HT_header,
+ TIME_HT_editor_buttons,
TIME_MT_editor_menus,
TIME_MT_marker,
TIME_MT_view,
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index 2a5c01fc671..dec41248053 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -230,6 +230,7 @@ static bool actedit_get_context(bAnimContext *ac, SpaceAction *saction)
ac->mode = saction->mode;
return true;
}
+
case SACTCONT_DOPESHEET: /* DopeSheet */
/* update scene-pointer (no need to check for pinning yet, as not implemented) */
saction->ads.source = (ID *)ac->scene;
@@ -240,6 +241,16 @@ static bool actedit_get_context(bAnimContext *ac, SpaceAction *saction)
ac->mode = saction->mode;
return true;
+ case SACTCONT_TIMELINE: /* Timeline */
+ /* update scene-pointer (no need to check for pinning yet, as not implemented) */
+ saction->ads.source = (ID *)ac->scene;
+
+ ac->datatype = ANIMCONT_TIMELINE;
+ ac->data = &saction->ads;
+
+ ac->mode = saction->mode;
+ return true;
+
default: /* unhandled yet */
ac->datatype = ANIMCONT_NONE;
ac->data = NULL;
@@ -3244,6 +3255,15 @@ size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, eAnimFilter_F
}
+ /* Timeline Mode - Basically the same as dopesheet, except we only have the summary for now */
+ case ANIMCONT_TIMELINE:
+ {
+ /* the DopeSheet editor is the primary place where the DopeSheet summaries are useful */
+ if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
+ items += animdata_filter_dopesheet(ac, anim_data, data, filter_mode);
+ break;
+ }
+
/* Special/Internal Use */
case ANIMCONT_CHANNEL: /* animation channel */
{
diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h
index db141a2ee29..edcdb868ea4 100644
--- a/source/blender/editors/include/ED_anim_api.h
+++ b/source/blender/editors/include/ED_anim_api.h
@@ -102,7 +102,8 @@ typedef enum eAnimCont_Types {
ANIMCONT_DRIVERS = 6, /* drivers (bDopesheet) */
ANIMCONT_NLA = 7, /* nla (bDopesheet) */
ANIMCONT_CHANNEL = 8, /* animation channel (bAnimListElem) */
- ANIMCONT_MASK = 9 /* mask dopesheet */
+ ANIMCONT_MASK = 9, /* mask dopesheet */
+ ANIMCONT_TIMELINE = 10, /* "timeline" editor (bDopeSheet) */
} eAnimCont_Types;
/* --------------- Channels -------------------- */
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h
index e1306253df8..f08199ad957 100644
--- a/source/blender/makesdna/DNA_action_types.h
+++ b/source/blender/makesdna/DNA_action_types.h
@@ -724,6 +724,8 @@ typedef enum eAnimEdit_Context {
SACTCONT_MASK = 4,
/* cache file */
SACTCONT_CACHEFILE = 5,
+ /* timeline - replacement for the standalone "timeline editor" */
+ SACTCONT_TIMELINE = 6,
} eAnimEdit_Context;
/* SpaceAction AutoSnap Settings (also used by other Animation Editors) */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 92352a27e22..7ac6ed35068 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -3180,6 +3180,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
/* XXX: action-editor is currently for object-level only actions, so show that using object-icon hint */
static EnumPropertyItem mode_items[] = {
+ {SACTCONT_TIMELINE, "TIMELINE", ICON_TIME, "Timeline", "Timeline and playback controls"},
{SACTCONT_DOPESHEET, "DOPESHEET", ICON_OOPS, "Dope Sheet", "Edit all keyframes in scene"},
{SACTCONT_ACTION, "ACTION", ICON_OBJECT_DATA, "Action Editor", "Edit keyframes in active object's Object-level action"},
{SACTCONT_SHAPEKEY, "SHAPEKEY", ICON_SHAPEKEY_DATA, "Shape Key Editor", "Edit keyframes in active object's Shape Keys action"},