              logger.debug("No new images in output folder")
          else:
              self.previewcache["modified"] = max([os.path.getmtime(img) for img in retval])
              logger.debug("Number new images: %s, Last Modified: %s",
                           len(retval), self.previewcache["modified"])
          return retval
  
      def load_images_to_cache(self, imagefiles, frame_dims, thumbnail_size):
          """ Load new images and append to cache, filtering to the number of display images """
          logger.debug("Number imagefiles: %s, frame_dims: %s, thumbnail_size: %s",
 
</s> remove             self.previewcache["modified"] = max([os.path.getmtime(img) for img in retval])
 </s> add             self._previewcache["modified"] = max([os.path.getmtime(img) for img in retval]) </s> remove     def load_images_to_cache(self, imagefiles, frame_dims, thumbnail_size):
        """ Load new images and append to cache, filtering to the number of display images """
        logger.debug("Number imagefiles: %s, frame_dims: %s, thumbnail_size: %s",
                     len(imagefiles), frame_dims, thumbnail_size)
 </s> add     def _load_images_to_cache(self, image_files, frame_dims, thumbnail_size):
        """ Load preview images to the image cache.

        Load new images and append to cache, filtering the cache the number of thumbnails that will
        fit  inside the display panel.

        Parameters
        ----------
        image_files: list
            A list of new image files that have been modified since the last check
        frame_dims: tuple
            The (width (`int`), height (`int`)) of the display panel that will display the preview
        thumbnail_size: int
            The size of each thumbnail that should be created
        """
        logger.debug("Number image_files: %s, frame_dims: %s, thumbnail_size: %s",
                     len(image_files), frame_dims, thumbnail_size) </s> remove             retval = [fname for fname in imagefiles
                      if os.path.getmtime(fname) > self.previewcache["modified"]]
 </s> add             retval = [fname for fname in image_files
                      if os.path.getmtime(fname) > self._previewcache["modified"]] </s> remove         logger.debug("Displaying preview: %s", self.previewcache["filenames"])
        self.previewoutput = (show_image, ImageTk.PhotoImage(show_image))

    def get_newest_filenames(self, imagefiles):
        """ Return image filenames that have been modified since the last check """
        if self.previewcache["modified"] is None:
            retval = imagefiles
 </s> add         logger.debug("Displaying preview: %s", self._previewcache["filenames"])
        self._previewoutput = (show_image, ImageTk.PhotoImage(show_image))

    def _get_newest_filenames(self, image_files):
        """ Return image filenames that have been modified since the last check.

        Parameters
        ----------
        image_files: list
            The list of image files to check the modification date for

        Returns
        -------
        list:
            A list of images that have been modified since the last check
        """
        if self._previewcache["modified"] is None:
            retval = image_files </s> remove         """ Load the latest preview image for extract and convert """
 </s> add         """ Load the latest preview image for extract and convert.

        Retrieves the latest preview images from the faceswap output folder, resizes to thumbnails
        and lays out for display. Places the images into :attr:`previewoutput` for loading into
        the display panel.

        Parameters
        ----------
        thumbnail_size: int
            The size of each thumbnail that should be created
        frame_dims: tuple
            The (width (`int`), height (`int`)) of the display panel that will display the preview
        """
                         len(retval), self._previewcache["modified"])
              logger.debug("No new images in output folder")
          else:
              self.previewcache["modified"] = max([os.path.getmtime(img) for img in retval])
              logger.debug("Number new images: %s, Last Modified: %s",
                         len(retval), self._previewcache["modified"])
          return retval
  
      def load_images_to_cache(self, imagefiles, frame_dims, thumbnail_size):
          """ Load new images and append to cache, filtering to the number of display images """
          logger.debug("Number imagefiles: %s, frame_dims: %s, thumbnail_size: %s",
keep keep keep keep replace keep keep keep keep keep
 GUI Updates (#940)

* lib.gui: Update icons
* tools.cli: Add video filetype flag to mask input
* lib.gui.popup_configure: Refresh GUI on config save
* lib.gui._config: Add Icon size and load last session options
* lib.gui.control_helper - Add control modification tracking
* lib.gui - Add Projects and Last Session
- Main root title handled by projects
- Add Hotkeys
- Create projects module
- split fsw and fst filetypes
- Add last_session saving

* lib.project
- Documentation
- Ask confirm on closing unsaved project
-Fixups

* Track model folder changes
- Shuffle some globals
- Activate System Verbosity for GUI

* lib.gui.utils - Documentation and clean up
- lib.gui.custom_widgets - Create and document

* Add GUI config option to disable auto loading model stats 
lib/gui/utils.py