NativeActionExtension
========================

.. currentmodule:: axioma.gui

.. class:: NativeActionExtension

	Класс-расширение для объектов класса :class:`~PyQt5.QtWidgets.QAction`. Обеспечивает регистрацию в системе пользовательского действия в под управлением расширения.
	При этом нет необходимости в изменении состояния в зависимости от окружения среды.
	Другими словами если необходимо создать кнопку на панели инструментов, которая доступна всегда, необходимо использовать данный класс.


	Унаследован от: 
	
	* :class:`~axioma.core.plugin.Extension`

	От него наследуются: 

	* :class:`~axioma.gui.NativeActionControllerExtension`
	* :class:`~axioma.gui.extension.ActionExtension`
	

		.. py:method:: NativeActionExtension(actionId, ribbonInfo = None, parent=None)

			Конструктор

			:param actionid: Идентификатор действия в ленточном интерфейсе
			:type actionid:  :class:`str`
			:param ribbonInfo: Положение в ленточном интерфейсе
			:type ribbonInfo:  :class:`~axioma.gui.RibbonActionInfo`
			:param parent: Родительский объект
			:type parent: :class:`~PyQt5.QtCore.QObject` или None
			
		.. py:method:: createAction(parent=None)

			Создает соответствующий объект типа :class:`~PyQt5.QtWidgets.QAction`

			:param parent: Родительский объект
			:type parent: :class:`~PyQt5.QtCore.QObject` или None
			:rtype: :class:`~PyQt5.QtWidgets.QAction`

		.. py:method:: customizeAction(action)

			Переопределяемый метод. Используется при создании объекта :class:`~PyQt5.QtWidgets.QAction` в методе :meth:`~axioma.gui.NativeActionExtension.createAction`
			если есть необходимость переопределить параметры создаваемого объекта. Пример см. ниже.

			:param action: Создаваемое действие, параметры которого нужно переопределить
			:type action: :class:`~PyQt5.QtWidgets.QAction`

		.. py:method:: actionid()

			Идентификатор действия в ленточном интерфейсе

			:rtype: :class:`str`

		.. py:method:: categoryId()

			Идентификатор категории в ленточном интерфейсе

			:rtype: :class:`str`

		.. py:method:: ribbonTabId()

			Идентификатор вкладки в ленточном интерфейсе

			:rtype: :class:`str`
			
		.. py:method:: ribbonGroupId()

			Идентификатор группы в ленточном интерфейсе

			:rtype: :class:`str`
			
		.. py:method:: ribbonInfo()

			Положение в ленточном интерфейсе

			:rtype: :class:`~axioma.gui.RibbonActionInfo`


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

  .. code-block:: python

		import axioma.gui
		import PyQt5.QtGui
		'''
		NativeActionExtension используется для регистрации пользовательского действия в системе. При этом нет необходимости в изменении состояния в зависимости от окружения среды.
		Другими словами если необходимо создать кнопку на панели инструментов, которая доступна всегда, необходимо использовать данный подход.
		'''

		# Объявляем свой класс расширения
		class ExampleActionExtension(axioma.gui.NativeActionExtension):

		# Необходимо переопределить метод customizeAction, задав параметры для создаваемого объекта QAction
		    def customizeAction(self, action):
		        action.setText("Пример действия")
		        action.setIcon(PyQt5.QtGui.QIcon(":/icons/share/32px/run.png"))
		        action.triggered.connect(self.slot);

		# Действие по нажатию
		    def slot(self):
		        print('Нажали кнопку')

		# Регистрация в системе на новой закладке
		ribbonExt = axioma.gui.extension.RibbonExtension()
		ribbonExt.addTab("ExamplePluginTab", "Пример модуля")
		actionExt = ExampleActionExtension("ActionExtensionId", axioma.gui.RibbonActionInfo()) 
		ribbonExt.addAction("ActionExtensionId", "ExamplePluginTab", "") # Добавление в интерфейс
		axioma.app.gui.prependExtensions([ribbonExt, actionExt]) # Регистрация

		
