StateManager - Менеджер состояний

class axipy.da.StateManager

Наблюдатели за состоянием.

Примечание

Используйте готовый экземпляр этого класса axipy.da.state_manager.

Methods:

create(id[, init_value])

Создает наблюдатель за значением.

find(id)

Ищет наблюдатель с указанным идентификатором.

get(id)

Возвращает наблюдатель с указанным идентификатором.

create(id, init_value=None)

Создает наблюдатель за значением.

Параметры
  • id (str) – Идентификатор.

  • init_value (Optional[Any]) – Первоначальное значение.

Исключение

RuntimeError – Если наблюдатель с указанным идентификатором уже существует.

Пример использования
# Cоздает наблюдателя, зависящего от другого наблюдателя.
selection = state_manager.get(state_manager.Selection)
no_selection = state_manager.create('NoSelection', not selection.value())
selection.changed.connect(lambda: no_selection.setValue(not selection.value()))
Пример наблюдателя за количеством открытых растров
# Функция проверки состояния наблюдаталя.
# Проверяет присутствует ли открытый растр при изменении каталога.
def check_observer():
    def israster(obj):
        return isinstance(obj, Raster)
    rasters = list(filter( israster, data_manager.objects))
    self.__my_observer.setValue(len(rasters))
# Проверка существования наблюдателя.
# Если он не существует, то создается
if state_manager.find('MyStateManager') == None:
    self.__my_observer = state_manager.create('MyStateManager', False)
else:
    self.__my_observer = state_manager.find('MyStateManager')
# Привязка наболюдателя к событию на изменение каталога.
data_manager.updated.connect(check_observer)
# Привязка наблюдателя к кнопке с целью отслеживания состояния.
# Доступна, если открыт хотя бы один растр.
self.__action = self.create_action('Пример действия',
        icon='://icons/share/32px/run3.png', on_click=self.show_message,
        enable_on = 'MyStateManager')
Тип результата

ValueObserver

find(id)

Ищет наблюдатель с указанным идентификатором. Возвращает искомый наблюдатель или None, если не найдено.

Параметры

id (Union[str, DefaultKeys]) – Идентификатор.

Тип результата

Optional[ValueObserver]

get(id)

Возвращает наблюдатель с указанным идентификатором.

Параметры

id (Union[str, DefaultKeys]) – Идентификатор.

Исключение

RuntimeError – Если наблюдатель с указанным идентификатором не найден.

Пример использования
obs = state_manager.get(state_manager.Selection)
obs2 = state_manager.get('Editable')
Тип результата

ValueObserver