"""
Custom file resolver derived from MPxFileResolver that handles
the URI 'file' scheme.
When this resolver is active, URI file paths using the 'file:///'
scheme will be processed using methods on this class.
Refer to MPxFileResolver for more information about custom file resolvers.
To use, make sure that adskFileSchemeResolver.py is in
your MAYA_PLUG_IN_PATH then do the following:
# Load the plug-in
import maya.cmds
maya.cmds.loadPlugin("adskFileSchemeResolver.py")
# Once loaded, Maya will call the resolver methods in this plug-in when
# a URI file path is encountered during file resolution processing
# (file open, setAttr, etc.)
# Unload the plug-in
maya.cmds.unloadPlugin("adskFileSchemeResolver")
# Maya will no longer have access to this file
# resolver to handle URI file paths using the 'file:///' scheme
"""
import sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx
import maya.cmds as cmds
class adskFileSchemeResolver(OpenMayaMPx.MPxFileResolver):
"""
This custom plug-in resolver handles the 'file' uri scheme.
The resolution algorithm will return the fully qualified file path
obtained from the URI directory and filename elements.
"""
kPluginURIScheme = "file"
kPluginResolverName = "adskFileSchemeResolver"
def __init__(self):
OpenMayaMPx.MPxFileResolver.__init__(self)
def uriScheme(self):
return(self.kPluginURIScheme)
def resolveURI(self,uriFilePath,mode):
resolvedFilePath = uriFilePath.getPath()
return resolvedFilePath
@staticmethod
def theCreator():
return OpenMayaMPx.asMPxPtr( adskFileSchemeResolver() )
@staticmethod
def className():
return 'adskFileSchemeResolver'
def initializePlugin(plugin):
pluginFn = OpenMayaMPx.MFnPlugin(plugin)
try:
pluginFn.registerURIFileResolver( adskFileSchemeResolver.kPluginResolverName,
adskFileSchemeResolver.kPluginURIScheme,
adskFileSchemeResolver.theCreator )
except:
sys.stderr.write( "Failed to register custom resolver: %s for scheme: %s\n" %
(adskFileSchemeResolver.kPluginResolverName,
adskFileSchemeResolver.kPluginURIScheme ))
raise
def uninitializePlugin(plugin):
pluginFn = OpenMayaMPx.MFnPlugin(plugin)
try:
pluginFn.deregisterURIFileResolver(adskFileSchemeResolver.kPluginResolverName)
except:
sys.stderr.write(
"Failed to deregister custom file resolver: %s\n" %
adskFileSchemeResolver.kPluginResolverName)
raise