      trigger_patch:  :class:`threading.Event`
          An event to indicate that a converter patch should be run
      """
  
      def __init__(self,
                   arguments: "Namespace",
                   sample_size: int,
                   display: "FacesDisplay",
                   lock: Lock,
                   trigger_patch: Event) -> None:
          logger.debug("Initializing %s: (arguments: '%s', sample_size: %s, display: %s, lock: %s, "
                       "trigger_patch: %s)", self.__class__.__name__, arguments, sample_size,
                       display, lock, trigger_patch)
          self._sample_size = sample_size
          self._display = display
          self._lock = lock
          self._trigger_patch = trigger_patch
          self._input_images: List[ConvertItem] = []
 
</s> remove         self._display = display
        self._lock = lock
        self._trigger_patch = trigger_patch
 </s> add         self._app = app </s> remove     def __init__(self,
                 arguments: "Namespace",
                 available_masks: List[str],
                 samples: Samples,
                 display: "FacesDisplay",
                 lock: Lock,
                 trigger: Event,
                 config_tools: "ConfigTools",
                 tk_vars: Dict[Literal["refresh", "busy"], tk.BooleanVar]) -> None:
        logger.debug("Initializing %s: (arguments: '%s', available_masks: %s, samples: %s, "
                     "display: %s, lock: %s, trigger: %s, config_tools: %s, tk_vars %s)",
                     self.__class__.__name__, arguments, available_masks, samples, display, lock,
                     trigger, config_tools, tk_vars)
        self._samples = samples
 </s> add     def __init__(self, app: Preview, arguments: "Namespace") -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s')",
                     self.__class__.__name__, app, arguments)
        self._app = app </s> remove     display: :class:`FacesDisplay`
        The display section of the Preview GUI.
    lock: :class:`threading.Lock`
        A threading lock to prevent multiple GUI updates at the same time.
    trigger_patch:  :class:`threading.Event`
        An event to indicate that a converter patch should be run
 </s> add  </s> remove     available_masks: list
        The masks that are available for convert
    samples: :class:`Samples`
        The Samples for display.
    display: :class:`FacesDisplay`
        The display section of the Preview GUI.
    lock: :class:`threading.Lock`
        A threading lock to prevent multiple GUI updates at the same time.
    trigger:  :class:`threading.Event`
        An event to indicate that a converter patch should be run
    config_tools: :class:`ConfigTools`
        Tools for loading and saving configuration files
    tk_vars: dict
        Global tkinter variables. `Refresh` and `Busy` :class:`tkinter.BooleanVar`
 </s> add 
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
      trigger_patch:  :class:`threading.Event`
          An event to indicate that a converter patch should be run
      """
  
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
          self._sample_size = sample_size
          self._display = display
          self._lock = lock
          self._trigger_patch = trigger_patch
          self._input_images: List[ConvertItem] = []
keep keep keep keep replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 bugfix:
    - preview tool - Prevent tkinter variables from exiting main thread
refactor:
    - preview tool - Split module to smaller sub-modules + docs, locales
Typing:
    - tools.preview.cli
Unit test:
    - tools.preview.viewer 
tools/preview/preview.py