StateManager - Менеджер состояний¶
-
class
axipy.da.
StateManager
¶ Наблюдатели за состоянием.
Примечание
Используйте готовый экземпляр этого класса
axipy.da.state_manager
.-
create
(id, init_value=None)¶ Создает наблюдатель за значением.
- Параметры
- Исключение
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')
- Тип результата
-
find
(id)¶ Ищет наблюдатель с указанным идентификатором. Возвращает искомый наблюдатель или None, если не найдено.
- Параметры
id (
Union
[str
,DefaultKeys
]) – Идентификатор.- Тип результата
-
get
(id)¶ Возвращает наблюдатель с указанным идентификатором.
- Параметры
id (
Union
[str
,DefaultKeys
]) – Идентификатор.- Исключение
RuntimeError – Если наблюдатель с указанным идентификатором не найден.
obs = state_manager.get(state_manager.Selection) obs2 = state_manager.get('Editable')
- Тип результата
-