Skip to content

Commit 5e92c0d

Browse files
committed
Fix saving processing outputs with correct encoding
1 parent 2b0af00 commit 5e92c0d

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

python/plugins/processing/gui/AlgorithmDialog.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ def getParamValues(self):
116116
if self.mainWidget.checkBoxes[param.name()].isChecked():
117117
dest_project = QgsProject.instance()
118118

119-
parameters[param.name()] = QgsProcessingFeatureSinkDefinition(self.mainWidget.outputWidgets[param.name()].getValue(), dest_project)
119+
value = self.mainWidget.outputWidgets[param.name()].getValue()
120+
value.destinationProject = dest_project
121+
parameters[param.name()] = value
120122

121123
return parameters
122124

python/plugins/processing/gui/DestinationSelectionPanel.py

+17-13
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
from qgis.core import (QgsDataSourceUri,
3838
QgsCredentials,
3939
QgsSettings,
40-
QgsProcessingOutputVectorLayer)
40+
QgsProcessingOutputVectorLayer,
41+
QgsProcessingFeatureSinkDefinition)
4142
from processing.core.ProcessingConfig import ProcessingConfig
4243
from processing.core.outputs import OutputVector
4344
from processing.core.outputs import OutputDirectory
@@ -62,6 +63,8 @@ def __init__(self, parameter, alg):
6263

6364
self.parameter = parameter
6465
self.alg = alg
66+
settings = QgsSettings()
67+
self.encoding = settings.value('/Processing/encoding', 'System')
6568

6669
if hasattr(self.leText, 'setPlaceholderText'):
6770
if isinstance(self.parameter, QgsProcessingOutputVectorLayer) \
@@ -159,17 +162,15 @@ def saveToSpatialite(self):
159162
else:
160163
path = ProcessingConfig.getSetting(ProcessingConfig.OUTPUT_FOLDER)
161164

162-
encoding = settings.value('/Processing/encoding', 'System')
163165
fileDialog = QgsEncodingFileDialog(
164-
self, self.tr('Save Spatialite'), path, fileFilter, encoding)
166+
self, self.tr('Save Spatialite'), path, fileFilter, self.encoding)
165167
fileDialog.setFileMode(QFileDialog.AnyFile)
166168
fileDialog.setAcceptMode(QFileDialog.AcceptSave)
167169
fileDialog.setOption(QFileDialog.DontConfirmOverwrite, True)
168170

169171
if fileDialog.exec_() == QDialog.Accepted:
170172
files = fileDialog.selectedFiles()
171-
encoding = str(fileDialog.encoding())
172-
self.parameter.encoding = encoding
173+
self.encoding = str(fileDialog.encoding())
173174
fileName = str(files[0])
174175
selectedFileFilter = str(fileDialog.selectedNameFilter())
175176
if not fileName.lower().endswith(
@@ -179,7 +180,7 @@ def saveToSpatialite(self):
179180
fileName += ext.group(1)
180181
settings.setValue('/Processing/LastOutputPath',
181182
os.path.dirname(fileName))
182-
settings.setValue('/Processing/encoding', encoding)
183+
settings.setValue('/Processing/encoding', self.encoding)
183184

184185
uri = QgsDataSourceUri()
185186
uri.setDatabase(fileName)
@@ -196,17 +197,15 @@ def selectFile(self):
196197
else:
197198
path = ProcessingConfig.getSetting(ProcessingConfig.OUTPUT_FOLDER)
198199

199-
encoding = settings.value('/Processing/encoding', 'System')
200200
fileDialog = QgsEncodingFileDialog(
201-
self, self.tr('Save file'), path, fileFilter, encoding)
201+
self, self.tr('Save file'), path, fileFilter, self.encoding)
202202
fileDialog.setFileMode(QFileDialog.AnyFile)
203203
fileDialog.setAcceptMode(QFileDialog.AcceptSave)
204204
fileDialog.setOption(QFileDialog.DontConfirmOverwrite, False)
205205

206206
if fileDialog.exec_() == QDialog.Accepted:
207207
files = fileDialog.selectedFiles()
208-
encoding = str(fileDialog.encoding())
209-
self.parameter.encoding = encoding
208+
self.encoding = str(fileDialog.encoding())
210209
fileName = str(files[0])
211210
selectedFileFilter = str(fileDialog.selectedNameFilter())
212211
if not fileName.lower().endswith(
@@ -217,7 +216,7 @@ def selectFile(self):
217216
self.leText.setText(fileName)
218217
settings.setValue('/Processing/LastOutputPath',
219218
os.path.dirname(fileName))
220-
settings.setValue('/Processing/encoding', encoding)
219+
settings.setValue('/Processing/encoding', self.encoding)
221220

222221
def selectDirectory(self):
223222
lastDir = ''
@@ -226,6 +225,11 @@ def selectDirectory(self):
226225
self.leText.setText(dirName)
227226

228227
def getValue(self):
228+
key = None
229229
if not self.leText.text():
230-
return 'memory:'
231-
return self.leText.text()
230+
key = 'memory:'
231+
else:
232+
key = self.leText.text()
233+
value = QgsProcessingFeatureSinkDefinition(key)
234+
value.createOptions = {'fileEncoding': self.encoding}
235+
return value

0 commit comments

Comments
 (0)