Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    def save(self, destresfile=None):
        if self.mode <> 'w':
            raise error, "can't save font: no write permission"
        self._buildfontassociationtable()
        self._buildoffsettable()
        self._buildboundingboxtable()
        self._buildglyphwidthtable()
        self._buildkerningtables()
        self._buildstylemappingtable()
        self._buildglyphencodingsubtable()
        rawnames = [
            "_rawheader", "_rawfontassociationtable", "_rawoffsettable",
            "_rawglyphwidthtable", "_rawstylemappingtable",
            "_rawglyphencodingsubtable", "_rawkerningtables"
        ]
        for name in rawnames[1:]:  # skip header
            data = getattr(self, name)
            if len(data) & 1:
                setattr(self, name, data + '\0')

        self.ffWTabOff = FONDheadersize + len(
            self._rawfontassociationtable) + len(self._rawoffsettable)
        self.ffStylOff = self.ffWTabOff + len(self._rawglyphwidthtable)
        self.ffKernOff = self.ffStylOff + len(
            self._rawstylemappingtable) + len(self._rawglyphencodingsubtable)
        self.glyphTableOffset = len(self._rawstylemappingtable)

        if not self._rawglyphwidthtable:
            self.ffWTabOff = 0
        if not self._rawstylemappingtable:
            self.ffStylOff = 0
        if not self._rawglyphencodingsubtable:
            self.glyphTableOffset = 0
        if not self._rawkerningtables:
            self.ffKernOff = 0

        self._buildheader()

        # glyphTableOffset has only just been calculated
        self._updatestylemappingtable()

        newdata = ""
        for name in rawnames:
            newdata = newdata + getattr(self, name)
        if destresfile is None:
            self.FOND.data = newdata
            self.FOND.ChangedResource()
            self.FOND.WriteResource()
        else:
            ID, type, name = self.FOND.GetResInfo()
            self.FOND.DetachResource()
            self.FOND.data = newdata
            saveref = Res.CurResFile()
            Res.UseResFile(destresfile)
            self.FOND.AddResource(type, ID, name)
            Res.UseResFile(saveref)
        self.changed = 0
Ejemplo n.º 3
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"
Ejemplo n.º 4
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
Ejemplo n.º 5
0
# A minimal text editor.
Ejemplo n.º 6
0
#
Ejemplo n.º 7
0
"""codefragments.py -- wrapper to modify code fragments."""