Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ Fixes
[^1]: Improvement to a feature introduced in `1.7.0.0a1`, so should be omitted from final `1.7.0.0` release notes.
[^2]: Included in `1.6.x.x`, so should be omitted from final `1.7.0.0` release notes.

Breaking Changes
----------------

- PlugValueWidgetTest : Removed `waitForUpdate()` method. Use `WidgetUpdateHandler` instead.

1.7.0.0a9 (relative to 1.7.0.0a8)
=========

Expand Down
63 changes: 34 additions & 29 deletions python/GafferUITest/BoolPlugValueWidgetTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,37 +49,40 @@ def test( self ) :
n["user"]["p1"] = Gaffer.BoolPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
n["user"]["p2"] = Gaffer.BoolPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )

w = GafferUI.BoolPlugValueWidget( n["user"]["p1"] )
self.assertEqual( w.getPlug(), n["user"]["p1"] )
self.assertEqual( w.getPlugs(), { n["user"]["p1"] } )
self.assertEqual( w.boolWidget().getState(), False )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

n["user"]["p1"].setValue( True )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), True )
w = GafferUI.BoolPlugValueWidget( n["user"]["p1"] )
self.assertEqual( w.getPlug(), n["user"]["p1"] )
self.assertEqual( w.getPlugs(), { n["user"]["p1"] } )
self.assertEqual( w.boolWidget().getState(), False )

w.setPlugs( n["user"].children() )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), w.boolWidget().State.Indeterminate )
n["user"]["p1"].setValue( True )
handler.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), True )

n["user"]["p2"].setValue( True )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), True )
w.setPlugs( n["user"].children() )
handler.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), w.boolWidget().State.Indeterminate )

w.setPlugs( [] )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), w.boolWidget().State.Indeterminate )
n["user"]["p2"].setValue( True )
handler.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), True )

w.setPlugs( [] )
handler.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), w.boolWidget().State.Indeterminate )

def testInitialValue( self ) :

n = Gaffer.Node()
n["user"]["p"] = Gaffer.BoolPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )

for v in ( True, False ) :
n["user"]["p"].setValue( v )
w = GafferUI.BoolPlugValueWidget( n["user"]["p"] )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), v )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :
n["user"]["p"].setValue( v )
w = GafferUI.BoolPlugValueWidget( n["user"]["p"] )
handler.waitForUpdate( w )
self.assertEqual( w.boolWidget().getState(), v )

def testErrorHandling( self ) :

Expand All @@ -88,14 +91,16 @@ def testErrorHandling( self ) :
script["n"] = Gaffer.Node()
script["n"]["user"]["p"] = Gaffer.BoolPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )

w = GafferUI.BoolPlugValueWidget( script["n"]["user"]["p"] )
self.assertFalse( w.boolWidget().getErrored() )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

w = GafferUI.BoolPlugValueWidget( script["n"]["user"]["p"] )
self.assertFalse( w.boolWidget().getErrored() )

script["b"] = GafferTest.BadNode()
script["n"]["user"]["p"].setInput( script["b"]["out3"] )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertTrue( w.boolWidget().getErrored() )
script["b"] = GafferTest.BadNode()
script["n"]["user"]["p"].setInput( script["b"]["out3"] )
handler.waitForUpdate( w )
self.assertTrue( w.boolWidget().getErrored() )

script["n"]["user"]["p"].setInput( None )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertFalse( w.boolWidget().getErrored() )
script["n"]["user"]["p"].setInput( None )
handler.waitForUpdate( w )
self.assertFalse( w.boolWidget().getErrored() )
114 changes: 58 additions & 56 deletions python/GafferUITest/ColorChooserTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,59 +246,61 @@ def testSaveDefaultOptions( self ) :
script["node"]["rgbaPlug"] = Gaffer.Color4fPlug()
script["node"]["rgbaPlug"].setValue( imath.Color4f( 0.1 ) )

rgbWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbPlug"] )
rgbWidget.setColorChooserVisible( True )
rgbaWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbaPlug"] )
rgbaWidget.setColorChooserVisible( True )

