@@ -237,7 +237,7 @@ def single_to_multi( self ):
237
237
allAttrs = vprovider .attributeIndexes ()
238
238
vprovider .select ( allAttrs )
239
239
fields = vprovider .fields ()
240
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
240
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
241
241
fields , vprovider .geometryType (), vprovider .crs () )
242
242
inFeat = QgsFeature ()
243
243
outFeat = QgsFeature ()
@@ -247,20 +247,27 @@ def single_to_multi( self ):
247
247
if not index == - 1 :
248
248
unique = ftools_utils .getUniqueValues ( vprovider , int ( index ) )
249
249
else :
250
- unique = range ( 0 , self . vlayer . featureCount () )
250
+ unique = [ QVariant ( QString ())]
251
251
nFeat = vprovider .featureCount () * len ( unique )
252
252
nElement = 0
253
253
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
254
254
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
255
- if not len ( unique ) == self .vlayer .featureCount ():
255
+ merge_all = self .myField == QString ("--- " + self .tr ( "Merge all" ) + " ---" )
256
+ if not len ( unique ) == self .vlayer .featureCount () \
257
+ or merge_all :
256
258
for i in unique :
257
259
vprovider .rewind ()
258
260
multi_feature = []
259
261
first = True
262
+ vprovider .select (allAttrs )
260
263
while vprovider .nextFeature ( inFeat ):
261
264
atMap = inFeat .attributeMap ()
262
- idVar = atMap [ index ]
263
- if idVar .toString ().trimmed () == i .toString ().trimmed ():
265
+ if not merge_all :
266
+ idVar = atMap [ index ]
267
+ else :
268
+ idVar = QVariant (QString ())
269
+ if idVar .toString ().trimmed () == i .toString ().trimmed () \
270
+ or merge_all :
264
271
if first :
265
272
atts = atMap
266
273
first = False
0 commit comments