def __savePresetMenuModifier(menuDefinition, parameter, node, parent=None): fnPh = FnParameterisedHolder(node) plugPath = fnPh.parameterPlugPath(parameter) if len(menuDefinition.items()): menuDefinition.append("/PresetsDivider", {"divider": True}) saveItemName = "/Presets/Save Preset..." loadItemName = "/Presets/Load Preset..." # If we are actually a class in a vector, use slightly different names # so that its more obvious whats going on ## \todo Add an item to save the class as a preset, rather than its values. if parent is not None and (isinstance(parent, IECore.ClassVectorParameter) or isinstance(parent, IECore.ClassParameter)): saveItemName = "/Presets/Save Parameter Values Preset..." loadItemName = "/Presets/Load Parameter Values Preset..." menuDefinition.append( saveItemName, { "command": IECore.curry( maya.cmds.evalDeferred, 'import IECoreMaya; IECoreMaya.SavePresetUI( "%s", "%s" )' % (fnPh.fullPathName(), plugPath)) }) menuDefinition.append( loadItemName, { "command": IECore.curry( maya.cmds.evalDeferred, 'import IECoreMaya; IECoreMaya.LoadPresetUI( "%s", "%s" )' % (fnPh.fullPathName(), plugPath)) })
def __init__( self, node, rootParameter=None, buttonTitle="Select", autoCollapseDepth=2 ) : self._fnP = FnParameterisedHolder( node ) parameterised = self._fnP.getParameterised() self._rootParameter = rootParameter if rootParameter else parameterised[0].parameters() self._window = maya.cmds.window( title="%s: %s" % ( buttonTitle, node ), width=500, height=600 ) UIElement.__init__( self, self._window ) self._form = maya.cmds.formLayout() self._scroll = maya.cmds.scrollLayout( parent=self._form ) self._selector = ParameterSelector( self._rootParameter, self._scroll, autoCollapseDepth=autoCollapseDepth ) maya.cmds.formLayout( self._form, edit=True, attachForm=[ ( self._scroll, "top", 0 ), ( self._scroll, "left", 0 ), ( self._scroll, "right", 0 ), ( self._scroll, "bottom", 0 ), ], )
def __init__( self, node, rootParameter=None ) : fn = FnParameterisedHolder( node ) parameterised = fn.getParameterised() self.__parameterised = parameterised # Just using 'not' on a ClassVector takes its length, which equates to False if its empty. self.__rootParameter = rootParameter if rootParameter is not None else parameterised[0].parameters() self.__fnP = fn self.__envVar = parameterised[3].replace( "_PATHS", "_PRESET_PATHS" ) if self.__envVar not in os.environ : maya.cmds.confirmDialog( message="Environment variable not set:\n\n$%s\n\nPlease set "%self.__envVar+\ "this variable to point to one or more paths.\nPresets can then be loaded from these "+\ "locations.", button="OK" ) return paths = os.environ[self.__envVar] sp = IECore.SearchPath( os.path.expandvars( paths ) ) self.__classLoader = IECore.ClassLoader( sp ) presets = self.__getPresets( parameterised[0], self.__rootParameter ) if not presets: maya.cmds.confirmDialog( message="No presets applicable to %s found in the current search paths ($%s)." % ( self.__rootParameter.name, self.__envVar ), button="OK" ) return self.__loadedPresets = {} self.__window = maya.cmds.window( title="Load: %s" % node, width=300, height=500 ) UIElement.__init__( self, self.__window ) self.__form = maya.cmds.formLayout() self.__infoColumn = PresetInfo( parent=self.__form ) self.__selector = PresetSelector( presets, self.__form, allowMultiSelection=True, selectCommand=self._createCallback( self.__selectionChanged ) ) self.__loadButton = maya.cmds.button( l="Load", parent=self.__form, height=30, c=self._createCallback( self.__doLoad ) ) if not presets: maya.cmds.control( self.__loadButton, edit=True, enable=False ) maya.cmds.formLayout( self.__form, edit=True, attachForm=[ ( self.__selector.list(), "top" , 0 ), ( self.__selector.list(), "left" , 0 ), ( self.__selector.list(), "right" , 0 ), ( self.__infoColumn.layout(), "left" , 5 ), ( self.__infoColumn.layout(), "right" , 0 ), ( self.__loadButton, "bottom", 0 ), ( self.__loadButton, "left" , 0 ), ( self.__loadButton, "right" , 0 ) ], attachControl=[ ( self.__selector.list(), "bottom", 4, self.__infoColumn.layout() ), ( self.__infoColumn.layout(), "bottom", 5, self.__loadButton ), ] ) maya.cmds.showWindow( self.__window )
def __init__( self, node, rootParameter=None ) : fn = FnParameterisedHolder( node ) parameterised = fn.getParameterised() self.__parameterised = parameterised # Just using 'not' on a ClassVector takes its length, which equates to False if its empty. self.__rootParameter = rootParameter if rootParameter is not None else parameterised[0].parameters() self.__fnP = fn self.__envVar = parameterised[3].replace( "_PATHS", "_PRESET_PATHS" ) if self.__envVar not in os.environ : maya.cmds.confirmDialog( message="Environment variable not set:\n\n$%s\n\nPlease set "%self.__envVar+\ "this variable to point to one or more paths.\nPresets can then be loaded from these "+\ "locations.", button="OK" ) return paths = os.environ[self.__envVar] sp = IECore.SearchPath( os.path.expandvars( paths ), ":" ) self.__classLoader = IECore.ClassLoader( sp ) presets = self.__getPresets( parameterised[0], self.__rootParameter ) if not presets: maya.cmds.confirmDialog( message="No presets applicable to %s found in the current search paths ($%s)." % ( self.__rootParameter.name, self.__envVar ), button="OK" ) return self.__loadedPresets = {} self.__window = maya.cmds.window( title="Load: %s" % node, width=300, height=500 ) UIElement.__init__( self, self.__window ) self.__form = maya.cmds.formLayout() self.__infoColumn = PresetInfo( parent=self.__form ) self.__selector = PresetSelector( presets, self.__form, allowMultiSelection=True, selectCommand=self._createCallback( self.__selectionChanged ) ) self.__loadButton = maya.cmds.button( l="Load", parent=self.__form, height=30, c=self._createCallback( self.__doLoad ) ) if not presets: maya.cmds.control( self.__loadButton, edit=True, enable=False ) maya.cmds.formLayout( self.__form, edit=True, attachForm=[ ( self.__selector.list(), "top" , 0 ), ( self.__selector.list(), "left" , 0 ), ( self.__selector.list(), "right" , 0 ), ( self.__infoColumn.layout(), "left" , 5 ), ( self.__infoColumn.layout(), "right" , 0 ), ( self.__loadButton, "bottom", 0 ), ( self.__loadButton, "left" , 0 ), ( self.__loadButton, "right" , 0 ) ], attachControl=[ ( self.__selector.list(), "bottom", 4, self.__infoColumn.layout() ), ( self.__infoColumn.layout(), "bottom", 5, self.__loadButton ), ] ) maya.cmds.showWindow( self.__window )
def __init__(self, node, rootParameter=None): try: fn = FnParameterisedHolder(node) except: raise ValueError, 'PresetsUI: "%s" is not a valid Parameterised object.' % node self.__node = node self.__rootParameter = rootParameter
def __savePresetMenuModifier( menuDefinition, parameter, node, parent=None ) : fnPh = FnParameterisedHolder( node ) plugPath = fnPh.parameterPlugPath( parameter ) if len( menuDefinition.items() ): menuDefinition.append( "/PresetsDivider", { "divider" : True } ) saveItemName = "/Presets/Save Preset..." loadItemName = "/Presets/Load Preset..." # If we are actually a class in a vector, use slightly different names # so that its more obvious whats going on ## \todo Add an item to save the class as a preset, rather than its values. if parent is not None and ( isinstance( parent, IECore.ClassVectorParameter ) or isinstance( parent, IECore.ClassParameter ) ): saveItemName = "/Presets/Save Parameter Values Preset..." loadItemName = "/Presets/Load Parameter Values Preset..." menuDefinition.append( saveItemName, { "command" : IECore.curry( maya.cmds.evalDeferred, 'import IECoreMaya; IECoreMaya.SavePresetUI( "%s", "%s" )' % ( fnPh.fullPathName(), plugPath ) ) } ) menuDefinition.append( loadItemName, { "command" : IECore.curry( maya.cmds.evalDeferred, 'import IECoreMaya; IECoreMaya.LoadPresetUI( "%s", "%s" )' % ( fnPh.fullPathName(), plugPath ) ) } )
def __init__( self, node, rootParameter=None, autoCollapseDepth=2 ) : fnP = FnParameterisedHolder( node ) parameterised = fnP.getParameterised() self.__envVar = parameterised[3].replace( "_PATHS", "_PRESET_PATHS" ) if self.__envVar not in os.environ : maya.cmds.confirmDialog( message="Environment variable not set:\n\n$%s\n\nPlease set "%self.__envVar+\ "this variable to point to one or more paths.\nPresets can then be saved to these "+\ "locations.", button="OK" ) return ParamSelectUI.__init__( self, node, rootParameter, autoCollapseDepth=autoCollapseDepth ) self.__location = SearchPathMenu( os.getenv( self.__envVar ), self._form, label = "Save to:", ann = self.__envVar, cw = ( 1, 65 ), adj = 2, ) self.__name = maya.cmds.textFieldGrp( parent = self._form, label = "Name:", adj = 2, columnWidth = ( 1, 65 ) ) descripLabel = maya.cmds.text( parent = self._form, label = "Description:", align = "left", ) self.__description = maya.cmds.scrollField( parent = self._form, numberOfLines = 5, height = 100, ) self.__saveButton = maya.cmds.button( l = "Save", parent = self._form, height = 30, c = self._createCallback( self.__doSave ) ) maya.cmds.formLayout( self._form, edit=True, attachForm=[ ( self._scroll, "top", 0 ), ( self._scroll, "left", 0 ), ( self._scroll, "right", 0 ), ( self.__location.menu(), "left", 10 ), ( self.__location.menu(), "right", 10 ), ( self.__name, "left", 10 ), ( self.__name, "right", 10 ), ( descripLabel, "left", 10 ), ( descripLabel, "right", 10 ), ( self.__description, "left", 10 ), ( self.__description, "right", 10 ), ( self.__saveButton, "bottom", 0 ), ( self.__saveButton, "left", 0 ), ( self.__saveButton, "right", 0 ) ], attachControl=[ ( self._scroll, "bottom", 5, self.__location.menu() ), ( self.__location.menu(), "bottom", 3, self.__name ), ( self.__name, "bottom", 5, descripLabel ), ( descripLabel, "bottom", 5, self.__description ), ( self.__description, "bottom", 5, self.__saveButton ), ] ) maya.cmds.showWindow( self._window )
def __init__( self, objectOrObjectName ) : FnParameterisedHolder.__init__( self, objectOrObjectName )
def __init__( self, object ) : FnParameterisedHolder.__init__( self, object )
def LoadPresetUI(nodeName, attribute): fnPh = FnParameterisedHolder(nodeName) rootParam = fnPh.plugParameter(attribute) PresetsUI(nodeName, rootParam).load()
def SavePresetUI(nodeName, attribute): fnPh = FnParameterisedHolder(nodeName) rootParam = fnPh.plugParameter(attribute) PresetsUI(nodeName, rootParam).save()
def __init__(self, objectOrObjectName): FnParameterisedHolder.__init__(self, objectOrObjectName)
def SavePresetUI( nodeName, attribute ) : fnPh = FnParameterisedHolder( nodeName ) rootParam = fnPh.plugParameter( attribute ) PresetsUI( nodeName, rootParam ).save()
def __init__(self, node, rootParameter=None, autoCollapseDepth=2): fnP = FnParameterisedHolder(node) parameterised = fnP.getParameterised() self.__envVar = parameterised[3].replace("_PATHS", "_PRESET_PATHS") if self.__envVar not in os.environ: maya.cmds.confirmDialog( message="Environment variable not set:\n\n$%s\n\nPlease set "%self.__envVar+\ "this variable to point to one or more paths.\nPresets can then be saved to these "+\ "locations.", button="OK" ) return ParamSelectUI.__init__(self, node, rootParameter, autoCollapseDepth=autoCollapseDepth) self.__location = SearchPathMenu( os.getenv(self.__envVar), self._form, label="Save to:", ann=self.__envVar, cw=(1, 65), adj=2, ) self.__name = maya.cmds.textFieldGrp(parent=self._form, label="Name:", adj=2, columnWidth=(1, 65)) descripLabel = maya.cmds.text( parent=self._form, label="Description:", align="left", ) self.__description = maya.cmds.scrollField( parent=self._form, numberOfLines=5, height=100, ) self.__saveButton = maya.cmds.button(l="Save", parent=self._form, height=30, c=self._createCallback( self.__doSave)) maya.cmds.formLayout( self._form, edit=True, attachForm=[(self._scroll, "top", 0), (self._scroll, "left", 0), (self._scroll, "right", 0), (self.__location.menu(), "left", 10), (self.__location.menu(), "right", 10), (self.__name, "left", 10), (self.__name, "right", 10), (descripLabel, "left", 10), (descripLabel, "right", 10), (self.__description, "left", 10), (self.__description, "right", 10), (self.__saveButton, "bottom", 0), (self.__saveButton, "left", 0), (self.__saveButton, "right", 0)], attachControl=[ (self._scroll, "bottom", 5, self.__location.menu()), (self.__location.menu(), "bottom", 3, self.__name), (self.__name, "bottom", 5, descripLabel), (descripLabel, "bottom", 5, self.__description), (self.__description, "bottom", 5, self.__saveButton), ]) maya.cmds.showWindow(self._window)
def LoadPresetUI( nodeName, attribute ) : fnPh = FnParameterisedHolder( nodeName ) rootParam = fnPh.plugParameter( attribute ) PresetsUI( nodeName, rootParam ).load()
def __init__(self, object): FnParameterisedHolder.__init__(self, object)