On Wed, Apr 24, 2013 at 12:20 PM, Radim Blazek <radim.bla...@gmail.com> wrote: >> >> Maybe better, but we are already using startEditing() and >> commitChanges() in vector layer so I would prefer to use the same. > > I added to QgsVectorDataProvider: > > virtual bool startEditing(); > virtual bool rollBack(); > virtual bool commitChanges(); > virtual bool isEdited(); > signals: > void editingStarted(); > void editingStopped(); > > As I said, to keep names consistent with vector layer. Currently not > implemented nor used. It would be useful to have it implemented for > 2.0 at least in ogr provider to resolve #6448 at least for reading.
If the startEditing() and commitChanges() are going to be called within QgsVectorLayer::commitChanges(), then I find the names confusing and begin/commit/rollback-Transaction() would be IMHO better. They do different things, so they should have different names. And while using startEditing() and commitChanges() is necessary for editing within QgsVectorLayer, calling those functions in QgsVectorDataProvider should be optional (edit functions should automatically open a transaction and then close it afterwards). > Currently all editing methods in postgres provider do changes in > transactions. If we implement QgsPostgresProvider::startEditing() it > should start new transaction and all changes should be done within > that transaction. Are there any potential problems? I do not see any right now. > Should the startEditing() / commitChanges() close all iterators? Good question: this needs more thoughts. Closing them makes sense because with some providers the iterators would not return correct results. However that would mean that some code will stop working. Martin _______________________________________________ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer