          self.add_frame_separator()
          self.add_actions(parent, config_key)
          logger.debug("Added Config Frame")
  
      def add_scrollbar(self):
          """ Add a scrollbar to the options frame """
          logger.debug("Add Config Scrollbar")
          scrollbar = ttk.Scrollbar(self.canvas_frame, command=self.canvas.yview)
          scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
          self.canvas.config(yscrollcommand=scrollbar.set)
          self.optsframe.bind("<Configure>", self.update_scrollbar)
          logger.debug("Added Config Scrollbar")
          return scrollbar
  
      def update_scrollbar(self, event):  # pylint: disable=unused-argument
          """ Update the options frame scrollbar """
          self.canvas.configure(scrollregion=self.canvas.bbox("all"))
  
      def resize_frame(self, event):
          """ Resize the options frame to fit the canvas """
          logger.debug("Resize Config Frame")
          canvas_width = event.width - self.scrollbar.winfo_reqwidth()
          canvas_height = event.height - (self.action_frame.winfo_reqheight() +
                                          self.frame_separator.winfo_reqheight() + 16)
          self.canvas.configure(width=canvas_width, height=canvas_height)
          self.canvas.itemconfig(self.optscanvas, width=canvas_width, height=canvas_height)
          logger.debug("Resized Config Frame")
  
      def add_frame_separator(self):
          """ Add a separator between top and bottom frames """
          logger.debug("Add frame seperator")
          sep = ttk.Frame(self, height=2, relief=tk.RIDGE)
          sep.pack(fill=tk.X, pady=(5, 0), side=tk.TOP)
          logger.debug("Added frame seperator")
          return sep
 
</s> remove         sep = ttk.Frame(self, height=2, relief=tk.RIDGE)
        sep.pack(fill=tk.X, pady=(5, 0), side=tk.TOP)
 </s> add         sep = ttk.Frame(self._action_frame, height=2, relief=tk.RIDGE)
        sep.pack(fill=tk.X, pady=5, side=tk.TOP) </s> remove         for key, val in self.options.items():
            if key == "helptext":
                continue
            value = val.get("value", val["default"])
            ctl = ControlBuilder(self.optsframe,
                                 key,
                                 val["type"],
                                 value,
                                 selected_value=None,
                                 choices=val["choices"],
                                 is_radio=val["gui_radio"],
                                 rounding=val["rounding"],
                                 min_max=val["min_max"],
                                 helptext=val["helptext"],
                                 radio_columns=4)
            parent.config_tools.tk_vars.setdefault(config_key, dict())[key] = ctl.tk_var
        self.add_frame_separator()
        self.add_actions(parent, config_key)
 </s> add         Parameters
        ----------
        parent: tkinter object
            The tkinter object that will hold this configuration frame
        config_key: str
            The section/plugin key for these configuration options
        """
        logger.debug("Add Config Frame")
        panel_kwargs = dict(columns=2, option_columns=2, blank_nones=False)
        frame = ttk.Frame(self)
        frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        cp_options = [opt for key, opt in self._options.items() if key != "helptext"]
        ControlPanel(frame, cp_options, header_text=None, **panel_kwargs)
        self._add_actions(parent, config_key) </s> remove         return sep
 </s> add  </s> remove     def build_frame(self, parent, config_key):
        """ Build the options frame for this command """
        logger.debug("Add Config Frame")
 </s> add     def _build_frame(self, parent, config_key):
        """ Build the options frame for this command </s> remove     def add_actions(self, parent, config_key):
        """ Add Action Buttons """
 </s> add     def _add_actions(self, parent, config_key):
        """ Add Action Buttons.

        Parameters
        ----------
        parent: tkinter object
            The tkinter object that will hold this configuration frame
        config_key: str
            The section/plugin key for these configuration options
        """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
          self.add_frame_separator()
          self.add_actions(parent, config_key)
          logger.debug("Added Config Frame")
  
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
    def _add_frame_separator(self):
        """ Add a separator between top and bottom frames. """
          logger.debug("Add frame seperator")
          sep = ttk.Frame(self, height=2, relief=tk.RIDGE)
          sep.pack(fill=tk.X, pady=(5, 0), side=tk.TOP)
          logger.debug("Added frame seperator")
          return sep
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Smart Masks to Convert (#957)

- scripts.convert - Use Smart Masks for Convert
    * Make on-the-fly conversion an explicit option

- Move BlurMask to lib.faces_detect

- tools.preview - Fix for smart masks
    * Subclass from tk.Tk
    * Options to lib.gui.control_helper
    *variable cleanup

- lib.logger - Demote more tensorflow deprecation messages

- Documentation:
    * lib.faces_detect.BlurMask
    * plugins.convert.mask
    * lib.convert
    * scripts.convert
    * scripts.fsmedia
    * tools.preview 
tools/preview.py