Skip to content

Commit

Permalink
fixup! UIEditor : Add support for editing iconScale node metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
murraystevenson committed Aug 19, 2024
1 parent 1cf2f8b commit 69d4316
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions python/GafferUI/MetadataWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,12 @@ def _updateFromValue( self, value ) :

## Must be called by derived classes to update
# the Metadata value when the widget value changes.
def _updateFromWidget( self, value ) :
def _updateFromWidget( self, value, mergeGroup = "" ) :

if self.__target is None :
return

with Gaffer.UndoScope( self.__target.ancestor( Gaffer.ScriptNode ) ) :
with Gaffer.UndoScope( self.__target.ancestor( Gaffer.ScriptNode ), mergeGroup = mergeGroup ) :
Gaffer.Metadata.registerValue( self.__target, self.__key, value )

## May be called by derived classes to deregister the
Expand Down Expand Up @@ -355,14 +355,14 @@ def __init__( self, key, target = None, defaultValue = 0, **kw ) :
self.__numericWidget = GafferUI.NumericWidget( value = defaultValue )

self.__defaultValue = defaultValue
# we use these to decide which actions to merge into a single undo
self.__lastChangedReason = None
self.__mergeGroupId = 0

MetadataWidget.__init__( self, self.__numericWidget, key, target, defaultValue = defaultValue, **kw )

self.__numericWidget.editingFinishedSignal().connect(
Gaffer.WeakMethod( self.__editingFinished ), scoped = False
)
self.__numericWidget.valueChangedSignal().connect(
Gaffer.WeakMethod( self.__editingFinished ), scoped = False
Gaffer.WeakMethod( self.__valueChanged ), scoped = False
)

def numericWidget( self ) :
Expand All @@ -373,6 +373,17 @@ def _updateFromValue( self, value ) :

self.__numericWidget.setValue( type( self.__defaultValue )( value ) )

def __editingFinished( self, *unused ) :
def __valueChanged( self, widget, reason ) :

self._updateFromWidget( self.__numericWidget.getValue() )
if reason == GafferUI.NumericWidget.ValueChangedReason.InvalidEdit :
self._updateFromValue( self.defaultValue() )
return

if not widget.changesShouldBeMerged( self.__lastChangedReason, reason ) :
self.__mergeGroupId += 1
self.__lastChangedReason = reason

self._updateFromWidget(
self.__numericWidget.getValue(),
mergeGroup = "NumericMetadataWidget{}{}".format( id( self, ), self.__mergeGroupId )
)

0 comments on commit 69d4316

Please sign in to comment.