Creates a proxy instance from the inputted registry file.
        
        :param      filepath | <str>
        
        :return     <PluginProxy> || None

def fromFile(cls, filepath):
        """
        Creates a proxy instance from the inputted registry file.
        
        :param      filepath | <str>
        
        :return     <PluginProxy> || None
        """
        xdata = ElementTree.parse(nstr(filepath))
        xroot = xdata.getroot()

        # collect variable information
        name = xroot.get('name')
        ver = float(xroot.get('version', '1.0'))

        if not name:
            name = os.path.basename(filepath).split('.')
            if name == '__init__':
                name = os.path.normpath(filepath).split(os.path.sep)[-2]
            name = projex.text.pretty(name)

        icon = xroot.get('icon', './icon.png')

        ximport = xroot.find('import')
        if ximport is not None:
            importpath = ximport.get('path', './__init__.py')
        else:
            importpath = './__init__.py'

        params = {'description': '', 'author': '', 'email': '', 'url': ''}
        for param, default in params.items():
            xdata = xroot.find(param)
            if xdata is not None:
                params[param] = xdata.text

        # generate the proxy information
        proxy = PluginProxy(cls, name, ver)
        proxy.setImportPath(importpath)
        proxy.setDescription(params['description'])
        proxy.setAuthor(params['author'])
        proxy.setEmail(params['email'])
        proxy.setUrl(params['url'])
        proxy.setFilepath(filepath)

        return proxy