def featuresAdded(self, features):
     if not isTracked(self.layer):
         return
     for feature in features:
         self.hasChanges = True
         self.featuresToUpdate.add(feature.id())
         self.newFeatures.append(feature.id())
 def featureDeleted(self, fid):
     if not isTracked(self.layer):
         return
     if not self.canUseSmartUpdate:
         return
     if fid >= 0:
         self.hasChanges = True
         fIterator = self.layer.dataProvider().getFeatures(QgsFeatureRequest(fid));
         try:
             geogigfid = self._getFid(fIterator.next())
             self.featuresToRemove.append(geogigfid)
         except Exception, e:
             _logger.error(str(e))
             self.canUseSmartUpdate = False
             return
    def editingStopped(self):
        if not isTracked(self.layer):
            _logger.debug("Editing stopped for layer '%s'. Layer is not tracked" % self.layer.name())
            return
        if not self.hasChanges:
            _logger.debug("Editing stopped for layer '%s' without changes" % self.layer.name())
            return
        if self.rollback:
            self.rollback = False
            return
        _logger.debug("Editing stopped for layer '%s'." % self.layer.name())

        trackedlayer = getTrackingInfo(self.layer)
        insync = trackedlayer.insync
        setInSync(self.layer, False)

        self.ensureUniqueIDs()
        self.hasChanges = False

        try:
            repo = createRepository(trackedlayer.repoFolder(), False)
        except Py4JConnectionException:
            _logger.debug("Could not connect to repository for updating layer '%s'" % self.layer.name())
            QtGui.QApplication.restoreOverrideCursor()
            dlg = GatewayNotAvailableWhileEditingDialog(iface.mainWindow())
            dlg.exec_()
            setInSync(self.layer, False)
            return
        QtGui.QApplication.restoreOverrideCursor()
        if insync and self.canUseSmartUpdate:
            try:
                _logger.debug("Trying smart update on layer %s and repo %s"
                              % (self.layer.source(), trackedlayer.reponame))
                self.doSmartUpdate(trackedlayer.layername, repo)
            except Exception, e:
                _logger.error(traceback.format_exc())
                _logger.debug("Smart update failed. Using import update instead")
                self.doUpdateLayer(trackedlayer.layername, repo)
 def featuresAdded(self, features):
     if not isTracked(self.layer):
         return
     for feature in features:
         self.newFeatures.append(feature.id())
 def featuresAdded(self, features):
     if not isTracked(self.layer):
         return
     for feature in features:
         self.newFeatures.append(feature.id())
 def featureTypeChanged(self):
     if isTracked(self.layer):
         self.hasChanges = True
         self.canUseSmartUpdate = False
 def featureChanged(self, fid):
     if isTracked(self.layer):
         self.hasChanges = True
         self.featuresToUpdate.add(fid)