          filename = os.path.join(root_path, f"preview_{now}.png")
          cv2.imwrite(filename, self.source)
          print("")
          logger.info("Saved preview to: '%s'", filename)
          self._save_var.set(False)
  
  
  class _Bindings():  # pylint: disable=too-few-public-methods
      """ Handle Mouse and Keyboard bindings for the canvas.
  
 
</s> remove         root_path = os.path.join(os.path.realpath(os.path.dirname(sys.argv[0])))
 </s> add         if self._is_standalone:
            root_path = os.path.join(os.path.realpath(os.path.dirname(sys.argv[0])))
        else:
            root_path = args[0]
 </s> remove         get_images().previewoutput[0].save(filename)
        logger.debug("Saved preview to %s", filename)
 </s> add         self._preview.save(filename) </s> remove         if not self._save_var.get() and not isinstance(args[0], tk.Event):
 </s> add         if self._is_standalone and not self._save_var.get() and not isinstance(args[0], tk.Event): </s> remove                 img = ".gui_training_preview.png"
 </s> add                 img = TRAININGPREVIEW </s> remove         Parameters
        ----------
        event: :class:`tkinter.Event`
            The resize event object
        """
        logger.trace("Resizing preview image")  # type:ignore
        framesize: Optional[Tuple[int, int]] = (event.width, event.height)
        # Sometimes image is resized before frame is drawn
        framesize = None if framesize == (1, 1) else framesize
        get_images().resize_image(self.name, framesize)
        self.reload()

    def reload(self) -> None:
        """ Reload the preview image """
        logger.trace("Reloading preview image")  # type:ignore
        self.previewimage = get_images().previewtrain[self.name][1]
        self.canvas.itemconfig(self.imgcanvas, image=self.previewimage)

    def save_preview(self, location: str) -> None:
        """ Save the figure to file.

        Parameters
        ----------
        location: str
            The full path to the location to save the preview image
        """
        filename = self.name
        now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = os.path.join(location, f"{filename}_{now}.png")
        cast("Image.Image", get_images().previewtrain[self.name][0]).save(filename)
        logger.debug("Saved preview to %s", filename)
        print(f"Saved preview to {filename}")
 </s> add         self._display.save(location)
        if self._is_standalone:
            self._save_var.set(False)
          filename = os.path.join(root_path, f"preview_{now}.png")
          cv2.imwrite(filename, self.source)
          print("")
          logger.info("Saved preview to: '%s'", filename)
        if self._is_standalone:
            self._save_var.set(False)
  
  
  class _Bindings():  # pylint: disable=too-few-public-methods
      """ Handle Mouse and Keyboard bindings for the canvas.
  
keep keep keep keep replace keep keep keep keep keep
 GUI - Preview updates
  - Training preview. Embed preview pop-out window
  - Bugfix - convert/extract previews 
lib/training/preview_tk.py