GafferUITest.PlugValueWidgetTest.waitForUpdate( rgbWidget._ColorPlugValueWidget__colorChooser )
GafferUITest.PlugValueWidgetTest.waitForUpdate( rgbaWidget._ColorPlugValueWidget__colorChooser )

# Default state
for c in "rgbhsvtmi" :
self.assertTrue( self.__sliderFromWidget( rgbWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, "a" ).getVisible() )
self.assertEqual( self.__getStaticComponent( rgbWidget ), "v" )
self.assertEqual( self.__getStaticComponent( rgbaWidget ), "v" )
self.assertTrue( self.__getColorFieldVisibility( rgbWidget ) )
self.assertTrue( self.__getColorFieldVisibility( rgbaWidget ) )
self.assertTrue( self.__getDynamicSliderBackgrounds( rgbWidget ) )
self.assertTrue( self.__getDynamicSliderBackgrounds( rgbaWidget ) )

# Modify `rgbWidget`

self.__setVisibleComponents( rgbWidget, "rgbhsv" )
self.__setStaticComponent( rgbWidget, "g" )
self.__setColorFieldVisibility( rgbWidget, False )
self.__setDynamicSliderBackgrounds( rgbWidget, False )

# Save defaults
colorChooser = self.__colorChooserFromWidget( rgbWidget )
saveDefaultOptions( colorChooser, "colorChooser:inline:" )

del rgbWidget
del rgbaWidget

# Both color types get the same value
rgbWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbPlug"] )
rgbWidget.setColorChooserVisible( True )
rgbaWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbaPlug"] )
rgbaWidget.setColorChooserVisible( True )

GafferUITest.PlugValueWidgetTest.waitForUpdate( rgbWidget._ColorPlugValueWidget__colorChooser )
GafferUITest.PlugValueWidgetTest.waitForUpdate( rgbaWidget._ColorPlugValueWidget__colorChooser )

for c in "rgbhsv" :
self.assertTrue( self.__sliderFromWidget( rgbWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, c ).getVisible() )
for c in "tmi" :
self.assertFalse( self.__sliderFromWidget( rgbWidget, c ).getVisible() )
self.assertFalse( self.__sliderFromWidget( rgbaWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, "a" ).getVisible() )
self.assertEqual( self.__getStaticComponent( rgbWidget ), "g" )
self.assertEqual( self.__getStaticComponent( rgbaWidget ), "g" )
self.assertFalse( self.__getColorFieldVisibility( rgbWidget ) )
self.assertFalse( self.__getColorFieldVisibility( rgbaWidget ) )
self.assertFalse( self.__getDynamicSliderBackgrounds( rgbWidget ) )
self.assertFalse( self.__getDynamicSliderBackgrounds( rgbaWidget ) )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

rgbWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbPlug"] )
rgbWidget.setColorChooserVisible( True )
rgbaWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbaPlug"] )
rgbaWidget.setColorChooserVisible( True )

handler.waitForUpdate( rgbWidget._ColorPlugValueWidget__colorChooser )
handler.waitForUpdate( rgbaWidget._ColorPlugValueWidget__colorChooser )

# Default state
for c in "rgbhsvtmi" :
self.assertTrue( self.__sliderFromWidget( rgbWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, "a" ).getVisible() )
self.assertEqual( self.__getStaticComponent( rgbWidget ), "v" )
self.assertEqual( self.__getStaticComponent( rgbaWidget ), "v" )
self.assertTrue( self.__getColorFieldVisibility( rgbWidget ) )
self.assertTrue( self.__getColorFieldVisibility( rgbaWidget ) )
self.assertTrue( self.__getDynamicSliderBackgrounds( rgbWidget ) )
self.assertTrue( self.__getDynamicSliderBackgrounds( rgbaWidget ) )

# Modify `rgbWidget`

self.__setVisibleComponents( rgbWidget, "rgbhsv" )
self.__setStaticComponent( rgbWidget, "g" )
self.__setColorFieldVisibility( rgbWidget, False )
self.__setDynamicSliderBackgrounds( rgbWidget, False )

# Save defaults
colorChooser = self.__colorChooserFromWidget( rgbWidget )
saveDefaultOptions( colorChooser, "colorChooser:inline:" )

del rgbWidget
del rgbaWidget

