Design Docs Simple Timeline Slider
From PiTiViWiKi
Contents |
The Issue
Currently we are using HScale widgets for seeking sources. There are some usability issues with this that need to be addressed.
- No provision for controlling the granularity of adjustment
- width of cursor is dependent on current theme, and in most cases is too fat for accurate sighting
- no way to display editing points within the widget itself, thus requiring external trimming
In short, we need a custom widget oriented towards source navigation.
Proposed Features
- Zooming scale
- several levels of zoom, down to one frame or up to the entire clip
- Automatic scrolling
- user can override by holding down hotkey (cursor changes to hand, to indicate that dragging will scroll)
- When slider moves out of region, region scrolls to keep up)
- When user drags slider past edge of scale, the slider keeps eeking, and the scale scrolls to catch up
- Directly Show Edit Ponts
- the scale itself should show the start/stop edit points of the clip in an obvious manner
- Jog/Shuttle Seeking
- some provision for doing this with mouse and keyboard (specialized widget, modifier keys, toggle buttons, mouse scroll wheel)
- users with USB input devices (Jog/Shuttle wheels, joysticks, etc) should be able to use those with PiTiVi as well
- Your suggestion here
Use Cases
Simple Seek
User simply wants see what the clip looks like at some arbitrary point in the timeline
- User clicks on timeline
- Cursor moves, and pipeline seeks to cursor location
Changing Zoom Level
The user has opened a new clip and wants to find an arbitrary point within the clip. At this point, the scale is completely zoomed out.
- User drags the slider until they find the approximate editing point.
- User zooms in by clicking the zoom button a few times, until the scale increments are appropriate
- After the first zoom, the scale centers on the slider. The scale remains centered on the slider until the user drags it off center.
- User drags the slider back and forth a few times until they locate the desired point in the clip.
- User makes some editing decision
- User zooms out again, to locate another portion of the clip
- After the first zoom out, the scale re-centers on the slider.
Frame-Accurate Seek
User wants to find a specific frame (say the exact moment when a clapstick closes, or the exact frame at which a two objects collide).
- User moves to lower zoom level to find approximate editing point
- User increases zoom to frame level
- While zooming, the editing region stays centered around cursor
- User drags slider back and forth until they locate the desired frame
- While dragging, the cursor snaps to the frame boundaries of the clip.
Jog/Shuttle Seek
User wants to move from one scene to an arbitrary place in another scene. This could happen when the user is editing a long clip, or when navigating through the timeline itself.
- user engages Jog/Shuttle mode by clicking outer ring of slider
- a popup gtk.HScale() widget appears, like for a volume control. this scale tracks mouse movement, the user doesn't need to hold the button down.
- user moves the mouse right, and playback begins at a slow pace
- user continues to move the mouse to the right, playback speed increases
- seek speed reaches turbo mode
- playback position approaches the desired frame
- user exits jog mode by clicking mouse button
- playback stops
Manual Seek
User is at an arbitrary position in a large clip and wants to find a specific frame that occurs at a considerable distance away in the same clip. Because accuracy is desired, the user would like to avoid having to change the zoom level.
- user locates approximate editing position either with Jog/Shuttle mode or by clicking and dragging
- after exiting Jog/Shuttle mode, user enters manual mode by clicking inner wheel of jog/shuttle widget
- mouse cursor disappears, to indicate that the user's actions will not be constrained by the screen boundaries
- indeterminate progress bar pops up, to indicate that user has entered manual mode
- user moves mouse until desired frame is reached
- while seeking, timeline slider snaps to frame boundaries, and popup scroll indicator moves
- if slider moves beyond visible region of scale, the scale is scrolled to keep the slider in view
- user exits manual mode by clicking mouse button
- if start or end of clip is reached, slider should not move despite continuing user input.
Jog/Shuttle seek with hotkeys
- User should be able to configure keys to act as shortcuts for entering jog/shuttle mode.
- User should be able to exit these modes by hitting another hot key. User should be able to switch directly between Jog/Shuttle and manual mode.
Jog/Shuttle seek with external input device
- User should be able to configure joysticks and specialized jog/shuttle wheels to work with PiTiVi
- When the user moves one these controls, the UI takes the appropriate action, but does not enter special input modes
Design Considerations
- Maybe there should be discrete zoom levels chosen from a menu, rather than simplistic increase/decrease controls
- Other applications might benefit from a source navigation widget, perhaps it could be added to an external library
- Perhaps the Jog/Shuttle ring is too literal, and too archaic. Maybe a simple set of jog/shuttle mode toggles, or hot keys would be better
- maybe there's an even better way to do this that i haven't thought of yet
- how will jog/shuttle work in gstreamer? Can we control playback speed easily? Or will we need to implement this as a series of discrete seek events?


