Hi All

I'm trying to find some good signals for identifying changes to data in a 
memory layer.

I've got a functional memory provider plugin, at the moment saving each memory 
layer to a GML file.  However I'm not sure I've got the best approach to 
identifying when data changes are made to memory layers so that I can identify 
when the layers need to be updated.

The best I've got so far is 
            QObject.connect(layer, SIGNAL("committedAttributesDeleted(const 
QString &, const QgsAttributeIds )"),self.setProjectDirty2)
            QObject.connect(layer, SIGNAL("committedAttributesAdded(const 
QString &, const QList<QgsField> &)"),self.setProjectDirty2)
            QObject.connect(layer, SIGNAL("committedFeaturesDeleted(const 
QString &, const QgsFeatureIds & )"),self.setProjectDirty2)
            QObject.connect(layer, SIGNAL("committedFeaturesAdded(const QString 
&, const QgsFeatureIds &)"),self.setProjectDirty2)
            QObject.connect(layer, 
SIGNAL("committedAttributeValuesChanges(const QString &, const 
QgsChangedAttributesMap &)"),self.setProjectDirty2)

This works (at least for user changes - it won't identify changes made by other 
plugins, for example).  But it does seem a bit cumbersome.  

I'd hoped find something directly from the provider, since this would also 
identify programmatic data changes.  I thought I was onto something when I saw  

            QgsDataProvider.dataChanged()

>From its name this seemed perfect, but the documentation states it is for a 
>different purpose - asynchronous tasks registering completion of data changes 
>:-(  And looking through the memory provider code, I can't see any signals 
>being emitted.

I'd also thought that using QgsVectorLayer.layerModified(bool) might have been 
a bit more succinct.  But that gets triggered more often than I want.  

Is there any obvious signal I'm missing?

Thanks
Chris
______________________________________________________________________________________________________

This message contains information, which is confidential and may be subject to 
legal privilege. 
If you are not the intended recipient, you must not peruse, use, disseminate, 
distribute or copy this message.
If you have received this message in error, please notify us immediately (Phone 
0800 665 463 or [email protected]) and destroy the original message.
LINZ accepts no responsibility for changes to this email, or for any 
attachments, after its transmission from LINZ.

Thank you.
______________________________________________________________________________________________________
_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to