From f59f7bb3985458fa557be3d303fc548522d39ea8 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 30 Nov 2020 12:02:07 +0100 Subject: [PATCH] feat(resolve): refactory Creator for clips --- pype/hosts/resolve/lib.py | 27 ++----------------- pype/hosts/resolve/menu_style.qss | 11 ++++++++ pype/hosts/resolve/plugin.py | 24 +++++++++++------ .../resolve/create/create_shot_clip_new.py | 22 ++++++--------- 4 files changed, 37 insertions(+), 47 deletions(-) diff --git a/pype/hosts/resolve/lib.py b/pype/hosts/resolve/lib.py index 4052fa74fd..74f105a130 100644 --- a/pype/hosts/resolve/lib.py +++ b/pype/hosts/resolve/lib.py @@ -303,7 +303,7 @@ def get_name_with_data(clip_data, presets): }) -def create_compound_clip(clip_data, folder, rename=False, **kwargs): +def create_compound_clip(clip_data, name, folder): """ Convert timeline object into nested timeline object @@ -311,8 +311,7 @@ def create_compound_clip(clip_data, folder, rename=False, **kwargs): clip_data (dict): timeline item object packed into dict with project, timeline (sequence) folder (resolve.MediaPool.Folder): media pool folder object, - rename (bool)[optional]: renaming in sequence or not - kwargs (optional): additional data needed for rename=True (presets) + name (str): name for compound clip Returns: resolve.MediaPoolItem: media pool item with compound clip timeline(cct) @@ -324,34 +323,12 @@ def create_compound_clip(clip_data, folder, rename=False, **kwargs): # get details of objects clip_item = clip["item"] - track = clip_data["track"] mp = project.GetMediaPool() # get clip attributes clip_attributes = get_clip_attributes(clip_item) - print(f"_ clip_attributes: {pformat(clip_attributes)}") - if rename: - presets = kwargs.get("presets") - if presets: - name, data = get_name_with_data(clip_data, presets) - # add hirarchy data to clip attributes - clip_attributes.update(data) - else: - name = "{:0>3}_{:0>4}".format( - int(track["index"]), int(clip["index"])) - else: - # build name - clip_name_split = clip_item.GetName().split(".") - name = "_".join([ - track["name"], - str(track["index"]), - clip_name_split[0], - str(clip["index"])] - ) - - # get metadata mp_item = clip_item.GetMediaPoolItem() mp_props = mp_item.GetClipProperty() diff --git a/pype/hosts/resolve/menu_style.qss b/pype/hosts/resolve/menu_style.qss index ea11c4ca2e..5a1d39fe79 100644 --- a/pype/hosts/resolve/menu_style.qss +++ b/pype/hosts/resolve/menu_style.qss @@ -4,6 +4,17 @@ QWidget { font-size: 13px; } +QComboBox { + border: 1px solid #090909; + background-color: #201f1f; + color: #ffffff; +} + +QComboBox QAbstractItemView +{ + color: white; +} + QPushButton { border: 1px solid #090909; background-color: #201f1f; diff --git a/pype/hosts/resolve/plugin.py b/pype/hosts/resolve/plugin.py index b465d77950..c816735be2 100644 --- a/pype/hosts/resolve/plugin.py +++ b/pype/hosts/resolve/plugin.py @@ -390,23 +390,24 @@ class PublishClip: vertical_sync_default = False driving_layer_default = "" - def __init__(self, cls, track_item, **kwargs): + def __init__(self, cls, track_item_data, **kwargs): # populate input cls attribute onto self.[attr] self.__dict__.update(cls.__dict__) # get main parent objects - self.track_item = track_item["clip"]["item"] - sequence_name = track_item["sequence"].GetName() + self.track_item_data = track_item_data + self.track_item = track_item_data["clip"]["item"] + sequence_name = track_item_data["sequence"].GetName() self.sequence_name = str(sequence_name).replace(" ", "_") # track item (clip) main attributes self.ti_name = self.track_item.GetName() - self.ti_index = int(track_item["clip"]["index"]) + self.ti_index = int(track_item_data["clip"]["index"]) # get track name and index - track_name = track_item["track"]["name"] + track_name = track_item_data["track"]["name"] self.track_name = str(track_name).replace(" ", "_") - self.track_index = int(track_item["track"]["index"]) + self.track_index = int(track_item_data["track"]["index"]) # adding tag.family into tag if kwargs.get("avalon"): @@ -415,6 +416,9 @@ class PublishClip: # adding ui inputs if any self.ui_inputs = kwargs.get("ui_inputs", {}) + # adding media pool folder if any + self.mp_folder = kwargs.get("mp_folder") + # populate default data before we get other attributes self._populate_track_item_default_data() @@ -438,12 +442,16 @@ class PublishClip: new_name = self.tag_data.pop("newClipName") if self.rename: - # rename track item - self.track_item.setName(new_name) self.tag_data["asset"] = new_name else: self.tag_data["asset"] = self.ti_name + self.track_item = lib.create_compound_clip( + self.track_item_data, + self.tag_data["asset"], + self.mp_folder + ) + # create pype tag on track_item and add data lib.imprint(self.track_item, self.tag_data) diff --git a/pype/plugins/resolve/create/create_shot_clip_new.py b/pype/plugins/resolve/create/create_shot_clip_new.py index 5d6c0a2e79..a94e30ed73 100644 --- a/pype/plugins/resolve/create/create_shot_clip_new.py +++ b/pype/plugins/resolve/create/create_shot_clip_new.py @@ -240,11 +240,6 @@ class CreateShotClipNew(resolve.Creator): sorted_selected_track_items.extend(unsorted_selected_track_items) - kwargs = { - "ui_inputs": widget.result, - "avalon": self.data - } - # sequence attrs sq_frame_start = self.sequence.GetStartFrame() sq_markers = self.sequence.GetMarkers() @@ -252,6 +247,14 @@ class CreateShotClipNew(resolve.Creator): # create media bin for compound clips (trackItems) mp_folder = resolve.create_current_sequence_media_bin(self.sequence) + kwargs = { + "ui_inputs": widget.result, + "avalon": self.data, + "mp_folder": mp_folder, + "sq_frame_start": sq_frame_start, + "sq_markers": sq_markers + } + for i, track_item_data in enumerate(sorted_selected_track_items): self.rename_index = i @@ -260,12 +263,3 @@ class CreateShotClipNew(resolve.Creator): # clear color after it is done track_item_data["clip"]["item"].ClearClipColor() - - # convert track item to timeline media pool item - resolve.create_compound_clip( - track_item_data, - mp_folder, - rename=True, - **dict( - {"presets": widget.result}) - )