              else:
                  ttl = cmd.title()
                  hlp = "Run the {} script".format(cmd.title())
              logger.debug("Updated Action Button: '%s'", ttl)
              btnact.config(text=ttl)
              Tooltip(btnact, text=hlp, wraplength=200)
  
  
  class ToolsNotebook(ttk.Notebook):  # pylint:disable=too-many-ancestors
      """ Tools sit in their own tab, but need to inherit objects from the main command notebook """
 
</s> remove                 ttl = cmd.title()
 </s> add                 ttl = " {}".format(cmd.title())
                img = get_images().icons["start"] </s> remove                 ttl = "Terminate"
 </s> add                 ttl = " Stop"
                img = get_images().icons["stop"] </s> remove     @property
    def command_tabs(self):
        """ Return dict of command tab titles with their IDs """
        return {self.command_notebook.tab(tab_id, "text").lower(): tab_id
                for tab_id in range(0, self.command_notebook.index("end"))}
 </s> add     @staticmethod
    def _get_scaling(root):
        """ Get the display DPI.

        Returns
        -------
        float:
            The scaling factor
        """
        dpi = root.winfo_fpixels("1i")
        scaling = dpi / 72.0
        logger.debug("dpi: %s, scaling: %s'", dpi, scaling)
        return scaling

    def set_command_notebook(self, notebook):
        """ Set the command notebook to the :attr:`command_notebook` attribute
        and enable the modified callback for :attr:`project`.

        Parameters
        ----------
        notebook: :class:`lib.gui.command.CommandNotebook`
            The main command notebook for the Faceswap GUI
        """
        logger.debug("Setting commane notebook: %s", notebook)
        self._gui_objects["command_notebook"] = notebook
        self.project.set_modified_callback()

    def set_active_tab_by_name(self, name):
        """ Sets the :attr:`command_notebook` or :attr:`tools_notebook` to active based on given
        name.

        Parameters
        ----------
        name: str
            The name of the tab to set active
        """
        name = name.lower()
        if name in self._command_tabs:
            tab_id = self._command_tabs[name]
            logger.debug("Setting active tab to: (name: %s, id: %s)", name, tab_id)
            self.command_notebook.select(tab_id)
        elif name in self._tools_tabs:
            self.command_notebook.select(self._command_tabs["tools"])
            tab_id = self._tools_tabs[name]
            logger.debug("Setting active Tools tab to: (name: %s, id: %s)", name, tab_id)
            self.tools_notebook.select()
        else:
            logger.debug("Name couldn't be found. Setting to id 0: %s", name)
            self.command_notebook.select(0) </s> remove         """ Set the helptext for option buttons """
 </s> add         """ Set the help text for option buttons """ </s> remove     def add_timeout(self, actframe):
        """ Add a timeout option for training """
        logger.debug("Adding timeout box for %s", self.command)
        tk_var = get_config().tk_vars["traintimeout"]
        min_max = (10, 600)

        frameto = ttk.Frame(actframe)
        frameto.pack(padx=5, pady=5, side=tk.RIGHT, fill=tk.X, expand=True)
        lblto = ttk.Label(frameto, text="Timeout:", anchor=tk.W)
        lblto.pack(side=tk.LEFT)
        sldto = ttk.Scale(frameto,
                          variable=tk_var,
                          from_=min_max[0],
                          to=min_max[1],
                          command=lambda val, var=tk_var, dt=int, rn=10, mm=min_max:
                          set_slider_rounding(val, var, dt, rn, mm))
        sldto.pack(padx=5, side=tk.LEFT, fill=tk.X, expand=True)
        tboxto = ttk.Entry(frameto, width=3, textvariable=tk_var, justify=tk.RIGHT)
        tboxto.pack(side=tk.RIGHT)
        helptxt = ("Training can take some time to save and shutdown. "
                   "Set the timeout in seconds before giving up and force quitting.")
        Tooltip(sldto,
                text=helptxt,
                wraplength=200)
        Tooltip(tboxto,
                text=helptxt,
 </s> add         btnact = ttk.Button(actframe,
                            image=get_images().icons["start"],
                            text=" {}".format(self.title),
                            compound=tk.LEFT,
                            width=14,
                            command=lambda: tk_vars["action"].set(var_value))
        btnact.pack(side=tk.LEFT, fill=tk.X, expand=True)
        Tooltip(btnact,
                text="Run the {} script".format(self.title),
            btnact.config(text=ttl, image=img)
              else:
                  ttl = cmd.title()
                  hlp = "Run the {} script".format(cmd.title())
              logger.debug("Updated Action Button: '%s'", ttl)
            btnact.config(text=ttl, image=img)
              Tooltip(btnact, text=hlp, wraplength=200)
  
  
  class ToolsNotebook(ttk.Notebook):  # pylint:disable=too-many-ancestors
      """ Tools sit in their own tab, but need to inherit objects from the main command notebook """
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/command.py