Автозагрузка плагинов происходит на этапе инициализации ядра Аксиомы.ГИС
(Core
). При этом многие сервисы, которые требуются для
работы плагинов еще не созданы. Для оповещения о готовности этих сервисов
существует механизм управления зависимостями.
Интерфейс базового класса HasDependencies
позволяет
регистрировать и получать доступ к зависимостям с помощью метода
createDependencyGetter()
.
Например:
from axioma.core.plugin import *
# Объявляем свой класс-расширение
class MyExtension(axioma.core.plugin.Extension):
def __init__(self):
super().__init__()
# Регистрируем зависимость от axioma.gui.Gui:
self.gui = self.createDependencyGetter(axioma.gui.Gui)
def createMyMapView(self, mymap):
# Используем зависимость:
mapView = self.gui().createMapView(mymap)
...
return mapView
# Регистрируем расширение для разрешения зависимостей
ext = MyExtension()
axioma.app.gui.prependExtension(ext)
...
mapView = ext.createMyMapView(map)
Зарегистрировать сервис, к которому можно получить доступ через механизм
разрешения зависимостей, можно с помощью метода registerService()
.
Зарегистрировать созданное расширение можно с помощью метода prependExtension()
.
На данный момент механизм управления зависимостями оповещает о создании следующих сервисов:
Для Аксиома.ГИС и Аксиома.Runtime:
axioma.core.Core
axioma.render.Render
axioma.gui.Gui
axioma.core.plugin.PluginManager
axioma.render.GeometryStyleManager
Только для Аксиома.ГИС: