              self.err = sys.exc_info()
              logger.debug("Error in thread (%s): %s", self._name,
                           self.err[1].with_traceback(self.err[2]))
          finally:
              self.complete.set()
              # Avoid a refcycle if the thread is running a function with
              # an argument that has a member that points to the thread.
              del self._target, self._args, self._kwargs
  
      def get_result(self):
          """ Return the result from the queue """
 
</s> remove         """ Return the result from the queue """
        if not self.complete.is_set():
 </s> add         """ Return the result from the given task.

        Returns
        -------
        varies:
            The result of the thread will depend on the given task. If a call is made to
            :func:`get_result` prior to the thread completing its task then ``None`` will be
            returned
        """
        if not self._complete.is_set(): </s> remove         """ Run the target in a thread """
 </s> add         """ Commence the given task in a background thread. """ </s> remove         self._config.set_cursor_busy(widget=self.widget)
        self.complete = Event()
 </s> add         self._config.set_cursor_busy(widget=self._widget)
        self._complete = Event()
            self._complete.set()
            # Avoid a ref-cycle if the thread is running a function with
              self.err = sys.exc_info()
              logger.debug("Error in thread (%s): %s", self._name,
                           self.err[1].with_traceback(self.err[2]))
          finally:
            self._complete.set()
            # Avoid a ref-cycle if the thread is running a function with
            self._complete.set()
            # Avoid a ref-cycle if the thread is running a function with
              # an argument that has a member that points to the thread.
              del self._target, self._args, self._kwargs
  
      def get_result(self):
          """ Return the result from the queue """
keep keep keep keep replace 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/utils.py