Update: This appears to happen in Nuke6.3v5 on linux, and not on 6.3v2. I'm sending this as a bug report instead.
2011/11/16 Björn Fredriksson <[email protected]> > 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* > -- 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
