def initialize(self, plugin_name):
		"""Init by reading from global settings and setting up callbacks"""
		setctl = settings.GetSettingsController()
		for key in self:
			value_type = self.setting_descriptions[key]["type"]
			value = setctl.get_plugin_config(plugin_name, key, value_type)
			if value is not None:
				self[key] = value
			elif _is_core_setting(key):
				default = self.setting_descriptions[key]["value"]
				setctl.set_plugin_config(plugin_name, key, default, value_type)
		setctl.connect("value-changed", self._value_changed, plugin_name)
		# register for unload notification
		if not plugin_name.startswith("core."):
			plugins.register_plugin_unimport_hook(plugin_name,
					self._disconnect_all, plugin_name)
Example #2
0
 def initialize(self, plugin_name):
     """Init by reading from global settings and setting up callbacks"""
     setctl = settings.GetSettingsController()
     for key in self:
         value_type = self.setting_descriptions[key]["type"]
         value = setctl.get_plugin_config(plugin_name, key, value_type)
         if value is not None:
             self[key] = value
         elif _is_core_setting(key):
             default = self.setting_descriptions[key]["value"]
             setctl.set_plugin_config(plugin_name, key, default, value_type)
     setctl.connect("value-changed", self._value_changed, plugin_name)
     # register for unload notification
     if not plugin_name.startswith("core."):
         plugins.register_plugin_unimport_hook(plugin_name,
                                               self._disconnect_all,
                                               plugin_name)
Example #3
0
def register_alternative(caller, category_key, id_, **kwargs):
    """
    Register a new alternative for the category @category_key

    @caller: Must be the caller's plugin id (Plugin __name__ variable)

    @id_ is a string identifier for the object to register
    @kwargs are the keyed arguments for the alternative constructor

    Returns True with success
    """
    caller = str(caller)
    category_key = str(category_key)
    id_ = str(id_)

    if category_key not in _available_alternatives:
        _plugin_configuration_error(
            caller, "Category '%s' does not exist" % category_key)
        return
    alt = _available_alternatives[category_key]
    id_ = caller + "." + id_
    kw_set = set(kwargs)
    req_set = set(alt["required_keys"])
    if not req_set.issubset(kw_set):
        _plugin_configuration_error(
            caller, "Configuration error for alternative '%s':" % category_key)
        _plugin_configuration_error(caller,
                                    "Missing keys: %s" % (req_set - kw_set))
        return
    _alternatives[category_key][id_] = kwargs
    pretty.print_debug(__name__,
                       "Registered alternative %s: %s" % (category_key, id_))
    setctl = settings.GetSettingsController()
    setctl._update_alternatives(category_key, _alternatives[category_key],
                                alt["filter"])

    # register the alternative to be unloaded
    plugin_id = ".".join(caller.split(".")[2:])
    if plugin_id and not plugin_id.startswith("core."):
        plugins.register_plugin_unimport_hook(plugin_id,
                                              _unregister_alternative, caller,
                                              category_key, id_)
    return True
def register_alternative(caller, category_key, id_, **kwargs):
	"""
	Register a new alternative for the category @category_key

	@caller: Must be the caller's plugin id (Plugin __name__ variable)

	@id_ is a string identifier for the object to register
	@kwargs are the keyed arguments for the alternative constructor

	Returns True with success
	"""
	caller = str(caller)
	category_key = str(category_key)
	id_ = str(id_)

	if category_key not in _available_alternatives:
		_plugin_configuration_error(caller,
				"Category '%s' does not exist" % category_key)
		return
	alt = _available_alternatives[category_key]
	id_ = caller + "." + id_
	kw_set = set(kwargs)
	req_set = set(alt["required_keys"])
	if not req_set.issubset(kw_set):
		_plugin_configuration_error(caller,
			"Configuration error for alternative '%s':" % category_key)
		_plugin_configuration_error(caller, "Missing keys: %s" %
				(req_set - kw_set))
		return
	_alternatives[category_key][id_] = kwargs
	pretty.print_debug(__name__,
		"Registered alternative %s: %s" % (category_key, id_))
	setctl = settings.GetSettingsController()
	setctl._update_alternatives(category_key, _alternatives[category_key],
	                            alt["filter"])

	# register the alternative to be unloaded
	plugin_id = ".".join(caller.split(".")[2:])
	if plugin_id and not plugin_id.startswith("core."):
		plugins.register_plugin_unimport_hook(plugin_id,
				_unregister_alternative, caller, category_key, id_)
	return True