# ToolButton - Кнопка с инструментом

class axipy.ToolButton

  Базовые классы: `Button`

  Переключаемая кнопка с инструментом.

  См.также

  `axipy.ViewTool`. `axipy.ObserverManager`.

  Пример

      from typing import Optional

      import axipy

      # Класс инструмента
      class MyTool(axipy.ViewTool):
          def __init__(self, param: str) -> None:
              self._param: str = param

      def on_create_tool(view_type: axipy.ViewTool.ViewType) -> Optional[axipy.ViewTool]:
          if view_type == axipy.ViewTool.ViewType.MAP_VIEW:
              # Если необходимо передавать параметры в инструмент, то их можно передать в конструктор инструмента
              # внутри функции:
              param = "Передаваемый параметр"
              return MyTool(param)
          return None

      # Создание кнопки с инструментом
      button = axipy.ToolButton(
          title="Мой инструмент",
          on_create_tool=on_create_tool,
      )

      # Добавление кнопки на панель "Основные", на вкладку "Команды"
      position = axipy.Position("Основные", "Команды")
      position.add(button)
      # Чтобы удалить добавленную кнопку нужно вызвать remove, или перезапустить приложение.
      # button.remove()

  Конструктор класса:

  `__init__`(title, on_create_tool[, icon, ...]) | Конструктор класса.

  Свойства:

  `action` | Возвращает ссылку на объект `PySide2.QtWidgets.QAction`.
  `is_toggled` | Возвращает признак, нажата ли кнопка.
  `observer` | Возвращает наблюдатель для определения доступности кнопки.
  `observer_id` | Возвращает идентификатор наблюдателя для определения доступности кнопки.

  Методы:

  `remove`() | Удаляет кнопку из меню.

  __init__(title: str, on_create_tool: Callable[[ViewType], Optional[ViewTool]], icon: Union[str, Path, QIcon] = '', enable_on: Optional[Observer] = None, tooltip: Optional[str] = None, doc_file: Optional[Union[str, Path]] = None, on_toggle: Optional[Callable[[bool], None]] = None)

    Конструктор класса.

    Параметры:

      - title – Текст.

      - on_create_tool – Функция создающая инструмент. Передается функция, которая будет вызвана в момент создания инструмента для карты. Функция должна принимать обязательный параметр типа `axipy.ViewTool.ViewType` и возвращать экземпляр `axipy.ViewTool` или `None`.

      - icon – Иконка. Может быть путем к файлу или адресом ресурса.

      - enable_on – Наблюдатель, для определения доступности кнопки.

      - tooltip – Строка с дополнительной короткой информацией по данному действию.

      - doc_file – Полный путь к html файлу с документацией.

      - on_toggle – Действие на нажатие. Передается функция, которая будет вызвана при нажатии на кнопку.

  property action: QAction

    Возвращает ссылку на объект `PySide2.QtWidgets.QAction`. Через него можно производить дополнительные необходимые действия через объект Qt.

    Пример задания всплывающей подсказки, используя метод класса `PySide2.QtWidgets.QAction`:

        button.action.setToolTip("Всплывающая подсказка")

  property is_toggled: bool

    Возвращает признак, нажата ли кнопка.

  property observer: Optional[Observer]

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

  property observer_id: str

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

  remove()

    Удаляет кнопку из меню.