Skip to content

Commit b97c6a8

Browse files
committedNov 21, 2017
Use native file picker for spatialite export option also
1 parent 31086d3 commit b97c6a8

File tree

1 file changed

+14
-25
lines changed

1 file changed

+14
-25
lines changed
 

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

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from qgis.PyQt.QtCore import QCoreApplication, QDir
3434
from qgis.PyQt.QtWidgets import QDialog, QMenu, QAction, QFileDialog
3535
from qgis.PyQt.QtGui import QCursor
36-
from qgis.gui import QgsEncodingFileDialog, QgsEncodingSelectionDialog
36+
from qgis.gui import QgsEncodingSelectionDialog
3737
from qgis.core import (QgsDataSourceUri,
3838
QgsCredentials,
3939
QgsExpression,
@@ -123,11 +123,6 @@ def selectOutput(self):
123123
actionSaveToFile.triggered.connect(self.selectFile)
124124
popupMenu.addAction(actionSaveToFile)
125125

126-
actionSetEncoding = QAction(
127-
self.tr('Change file encoding ({})...').format(self.encoding), self.btnSelect)
128-
actionSetEncoding.triggered.connect(self.selectEncoding)
129-
popupMenu.addAction(actionSetEncoding)
130-
131126
if isinstance(self.parameter, QgsProcessingParameterFeatureSink) \
132127
and self.alg.provider().supportsNonFileBasedOutput():
133128
actionSaveToSpatialite = QAction(
@@ -144,6 +139,11 @@ def selectOutput(self):
144139
actionSaveToPostGIS.setEnabled(bool(names))
145140
popupMenu.addAction(actionSaveToPostGIS)
146141

142+
actionSetEncoding = QAction(
143+
self.tr('Change file encoding ({})...').format(self.encoding), self.btnSelect)
144+
actionSetEncoding.triggered.connect(self.selectEncoding)
145+
popupMenu.addAction(actionSetEncoding)
146+
147147
popupMenu.exec_(QCursor.pos())
148148

149149
def saveToTemporary(self):
@@ -178,37 +178,26 @@ def saveToPostGIS(self):
178178
self.leText.setText("postgis:" + uri.uri())
179179

180180
def saveToSpatialite(self):
181-
fileFilter = self.tr('SpatiaLite files (*.sqlite)', 'OutputFile')
181+
file_filter = self.tr('SpatiaLite files (*.sqlite)', '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-
fileDialog = QgsEncodingFileDialog(
190-
self, self.tr('Save SpatiaLite'), path, fileFilter, self.encoding)
191-
fileDialog.setFileMode(QFileDialog.AnyFile)
192-
fileDialog.setAcceptMode(QFileDialog.AcceptSave)
193-
fileDialog.setOption(QFileDialog.DontConfirmOverwrite, True)
189+
filename, filter = QFileDialog.getSaveFileName(self, self.tr("Save file"), path,
190+
file_filter, options=QFileDialog.DontConfirmOverwrite)
194191

195-
if fileDialog.exec_() == QDialog.Accepted:
192+
if filename is not None:
196193
self.use_temporary = False
197-
files = fileDialog.selectedFiles()
198-
self.encoding = str(fileDialog.encoding())
199-
fileName = str(files[0])
200-
selectedFileFilter = str(fileDialog.selectedNameFilter())
201-
if not fileName.lower().endswith(
202-
tuple(re.findall("\\*(\\.[a-z]{1,10})", fileFilter))):
203-
ext = re.search("\\*(\\.[a-z]{1,10})", selectedFileFilter)
204-
if ext:
205-
fileName += ext.group(1)
194+
if not filename.lower().endswith('.sqlite'):
195+
filename += '.sqlite'
206196
settings.setValue('/Processing/LastOutputPath',
207-
os.path.dirname(fileName))
208-
settings.setValue('/Processing/encoding', self.encoding)
197+
os.path.dirname(filename))
209198

210199
uri = QgsDataSourceUri()
211-
uri.setDatabase(fileName)
200+
uri.setDatabase(filename)
212201
uri.setDataSource('', self.parameter.name().lower(),
213202
'the_geom' if isinstance(self.parameter, QgsProcessingParameterFeatureSink) and self.parameter.hasGeometry() else None)
214203
self.leText.setText("spatialite:" + uri.uri())

0 commit comments

Comments
 (0)
Please sign in to comment.