# ActiveToolPanel - Панель активного инструмента

class axipy.ActiveToolPanel

  Сервис предоставляющий доступ к панели активного инструмента.

  Пример использования.

      service = ActiveToolPanel()
      # Любой пользовательский графический элемент
      widget = QWidget()

      # Создаём обработчик для панели активного инструмента через который
      # будем управлять панелью.
      tool_panel = service.make_acceptable(
          title="Мой инструмент",
          observer_id=DefaultKeys.SelectionEditable,
          widget=widget)

      # Подписываемся на сигнал отправляемый после нажатия на кнопку "Применить" в панели
      tool_panel.accepted.connect(lambda: print("Применяем изменения"))

  Чтобы отобразить переданный ранее графический элемент нужно вызвать `axipy.AxipyActiveToolPanelHandlerBase.activate()`. Например при нажатии на пользовательскую кнопку.

  Панель активного инструмента созданная через `axipy.ActiveToolPanel.make_acceptable()` по умолчанию содержит кнопку «Применить». По нажатию на эту кнопку отсылается сигнал `axipy.AxipyAcceptableActiveToolHandler.accepted()` который можно обработать в пользовательском инструменте.

  Панель активного инструмента созданная через `axipy.ActiveToolPanel.make_custom()` представляет из себя пустой контейнер в который можно поместить пользовательский графический элемент. Это дает больше свободы для реализации управления панелью активного инструмента.

  Переданный идентификатор наблюдателя используется для управления видимостью и доступностью панели. Панель активного инструмента сразу закроется как только наблюдатель вернет False.

  Методы:

  `make_acceptable`(title, observer_id[, widget]) | Создает экземпляр обработчика, через который можно взаимодействовать с панелью активного инструмента.
  `make_custom`(title, observer_id[, widget]) | Создает экземпляр обработчика панели активного инструмента.

  make_acceptable(title: str, observer_id: Observer, widget: Optional[QWidget] = None) → AxipyAcceptableActiveToolHandler

    Создает экземпляр обработчика, через который можно взаимодействовать с панелью активного инструмента. По умолчанию добавляются кнопки «Применить/Отменить».

    Параметры:

      - title – Заголовок панели активного инструмента. Обычно это название инструмента.

      - observer_id – Идентификатор наблюдателя для управления видимостью и доступностью.

      - widget – Пользовательский виджет который будет отображаться в панели активного инструмента.

  make_custom(title: str, observer_id: Observer, widget: Optional[QWidget] = None) → AxipyCustomActiveToolPanelHandler

    Создает экземпляр обработчика панели активного инструмента. В который можно установить любой пользовательский графический элемент. Используется когда пользователю не нужны предустановленные элементы управления.

    Параметры:

      - title – Заголовок панели активного инструмента. Обычно это название инструмента.

      - observer_id – Идентификатор наблюдателя для управления видимостью и доступностью.

      - widget – Пользовательский виджет который будет отображаться в панели активного инструмента.