From cab1f32a5ac4e1d5dac51f4e47f419b2381b33ae Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 15 Dec 2021 10:41:14 +0100 Subject: [PATCH] abstracting get timeline to lib --- openpype/hosts/flame/__init__.py | 4 +-- openpype/hosts/flame/api/lib.py | 26 +++++++++++++---- openpype/hosts/flame/otio/flame_export.py | 29 ++++++------------- .../plugins/publish/collect_test_selection.py | 8 +++-- 4 files changed, 38 insertions(+), 29 deletions(-) diff --git a/openpype/hosts/flame/__init__.py b/openpype/hosts/flame/__init__.py index f04b73baba..da28170679 100644 --- a/openpype/hosts/flame/__init__.py +++ b/openpype/hosts/flame/__init__.py @@ -19,7 +19,7 @@ from .api.lib import ( maintain_current_timeline, get_project_manager, get_current_project, - get_current_timeline, + get_current_sequence, create_bin, ) @@ -88,7 +88,7 @@ __all__ = [ "maintain_current_timeline", "get_project_manager", "get_current_project", - "get_current_timeline", + "get_current_sequence", "create_bin", # menu diff --git a/openpype/hosts/flame/api/lib.py b/openpype/hosts/flame/api/lib.py index 89e020b329..941f6b7d75 100644 --- a/openpype/hosts/flame/api/lib.py +++ b/openpype/hosts/flame/api/lib.py @@ -220,10 +220,10 @@ def maintain_current_timeline(to_timeline, from_timeline=None): timeline2 >>> with maintain_current_timeline(to_timeline): - ... print(get_current_timeline().GetName()) + ... print(get_current_sequence().GetName()) timeline2 - >>> print(get_current_timeline().GetName()) + >>> print(get_current_sequence().GetName()) timeline1 """ # todo: this is still Resolve's implementation @@ -256,9 +256,25 @@ def get_current_project(): return -def get_current_timeline(new=False): - # TODO: get_current_timeline - return +def get_current_sequence(selection): + import flame + + process_timeline = None + + if len(selection) == 1: + if isinstance(selection[0], flame.PySequence): + process_timeline = selection[0] + else: + process_segment = None + for segment in selection: + if isinstance(segment, flame.PySegment): + process_segment = segment + break + track = process_segment.parent + version = track.parent + process_timeline = version.parent + + return process_timeline def create_bin(name, root=None): diff --git a/openpype/hosts/flame/otio/flame_export.py b/openpype/hosts/flame/otio/flame_export.py index 818cd4586f..9fb219a545 100644 --- a/openpype/hosts/flame/otio/flame_export.py +++ b/openpype/hosts/flame/otio/flame_export.py @@ -8,6 +8,7 @@ import ast import logging import opentimelineio as otio from . import utils + import flame from pprint import pformat @@ -420,26 +421,14 @@ def get_segment_attributes(segment, frame_rate): log.info(pformat(clip_data)) -def create_otio_timeline(selection): - process_timeline = None - - if len(selection) == 1: - if isinstance(selection[0], flame.PySequence): - process_timeline = selection[0] - else: - track = selection[0].parent - version = track.parent - process_timeline = version.parent - - if process_timeline: - log.info("___________________timeline__________________") - frame_rate = float(str(process_timeline.frame_rate)[:-4]) - log.info(frame_rate) - for ver in process_timeline.versions: - for tracks in ver.tracks: - for segment in tracks.segments: - # process all segments - get_segment_attributes(segment, frame_rate) +def create_otio_timeline(sequence): + frame_rate = float(str(sequence.frame_rate)[:-4]) + log.info(frame_rate) + for ver in sequence.versions: + for tracks in ver.tracks: + for segment in tracks.segments: + # process all segments + get_segment_attributes(segment, frame_rate) # get current timeline # self.timeline = hiero.ui.activeSequence() diff --git a/openpype/hosts/flame/plugins/publish/collect_test_selection.py b/openpype/hosts/flame/plugins/publish/collect_test_selection.py index dbbbc2f0bd..cefd9ee7cf 100644 --- a/openpype/hosts/flame/plugins/publish/collect_test_selection.py +++ b/openpype/hosts/flame/plugins/publish/collect_test_selection.py @@ -1,7 +1,7 @@ import pyblish.api import openpype.hosts.flame as opflame from openpype.hosts.flame.otio import flame_export as otio_export -import flame +from pprint import pformat reload(otio_export) @pyblish.api.log @@ -15,4 +15,8 @@ class CollectTestSelection(pyblish.api.ContextPlugin): def process(self, context): self.log.info(opflame.selection) - otio_export.create_otio_timeline(opflame.selection) \ No newline at end of file + + sequence = opflame.get_current_sequence(opflame.selection) + otio_timeline = otio_export.create_otio_timeline(sequence) + + self.log.info(pformat(otio_timeline)) \ No newline at end of file