def __init__( self, plug, **kw ) : grid = GafferUI.GridContainer( spacing = 4 ) GafferUI.PlugValueWidget.__init__( self, grid, plug, **kw ) self.__menuButton = GafferUI.MenuButton( menu = GafferUI.Menu( Gaffer.WeakMethod( self.__menuDefinition ) ) ) grid[0:2,0] = self.__menuButton self.__minLabel = GafferUI.Label( "Min" ) grid.addChild( self.__minLabel, index = ( 0, 1 ), alignment = ( GafferUI.HorizontalAlignment.Right, GafferUI.VerticalAlignment.Center ) ) self.__minWidget = GafferUI.CompoundNumericPlugValueWidget( plug["displayWindow"]["min"] ) grid[1,1] = self.__minWidget self.__maxLabel = GafferUI.Label( "Max" ) grid.addChild( self.__maxLabel, index = ( 0, 2 ), alignment = ( GafferUI.HorizontalAlignment.Right, GafferUI.VerticalAlignment.Center ) ) self.__maxWidget = GafferUI.CompoundNumericPlugValueWidget( plug["displayWindow"]["max"] ) grid[1,2] = self.__maxWidget self.__pixelAspectLabel = GafferUI.Label( "Pixel Aspect" ) grid.addChild( self.__pixelAspectLabel, index = ( 0, 3 ), alignment = ( GafferUI.HorizontalAlignment.Right, GafferUI.VerticalAlignment.Center ) ) self.__pixelAspectWidget = GafferUI.NumericPlugValueWidget( plug["pixelAspect"] ) grid[1,3] = self.__pixelAspectWidget # If the plug hasn't got an input, the PlugValueWidget base class assumes we're not # sensitive to contex changes and omits calls to _updateFromPlug(). But the default # format mechanism uses the context, so we must arrange to do updates ourselves when # necessary. self.__contextChangedConnection = self.getContext().changedSignal().connect( Gaffer.WeakMethod( self.__contextChanged ) ) self._addPopupMenu( self.__menuButton ) self._updateFromPlug()
def __init__(self, parameterHandler, **kw): plugValueWidget = GafferUI.CompoundNumericPlugValueWidget( parameterHandler.plug()) GafferUI.ParameterValueWidget.__init__(self, plugValueWidget, parameterHandler, **kw)
def testVisibleDimensionsMetadata( self ) : n = Gaffer.Node() n["v"] = Gaffer.V3fPlug() Gaffer.Metadata.registerValue( n["v"], "ui:visibleDimensions", 2 ) w = GafferUI.CompoundNumericPlugValueWidget( n["v"] ) self.assertTrue( w.childPlugValueWidget( n["v"][0] ).getVisible() ) self.assertTrue( w.childPlugValueWidget( n["v"][1] ).getVisible() ) self.assertFalse( w.childPlugValueWidget( n["v"][2] ).getVisible() )
def testChildPlugValueWidget( self ) : n = Gaffer.Node() n["v1"] = Gaffer.V3fPlug() n["v2"] = Gaffer.V3fPlug() w = GafferUI.CompoundNumericPlugValueWidget( n["v1"] ) for i in range( 0, 3 ) : self.assertTrue( w.childPlugValueWidget( n["v1"][i] ).getPlug().isSame( n["v1"][i] ) ) self.assertTrue( w.childPlugValueWidget( n["v2"][i] ) is None )
def testChildPlugValueWidgetForMultiplePlugs( self ) : n = Gaffer.Node() n["user"]["p1"] = Gaffer.V3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) n["user"]["p2"] = Gaffer.V3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) w = GafferUI.CompoundNumericPlugValueWidget( n["user"].children() ) for plug in n["user"].children() : for childPlug in plug : self.assertIn( childPlug, w.childPlugValueWidget( childPlug ).getPlugs() )
def testHighlighting( self ) : n = Gaffer.Node() n["user"]["p1"] = Gaffer.V3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) w = GafferUI.CompoundNumericPlugValueWidget( n["user"]["p1"] ) w.setHighlighted( True ) for childPlug in w.getPlug() : self.assertTrue( w.childPlugValueWidget( childPlug ).getHighlighted() ) w.setHighlighted( False ) for childPlug in w.getPlug() : self.assertFalse( w.childPlugValueWidget( childPlug ).getHighlighted() )
def test( self ) : n = Gaffer.Node() n["v1"]= Gaffer.V3fPlug() n["v2"]= Gaffer.V3fPlug() w = GafferUI.CompoundNumericPlugValueWidget( n["v1"] ) self.assertTrue( w.getPlug().isSame( n["v1"] ) ) self.assertTrue( w._row()[0].getPlug().isSame( n["v1"][0] ) ) self.assertTrue( w._row()[1].getPlug().isSame( n["v1"][1] ) ) self.assertTrue( w._row()[2].getPlug().isSame( n["v1"][2] ) ) w.setPlug( n["v2"] ) self.assertTrue( w.getPlug().isSame( n["v2"] ) ) self.assertTrue( w._row()[0].getPlug().isSame( n["v2"][0] ) ) self.assertTrue( w._row()[1].getPlug().isSame( n["v2"][1] ) ) self.assertTrue( w._row()[2].getPlug().isSame( n["v2"][2] ) )
def testChangePlugDimensions( self ) : n = Gaffer.Node() n["user"]["p1"] = Gaffer.V2iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) n["user"]["p2"] = Gaffer.V3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) w = GafferUI.CompoundNumericPlugValueWidget( n["user"]["p1"] ) self.assertEqual( len( w._row() ), 2 ) for childPlug in Gaffer.Plug.Range( w.getPlug() ) : self.assertEqual( w.childPlugValueWidget( childPlug ).getPlug(), childPlug ) w.setPlug( n["user"]["p2"] ) self.assertEqual( len( w._row() ), 3 ) for childPlug in Gaffer.Plug.Range( w.getPlug() ) : self.assertEqual( w.childPlugValueWidget( childPlug ).getPlug(), childPlug ) w.setPlug( n["user"]["p1"] ) self.assertEqual( len( w._row() ), 2 ) for childPlug in Gaffer.Plug.Range( w.getPlug() ) : self.assertEqual( w.childPlugValueWidget( childPlug ).getPlug(), childPlug )
def testSetGetPlugs( self ) : n = Gaffer.Node() n["user"]["v1"] = Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) n["user"]["v2"] = Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) w = GafferUI.CompoundNumericPlugValueWidget( n["user"]["v1"] ) self.assertEqual( w.getPlug(), n["user"]["v1"] ) self.assertEqual( w.getPlugs(), { n["user"]["v1"] } ) w.setPlug( n["user"]["v2"] ) self.assertEqual( w.getPlug(), n["user"]["v2"] ) self.assertEqual( w.getPlugs(), { n["user"]["v2"] } ) w.setPlugs( { n["user"]["v1"] } ) self.assertEqual( w.getPlug(), n["user"]["v1"] ) self.assertEqual( w.getPlugs(), { n["user"]["v1"] } ) for childPlug in n["user"]["v1"] : self.assertEqual( w.childPlugValueWidget( childPlug ).getPlug(), childPlug, )
def __numberCreator(plug, annotations): if len(plug): return GafferUI.CompoundNumericPlugValueWidget(plug) else: return GafferUI.NumericPlugValueWidget(plug)