def menu_save(self): if not self.path: self.menu_save_as() return # Will call us recursively # # First save data # dhandle = self.ted.WEGetText() data = dhandle.data fp = open(self.path, 'wb') # NOTE: wb, because data has CR for end-of-line fp.write(data) if data[-1] <> '\r': fp.write('\r') fp.close() # # Now save style and soup # oldresfile = Res.CurResFile() try: rf = Res.FSpOpenResFile(self.path, 3) except Res.Error: Res.FSpCreateResFile(self.path, '????', 'TEXT', macfs.smAllScripts) rf = Res.FSpOpenResFile(self.path, 3) styles = Res.Resource('') soup = Res.Resource('') self.ted.WECopyRange(0, 0x3fffffff, None, styles, soup) styles.AddResource('styl', 128, '') soup.AddResource('SOUP', 128, '') Res.CloseResFile(rf) Res.UseResFile(oldresfile) self.ted.WEResetModCount()
def __init__(self, path, ttFont, res_id=None): self.file = StringIO() self.name = path self.closed = 0 fullname = ttFont['name'].getName( 4, 1, 0) # Full name, mac, default encoding familyname = ttFont['name'].getName( 1, 1, 0) # Fam. name, mac, default encoding psname = ttFont['name'].getName(6, 1, 0) # PostScript name, etc. if fullname is None or fullname is None or psname is None: from fontTools import ttLib raise ttLib.TTLibError( "can't make 'sfnt' resource, no Macintosh 'name' table found") self.fullname = fullname.string self.familyname = familyname.string self.psname = psname.string if self.familyname != self.psname[:len(self.familyname)]: # ugh. force fam name to be the same as first part of ps name, # fondLib otherwise barfs. for i in range(min(len(self.psname), len(self.familyname))): if self.familyname[i] != self.psname[i]: break self.familyname = self.psname[:i] self.ttFont = ttFont self.res_id = res_id if os.path.exists(self.name): os.remove(self.name) # XXX datafork support Res.FSpCreateResFile(self.name, 'DMOV', 'FFIL', 0) self.resref = Res.FSOpenResFile(self.name, 3) # exclusive read/write permission
def writeestr(dst, edict): """Create Estr resource file given a dictionary of errors.""" os.unlink(dst.as_pathname()) Res.FSpCreateResFile(dst, 'RSED', 'rsrc', smAllScripts) output = Res.FSpOpenResFile(dst, WRITE) Res.UseResFile(output) for num in edict.keys(): res = Res.Resource(Pstring(edict[num][0])) res.AddResource('Estr', num, '') res.WriteResource() Res.CloseResFile(output)
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)
def writeLWFN(path, data): Res.FSpCreateResFile(path, "just", "LWFN", 0) resRef = Res.FSpOpenResFile(path, 2) # write-only try: Res.UseResFile(resRef) resID = 501 chunks = findEncryptedChunks(data) for isEncrypted, chunk in chunks: if isEncrypted: code = 2 else: code = 1 while chunk: res = Res.Resource(chr(code) + '\0' + chunk[:LWFNCHUNKSIZE - 2]) res.AddResource('POST', resID, '') chunk = chunk[LWFNCHUNKSIZE - 2:] resID = resID + 1 res = Res.Resource(chr(5) + '\0') res.AddResource('POST', resID, '') finally: Res.CloseResFile(resRef)
# A minimal text editor.
#
"""Parse sys/errno.h and Errors.h and create Estr resource"""
"""macostools - Various utility functions for MacOS.
"""tools for BuildApplet and BuildApplication"""
"""Creation of PYC resources"""