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

Reply via email to