예제 #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, validate=False)
             readerImageNames = reader.getImageDirectoryListing(
                 validate=self.ufoLibReadValidate)
             for fileName, data in self._data.items():
                 if data["data"] is not None or fileName not in readerImageNames:
                     continue
                 writer.copyImageFromReader(
                     reader,
                     fileName,
                     fileName,
                     validate=self.ufoLibWriteValidate)
     for fileName in self._scheduledForDeletion:
         try:
             writer.removeImage(fileName, validate=self.ufoLibWriteValidate)
         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()
     for fileName, data in self._data.items():
         if not data["dirty"]:
             continue
         writer.writeImage(fileName,
                           data["data"],
                           validate=self.ufoLibWriteValidate)
         data["dirty"] = False
         data["onDisk"] = True
         data["onDiskModTime"] = writer.getFileModificationTime(
             "%s/%s" % ("images", fileName))
     self.dirty = False
예제 #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, validate=False)
             readerImageNames = reader.getImageDirectoryListing(validate=self.ufoLibReadValidate)
             for fileName, data in self._data.items():
                 if data["data"] is not None or fileName not in readerImageNames:
                     continue
                 writer.copyImageFromReader(reader, fileName, fileName, validate=self.ufoLibWriteValidate)
     for fileName in self._scheduledForDeletion:
         try:
             writer.removeImage(fileName, validate=self.ufoLibWriteValidate)
         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()
     for fileName, data in self._data.items():
         if not data["dirty"]:
             continue
         writer.writeImage(fileName, data["data"], validate=self.ufoLibWriteValidate)
         data["dirty"] = False
         data["onDisk"] = True
         data["onDiskModTime"] = writer.getFileModificationTime("%s/%s" % ("images", fileName))
     self.dirty = False
예제 #3
0
 def list_contents(reader: UFOReader) -> list[str]:
     """Returns a list of POSIX filename strings in the image data store."""
     return reader.getImageDirectoryListing()  # type: ignore