  
      def __init__(self, parent, data, ylabel):
          GraphBase.__init__(self, parent, data, ylabel)
          self.add_callback()
  
      def add_callback(self):
          """ Add the variable trace to update graph on recent button or save iteration """
 
</s> remove                    "save the models and quit (it can take up a couple of seconds "
                   "depending on your training speed). If you want to kill it now, "
                   "press Ctrl + c")
 </s> add                    "save the models and quit (This can take a couple of minutes "
                   "depending on your training speed).")
            if not self.args.redirect_gui:
                msg += " If you want to kill it now, press Ctrl + c" </s> remove         for btntype in ("reset", "clear", "save", "load"):
 </s> add         for btntype in ("clear", "save", "load"):
        self.thread = None  # Thread for LongRunningTask
  
      def __init__(self, parent, data, ylabel):
          GraphBase.__init__(self, parent, data, ylabel)
        self.thread = None  # Thread for LongRunningTask
          self.add_callback()
  
      def add_callback(self):
          """ Add the variable trace to update graph on recent button or save iteration """
keep keep add keep keep keep keep
 GUI responsiveness and feature updates

- Add error handling to LongRunningTask
- Analysis: Fix timestats bug for missing session data
- Training: Update training graph inside LongRunningTask
- Training: Smoothing Amount Slider geometry fix
- Training: Auto update Analysis tab on training start and save interval
- Scripts: Keep control of the UI when terminating by terminating using LongRunningTask 
lib/gui/display_graph.py