      def set_defaults(self):
          """ Set the default filetype to be first in list of filetypes,
              or set a custom filetype if the first is not correct """
          defaults = {key: val[0][1].replace("*", "")
                      for key, val in self.filetypes.items()}
          defaults["default"] = None
          defaults["video"] = ".mp4"
          defaults["image"] = ".png"
          logger.debug(defaults)
          return defaults
 
</s> remove     def set_defaults(self):
        """ Set the default filetype to be first in list of filetypes,
            or set a custom filetype if the first is not correct """
 </s> add     @property
    def _contexts(self):
        """dict: Mapping of commands, actions and their corresponding file dialog for context
        handle types. """
        return {
            "effmpeg": {
                "input": {
                    "extract": "filename",
                    "gen-vid": "dir",
                    "get-fps": "filename",
                    "get-info": "filename",
                    "mux-audio": "filename",
                    "rescale": "filename",
                    "rotate": "filename",
                    "slice": "filename"},
                "output": {
                    "extract": "dir",
                    "gen-vid": "savefilename",
                    "get-fps": "nothing",
                    "get-info": "nothing",
                    "mux-audio": "savefilename",
                    "rescale": "savefilename",
                    "rotate": "savefilename",
                    "slice": "savefilename"}
                }
            }

    def _set_defaults(self):
        """ Set the default file type for the file dialog. Generally the first found file type
        will be used, but this is overridden if it is not appropriate.

        Returns
        -------
        dict:
            The default file extension for each file type
        """ </s> remove     def set_kwargs(self, filetype, command, action, variable=None):
        """ Generate the required kwargs for the requested browser """
        logger.debug("Setting Kwargs: (filetype: '%s', command: '%s': action: '%s', "
                     "variable: '%s')", filetype, command, action, variable)
 </s> add     def _set_kwargs(self, title, initialdir, filetype, command, action, variable=None):
        """ Generate the required kwargs for the requested file dialog browser.

        Returns
        -------
        dict:
            The key word arguments for the file dialog to be launched
        """
        logger.debug("Setting Kwargs: (title: %s, initialdir: %s, filetype: '%s', "
                     "command: '%s': action: '%s', variable: '%s')",
                     title, initialdir, filetype, command, action, variable) </s> remove             tk.font.nametofont(font).configure(family=get_config().default_font[0],
                                               size=get_config().default_font[1])
 </s> add             tk.font.nametofont(font).configure(family=self._config.default_font[0],
                                               size=self._config.default_font[1]) </s> remove         """ Set the root or widget cursor to default """
 </s> add         """ Set the root or widget cursor to default.

        Parameters
        ----------
        widget: tkinter object, optional
            The widget to set default cursor for. If the provided value is ``None`` then sets the
            cursor busy for the whole of the GUI. Default: ``None``
        """ </s> remove     """ Return the font list with any @prefixed or non-unicode characters stripped
 </s> add     """ Return the font list with any @prefixed or non-Unicode characters stripped
                    for key, val in self._filetypes.items()}
      def set_defaults(self):
          """ Set the default filetype to be first in list of filetypes,
              or set a custom filetype if the first is not correct """
          defaults = {key: val[0][1].replace("*", "")
                    for key, val in self._filetypes.items()}
          defaults["default"] = None
          defaults["video"] = ".mp4"
          defaults["image"] = ".png"
          logger.debug(defaults)
          return defaults
keep keep keep keep 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