Skip to content

Commit 76129e7

Browse files
author
alexander.bruy@gmail.com
committed
add encoding support for output vector
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@350 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent d67298a commit 76129e7

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

src/sextante/gui/OutputSelectionPanel.py

+26-16
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
from PyQt4 import QtGui, QtCore
1+
import os.path
2+
23
from PyQt4.QtCore import *
34
from PyQt4.QtGui import *
4-
import os.path
5-
from sextante.core.SextanteConfig import SextanteConfig
65

6+
from qgis.gui import *
7+
8+
from sextante.core.SextanteConfig import SextanteConfig
79

8-
class OutputSelectionPanel(QtGui.QWidget):
10+
class OutputSelectionPanel(QWidget):
911

1012
lastOutputFolder = None
1113
SAVE_TO_TEMP_FILE = "[Save to temporary file]"
@@ -14,34 +16,34 @@ def __init__(self, output, alg):
1416
self.output = output
1517
self.alg = alg
1618
super(OutputSelectionPanel, self).__init__(None)
17-
self.horizontalLayout = QtGui.QHBoxLayout(self)
19+
self.horizontalLayout = QHBoxLayout(self)
1820
self.horizontalLayout.setSpacing(2)
1921
self.horizontalLayout.setMargin(0)
20-
self.text = QtGui.QLineEdit()
22+
self.text = QLineEdit()
2123
if hasattr(self.text, 'setPlaceholderText'):
2224
self.text.setPlaceholderText(OutputSelectionPanel.SAVE_TO_TEMP_FILE)
23-
self.text.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
25+
self.text.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
2426
self.horizontalLayout.addWidget(self.text)
25-
self.pushButton = QtGui.QPushButton()
27+
self.pushButton = QPushButton()
2628
self.pushButton.setText("...")
2729
self.pushButton.clicked.connect(self.buttonPushed)
2830
self.horizontalLayout.addWidget(self.pushButton)
2931
self.setLayout(self.horizontalLayout)
3032

3133
def buttonPushed(self):
3234
popupmenu = QMenu()
33-
saveToTemporaryFileAction = QtGui.QAction("Save to a temporary file", self.pushButton)
35+
saveToTemporaryFileAction = QAction("Save to a temporary file", self.pushButton)
3436
saveToTemporaryFileAction.triggered.connect(self.saveToTemporaryFile)
3537
popupmenu.addAction(saveToTemporaryFileAction )
3638
if (self.alg.provider.supportsNonFileBasedOutput()):
37-
saveToMemoryAction= QtGui.QAction("Save to a memory layer...", self.pushButton)
39+
saveToMemoryAction= QAction("Save to a memory layer...", self.pushButton)
3840
saveToMemoryAction.triggered.connect(self.saveToMemory)
3941
popupmenu.addAction(saveToMemoryAction)
40-
saveToFileAction = QtGui.QAction("Save to file...", self.pushButton)
42+
saveToFileAction = QAction("Save to file...", self.pushButton)
4143
saveToFileAction.triggered.connect(self.saveToFile)
4244
popupmenu.addAction(saveToFileAction)
4345

44-
popupmenu.exec_(QtGui.QCursor.pos())
46+
popupmenu.exec_(QCursor.pos())
4547

4648
def saveToTemporaryFile(self):
4749
self.text.setText("")
@@ -51,15 +53,23 @@ def saveToMemory(self):
5153

5254
def saveToFile(self):
5355
filefilter = self.output.getFileFilter(self.alg)
54-
settings = QtCore.QSettings()
56+
settings = QSettings()
5557
if settings.contains("/SextanteQGIS/LastOutputPath"):
56-
path = str(settings.value( "/SextanteQGIS/LastOutputPath", QtCore.QVariant( "" ) ).toString())
58+
path = str(settings.value( "/SextanteQGIS/LastOutputPath", QVariant( "" ) ).toString())
5759
else:
5860
path = SextanteConfig.getSetting(SextanteConfig.OUTPUT_FOLDER)
59-
filename = QtGui.QFileDialog.getSaveFileName(self, "Save file", QtCore.QString(path), filefilter)
60-
if filename:
61+
lastEncoding = settings.value("/SextanteQGIS/encoding", "System").toString()
62+
fileDialog = QgsEncodingFileDialog(self, "Save file", QString(path), filefilter, lastEncoding)
63+
fileDialog.setFileMode(QFileDialog.AnyFile)
64+
fileDialog.setAcceptMode(QFileDialog.AcceptSave)
65+
fileDialog.setConfirmOverwrite(True)
66+
if fileDialog.exec_() == QDialog.Accepted:
67+
filename = fileDialog.selectedFiles().first()
68+
encoding = fileDialog.encoding()
69+
self.output.encoding = encoding
6170
self.text.setText(str(filename))
6271
settings.setValue("/SextanteQGIS/LastOutputPath", os.path.dirname(str(filename)))
72+
settings.setValue("/SextanteQGIS/encoding", encoding)
6373

6474
def getValue(self):
6575
filename = str(self.text.text())

src/sextante/outputs/OutputVector.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ def getVectorWriter(self, fields, geomType, crs, options=None):
3333
@return writer instance of the vectoe writer class
3434
'''
3535

36-
settings = QSettings()
37-
encoding = settings.value( "/UI/encoding", "System" ).toString()
38-
w = SextanteVectorWriter(self.value, encoding, fields, geomType, crs, options)
36+
w = SextanteVectorWriter(self.value, self.encoding, fields, geomType, crs, options)
3937
self.memoryLayer = w.memLayer
4038
return w

0 commit comments

Comments
 (0)