def read(self, relpath, rsc=None, mode='r', useFilepath=None):
        """
        Reads the contents for a given relative filepath.  This will call
        the load function and do a full read on the file contents.
        
        :param      relpath | <str>
                    rsc     | <str> || None
                    mode    | <str> | 'r' or 'rb'
        
        :return     <str>
        """
        f = self.load(relpath, rsc, mode, useFilepath=useFilepath)
        if f is None:
            return ''
        
        # use a QFile
        if isinstance(f, QtCore.QFile):
            if f.open(QtCore.QFile.ReadOnly):
                data = nativestring(f.readAll())
                f.close()
            else:
                data = ''
        else:
            data = f.read()
            f.close()
        
        return data