2828from qgis .core import (QgsVectorDataProvider ,
2929 QgsFields ,
3030 QgsApplication ,
31- QgsProcessingUtils )
31+ QgsProcessingParameterVectorLayer ,
32+ QgsProcessingParameterField ,
33+ QgsProcessingParameterDefinition ,
34+ QgsProcessingOutputVectorLayer )
3235
3336from 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
3737
3838
3939class CreateAttributeIndex (QgisAlgorithm ):
@@ -53,12 +53,11 @@ def group(self):
5353
5454 def __init__ (self ):
5555 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' )))
6261
6362 def name (self ):
6463 return 'createattributeindex'
@@ -67,9 +66,8 @@ def displayName(self):
6766 return self .tr ('Create attribute index' )
6867
6968 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 )
7371 provider = layer .dataProvider ()
7472
7573 field_index = layer .fields ().lookupField (field )
@@ -84,4 +82,4 @@ def processAlgorithm(self, parameters, context, feedback):
8482 feedback .pushInfo (self .tr ("Layer's data provider does not support "
8583 "creating attribute indexes" ))
8684
87- self .setOutputValue ( self . OUTPUT , file_name )
85+ return { self .OUTPUT : layer . id ()}
0 commit comments