28
28
from qgis .core import (QgsVectorDataProvider ,
29
29
QgsFields ,
30
30
QgsApplication ,
31
- QgsProcessingUtils )
31
+ QgsProcessingParameterVectorLayer ,
32
+ QgsProcessingParameterField ,
33
+ QgsProcessingParameterDefinition ,
34
+ QgsProcessingOutputVectorLayer )
32
35
33
36
from processing .algs .qgis .QgisAlgorithm import QgisAlgorithm
34
- from processing .core .parameters import ParameterTable
35
- from processing .core .parameters import ParameterTableField
36
- from processing .core .outputs import OutputVector
37
37
38
38
39
39
class CreateAttributeIndex (QgisAlgorithm ):
@@ -53,12 +53,11 @@ def group(self):
53
53
54
54
def __init__ (self ):
55
55
super ().__init__ ()
56
- self .addParameter (ParameterTable (self .INPUT ,
57
- self .tr ('Input Layer' )))
58
- self .addParameter (ParameterTableField (self .FIELD ,
59
- self .tr ('Attribute to index' ), self .INPUT ))
60
- self .addOutput (OutputVector (self .OUTPUT ,
61
- self .tr ('Indexed layer' ), True ))
56
+ self .addParameter (QgsProcessingParameterVectorLayer (self .INPUT ,
57
+ self .tr ('Input Layer' )))
58
+ self .addParameter (QgsProcessingParameterField (self .FIELD ,
59
+ self .tr ('Attribute to index' ), None , self .INPUT ))
60
+ self .addOutput (QgsProcessingOutputVectorLayer (self .OUTPUT , self .tr ('Indexed layer' )))
62
61
63
62
def name (self ):
64
63
return 'createattributeindex'
@@ -67,9 +66,8 @@ def displayName(self):
67
66
return self .tr ('Create attribute index' )
68
67
69
68
def processAlgorithm (self , parameters , context , feedback ):
70
- file_name = self .getParameterValue (self .INPUT )
71
- layer = QgsProcessingUtils .mapLayerFromString (file_name , context )
72
- field = self .getParameterValue (self .FIELD )
69
+ layer = self .parameterAsVectorLayer (parameters , self .INPUT , context )
70
+ field = self .parameterAsString (parameters , self .FIELD , context )
73
71
provider = layer .dataProvider ()
74
72
75
73
field_index = layer .fields ().lookupField (field )
@@ -84,4 +82,4 @@ def processAlgorithm(self, parameters, context, feedback):
84
82
feedback .pushInfo (self .tr ("Layer's data provider does not support "
85
83
"creating attribute indexes" ))
86
84
87
- self .setOutputValue ( self . OUTPUT , file_name )
85
+ return { self .OUTPUT : layer . id ()}
0 commit comments