Hi all,
I've got a gizmo that has an internal write node. And to limit the options
available I elected not to link in the file types from the underlying Write
node, instead I use python callbacks to set these according to whatever the
user sets with a pulldown-knob. The callback hides and unhides some options
for the formats based on that pulldown choice. And since the same knobs are
not available with all formats (e.g. 'datatype') I only set them on the
Write node if the correct file format has been set.
The problem is, if I switch between the sgi or tga format and exr a few
times, and then change datatype Nuke crashes without warning. My first
guess is if this is some race condition between me trying to set up the
knob-values while the c++ plugin for the file format is not yet loaded, but
that seems to not be the case.
Any ideas?
Simplified example to reproduce:
Gizmo called testGizmo:
------------------
#!
/Applications/Nuke6.1v2/NukeX6.1v2.app/../Nuke6.1v2.app/Contents/MacOS/Nuke6.1v2
-nx
version 6.1 v2
Gizmo {
addUserKnob {20 Test}
addUserKnob {41 channels T Write1.channels}
addUserKnob {41 assetColorspace l "Colorspace" T Write1.colorspace }
addUserKnob {4 fileTypes l "File type" M {dpx exr jpeg sgi targa tiff}}
addUserKnob {4 exr_bytes l "Data type" M {"16-bit half" "32-bit float"} }
}
Input {
inputs 0
name Input1
xpos 16
ypos -89
}
Write {
channels rgba
file test.####.exr
file_type exr
checkHashOnRead false
version 1
name Write1
xpos 16
ypos -17
}
Output {
name Output1
xpos 16
ypos 51
}
end_group
-------------------
callback (in menu.py):
------------------------
def testGizmoChanged():
node = nuke.thisNode()
node.node('Write1').knob('file_type').setValue(node.knob('fileTypes').value())
if node.node('Write1').knob('file_type').value() == "exr":
node.knob('exr_bytes').setVisible(True)
node.node('Write1').knob('datatype').setValue(node.knob('exr_bytes').value())
else:
node.knob('exr_bytes').setVisible(False)
nuke.addKnobChanged(testGizmoChanged, nodeClass='testGizmo')
-----------------------
// Björn
--
Björn Fredriksson | Head of 2D | Swiss International AB
Sankt Eriksgatan 48 B, 112 34 Stockholm, Sweden
ph +46 8 662 24 60, *NEW CELL* *+46* *721 666 011*
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python