Exemplo n.º 1
0
Arquivo: t1Lib.py Projeto: wondie/stdm
def readLWFN(path, onlyHeader=0):
    """reads an LWFN font file, returns raw data"""
    resRef = Res.FSOpenResFile(path, 1)  # read-only
    try:
        Res.UseResFile(resRef)
        n = Res.Count1Resources('POST')
        data = []
        for i in range(501, 501 + n):
            res = Res.Get1Resource('POST', i)
            code = ord(res.data[0])
            if ord(res.data[1]) <> 0:
                raise T1Error, 'corrupt LWFN file'
            if code in [1, 2]:
                if onlyHeader and code == 2:
                    break
                data.append(res.data[2:])
            elif code in [3, 5]:
                break
            elif code == 4:
                f = open(path, "rb")
                data.append(f.read())
                f.close()
            elif code == 0:
                pass  # comment, ignore
            else:
                raise T1Error, 'bad chunk code: ' + ` code `
    finally:
        Res.CloseResFile(resRef)
    data = string.join(data, '')
    assertType1(data)
    return data
Exemplo n.º 2
0
def readPlistFromResource(path, restype='plst', resid=0):
    """Read plst resource from the resource fork of path.
    """
    from Carbon.File import FSRef, FSGetResourceForkName
    from Carbon.Files import fsRdPerm
    from Carbon import Res
    fsRef = FSRef(path)
    resNum = Res.FSOpenResourceFile(fsRef, FSGetResourceForkName(), fsRdPerm)
    Res.UseResFile(resNum)
    plistData = Res.Get1Resource(restype, resid).data
    Res.CloseResFile(resNum)
    return readPlistFromString(plistData)
Exemplo n.º 3
0
 def getstylesoup(self, pathname):
     if not pathname:
         return None, None
     oldrf = Res.CurResFile()
     try:
         rf = Res.FSpOpenResFile(self.path, 1)
     except Res.Error:
         return None, None
     try:
         hstyle = Res.Get1Resource('styl', 128)
         hstyle.DetachResource()
     except Res.Error:
         hstyle = None
     try:
         hsoup = Res.Get1Resource('SOUP', 128)
         hsoup.DetachResource()
     except Res.Error:
         hsoup = None
     Res.CloseResFile(rf)
     Res.UseResFile(oldrf)
     return hstyle, hsoup
def readPlistFromResource(path, restype='plst', resid=0):
    warnings.warnpy3k('In 3.x, readPlistFromResource is removed.',
                      stacklevel=2)
    from Carbon.File import FSRef, FSGetResourceForkName
    from Carbon.Files import fsRdPerm
    from Carbon import Res
    fsRef = FSRef(path)
    resNum = Res.FSOpenResourceFile(fsRef, FSGetResourceForkName(), fsRdPerm)
    Res.UseResFile(resNum)
    plistData = Res.Get1Resource(restype, resid).data
    Res.CloseResFile(resNum)
    return readPlistFromString(plistData)
Exemplo n.º 5
0
 def readwindowsettings(self):
     try:
         resref = Res.FSpOpenResFile(self.path, 1)
     except Res.Error:
         return
     try:
         Res.UseResFile(resref)
         data = Res.Get1Resource('PyWS', 128)
         self.settings = marshal.loads(data.data)
     except:
         pass
     Res.CloseResFile(resref)
Exemplo n.º 6
0
def copyres(input, output, skiptypes, skipowner, progress=None):
    ctor = None
    alltypes = []
    Res.UseResFile(input)
    ntypes = Res.Count1Types()
    progress_type_inc = 50 / ntypes
    for itype in range(1, 1 + ntypes):
        type = Res.Get1IndType(itype)
        if type in skiptypes:
            continue
        alltypes.append(type)
        nresources = Res.Count1Resources(type)
        progress_cur_inc = progress_type_inc / nresources
        for ires in range(1, 1 + nresources):
            res = Res.Get1IndResource(type, ires)
            id, type, name = res.GetResInfo()
            lcname = string.lower(name)
            if lcname == OWNERNAME and id == 0:
                if skipowner:
                    continue
                else:
                    ctor = type
            size = res.size
            attrs = res.GetResAttrs()
            if progress:
                progress.label('Copy %s %d %s' % (type, id, name))
                progress.inc(progress_cur_inc)
            res.LoadResource()
            res.DetachResource()
            Res.UseResFile(output)
            try:
                res2 = Res.Get1Resource(type, id)
            except MacOS.Error:
                res2 = None

            if res2:
                if progress:
                    progress.label('Overwrite %s %d %s' % (type, id, name))
                    progress.inc(0)
                res2.RemoveResource()
            res.AddResource(type, id, name)
            res.WriteResource()
            attrs = attrs | res.GetResAttrs()
            res.SetResAttrs(attrs)
            Res.UseResFile(input)

    return (alltypes, ctor)
Exemplo n.º 7
0
def dataFromFile(pathOrFSSpec, nameOrID="", resType='NFNT'):
	from Carbon import Res
	resref = Res.FSOpenResFile(pathOrFSSpec, 1)	# readonly
	try:
		Res.UseResFile(resref)
		if not nameOrID:
			# just take the first in the file
			res = Res.Get1IndResource(resType, 1)
		elif type(nameOrID) == types.IntType:
			res = Res.Get1Resource(resType, nameOrID)
		else:
			res = Res.Get1NamedResource(resType, nameOrID)
		theID, theType, name = res.GetResInfo()
		data = res.data
	finally:
		Res.CloseResFile(resref)
	return data
