          self.retfile = getattr(self, self.handletype.lower())()
          logger.debug("Initialized %s", self.__class__.__name__)
  
      @property
      def filetypes(self):
          """ Set the filetypes for opening/saving """
          all_files = ("All files", "*.*")
          filetypes = {"default": (all_files,),
                       "alignments": [("Faceswap Alignments", "*.fsa *.json"),
                                      all_files],
                       "config": [("Faceswap GUI config files", "*.fsw"), all_files],
 
</s> remove                      "config": [("Faceswap GUI config files", "*.fsw"), all_files],
 </s> add                      "config_project": [("Faceswap Project files", "*.fsw"), all_files],
                     "config_task": [("Faceswap Task files", "*.fst"), all_files],
                     "config_all": [("Faceswap Project and Task files", "*.fst *.fsw"), all_files], </s> remove         self.handletype = handletype
        self.contexts = {
            "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"}
            }
        }
        self.defaults = self.set_defaults()
        self.kwargs = self.set_kwargs(filetype, command, action, variable)
        self.retfile = getattr(self, self.handletype.lower())()
 </s> add         self._handletype = handletype
        self._defaults = self._set_defaults()
        self._kwargs = self._set_kwargs(title, initialdir, filetype, command, action, variable)
        self.retfile = getattr(self, "_{}".format(self._handletype.lower()))() </s> remove     def __init__(self, root, cli_opts, scaling_factor, pathcache, statusbar, session):
        logger.debug("Initializing %s: (root %s, cli_opts: %s, scaling_factor: %s, pathcache: %s, "
                     "statusbar: %s, session: %s)", self.__class__.__name__, root, cli_opts,
                     scaling_factor, pathcache, statusbar, session)
        self.root = root
        self.cli_opts = cli_opts
        self.scaling_factor = scaling_factor
        self.pathcache = pathcache
        self.statusbar = statusbar
        self.serializer = get_serializer("json")
        self.tk_vars = self.set_tk_vars()
        self.user_config = UserConfig(None)
        self.user_config_dict = self.user_config.config_dict
        self.command_notebook = None  # set in command.py
        self.session = session
        logger.debug("Initialized %s", self.__class__.__name__)
 </s> add     @property
    def _command_tabs(self):
        """ dict: Command tab titles with their IDs. """
        return self.command_notebook.tab_names

    @property
    def _tools_tabs(self):
        """ dict: Tools command tab titles with their IDs. """
        return self.command_notebook.tools_tab_names

    # Config
    @property
    def user_config(self):
        """ dict: The GUI config in dict form. """
        return self._user_config

    @property
    def user_config_dict(self):
        """ dict: The GUI config in dict form. """
        return self._user_config.config_dict </s> remove         self.tk_var = self.get_tk_var()
 </s> add         self.tk_var = self.get_tk_var(track_modified) </s> remove     def __init__(self, console=None, out_type=None):
        logger.debug("Initializing %s: (console: %s, out_type: '%s')",
                     self.__class__.__name__, console, out_type)
        self.console = console
        self.out_type = out_type
        self.recolor = re.compile(r".+?(\s\d+:\d+:\d+\s)(?P<lvl>[A-Z]+)\s")
        logger.debug("Initialized %s", self.__class__.__name__)
 </s> add     # GUI Objects
    @property
    def cli_opts(self):
        """ :class:`lib.gui.options.CliOptions`: The command line options for this GUI Session. """
        return self._gui_objects["cli_opts"]
    def _filetypes(self):
        """ dict: The accepted extensions for each file type for opening/saving """
          self.retfile = getattr(self, self.handletype.lower())()
          logger.debug("Initialized %s", self.__class__.__name__)
  
      @property
    def _filetypes(self):
        """ dict: The accepted extensions for each file type for opening/saving """
    def _filetypes(self):
        """ dict: The accepted extensions for each file type for opening/saving """
          all_files = ("All files", "*.*")
          filetypes = {"default": (all_files,),
                       "alignments": [("Faceswap Alignments", "*.fsa *.json"),
                                      all_files],
                       "config": [("Faceswap GUI config files", "*.fsw"), all_files],
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