SelectionManager - Класс доступа к выделенным объектам
======================================================

.. currentmodule:: axioma.core.dp

.. class:: SelectionManager

	Класс доступа к выделенным объектам. Получить ссылку на менеджер можно у экземпляра класса :class:`~axioma.gui.Gui` посредством :meth:`~axioma.gui.Gui.selectionManager()`

	Унаследован от :class:`~PyQt5.QtCore.QObject`
	
		.. .. method:: SelectionManager(parent=None)
		..
		..	Конструктор класса
		..	
		..	:param parent: Родительский объект
		..	:type parent: :class:`~PyQt5.QtCore.QObject`
			
		.. method:: readSelectedFeaturesData()
		
			Получить курсор с данными для всех выделенных объектов
			
			:return: Курсор
			:rtype: :class:`~axioma.core.dp.Cursor`
		
			.. code-block:: python
				:caption: Пример получения выделенных объектов:
				:name: selectionManager-code-sample

				import axioma.app

				selectionManager = axioma.app.gui.selectionManager()
				cursor = selectionManager.readSelectedFeaturesData()
				for feature in cursor:
					print(feature.valuesToText())

		.. method:: hasSelection()

			Имеет ли выделенные объекты

			:rtype: :class:`bool`

		.. method:: hasSelection(table)

			Имеет ли заданная таблица выделенные объекты

			:param table: таблица для проверки
			:type table: :class:`~axioma.core.dp.Table`
			:rtype: :class:`bool`

		.. method:: hasTarget()

			Имеет ли выделение для изменяемых объектов

			:rtype: :class:`bool`

		.. method:: hasTarget(table)

			Имеет ли заданная таблица выделение для изменяемых объектов

			:param table: таблица для проверки
			:type table: :class:`~axioma.core.dp.Table`
			:rtype: :class:`bool`

		.. method:: currentSelection()

			Текущее выделение

			:rtype: :class:`~axioma.core.dp.Selection`

		.. method:: currentTarget()

			Текущее выделение изменяемых объектов

			:rtype: :class:`~axioma.core.dp.Selection`

		.. method:: sourceTableWithSelection()

			Получить таблицу, являющуюся источником текущего выделения

			:rtype: :class:`~axioma.core.dp.Table` или :any:`None`

			.. code-block:: python

				selectionManager = axioma.app.gui.selectionManager()
				table = selectionManager.sourceTableWithSelection()
				# Эквивалентно сдедующей строчке:
				# table = selectionManager.currentSelection().table

		.. method:: selectionChanged(selectionChange)

			[signal] Выделение было изменено

			:param selectionChange: информация о смене выделения
			:type selectionChange: :class:`~axioma.core.dp.SelectionChangeInfo`
