code: def save_overall_config(self, time_out=0):
          
          def save():
              if not os.path.exists(self.overall_config_path):
                  return
              self.overall_config_timer.setInterval(1000)
              if self.remaining_save_timer > 0:
                  self.statusbar.showMessage("Saving Overall Config in " + str(self.remaining_save_timer) + " seconds")
                  self.remaining_save_timer -= 1
              else:
                  self.clean_overall_config_loadouts()
                  with open(self.overall_config_path, "w", encoding='utf8') as f:
                      f.write(str(self.fixed_indices()))
                  self.statusbar.showMessage("Saved Overall Config to " + self.overall_config_path, 5000)
                  self.overall_config_timer.stop()
          if self.overall_config_timer is None:
              self.overall_config_timer = QTimer()
              self.overall_config_timer.timeout.connect(save)
          save_path = self.overall_config_path
          if save_path is None or not os.path.isfile(save_path):
              save_path = QFileDialog.getSaveFileName(self, "Save Overall Config", "", "Config Files (*.cfg)")[0]
              if not save_path:
                  self.statusbar.showMessage("Unable to save the configuration without a path", 5000)
                  return
              self.overall_config_path = save_path
          self.remaining_save_timer = time_out
          self.overall_config_timer.start(0)
docs: Schedules a save after given time_out
          :param time_out: The amount of seconds it should wait before saving
          :return: