Files
Dispatch/Dispatch_V0.1.1/gui/components/model_view/_mv_interaction.py
2026-04-29 08:18:54 +04:00

42 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
# gui/components/model_view/_mv_interaction.py
# Камера, клики, события мыши — композиция специализированных миксинов.
from gui.components.model_view._mv_interaction_core import InteractionCoreMixin
from gui.components.model_view._mv_interaction_events import InteractionEventsMixin
from gui.components.model_view._mv_interaction_nav import InteractionNavigationMixin
class InteractionMixin(
InteractionCoreMixin,
InteractionEventsMixin,
InteractionNavigationMixin,
):
"""Камера, клик-обработка, колесо мыши, eventFilter."""
pass
# ---------------------------------------------------------------------------
# Module workflow notes
# ---------------------------------------------------------------------------
# 1) Задача модуля:
# Композиционный фасад взаимодействия со сценой: события мыши, навигация и базовые операции.
#
# 2) Последовательность действий и вызовов:
# A. Композиционный класс InteractionMixin:
# Назначение: объединяет поведение через InteractionCoreMixin,
# InteractionEventsMixin, InteractionNavigationMixin.
# InteractionCoreMixin — координаты, камера, утилиты interactor.
# InteractionEventsMixin — тонкий диспетчер eventFilter → InteractionManager.
# InteractionNavigationMixin — навигация, plotter click callback.
# Вся логика сценариев вынесена в _interaction_scenario.py + _scenario_*.py.
#
# 3) Важные ограничения и инварианты:
# - Модуль выполняется в составе ModelViewWidget и использует согласованные поля состояния self._... .
# - Межмодульная связность: только через фасад model_view; прямые обращения между zone, rack, shelf, cell запрещены.
# - Очистка состояния должна быть идемпотентной: повторный вызов не меняет корректное состояние в ошибочное.
#
# 4) Правило сопровождения:
# - Любое изменение сценария должно сопровождаться обновлением этого блока с сохранением фактического порядка вызовов.
# - При добавлении метода указывать его место в цепочке сценария (запуск, основной шаг, завершение, вспомогательная логика).