docs: def on_preliminary_config_changed(self, config_m, prop_name, info):
          """Callback when a preliminary config value has been changed
  
          Mainly collects information, delegates handling further to _handle_config_update
  
          :param ConfigModel config_m: The config model that has been changed
          :param str prop_name: Should always be 'preliminary_config'
          :param dict info: Information e.g. about the changed config key
          """
          self.check_for_preliminary_config()
  
          method_name = info['method_name']  # __setitem__, __delitem__, clear, ...
  
          if method_name in ['__setitem__', '__delitem__']:
              config_key = info['args'][0]
              self._handle_config_update(config_m, config_key)
          # Probably the preliminary config has been cleared, update corresponding list stores
          elif config_m is self.core_config_model:
              self.update_core_config_list_store()
              self.update_libraries_list_store()
          else:
              self.update_gui_config_list_store()
              self.update_shortcut_settings()