Skip to content

Commit aca2266

Browse files
committedNov 23, 2017
[processing] Change save as spatialite option to save as GeoPackage
Since it's much more useful. Also add a prompt for layer name, so that you can save the results of an algorithm into an existing geopackage without wiping existing layers.
1 parent abcdd48 commit aca2266

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed
 

‎python/plugins/processing/algs/qgis/GeometryByExpression.py

100644100755
File mode changed.

‎python/plugins/processing/gui/DestinationSelectionPanel.py

100644100755
Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
from qgis.PyQt import uic
3333
from qgis.PyQt.QtCore import QCoreApplication, QDir
34-
from qgis.PyQt.QtWidgets import QDialog, QMenu, QAction, QFileDialog
34+
from qgis.PyQt.QtWidgets import QDialog, QMenu, QAction, QFileDialog, QInputDialog
3535
from qgis.PyQt.QtGui import QCursor
3636
from qgis.gui import QgsEncodingSelectionDialog
3737
from qgis.core import (QgsDataSourceUri,
@@ -125,10 +125,10 @@ def selectOutput(self):
125125

126126
if isinstance(self.parameter, QgsProcessingParameterFeatureSink) \
127127
and self.alg.provider().supportsNonFileBasedOutput():
128-
actionSaveToSpatialite = QAction(
129-
self.tr('Save to SpatiaLite table...'), self.btnSelect)
130-
actionSaveToSpatialite.triggered.connect(self.saveToSpatialite)
131-
popupMenu.addAction(actionSaveToSpatialite)
128+
actionSaveToGpkg = QAction(
129+
self.tr('Save to GeoPackage...'), self.btnSelect)
130+
actionSaveToGpkg.triggered.connect(self.saveToGeopackage)
131+
popupMenu.addAction(actionSaveToGpkg)
132132
actionSaveToPostGIS = QAction(
133133
self.tr('Save to PostGIS table...'), self.btnSelect)
134134
actionSaveToPostGIS.triggered.connect(self.saveToPostGIS)
@@ -177,30 +177,34 @@ def saveToPostGIS(self):
177177
QgsCredentials.instance().put(connInfo, user, passwd)
178178
self.leText.setText("postgis:" + uri.uri())
179179

180-
def saveToSpatialite(self):
181-
file_filter = self.tr('SpatiaLite files (*.sqlite)', 'OutputFile')
180+
def saveToGeopackage(self):
181+
file_filter = self.tr('GeoPackage files (*.gpkg);;All files (*.*)', 'OutputFile')
182182

183183
settings = QgsSettings()
184184
if settings.contains('/Processing/LastOutputPath'):
185185
path = settings.value('/Processing/LastOutputPath')
186186
else:
187187
path = ProcessingConfig.getSetting(ProcessingConfig.OUTPUT_FOLDER)
188188

189-
filename, filter = QFileDialog.getSaveFileName(self, self.tr("Save file"), path,
189+
filename, filter = QFileDialog.getSaveFileName(self, self.tr("Save to GeoPackage"), path,
190190
file_filter, options=QFileDialog.DontConfirmOverwrite)
191191

192-
if filename is not None:
192+
if filename is None:
193+
return
194+
195+
layer_name, ok = QInputDialog.getText(self, self.tr('Save to GeoPackage'), self.tr('Layer name'), text=self.parameter.name().lower())
196+
if ok:
193197
self.use_temporary = False
194-
if not filename.lower().endswith('.sqlite'):
195-
filename += '.sqlite'
198+
if not filename.lower().endswith('.gpkg'):
199+
filename += '.gpkg'
196200
settings.setValue('/Processing/LastOutputPath',
197201
os.path.dirname(filename))
198202

199203
uri = QgsDataSourceUri()
200204
uri.setDatabase(filename)
201-
uri.setDataSource('', self.parameter.name().lower(),
202-
'the_geom' if isinstance(self.parameter, QgsProcessingParameterFeatureSink) and self.parameter.hasGeometry() else None)
203-
self.leText.setText("spatialite:" + uri.uri())
205+
uri.setDataSource('', layer_name,
206+
'geom' if isinstance(self.parameter, QgsProcessingParameterFeatureSink) and self.parameter.hasGeometry() else None)
207+
self.leText.setText("ogr:" + uri.uri())
204208

205209
def selectFile(self):
206210
file_filter = getFileFilter(self.parameter)

0 commit comments

Comments
 (0)
Please sign in to comment.