EditableTable -  Редактируемая таблица
================================================

.. currentmodule:: axioma.core.dp

.. class:: EditableTable

	.. note:: Абстрактный

	Абстрактный класс, представляющий редактируемую таблицу

	Унаследован от:

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

	* :class:`~axioma.core.dp.TransactionalTable`


	Методы:

		.. method:: save(snapshot)

			Сохранить данные в таблице

			:param snapshot: образ изменений в таблице
			:type snapshot: :class:`~axioma.core.dp.HistorySnapshot`
			:raises Runtime: :exc:`~axioma.common.RuntimeException` - функция сохранения не выполнилась до конца

		.. py:method:: modifyTableSchema(jsonAttributes)

			Изменяет структуру таблицы в соответствии с новой схемой таблицы, представленной в виде JSON. Подробнее по формированию схемы см. :meth:`~axioma.core.create_from_json`

			:param jsonAttributes: JSON-представление схемы таблицы
			:type jsonAttributes: :class:`dict` [ :class:`~PyQt5.QtCore.QJsonValue` ]
			:return: True, если успешно. В противном случае False
			:rtype: :class:`bool`

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

			.. code-block:: python

				table = axioma.core.open_json({'src': '/tmp/world.tab'})
				if table is not None:
					json = table.saveSchemaToJson() # Сохраняем текущую схему в виде JSON-представления
					newField = {"name": "newField", "type": "string", "length": 30}
					#json.insert(3, newField) # Вставим поле в определенную позицию
					del json[2] # Удалим поле
					json.append(newField)  # Добавим поле
					if table.modifyTableSchema(json): # Изменяем структуру таблицы в соотвествие с JSON-представлением
						print('Структура таблицы изменена')


			

		.. method:: tableSaved()

			[signal] Таблица была сохранена
