fusion: adding reset resolution

(cherry picked from commit 209511ee3d938e21c20cff03edcdbbde4a4791f0)
This commit is contained in:
Jakub Jezek 2022-02-17 12:30:10 +01:00 committed by Roy Nieterau
parent e8d6f1d9e9
commit e72c768068
3 changed files with 45 additions and 11 deletions

View file

@ -23,7 +23,8 @@ from .workio import (
from .lib import (
maintained_selection,
get_additional_data,
update_frame_range
update_frame_range,
set_framerange
)
from .menu import launch_openpype_menu
@ -53,6 +54,7 @@ __all__ = [
"maintained_selection",
"get_additional_data",
"update_frame_range",
"set_framerange",
# menu
"launch_openpype_menu",

View file

@ -8,12 +8,14 @@ from Qt import QtGui
import avalon.api
from avalon import io
from .pipeline import get_current_comp, comp_lock_and_undo_chunk
from openpype.api import (
get_asset
)
self = sys.modules[__name__]
self._project = None
def update_frame_range(start, end, comp=None, set_render_range=True):
def update_frame_range(start, end, comp=None, set_render_range=True, **kwargs):
"""Set Fusion comp's start and end frame range
Args:
@ -22,6 +24,7 @@ def update_frame_range(start, end, comp=None, set_render_range=True):
comp (object, Optional): comp object from fusion
set_render_range (bool, Optional): When True this will also set the
composition's render start and end frame.
kwargs (dict): additional kwargs
Returns:
None
@ -36,6 +39,16 @@ def update_frame_range(start, end, comp=None, set_render_range=True):
"COMPN_GlobalEnd": end
}
# exclude handles if any found in kwargs
if kwargs.get("handle_start"):
handle_start = kwargs.get("handle_start")
attrs["COMPN_GlobalStart"] = int(start - handle_start)
if kwargs.get("handle_end"):
handle_end = kwargs.get("handle_end")
attrs["COMPN_GlobalEnd"] = int(end + handle_end)
# set frame range
if set_render_range:
attrs.update({
"COMPN_RenderStart": start,
@ -46,6 +59,18 @@ def update_frame_range(start, end, comp=None, set_render_range=True):
comp.SetAttrs(attrs)
def set_framerange():
asset_doc = get_asset()
start = asset_doc["data"]["frameStart"]
end = asset_doc["data"]["frameEnd"]
data = {
"handle_start": asset_doc["data"]["handleStart"],
"handle_end": asset_doc["data"]["handleEnd"]
}
update_frame_range(start, end, set_render_range=True, **data)
def get_additional_data(container):
"""Get Fusion related data for the container

View file

@ -1,4 +1,3 @@
import os
import sys
from Qt import QtWidgets, QtCore
@ -11,7 +10,9 @@ from openpype.hosts.fusion.scripts import (
set_rendermode,
duplicate_with_inputs
)
from openpype.hosts.fusion.api import (
set_framerange
)
class Spacer(QtWidgets.QWidget):
def __init__(self, height, *args, **kwargs):
@ -61,12 +62,11 @@ class OpenPypeMenu(QtWidgets.QWidget):
manager_btn = QtWidgets.QPushButton("Manage...", self)
libload_btn = QtWidgets.QPushButton("Library...", self)
rendermode_btn = QtWidgets.QPushButton("Set render mode...", self)
set_framerange_btn = QtWidgets.QPushButton("Set Frame Range", self)
set_resolution_btn = QtWidgets.QPushButton("Set Resolution", self)
duplicate_with_inputs_btn = QtWidgets.QPushButton(
"Duplicate with input connections", self
)
reset_resolution_btn = QtWidgets.QPushButton(
"Reset Resolution from project", self
)
layout = QtWidgets.QVBoxLayout(self)
layout.setContentsMargins(10, 20, 10, 20)
@ -90,12 +90,13 @@ class OpenPypeMenu(QtWidgets.QWidget):
layout.addWidget(Spacer(15, self))
layout.addWidget(set_framerange_btn)
layout.addWidget(set_resolution_btn)
layout.addWidget(rendermode_btn)
layout.addWidget(Spacer(15, self))
layout.addWidget(duplicate_with_inputs_btn)
layout.addWidget(reset_resolution_btn)
self.setLayout(layout)
@ -111,7 +112,8 @@ class OpenPypeMenu(QtWidgets.QWidget):
rendermode_btn.clicked.connect(self.on_rendernode_clicked)
duplicate_with_inputs_btn.clicked.connect(
self.on_duplicate_with_inputs_clicked)
reset_resolution_btn.clicked.connect(self.on_reset_resolution_clicked)
set_resolution_btn.clicked.connect(self.on_set_resolution_clicked)
set_framerange_btn.clicked.connect(self.on_set_framerange_clicked)
self._callbacks = []
self.register_callback("taskChanged", self.on_task_changed)
@ -171,9 +173,14 @@ class OpenPypeMenu(QtWidgets.QWidget):
duplicate_with_inputs.duplicate_with_input_connections()
print("Clicked Set Colorspace")
def on_reset_resolution_clicked(self):
def on_set_resolution_clicked(self):
print("Clicked Reset Resolution")
def on_set_framerange_clicked(self):
print("Clicked Reset Framerange")
set_framerange()
def launch_openpype_menu():
app = QtWidgets.QApplication(sys.argv)