              command=lambda val, var=tk_var, dt=float, rn=2, mm=(0, 0.99):
              set_slider_rounding(val, var, dt, rn, mm))
          ctl["from_"] = min_max[0]
          ctl["to"] = min_max[1]
          ctl.pack()
          Tooltip(ctl,
                  text="Set the smoothing amount. 0 is no smoothing, 0.99 is maximum smoothing.",
                  wraplength=200)
          logger.debug("Added Smoothing Slider")
  
      def display_item_set(self):
          """ Load the graph(s) if available """
          session = get_config().session
 
</s> remove         tbox = ttk.Entry(ctl_frame, width=8, textvariable=tk_var, justify=tk.RIGHT)
 </s> add         tbox = ttk.Entry(ctl_frame, width=6, textvariable=tk_var, justify=tk.RIGHT) </s> remove             return
 </s> add             return None </s> remove             self.thread = LongRunningTask(target=self.summarise_data, args=(self.session, ))
 </s> add             self.thread = LongRunningTask(target=self.summarise_data,
                                          args=(self.session, ),
                                          widget=self) </s> remove         time_stats = {sess_id: {"start_time": min(timestamps),
                                "end_time": max(timestamps),
                                "datapoints": len(timestamps)}
 </s> add         time_stats = {sess_id: {"start_time": min(timestamps) if timestamps else 0,
                                "end_time": max(timestamps) if timestamps else 0,
                                "datapoints": len(timestamps) if timestamps else 0}
        ctl.pack(padx=5, pady=5, fill=tk.X, expand=True)
        for item in (tbox, ctl):
            Tooltip(item,
                    text=hlp,
                    wraplength=200)
              command=lambda val, var=tk_var, dt=float, rn=2, mm=(0, 0.99):
              set_slider_rounding(val, var, dt, rn, mm))
          ctl["from_"] = min_max[0]
          ctl["to"] = min_max[1]
        ctl.pack(padx=5, pady=5, fill=tk.X, expand=True)
        for item in (tbox, ctl):
            Tooltip(item,
                    text=hlp,
                    wraplength=200)
        ctl.pack(padx=5, pady=5, fill=tk.X, expand=True)
        for item in (tbox, ctl):
            Tooltip(item,
                    text=hlp,
                    wraplength=200)
        ctl.pack(padx=5, pady=5, fill=tk.X, expand=True)
        for item in (tbox, ctl):
            Tooltip(item,
                    text=hlp,
                    wraplength=200)
        ctl.pack(padx=5, pady=5, fill=tk.X, expand=True)
        for item in (tbox, ctl):
            Tooltip(item,
                    text=hlp,
                    wraplength=200)
          logger.debug("Added Smoothing Slider")
  
      def display_item_set(self):
          """ Load the graph(s) if available """
          session = get_config().session
keep keep keep keep replace replace replace replace keep 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_command.py