I'm working on plugin updating existing shapefile by adding new features to it. And I have a problem with signal that hasn't been emitted by QGIS, when I've added features to layer, using dataProvider().addFeatures(). I'm pretty sure that I have defined correctly connection signal and function, when it is emitted.
layer.committedFeaturesAdded.connect(self.onFeaturesAdded)
Becasue when I add feature using tool in QGIS from Digitizing Toolbar, it works fine and function is running.
The problem is when I add features manually - using python.
def selectFeatures(self,diviLayer, userLayer84):
self.diviLayer=diviLayer
self.userLayer84=userLayer84
features=[]
Processing.initialize()
general.runalg('qgis:selectbylocation', self.userLayer84, self.diviLayer, u'intersects',0.000001,0)
self.userLayer84.invertSelection()
number=self.userLayer84.selectedFeatureCount()
for feature in self.userLayer84.selectedFeatures():
attributes=[feature['Lokaliz'],feature['Zadanie'],feature['Projekt'],feature['Wykonawca'],feature['X'],feature['Y'],feature['h'],feature['Azymut'],feature['Dokl'],feature['KmEt'],feature['Km2Et'],feature['Poloz'],feature['Domiar'],feature['Nr_dz'],feature['Obr'],feature['JE'],feature['Pow'],feature['Woj'],feature['Data'],feature['Czas'],feature['xtrPhtC'],feature['xtrComC'],feature['xtrAudC'],feature['xtrFilC'],feature['NazwaRap'],feature['Sciezka']]
feat=QgsFeature()
feat.setAttributes(attributes)
feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(float(feature['Y']),float(feature['X']))))
features.append(feat)
return [features,number]
[features,number]=self.selectFeatures(self.diviLayer,self.userLayer84)
self.diviLayer.startEditing()
self.diviLayer.dataProvider().addFeatures(features)
self.diviLayer.commitChanges()
It seems like the signal is not emitted? Has anyone of you had a similar problem? Or maybe you know, where I'm making mistake.