HasDependencies
===============================

.. currentmodule:: axioma.core.plugin

.. class:: HasDependencies

	Mix-in класс, который позволяет добавлять поддержку механизма разрешения
	зависимостей.

	Наследники:

	*	:class:`~axioma.core.plugin.Extension`
	*	:class:`~axioma.gui.extension.ActionController`
	*	:class:`~axioma.gui.extension.ToolController`

	.. method::	isReady()

		Возвращает True, если расширение готово к использованию, иначе False.
		Реализация по умолчанию возвращает True, если все зависимости расширения
		были разрешены или зависимости отсутствуют.

		:rtype: :class:`bool`

	.. method:: onResolved()

		Этот метод вызывается после того как все зависимости расширения были
		разрешены. Реализация по умолчанию испускает сигнал :meth:`~axioma.core.plugin.Extension.ready` если метод
		:meth:`~axioma.core.plugin.Extension.isReady` возвратил True.

	.. method:: createDependencyGetter(type, name)

		Метод регистрирует зависимость с типом ``type`` и именем ``name``, и возвращает
		функцию, с помощью которой можно будет получить доступ к сервису,
		зарегистрированному с этим типом и именем.

		:param type: тип зависимости, должен быть подтипом :class:`~PyQt5.QtCore.QObject`.
		:type type: :class:`type`
		:param name: имя зависимости.
		:type name: :class:`str`

	.. method:: createDependencyGetter(type)

		Метод равнозначен вызову ``createDependencyGetter(type, type.metaObject().className())``

		:param type: тип зависимости, должен быть подтипом :class:`~PyQt5.QtCore.QObject`.
		:type type: :class:`type`
