  
          For actions that occur identically for each frame (e.g. blend_box), constants can
          be placed into self.func_constants to be compiled at launch, then referenced for
          each face. """
      def __init__(self, mask_type, output_size, predicted_available=False):
          super().__init__(mask_type, output_size, predicted_available)
          self.mask = self.get_mask() if not self.skip else None
  
      def get_mask(self):
          """ The box for every face will be identical, so set the mask just once
              As gaussian blur technically blurs both sides of the mask, reduce the mask ratio by
 
</s> remove     def __init__(self, mask_type, output_size, predicted_available):
        super().__init__(mask_type, output_size, predicted_available)
 </s> add     def __init__(self, mask_type, output_size, predicted_available, config=None):
        super().__init__(mask_type, output_size, predicted_available, config) </s> remove                      "predicted_available: %s)",
                     self.__class__.__name__, mask_type, output_size, predicted_available)
        self.config = get_config(".".join(self.__module__.split(".")[-2:]))
 </s> add                      "predicted_available: %s, config: %s)",
                     self.__class__.__name__, mask_type, output_size, predicted_available, config)
        self.config = self.set_config(config) </s> remove                  rounding=None, min_max=None, choices=None, fixed=True):
 </s> add                  rounding=None, min_max=None, choices=None, gui_radio=False, fixed=True): </s> remove     def __init__(self, mask_type, output_size, predicted_available):
 </s> add     def __init__(self, mask_type, output_size, predicted_available, config=None):
    def __init__(self, mask_type, output_size, predicted_available=False, config=None):
        super().__init__(mask_type, output_size, predicted_available, config)
  
          For actions that occur identically for each frame (e.g. blend_box), constants can
          be placed into self.func_constants to be compiled at launch, then referenced for
          each face. """
    def __init__(self, mask_type, output_size, predicted_available=False, config=None):
        super().__init__(mask_type, output_size, predicted_available, config)
    def __init__(self, mask_type, output_size, predicted_available=False, config=None):
        super().__init__(mask_type, output_size, predicted_available, config)
          self.mask = self.get_mask() if not self.skip else None
  
      def get_mask(self):
          """ The box for every face will be identical, so set the mask just once
              As gaussian blur technically blurs both sides of the mask, reduce the mask ratio by
keep keep keep keep replace replace keep keep keep keep keep
 Convert settings tool (#737)

* Initial prediction pipeline and display

* Patch faces from convert pipeline. Load configs

* Add tkinter canvas for image display

* Radio buttons to config gui. Standardise config gui. Remove dssim loss from realface

* Add action frame

* Live update cli options

* Live update config changes

* Quicker frame loading. Refresh faces button callback

* remove debug code

* Add saving and reloading config buttons

* Reduce lag with threading

* Busy indicator + geometry updates

* Fix options canvas resizing

* Add global config saving and resetting

* tools to own tab

* Rename tool to 'preview'

* geometry tweak

* pep8 fixes 
plugins/convert/mask/box_blend.py