Clarification of Linking and Grouping
@brandon_lewis
Submitted by Brandon Lewis Assigned to Brandon Lewis @brandon_lewis
Description
PiTiVi's concept of linking and grouping is a bit counter-intuitive. Currently we support:
Linking currently means:
- syncing start times of distinct timeline objects (linking)
While grouping currently means:
- combining / decomposing timeline objects from / into separate track objects
A proposed (but unimplemented) extension of the concept of grouping is
- recursive composition of timelines
Idea: Replacing existing notion of linking with the current sense of "grouping". "Linking" becomes "reparenting of track objects", while "Grouping" becomes "recursive combination of groups of timeline objects into sub-timelines.
The new notion of linking would involve the following: When linking multiple objects from the same factory, this just reduces combining them all into a timeline object with their native factory. Linking linked clips merges all the TimelineObjects together into a single flat object. When linking track objects created from different factories, a special TimelineObject designed to handle track objects from multiple factories would be used which would keep start times in relative sync but would allow free trimming and positioning of separate track objects.
Whatever the case, unlinking simply becomes separating specified TrackObjects from their parent TimelineObject object and adding them to the timeline as children of a new TimelineObject created with their native factory.
The new notion of grouping would involve the following: A sequence of TimelineObjects are used to define a new TimelineSourceFactory, an instance of which is then added to the project library (enabling cloning of the sub-sequence). The original timeline objects are then removed from the timeline, while a new TimelineObject, created using the TimelineSourceFactory, is inserted into the timeline. Ungrouping should replace this sub-timeline with its component TimelineObjects.
Using this scheme it should be logically possible to nest Timelines infinitely. Creating groups of groups should preserve the hierarchical ordering as it would in a vector drawing application. With the current UI the effect of grouping several distinct timeline objects together should be that they appear as one object, occupying one layer in each track, regardless of whether the original objects spanned multiple layers. This is because these objects have been replaced a single track object in each track, representing the output of a gnlcomposition behind the underlying timeline. Changes to the group will involve ungrouping and regrouping for the time being. Operations on this sub-sequence should now apply to the sequence as a whole, including splitting, trimming, and effects.
If we did this, we would only need to implement Linking and Unlinking when we add effects processing to PiTiVi.
Imported from https://bugzilla.gnome.org/show_bug.cgi?id=583266