# Both color types get the same value
rgbWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbPlug"] )
rgbWidget.setColorChooserVisible( True )
rgbaWidget = GafferUI.ColorPlugValueWidget( script["node"]["rgbaPlug"] )
rgbaWidget.setColorChooserVisible( True )

handler.waitForUpdate( rgbWidget._ColorPlugValueWidget__colorChooser )
handler.waitForUpdate( rgbaWidget._ColorPlugValueWidget__colorChooser )

for c in "rgbhsv" :
self.assertTrue( self.__sliderFromWidget( rgbWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, c ).getVisible() )
for c in "tmi" :
self.assertFalse( self.__sliderFromWidget( rgbWidget, c ).getVisible() )
self.assertFalse( self.__sliderFromWidget( rgbaWidget, c ).getVisible() )
self.assertTrue( self.__sliderFromWidget( rgbaWidget, "a" ).getVisible() )
self.assertEqual( self.__getStaticComponent( rgbWidget ), "g" )
self.assertEqual( self.__getStaticComponent( rgbaWidget ), "g" )
self.assertFalse( self.__getColorFieldVisibility( rgbWidget ) )
self.assertFalse( self.__getColorFieldVisibility( rgbaWidget ) )
self.assertFalse( self.__getDynamicSliderBackgrounds( rgbWidget ) )
self.assertFalse( self.__getDynamicSliderBackgrounds( rgbaWidget ) )
122 changes: 65 additions & 57 deletions python/GafferUITest/NumericPlugValueWidgetTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,51 +49,55 @@ def test( self ) :
n["i"]= Gaffer.IntPlug()
n["f"] = Gaffer.FloatPlug()

w = GafferUI.NumericPlugValueWidget( n["i"] )
self.assertTrue( w.getPlug().isSame( n["i"] ) )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertTrue( isinstance( w.numericWidget().getValue(), int ) )

w.setPlug( n["f"] )
self.assertTrue( w.getPlug().isSame( n["f"] ) )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertTrue( isinstance( w.numericWidget().getValue(), float ) )

w = GafferUI.NumericPlugValueWidget( plugs = [] )
self.assertEqual( w.getPlug(), None )
self.assertEqual( w.numericWidget().getEditable(), False )

w.setPlug( n["f"] )
self.assertTrue( w.getPlug().isSame( n["f"] ) )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertTrue( isinstance( w.numericWidget().getValue(), float ) )
self.assertEqual( w.numericWidget().getEditable(), True )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

w = GafferUI.NumericPlugValueWidget( n["i"] )
self.assertTrue( w.getPlug().isSame( n["i"] ) )
handler.waitForUpdate( w )
self.assertTrue( isinstance( w.numericWidget().getValue(), int ) )

w.setPlug( n["f"] )
self.assertTrue( w.getPlug().isSame( n["f"] ) )
handler.waitForUpdate( w )
self.assertTrue( isinstance( w.numericWidget().getValue(), float ) )

w = GafferUI.NumericPlugValueWidget( plugs = [] )
self.assertEqual( w.getPlug(), None )
self.assertEqual( w.numericWidget().getEditable(), False )

w.setPlug( n["f"] )
self.assertTrue( w.getPlug().isSame( n["f"] ) )
handler.waitForUpdate( w )
self.assertTrue( isinstance( w.numericWidget().getValue(), float ) )
self.assertEqual( w.numericWidget().getEditable(), True )

def testEditMultiplePlugs( self ) :

n = Gaffer.Node()
n["user"]["i1"] = Gaffer.IntPlug()
n["user"]["i2"] = Gaffer.IntPlug()

w = GafferUI.NumericPlugValueWidget( n["user"].children() )
self.assertEqual( w.getPlugs(), { n["user"]["i1"], n["user"]["i2"] } )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

n["user"]["i1"].setValue( 2 )
n["user"]["i2"].setValue( 2 )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "2" )
w = GafferUI.NumericPlugValueWidget( n["user"].children() )
self.assertEqual( w.getPlugs(), { n["user"]["i1"], n["user"]["i2"] } )

n["user"]["i1"].setValue( 1 )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "" )
self.assertEqual( w.numericWidget()._qtWidget().placeholderText(), "---" )
n["user"]["i1"].setValue( 2 )
n["user"]["i2"].setValue( 2 )
handler.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "2" )

