@@ -52,12 +52,20 @@ def __init__(self, iface):
52
52
QObject .connect (self .toolTable , SIGNAL ("clicked()" ), self .inFile )
53
53
QObject .connect (self .rdoTable , SIGNAL ("clicked()" ), self .updateTableFields )
54
54
QObject .connect (self .rdoVector , SIGNAL ("clicked()" ), self .jupdate )
55
+ QObject .connect (self .cmbEncoding , SIGNAL ("currentIndexChanged(QString)" ),
56
+ self .updateTableFields )
55
57
self .setWindowTitle ( self .tr ("Join attributes" ) )
56
58
self .buttonOk = self .buttonBox_2 .button ( QDialogButtonBox .Ok )
57
59
# populate layer list
58
60
self .progressBar .setValue (0 )
59
61
mapCanvas = self .iface .mapCanvas ()
60
62
layers = ftools_utils .getLayerNames ([QGis .Point , QGis .Line , QGis .Polygon ])
63
+ encodings = QgsVectorDataProvider .availableEncodings ()
64
+ self .cmbEncoding .addItems (encodings )
65
+ id = encodings .indexOf (QSettings ().value ( "/UI/encoding" , "System" ).toString ())
66
+ if id < 0 :
67
+ id = len (encodings )- 1
68
+ self .cmbEncoding .setCurrentIndex (id )
61
69
self .inShape .addItems (layers )
62
70
self .joinShape .addItems (layers )
63
71
@@ -103,7 +111,10 @@ def accept(self):
103
111
useTable = True
104
112
joinField = self .joinField .currentText ()
105
113
outPath = self .outShape .text ()
106
- res = self .compute (inName , inField , joinName , joinField , outPath , keep , useTable , self .progressBar )
114
+ encoding = self .cmbEncoding .currentText ()
115
+ QSettings ().setValue ( "/UI/encoding" , encoding )
116
+ res = self .compute (inName , inField , joinName , joinField ,
117
+ outPath , keep , useTable , encoding , self .progressBar )
107
118
self .outShape .clear ()
108
119
if res :
109
120
addToTOC = QMessageBox .question (self , self .tr ("Join Attributes" ),
@@ -146,6 +157,8 @@ def updateTableFields(self):
146
157
joinName = joinInfo .completeBaseName ()
147
158
self .joinField .clear ()
148
159
changedLayer = QgsVectorLayer (joinPath , joinName , 'ogr' )
160
+ encoding = self .cmbEncoding .currentText ()
161
+ changedLayer .setProviderEncoding (encoding )
149
162
try :
150
163
changedField = ftools_utils .getFieldList (changedLayer )
151
164
except :
@@ -154,7 +167,8 @@ def updateTableFields(self):
154
167
for i in changedField :
155
168
self .joinField .addItem (unicode (changedField [i ].name ()))
156
169
157
- def compute (self , inName , inField , joinName , joinField , outName , keep , useTable , progressBar ):
170
+ def compute (self , inName , inField , joinName , joinField , outName ,
171
+ keep , useTable , encoding , progressBar ):
158
172
layer1 = ftools_utils .getVectorLayerByName (inName )
159
173
provider1 = layer1 .dataProvider ()
160
174
allAttrs = provider1 .attributeIndexes ()
@@ -166,6 +180,7 @@ def compute(self, inName, inField, joinName, joinField, outName, keep, useTable,
166
180
joinPath = joinInfo .absoluteFilePath ()
167
181
joinName = joinInfo .completeBaseName ()
168
182
layer2 = QgsVectorLayer (joinPath , joinName , 'ogr' )
183
+ layer2 .setProviderEncoding (encoding )
169
184
useTable = False
170
185
else :
171
186
layer2 = ftools_utils .getVectorLayerByName (joinName )
0 commit comments