HasHistory
=================

.. currentmodule:: axioma.core.dp

.. class:: HasHistory

	Абстрактный класс для поддержки истории изменений

	От него наследуются: 
	
	* :class:`~axioma.core.dp.HasFeatureHistory`

		.. py:method:: currentChangeIndex()

			Текущий индекс изменения данных

			:rtype: :class:`int`

		.. py:method:: setCurrentChangeIndex(index)

			Установка текущего индекса изменений. При этом сохраняется возможность отката вперед до значения, не превышающего :meth:`~axioma.core.dp.HasHistory.historySize`

			:param index: Значение текущего изменения. Значение не должно превышать общего количества изменений :meth:`~axioma.core.dp.HasHistory.historySize`
			:type index: :class:`int`

		.. py:method:: description(index)

			Получение описание по его индексу, если оно ранее устанавливалось

			:param index: Индекс изменения
			:type index: :class:`int`
			:rtype: :class:`str`
			
		.. py:method:: setDescription(index, value)

			Установка описания для изменения по индексу

			:param index: Индекс изменения
			:type index: :class:`int`
			:param value: Текст описания для данного изменения
			:type value: :class:`str`
			
		.. py:method:: historySize()

			Общий размер изменений. Данное значение может быть больше текущего изменения, возвращаемого :meth:`~axioma.core.dp.HasHistory.currentChangeIndex`, если ранее были сделаны откаты назад.

			:rtype: :class:`int`

		.. py:method:: hasModified()

			Имеются ли изменения

			:return: True, если да. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: rollBack(steps = None)

			Откат назад на заданное количество шагов

			:param steps: Количество шагов отката назад. Если опустить этот параметр, будет произведен откат всех изменений
			:type steps: :class:`int`
			:return: True, если удачно. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: rollForward(steps = 1)

			Производится откат вперед

			:param steps: Количество шагов. По умолчанию 1.
			:type steps: :class:`int`
			:return: True, если удачно. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: canRollBack()

			Возможен ли откат назад

			:rtype: :class:`bool`

		.. py:method:: canRollForward()

			Возможен ли откат вперед

			:rtype: :class:`bool`
