          """ Return dict of tools command tab titles with their IDs """
          return {self.command_notebook.tools_notebook.tab(tab_id, "text").lower(): tab_id
                  for tab_id in range(0, self.command_notebook.tools_notebook.index("end"))}
  
      @staticmethod
      def set_tk_vars():
          """ TK Variables to be triggered by to indicate
              what state various parts of the GUI should be in """
 
</s> remove         return self.state["sessions"][str(self.session_id)]
 </s> add         return self.state["sessions"].get(str(self.session_id), dict()) </s> remove         return self.state["sessions"][str(session_id)]["iterations"]
 </s> add         session = self.state["sessions"].get(str(session_id), None)
        if session is None:
            logger.warning("No session data found for session id: %s", session_id)
            return 0
        return session["iterations"] </s> remove             msg = "No data to display. Not refreshing"
            logger.debug(msg)
            print(msg)
 </s> add             return False
        return True

    def check_valid_data(self):
        """ Check that the selections holds valid data to display
            NB: len-as-condition is used as data could be a list or a numpy array
        """
        logger.debug("Validating data. %s",
                     {key: len(val) for key, val in self.display_data.stats.items()})
        if any(len(val) == 0  # pylint:disable=len-as-condition
               for val in self.display_data.stats.values()):
    def set_cursor_busy(self):
        """ Set the root cursor to busy """
        logger.trace("Setting cursor to busy")
        self.root.config(cursor="watch")

    def set_cursor_default(self):
        """ Set the root cursor to default """
        logger.trace("Setting cursor to default")
        self.root.config(cursor="")

          """ Return dict of tools command tab titles with their IDs """
          return {self.command_notebook.tools_notebook.tab(tab_id, "text").lower(): tab_id
                  for tab_id in range(0, self.command_notebook.tools_notebook.index("end"))}
  
    def set_cursor_busy(self):
        """ Set the root cursor to busy """
        logger.trace("Setting cursor to busy")
        self.root.config(cursor="watch")

    def set_cursor_default(self):
        """ Set the root cursor to default """
        logger.trace("Setting cursor to default")
        self.root.config(cursor="")

      @staticmethod
      def set_tk_vars():
          """ TK Variables to be triggered by to indicate
              what state various parts of the GUI should be in """
keep keep keep add keep keep keep keep
 GUI Fixups

- Analysis: Handle missing session Ids
- Analysis: Handle invalid data selections
- Analysis: Don't update graph on check box selection
- Analysis: Add cursor events to analysis tab
- Analysis: Change default graph view
- Training: Prevent GUI from attempting to close graphs which do not exist
- Extract/Convert: Make file extensions case-insensitive for preview
- Progress bar: Make compatible for downloads
- Progress bar: Add TQDM Description to progress bar stats text 
lib/gui/utils.py