raven icon indicating copy to clipboard operation
raven copied to clipboard

Double-click to expand/collapse nested compositions

Open jminor opened this issue 1 year ago • 3 comments

otioview allows the user to double-click on a nested composition (e.g. a Track or Stack within a Track) to drill into it in a separate tab. It would be great if Raven had the same feature and/or a way to expand a nested composition in-place within the main window.

For the first approach, it might be best to implement #64 first and then come back to this.

For the second in-line approach, we can look at how NLEs like Avid Media Composer allow the user to expand/collapse nested compositions within the timeline window.

jminor avatar Sep 28 '24 06:09 jminor

This will be easier to implement after https://github.com/OpenTimelineIO/raven/issues/72 is complete.

jminor avatar Nov 14 '24 07:11 jminor

I wonder if this could work in conjunction with https://github.com/OpenTimelineIO/raven/pull/100 ? That tree view lets you see and navigate the nested composition structure - so maybe adding a control in there to set which level of composition is displayed in the main timeline view?

Right now the main timeline view assumes the top-level structure of Timeline -> Stack -> Track(s) but nested compositions could be any combination of Stack or Track parent with any Composable children. Also many of the other inspectors assume that objects are rooted in a top-level object, for example when displaying a "Global Time" or moving the playhead.

jminor avatar Mar 05 '25 23:03 jminor

A few thoughts, does this want to open in a new tab (after implementing #64) or in the same window as the parent object? Persoanlly I feel nested compositions should be in the same window and new otio files should be in seperate tabs. If it is in the same window one idea might be to replace appState.root with a std::vector<otio::SerializableObjectWithMetadata*>, that way it can be used as a stack and moving up/down a nested layer is simply pushing or popping new roots on/off the stack. It might also be the case that some of the members of AppState need to be wrapped up into a new struct that could also go on the stack. We could then simple call LoadRoot() with the top of the stack.

I guess there would a need to be some visual cue that we are in a nested composition, a label or coloured border or something as well as buttons for moving back up to the previous level. Likewise clips in the parent timeline that have nested compositions inside them should probably be coloured differently (if they aren't already?).

How would we open a nested composition? Double click? Enter key? Right click->Open Nested? OTIOview lets you either double click or hit enter so I guess copy this?

Sorry that was a bit of a brain dump.

ThomasWilshaw avatar Mar 06 '25 15:03 ThomasWilshaw