# -*- 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) Правило сопровождения:
#    - Любое изменение сценария должно сопровождаться обновлением этого блока с сохранением фактического порядка вызовов.
#    - При добавлении метода указывать его место в цепочке сценария (запуск, основной шаг, завершение, вспомогательная логика).