w.numericWidget().setValue( 10 )
self.assertEqual( n["user"]["i1"].getValue(), 10 )
self.assertEqual( n["user"]["i2"].getValue(), 10 )
n["user"]["i1"].setValue( 1 )
handler.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "" )
self.assertEqual( w.numericWidget()._qtWidget().placeholderText(), "---" )

Gaffer.MetadataAlgo.setReadOnly( n["user"]["i1"], True )
self.assertFalse( w.numericWidget().getEditable() )
w.numericWidget().setValue( 10 )
self.assertEqual( n["user"]["i1"].getValue(), 10 )
self.assertEqual( n["user"]["i2"].getValue(), 10 )

Gaffer.MetadataAlgo.setReadOnly( n["user"]["i1"], True )
self.assertFalse( w.numericWidget().getEditable() )

def testChangeToMixedPlugsDoesntOverwriteExistingPlugValues( self ) :

Expand All @@ -103,19 +107,21 @@ def testChangeToMixedPlugsDoesntOverwriteExistingPlugValues( self ) :
n["user"]["i1"].setValue( 1 )
n["user"]["i2"].setValue( 2 )

w = GafferUI.NumericPlugValueWidget( n["user"]["i1"] )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "1" )
self.assertEqual( w.numericWidget()._qtWidget().placeholderText(), "" )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

w.setPlugs( n["user"].children() )
self.assertEqual( w.getPlugs(), { n["user"]["i1"], n["user"]["i2"] } )
w = GafferUI.NumericPlugValueWidget( n["user"]["i1"] )
handler.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "1" )
self.assertEqual( w.numericWidget()._qtWidget().placeholderText(), "" )

self.assertEqual( n["user"]["i1"].getValue(), 1 )
self.assertEqual( n["user"]["i2"].getValue(), 2 )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "" )
self.assertEqual( w.numericWidget()._qtWidget().placeholderText(), "---" )
w.setPlugs( n["user"].children() )
self.assertEqual( w.getPlugs(), { n["user"]["i1"], n["user"]["i2"] } )

self.assertEqual( n["user"]["i1"].getValue(), 1 )
self.assertEqual( n["user"]["i2"].getValue(), 2 )
handler.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "" )
self.assertEqual( w.numericWidget()._qtWidget().placeholderText(), "---" )

def testMixedOrInvalidValuesPreservesExisting( self ) :

Expand All @@ -125,23 +131,25 @@ def testMixedOrInvalidValuesPreservesExisting( self ) :
n["user"]["i1"].setValue( 1 )
n["user"]["i2"].setValue( 2 )

w = GafferUI.NumericPlugValueWidget( n["user"]["i1"] )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.numericWidget().getValue(), 1 )
with GafferUITest.PlugValueWidgetTest.WidgetUpdateHandler() as handler :

w = GafferUI.NumericPlugValueWidget( n["user"]["i1"] )
handler.waitForUpdate( w )
self.assertEqual( w.numericWidget().getValue(), 1 )

w.numericWidget().setText( "" )
w.numericWidget()._qtWidget().editingFinished.emit()
w.numericWidget().setText( "" )
w.numericWidget()._qtWidget().editingFinished.emit()

self.assertEqual( n["user"]["i1"].getValue(), 1 )
self.assertEqual( n["user"]["i1"].getValue(), 1 )

w = GafferUI.NumericPlugValueWidget( n["user"].children() )
GafferUITest.PlugValueWidgetTest.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "" )
w = GafferUI.NumericPlugValueWidget( n["user"].children() )
handler.waitForUpdate( w )
self.assertEqual( w.numericWidget().getText(), "" )

w.numericWidget()._qtWidget().editingFinished.emit()
w.numericWidget()._qtWidget().editingFinished.emit()

self.assertEqual( n["user"]["i1"].getValue(), 1 )
self.assertEqual( n["user"]["i2"].getValue(), 2 )
self.assertEqual( n["user"]["i1"].getValue(), 1 )
self.assertEqual( n["user"]["i2"].getValue(), 2 )

def testFixedCharacterWidth( self ) :

Expand Down
Loading
Loading