Страница 1 из 1
Как перехватить событие создания нового объекта&
Добавлено: 19 фев 2015, 14:29
Филиппов Владислав
Как перехватить событие создания нового объекта, при вставки геометрии на слой из буфера обмена?
Нужно показать при этом форму ввода атрибутов пользователю.
Смотрел в QGIS 2.6 в свойствах слоя раздел "Действия", пока решения не нашёл.
В свойствах проекта есть раздел "макросы" с такими заглушками:
Код: Выделить всё
def openProject():
pass
def saveProject():
pass
def closeProject():
pass
вот было бы что-то типа onCreateFeature
Re: Как перехватить событие создания нового объекта&
Добавлено: 20 фев 2015, 10:41
yellow-sky
Из буфера в слой можно вставить очень много записей (именно записей, геометрии в чистом виде в QGIS не копируются, вроде как). Поэтому, боюсь что тут только программно.
Если программно подходит, то можно посмотреть в сторону подписывания на события активного слоя:
featureAdded
В параметрах передается fid добавленной записи.
После можно добавить вызов(ы) открытия окна редактирования: iface.openFeatureForm с передачей векторного слоя и fid записи.
Re: Как перехватить событие создания нового объекта&
Добавлено: 20 фев 2015, 10:50
Филиппов Владислав
Re: Как перехватить событие создания нового объекта&
Добавлено: 20 фев 2015, 11:05
yellow-sky
Что-то типа того.
Если нужно, чтобы это работало постоянно, то тут будет трех этапная обработка:
1) Подписаться на событие смены активного слоя: iface.currentLayerChanged.
2) В обработчике события currentLayerChanged подписываться\отписываться на событие QgsVectorLayer.featureAdded
3) В обработчике featureAdded ловить fid вставленных записей, и (исходя из какой-то логики) запускать iface.openFeatureForm.