Exemple #1
0
 def save(self,
          writer,
          removeUnreferencedImages=False,
          saveAs=False,
          progressBar=None):
     """
     Save images. This method should not be called externally.
     Subclasses may override this method to implement custom saving behavior.
     """
     if removeUnreferencedImages:
         self.disableNotifications()
         for fileName in self.unreferencedFileNames:
             del self[fileName]
         self.enableNotifications()
     if saveAs:
         font = self.font
         if font is not None and font.path is not None and os.path.exists(
                 font.path):
             reader = UFOReader(font.path)
             readerImageNames = reader.getImageDirectoryListing()
             for fileName, data in self._data.items():
                 if data["data"] is not None or fileName not in readerImageNames:
                     continue
                 writer.copyImageFromReader(reader, fileName, fileName)
     for fileName in self._scheduledForDeletion:
         try:
             writer.removeImage(fileName)
         except UFOLibError:
             # this will be raised if the file doesn't exist.
             # instead of trying to maintain a list of in UFO
             # vs. in memory, simply fail and move on when
             # something can't be deleted because it isn't
             # in the UFO.
             pass
     self._scheduledForDeletion.clear()
     reader = UFOReader(writer.path)
     for fileName, data in self._data.items():
         if not data["dirty"]:
             continue
         writer.writeImage(fileName, data["data"])
         data["dirty"] = False
         data["onDisk"] = True
         data["onDiskModTime"] = reader.getFileModificationTime(
             os.path.join("images", fileName))
     self.dirty = False
Exemple #2
0
 def save(self, writer, removeUnreferencedImages=False, saveAs=False, progressBar=None):
     """
     Save images. This method should not be called externally.
     Subclasses may override this method to implement custom saving behavior.
     """
     if removeUnreferencedImages:
         self.disableNotifications()
         for fileName in self.unreferencedFileNames:
             del self[fileName]
         self.enableNotifications()
     if saveAs:
         font = self.font
         if font is not None and font.path is not None and os.path.exists(font.path):
             reader = UFOReader(font.path)
             readerImageNames = reader.getImageDirectoryListing()
             for fileName, data in self._data.items():
                 if data["data"] is not None or fileName not in readerImageNames:
                     continue
                 writer.copyImageFromReader(reader, fileName, fileName)
     for fileName in self._scheduledForDeletion:
         try:
             writer.removeImage(fileName)
         except UFOLibError:
             # this will be raised if the file doesn't exist.
             # instead of trying to maintain a list of in UFO
             # vs. in memory, simply fail and move on when
             # something can't be deleted because it isn't
             # in the UFO.
             pass
     self._scheduledForDeletion.clear()
     reader = UFOReader(writer.path)
     for fileName, data in self._data.items():
         if not data["dirty"]:
             continue
         writer.writeImage(fileName, data["data"])
         data["dirty"] = False
         data["onDisk"] = True
         data["onDiskModTime"] = reader.getFileModificationTime(os.path.join("images", fileName))
     self.dirty = False