          logger.debug("Initialized %s", self.__class__.__name__)
  
      def set_running_task_trace(self):
          """ Set trigger action for the running task
              to change the action buttons text and command """
          logger.debug("Set running trace")
 
</s> remove         get_config().command_notebook = self
 </s> add         self.modified_vars = self._set_modified_vars()
        get_config().set_command_notebook(self) </s> remove         self.add_util_buttons()
 </s> add  </s> remove     def set_console_clear_var_trace(self):
        """ Set the trigger actions for the clear console var
            when it has been triggered from elsewhere """
        logger.debug("Set clear trace")
        self.console_clear.trace("w", self.clear)

    def build_console(self):
        """ Build and place the console """
        logger.debug("Build console")
        self.console.config(width=100, height=6, bg="gray90", fg="black")
        self.console.pack(side=tk.LEFT, anchor=tk.N, fill=tk.BOTH, expand=True)

        scrollbar = ttk.Scrollbar(self, command=self.console.yview)
        scrollbar.pack(side=tk.LEFT, fill="y")
        self.console.configure(yscrollcommand=scrollbar.set)

        self.redirect_console()
        logger.debug("Built console")

    def add_tags(self):
        """ Add tags to text widget to color based on output """
        logger.debug("Adding text color tags")
        self.console.tag_config("default", foreground="#1E1E1E")
        self.console.tag_config("stderr", foreground="#E25056")
        self.console.tag_config("info", foreground="#2B445E")
        self.console.tag_config("verbose", foreground="#008140")
        self.console.tag_config("warning", foreground="#F77B00")
        self.console.tag_config("critical", foreground="red")
        self.console.tag_config("error", foreground="red")

    def redirect_console(self):
        """ Redirect stdout/stderr to console frame """
        logger.debug("Redirect console")
        if self.debug:
            logger.info("Console debug activated. Outputting to main terminal")
        else:
            sys.stdout = SysOutRouter(console=self.console, out_type="stdout")
            sys.stderr = SysOutRouter(console=self.console, out_type="stderr")
        logger.debug("Redirected console")

    def clear(self, *args):  # pylint: disable=unused-argument
        """ Clear the console output screen """
        logger.debug("Clear console")
        if not self.console_clear.get():
            logger.debug("Console not set for clearing. Skipping")
            return
        self.console.delete(1.0, tk.END)
        self.console_clear.set(False)
        logger.debug("Cleared console")
 </s> add     # Constants
    @property
    def root(self):
        """ :class:`tkinter.Tk`: The root tkinter window. """
        return self._constants["root"] </s> remove         actframe.pack(fill=tk.X, side=tk.LEFT)
        tk_vars = get_config().tk_vars
 </s> add         actframe.pack(fill=tk.X, side=tk.RIGHT) </s> remove         """ Set the helptext for option buttons """
 </s> add         """ Set the help text for option buttons """
    @property
    def tab_names(self):
        """ dict: Command tab titles with their IDs """
        return {self.tab(tab_id, "text").lower(): tab_id
                for tab_id in range(0, self.index("end"))}

    @property
    def tools_tab_names(self):
        """ dict: Tools tab titles with their IDs """
        return {self.tools_notebook.tab(tab_id, "text").lower(): tab_id
                for tab_id in range(0, self.tools_notebook.index("end"))}

          logger.debug("Initialized %s", self.__class__.__name__)
  
    @property
    def tab_names(self):
        """ dict: Command tab titles with their IDs """
        return {self.tab(tab_id, "text").lower(): tab_id
                for tab_id in range(0, self.index("end"))}

    @property
    def tools_tab_names(self):
        """ dict: Tools tab titles with their IDs """
        return {self.tools_notebook.tab(tab_id, "text").lower(): tab_id
                for tab_id in range(0, self.tools_notebook.index("end"))}

      def set_running_task_trace(self):
          """ Set trigger action for the running task
              to change the action buttons text and command """
          logger.debug("Set running trace")
keep add 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