          self.build()
          self.update()
          logger.debug("Initialized %s", self.__class__.__name__)
  
      def set_geometry(self, root):
          """ Set pop-up geometry """
          scaling_factor = get_config().scaling_factor
          pos_x = root.winfo_x() + 80
          pos_y = root.winfo_y() + 80
          width = int(600 * scaling_factor)
 
</s> remove         pos_x = root.winfo_x() + 80
        pos_y = root.winfo_y() + 80
 </s> add         pos_x = self._root.winfo_x() + 80
        pos_y = self._root.winfo_y() + 80 </s> remove         fullscreen = get_config().user_config_dict["fullscreen"]
        scaling_factor = get_config().scaling_factor
 </s> add         fullscreen = self._config.user_config_dict["fullscreen"]
        scaling_factor = self._config.scaling_factor </s> remove     def get_scaling(self):
        """ Get the display DPI """
        dpi = self.winfo_fpixels("1i")
        scaling = dpi / 72.0
        logger.debug("dpi: %s, scaling: %s'", dpi, scaling)
        return scaling

 </s> add  </s> remove     def standard_actions(self):
        """ Standard menu actions """
        self.add_command(label="Cut", command=lambda: self.widget.event_generate("<<Cut>>"))
        self.add_command(label="Copy", command=lambda: self.widget.event_generate("<<Copy>>"))
        self.add_command(label="Paste", command=lambda: self.widget.event_generate("<<Paste>>"))
        self.add_separator()
        self.add_command(label="Select all", command=self.select_all)

    def cm_bind(self):
        """ Bind the menu to the widget's Right Click event """
        button = "<Button-2>" if platform.system() == "Darwin" else "<Button-3>"
        logger.debug("Binding '%s' to '%s'", button, self.widget.winfo_class())
        scaling_factor = get_config().scaling_factor if get_config() is not None else 1.0
        x_offset = int(34 * scaling_factor)
        self.widget.bind(button,
                         lambda event: self.tk_popup(event.x_root + x_offset, event.y_root, 0))

    def select_all(self):
        """ Select all for Text or Entry widgets """
        logger.debug("Selecting all for '%s'", self.widget.winfo_class())
        if self.widget.winfo_class() == "Text":
            self.widget.focus_force()
            self.widget.tag_add("sel", "1.0", "end")
        else:
            self.widget.focus_force()
            self.widget.select_range(0, tk.END)
 </s> add class LongRunningTask(Thread):
    """ Runs long running tasks in a background thread to prevent the GUI from becoming
    unresponsive. </s> remove     def initialize_globals(self, pathscript):
 </s> add     def initialize_globals(self):
    def set_geometry(self):
          self.build()
          self.update()
          logger.debug("Initialized %s", self.__class__.__name__)
  
    def set_geometry(self):
          """ Set pop-up geometry """
          scaling_factor = get_config().scaling_factor
          pos_x = root.winfo_x() + 80
          pos_y = root.winfo_y() + 80
          width = int(600 * scaling_factor)
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/popup_configure.py