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

Reply via email to