From aa8c68bc97cd928e9a2a59f78d696350471897f8 Mon Sep 17 00:00:00 2001 From: Murray Stevenson <50844517+murraystevenson@users.noreply.github.com> Date: Wed, 29 May 2024 16:38:39 -0700 Subject: [PATCH] EditScopeUI : Display icon representing EditScope colour --- Changes.md | 5 +++++ python/GafferUI/EditScopeUI.py | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Changes.md b/Changes.md index 8e37aae4a57..da179c267d9 100644 --- a/Changes.md +++ b/Changes.md @@ -1,6 +1,11 @@ 1.4.x.x (relative to 1.4.5.0) ======= +Improvements +------------ + +- EditScopePlugValueWidget : Added icon representing the Edit Scope node colour. + API --- diff --git a/python/GafferUI/EditScopeUI.py b/python/GafferUI/EditScopeUI.py index d472104dc2e..dd90848db29 100644 --- a/python/GafferUI/EditScopeUI.py +++ b/python/GafferUI/EditScopeUI.py @@ -128,9 +128,10 @@ def __init__( self, plug, **kw ) : GafferUI.Label( "Edit Scope" ) self.__menuButton = GafferUI.MenuButton( "", - menu = GafferUI.Menu( Gaffer.WeakMethod( self.__menuDefinition ) ) + menu = GafferUI.Menu( Gaffer.WeakMethod( self.__menuDefinition ) ), + highlightOnOver = False ) - self.__menuButton._qtWidget().setFixedWidth( 100 ) + self.__menuButton._qtWidget().setFixedWidth( 120 ) self.__navigationMenuButton = GafferUI.MenuButton( image = "navigationArrow.png", hasFrame = False, @@ -154,8 +155,12 @@ def _updateFromValues( self, values, exception ) : self.__editScopeNameChangedConnection = editScope.nameChangedSignal().connect( Gaffer.WeakMethod( self.__editScopeNameChanged ), scoped = True ) + self.__editScopeMetadataChangedConnection = Gaffer.Metadata.nodeValueChangedSignal( editScope ).connect( + Gaffer.WeakMethod( self.__editScopeMetadataChanged ), scoped = True + ) else : self.__editScopeNameChangedConnection = None + self.__editScopeMetadataChangedConnection = None if self._qtWidget().property( "editScopeActive" ) != editScopeActive : self._qtWidget().setProperty( "editScopeActive", GafferUI._Variant.toVariant( editScopeActive ) ) @@ -164,11 +169,21 @@ def _updateFromValues( self, values, exception ) : def __updateMenuButton( self, editScope ) : self.__menuButton.setText( editScope.getName() if editScope is not None else "None" ) + image = None + if editScope is not None : + image = self.__paintIcon( editScope ) + + self.__menuButton.setImage( image ) def __editScopeNameChanged( self, editScope, oldName ) : self.__updateMenuButton( editScope ) + def __editScopeMetadataChanged( self, editScope, key, reason ) : + + if key == "nodeGadget:color" : + self.__updateMenuButton( editScope ) + def __editScope( self ) : input = self.getPlug().getInput() @@ -225,6 +240,7 @@ def __buildMenu( self, result, path, currentEditScope ) : "active" : path[0] != "Downstream", "label" : itemName, "checkBox" : editScope == currentEditScope, + "icon" : self.__paintIcon( editScope ), } ) else : @@ -349,6 +365,19 @@ def __navigationMenuDefinition( self ) : return result + def __paintIcon( self, editScope ) : + + pixmap = QtGui.QPixmap( 10, 10 ) + pixmap.fill( QtGui.QColor( 0, 0, 0, 0 ) ) + + color = Gaffer.Metadata.value( editScope, "nodeGadget:color" ) + painter = QtGui.QPainter( pixmap ) + painter.fillRect( 0, 2, 10, 6, QtGui.QColor( 0, 0, 0 ) ) + painter.fillRect( 1, 3, 8, 4, QtGui.QColor.fromRgbF( color[0], color[1], color[2] ) ) + del painter + + return GafferUI.Image( pixmap ) + @staticmethod def __userNodes( editScope ) :