@@ -998,7 +998,7 @@ def perimMeasure( self, inGeom, measure ):
998
998
value = value + measure .measureLine ( k )
999
999
return value
1000
1000
1001
- def doubleFieldIndex ( self , name , desc , fieldList , f ):
1001
+ def doubleFieldIndex ( self , name , desc , fieldList ):
1002
1002
i = 0
1003
1003
for f in fieldList :
1004
1004
if name == f .name ().toUpper ():
@@ -1011,20 +1011,25 @@ def doubleFieldIndex( self, name, desc, fieldList, f ):
1011
1011
def checkMeasurementFields ( self , vlayer , add ):
1012
1012
vprovider = vlayer .dataProvider ()
1013
1013
geomType = vlayer .geometryType ()
1014
+ fieldList = vprovider .fields ()
1015
+
1016
+ idx = len (fieldList )
1014
1017
1015
1018
if geomType == QGis .Polygon :
1016
- (index1 , fieldList ) = doubleFieldIndex ( "AREA" , self .tr ( "Polygon area" ), fieldList )
1017
- (index2 , fieldList ) = doubleFieldIndex ( "PERIMETER" , self .tr ( "Polygon perimeter" ), fieldList )
1019
+ (index1 , fieldList ) = self . doubleFieldIndex ( "AREA" , self .tr ( "Polygon area" ), fieldList )
1020
+ (index2 , fieldList ) = self . doubleFieldIndex ( "PERIMETER" , self .tr ( "Polygon perimeter" ), fieldList )
1018
1021
elif geomType == QGis .Line :
1019
- (index1 , fieldList ) = doubleFieldIndex ( "LENGTH" , self .tr ( "Line length" ), fieldList )
1022
+ (index1 , fieldList ) = self . doubleFieldIndex ( "LENGTH" , self .tr ( "Line length" ), fieldList )
1020
1023
index2 = index1
1021
1024
else :
1022
- (index1 , fieldList ) = doubleFieldIndex ( "XCOORD" , self .tr ( "Point x ordinate" ), fieldList )
1023
- (index2 , fieldList ) = doubleFieldIndex ( "YCOORD" , self .tr ( "Point y ordinate" ), fieldList )
1025
+ (index1 , fieldList ) = self . doubleFieldIndex ( "XCOORD" , self .tr ( "Point x ordinate" ), fieldList )
1026
+ (index2 , fieldList ) = self . doubleFieldIndex ( "YCOORD" , self .tr ( "Point y ordinate" ), fieldList )
1024
1027
1025
- if add :
1028
+ if add and idx < len (fieldList ):
1029
+ newFields = []
1030
+ for i in range (idx ,len (fieldList )):
1031
+ newFields .append (fieldList [i ])
1026
1032
vprovider .addAttributes ( newFields )
1027
- vlayer .updateFieldMap ()
1028
1033
1029
1034
return ( fieldList , index1 , index2 )
1030
1035
0 commit comments