refactor the script to be frame number rather then frame range

This commit is contained in:
Jakub Jezek 2023-06-01 16:14:29 +02:00
parent ab0e8ac1b1
commit abc266e9e5
No known key found for this signature in database
GPG key ID: 730D7C02726179A7
3 changed files with 50 additions and 52 deletions

View file

@ -0,0 +1,47 @@
""" OpenPype custom script for resetting read nodes start frame values """
import nuke
import nukescripts
class FrameSettingsPanel(nukescripts.PythonPanel):
""" Frame Settings Panel """
def __init__(self):
nukescripts.PythonPanel.__init__(self, "Set Frame Start (Read Node)")
# create knobs
self.frame = nuke.Int_Knob(
'frame', 'Frame Number')
self.selected = nuke.Boolean_Knob("selection")
# add knobs to panel
self.addKnob(self.selected)
self.addKnob(self.frame)
# set values
self.selected.setValue(False)
self.frame.setValue(nuke.root().firstFrame())
def process(self):
""" Process the panel values. """
# get values
frame = self.frame.value()
if self.selected.value():
# selected nodes processing
if not nuke.selectedNodes():
return
for rn_ in nuke.selectedNodes():
if rn_.Class() != "Read":
continue
rn_["frame_mode"].setValue("start_at")
rn_["frame"].setValue(str(frame))
else:
# all nodes processing
for rn_ in nuke.allNodes(filter="Read"):
rn_["frame_mode"].setValue("start_at")
rn_["frame"].setValue(str(frame))
def main():
p_ = FrameSettingsPanel()
if p_.showModalDialog():
print(p_.process())

View file

@ -1,49 +0,0 @@
import nuke
import nukescripts
import re
class FrameSettingsPanel(nukescripts.PythonPanel):
def __init__(self, node):
nukescripts.PythonPanel.__init__(self, 'Frame Range')
self.read_node = node
# CREATE KNOBS
self.range = nuke.String_Knob('fRange', 'Frame Range', '%s-%s' %
(nuke.root().firstFrame(),
nuke.root().lastFrame()))
self.selected = nuke.Boolean_Knob("selection")
self.info = nuke.Help_Knob("Instruction")
# ADD KNOBS
self.addKnob(self.selected)
self.addKnob(self.range)
self.addKnob(self.info)
self.selected.setValue(False)
def knobChanged(self, knob):
frame_range = self.range.value()
pattern = r"^(?P<start>-?[0-9]+)(?:(?:-+)(?P<end>-?[0-9]+))?$"
match = re.match(pattern, frame_range)
frame_start = int(match.group("start"))
frame_end = int(match.group("end"))
if not self.read_node:
return
for r in self.read_node:
if self.onchecked():
if not nuke.selectedNodes():
return
if r in nuke.selectedNodes():
r["frame_mode"].setValue("start_at")
r["frame"].setValue(frame_range)
r["first"].setValue(frame_start)
r["last"].setValue(frame_end)
else:
r["frame_mode"].setValue("start_at")
r["frame"].setValue(frame_range)
r["first"].setValue(frame_start)
r["last"].setValue(frame_end)
def onchecked(self):
if self.selected.value():
return True
else:
return False

View file

@ -226,9 +226,9 @@
{
"type": "action",
"sourcetype": "python",
"title": "Set Frame Range (Read Node)",
"command": "import openpype.hosts.nuke.startup.ops_frame_setting_for_read as popup;import nuke;popup.FrameSettingsPanel(nuke.allNodes('Read')).showModalDialog();",
"tooltip": "Set Frame Range for Read Node(s)"
"title": "Set Frame Start (Read Node)",
"command": "from openpype.hosts.nuke.startup.frame_setting_for_read_nodes import main;main();",
"tooltip": "Set frame start for read node(s)"
}
]
},