RibbonExtension
===============

.. currentmodule:: axioma.gui.extension

.. class:: RibbonExtension

  Класс для добавления элементов в ленточный интерфейс. Идентификаторы ленточного интерфейса для стандартных элементов можно получить из класса :class:`~axioma.gui.RibbonId`

  Методы:

    .. method:: addTab(id, text)

      Добавление вкладки.

      :param id: Идентификатор вкладки
      :type id: :class:`str`
      :param text: Название вкладки
      :type text: :class:`str`

    .. method:: addGroup(tabId, id, text)

      Добавление группы внутри вкладки.

      :param idTab: Идентификатор вкладки
      :type idTab: :class:`str`
      :param id: Идентификатор группы
      :type id: :class:`str`
      :param text: Название группы
      :type text: :class:`str`

    .. method:: addCategory(id, text)

      Добавление категории команд.

      :param id: Идентификатор категории
      :type id: :class:`str`
      :param text: Название категории
      :type text: :class:`str`

    .. method:: addAction(id, tabId, groupId[, rowSpan = 1, columnSpan = 1, row = -1, column = -1])

      Добавление кнопки действия или инструмента в ленточный интерфейс.
      Размер и положение кнопки измеряется ячейками 16x16 пикселей.

      :param id: Идентификатор кнопки действия или инструмента
      :type id: :class:`str`
      :param tabId: Идентификатор вкладки
      :type tabId: :class:`str`
      :param groupId: Идентификатор группы
      :type groupId: :class:`str`
      :param rowSpan: вертикальный размер кнопки в группе
      :type rowSpan: :class:`int`
      :param columnSpan: горизонтальный размер кнопки в группе
      :type columnSpan: :class:`int`
      :param row: вертикальная позиция кнопки в группе
      :type row: :class:`int`
      :param column: горизонтальная позиция кнопки в группе
      :type column: :class:`int`

Идентификаторы ленточного интерфейса для стандартных категорий можно получить из класса :class:`~axioma.gui.RibbonId`

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

  .. code-block:: python
  
    # Получаем ссылку на существующий интерфейс приложения
    ribbonExt = axioma.gui.extension.RibbonExtension()
    # Добавляем новую группу во каладку с инструментами для карты
    ribbonExt.addGroup("map","MyGroupId", "Описание")
    # Добавляем действие  в созданную группу
    ribbonExt.addAction("MyActionId", "map", "MyGroupId")
    # Расширение, добавляющее QAction, создаваемый функцией createAction
    actionExt = axioma.gui.extension.ActionExtension(createAction, "ExampleActionId")

    # Пример функции createAction
    def createAction(parent):
        action = PyQt5.QtWidgets.QAction(parent)
        action.setText("Действие")
        action.triggered.connect(lambda: QMessageBox.information(axioma.app.mainWindow, "Заголовок", "Сообщение") )
        return action

  