def writePlistToResource(rootObject, path, restype='plst', resid=0):
    warnings.warnpy3k('In 3.x, writePlistToResource is removed.', stacklevel=2)
    from Carbon.File import FSRef, FSGetResourceForkName
    from Carbon.Files import fsRdWrPerm
    from Carbon import Res
    plistData = writePlistToString(rootObject)
    fsRef = FSRef(path)
    resNum = Res.FSOpenResourceFile(fsRef, FSGetResourceForkName(), fsRdWrPerm)
    Res.UseResFile(resNum)
    try:
        Res.Get1Resource(restype, resid).RemoveResource()
    except Res.Error:
        pass

    res = Res.Resource(plistData)
    res.AddResource(restype, resid, '')
    res.WriteResource()
    Res.CloseResFile(resNum)
Exemplo n.º 9
0
 def writewindowsettings(self):
     try:
         resref = Res.FSpOpenResFile(self.path, 3)
     except Res.Error:
         Res.FSpCreateResFile(self.path, self._creator, 'TEXT', smAllScripts)
         resref = Res.FSpOpenResFile(self.path, 3)
     try:
         data = Res.Resource(marshal.dumps(self.settings))
         Res.UseResFile(resref)
         try:
             temp = Res.Get1Resource('PyWS', 128)
             temp.RemoveResource()
         except Res.Error:
             pass
         data.AddResource('PyWS', 128, "window settings")
     finally:
         Res.UpdateResFile(resref)
         Res.CloseResFile(resref)
Exemplo n.º 10
0
def writePlistToResource(rootObject, path, restype='plst', resid=0):
    """Write 'rootObject' as a plst resource to the resource fork of path.
    """
    from Carbon.File import FSRef, FSGetResourceForkName
    from Carbon.Files import fsRdWrPerm
    from Carbon import Res
    plistData = writePlistToString(rootObject)
    fsRef = FSRef(path)
    resNum = Res.FSOpenResourceFile(fsRef, FSGetResourceForkName(), fsRdWrPerm)
    Res.UseResFile(resNum)
    try:
        Res.Get1Resource(restype, resid).RemoveResource()
    except Res.Error:
        pass
    res = Res.Resource(plistData)
    res.AddResource(restype, resid, '')
    res.WriteResource()
    Res.CloseResFile(resNum)
Exemplo n.º 11
0
 def __init__(self, path=None):
     self.version = 1
     self.fragments = []
     self.path = path
     if path is not None and os.path.exists(path):
         currentresref = Res.CurResFile()
         resref = Res.FSpOpenResFile(path, 1)
         Res.UseResFile(resref)
         try:
             try:
                 data = Res.Get1Resource('cfrg', 0).data
             except Res.Error:
                 raise Res.Error, "no 'cfrg' resource found", sys.exc_traceback
         finally:
             Res.CloseResFile(resref)
             Res.UseResFile(currentresref)
         self.parse(data)
         if self.version != 1:
             raise error, "unknown 'cfrg' resource format"
Exemplo n.º 12
0
# A minimal text editor.
Exemplo n.º 13
0
"""tools for BuildApplet and BuildApplication"""
Exemplo n.º 14
0
#
Exemplo n.º 15
0
def generate(input, output, module_dict=None, architecture='fat', debug=0):
    # try to remove old file
    try:
        os.remove(output)
    except:
        pass

    if module_dict is None:
        import macmodulefinder
        print "Searching for modules..."
        module_dict, missing = macmodulefinder.process(input, [], [], 1)
        if missing:
            import EasyDialogs
            missing.sort()
            answer = EasyDialogs.AskYesNoCancel(
                "Some modules could not be found; continue anyway?\n(%s)" %
                string.join(missing, ", "))
            if answer <> 1:
                sys.exit(0)

    applettemplatepath = buildtools.findtemplate()
    corepath = findpythoncore()

    dynamicmodules, dynamicfiles, extraresfiles = findfragments(
        module_dict, architecture)

    print 'Adding "__main__"'
    buildtools.process(applettemplatepath, input, output, 0)

    outputref = Res.FSpOpenResFile(output, 3)
    try:
        Res.UseResFile(outputref)

        print "Adding Python modules"
        addpythonmodules(module_dict)

        print "Adding PythonCore resources"
        copyres(corepath, outputref, ['cfrg', 'Popt', 'GU\267I'], 1)

        print "Adding resources from shared libraries"
        for ppcpath, cfm68kpath in extraresfiles:
            if os.path.exists(ppcpath):
                copyres(ppcpath, outputref, ['cfrg'], 1)
            elif os.path.exists(cfm68kpath):
                copyres(cfm68kpath, outputref, ['cfrg'], 1)

        print "Fixing sys.path prefs"
        Res.UseResFile(outputref)
        try:
            res = Res.Get1Resource('STR#', 228)  # from PythonCore
        except Res.Error:
            pass
        else:
            res.RemoveResource()
        # setting pref file name to empty string
        res = Res.Get1NamedResource('STR ', "PythonPreferenceFileName")
        res.data = Pstring("")
        res.ChangedResource()
        syspathpref = "$(APPLICATION)"
        res = Res.Resource("\000\001" + Pstring(syspathpref))
        res.AddResource("STR#", 229, "sys.path preference")

        print "Creating 'PYD ' resources"
        for modname, (ppcfrag, cfm68kfrag) in dynamicmodules.items():
            res = Res.Resource(Pstring(ppcfrag) + Pstring(cfm68kfrag))
            id = 0
            while id < 128:
                id = Res.Unique1ID('PYD ')
            res.AddResource('PYD ', id, modname)
    finally:
        Res.CloseResFile(outputref)
    print "Merging code fragments"
    cfmfile.mergecfmfiles([applettemplatepath, corepath] + dynamicfiles.keys(),
                          output, architecture)

    print "done!"
Exemplo n.º 16
0
"""macgen_bin - Generate application from shared libraries"""
Exemplo n.º 17
0
"""codefragments.py -- wrapper to modify code fragments."""