Move tag handling to QgsProcessingAlgorithm

This commit is contained in:
Nyall Dawson 2017-03-29 09:51:13 +10:00
parent 52cc002990
commit 28e75731e1
36 changed files with 104 additions and 39 deletions

View File

@ -8,6 +8,6 @@ class QgsProcessingAlgorithm
QgsProcessingAlgorithm(); QgsProcessingAlgorithm();
virtual ~QgsProcessingAlgorithm(); virtual ~QgsProcessingAlgorithm();
virtual QStringList tags() const;
}; };

View File

@ -63,11 +63,12 @@ class warp(GdalAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'warp.png')) return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'warp.png'))
def tags(self):
return self.tr('transform,reproject,crs,srs').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Warp (reproject)') self.name, self.i18n_name = self.trAlgorithm('Warp (reproject)')
self.group, self.i18n_group = self.trAlgorithm('Raster projections') self.group, self.i18n_group = self.trAlgorithm('Raster projections')
self.tags = self.tr('transform,reproject,crs,srs')
self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer'), False)) self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer'), False))
self.addParameter(ParameterCrs(self.SOURCE_SRS, self.addParameter(ParameterCrs(self.SOURCE_SRS,
self.tr('Source SRS'), self.tr('Source SRS'),

View File

@ -77,11 +77,13 @@ class BasicStatisticsForField(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'basic_statistics.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'basic_statistics.png'))
def tags(self):
return self.tr('stats,statistics,date,time,datetime,string,number,text,table,layer,maximum,minimum,mean,average,standard,deviation,'
'count,distinct,unique,variance,median,quartile,range,majority,minority').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Basic statistics for fields') self.name, self.i18n_name = self.trAlgorithm('Basic statistics for fields')
self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
self.tags = self.tr('stats,statistics,date,time,datetime,string,number,text,table,layer,maximum,minimum,mean,average,standard,deviation,'
'count,distinct,unique,variance,median,quartile,range,majority,minority')
self.addParameter(ParameterTable(self.INPUT_LAYER, self.addParameter(ParameterTable(self.INPUT_LAYER,
self.tr('Input table'))) self.tr('Input table')))

View File

@ -76,10 +76,12 @@ class BasicStatisticsNumbers(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'basic_statistics.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'basic_statistics.png'))
def tags(self):
return self.tr('stats,statistics,number,table,layer').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Basic statistics for numeric fields') self.name, self.i18n_name = self.trAlgorithm('Basic statistics for numeric fields')
self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
self.tags = self.tr('stats,statistics,number,table,layer')
self.addParameter(ParameterTable(self.INPUT_LAYER, self.addParameter(ParameterTable(self.INPUT_LAYER,
self.tr('Input vector layer'))) self.tr('Input vector layer')))

View File

@ -68,10 +68,12 @@ class BasicStatisticsStrings(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'basic_statistics.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'basic_statistics.png'))
def tags(self):
return self.tr('stats,statistics,string,table,layer').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Basic statistics for text fields') self.name, self.i18n_name = self.trAlgorithm('Basic statistics for text fields')
self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
self.tags = self.tr('stats,statistics,string,table,layer')
self.addParameter(ParameterTable(self.INPUT_LAYER, self.addParameter(ParameterTable(self.INPUT_LAYER,
self.tr('Input vector layer'))) self.tr('Input vector layer')))

View File

@ -38,10 +38,12 @@ class DeleteColumn(GeoAlgorithm):
COLUMNS = 'COLUMN' COLUMNS = 'COLUMN'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('drop,delete,remove,fields,columns,attributes').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Delete column') self.name, self.i18n_name = self.trAlgorithm('Delete column')
self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
self.tags = self.tr('drop,delete,remove,fields,columns,attributes')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'))) self.tr('Input layer')))

View File

@ -37,10 +37,12 @@ class DeleteHoles(GeoAlgorithm):
MIN_AREA = 'MIN_AREA' MIN_AREA = 'MIN_AREA'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('remove,delete,drop,holes,rings,fill').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Delete holes') self.name, self.i18n_name = self.trAlgorithm('Delete holes')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('remove,delete,drop,holes,rings,fill')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POLYGON])) self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POLYGON]))

View File

@ -45,10 +45,12 @@ class DensifyGeometries(GeoAlgorithm):
VERTICES = 'VERTICES' VERTICES = 'VERTICES'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('add,vertices,points').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Densify geometries') self.name, self.i18n_name = self.trAlgorithm('Densify geometries')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('add,vertices,points')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'), self.tr('Input layer'),

View File

@ -37,10 +37,12 @@ class DropGeometry(GeoAlgorithm):
INPUT_LAYER = 'INPUT_LAYER' INPUT_LAYER = 'INPUT_LAYER'
OUTPUT_TABLE = 'OUTPUT_TABLE' OUTPUT_TABLE = 'OUTPUT_TABLE'
def tags(self):
return self.tr('remove,drop,delete,geometry,objects').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Drop geometries') self.name, self.i18n_name = self.trAlgorithm('Drop geometries')
self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.group, self.i18n_group = self.trAlgorithm('Vector general tools')
self.tags = self.tr('remove,drop,delete,geometry,objects')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POINT, self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POINT,

View File

@ -51,9 +51,11 @@ class ExportGeometryInfo(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'export_geometry.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'export_geometry.png'))
def tags(self):
return self.tr('export,measurements,areas,lengths,perimeters,latitudes,longitudes,x,y,z,extract,points,lines,polygons').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Export/Add geometry columns') self.name, self.i18n_name = self.trAlgorithm('Export/Add geometry columns')
self.tags = self.tr('export,measurements,areas,lengths,perimeters,latitudes,longitudes,x,y,z,extract,points,lines,polygons')
self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
self.calc_methods = [self.tr('Layer CRS'), self.calc_methods = [self.tr('Layer CRS'),

View File

@ -51,10 +51,12 @@ class ExtentFromLayer(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'layer_extent.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'layer_extent.png'))
def tags(self):
return self.tr('extent,envelope,bounds,bounding,boundary,layer').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Polygon from layer extent') self.name, self.i18n_name = self.trAlgorithm('Polygon from layer extent')
self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.group, self.i18n_group = self.trAlgorithm('Vector general tools')
self.tags = self.tr('extent,envelope,bounds,bounding,boundary,layer')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'))) self.tr('Input layer')))

View File

@ -60,10 +60,12 @@ class ExtractByAttribute(GeoAlgorithm):
'contains', 'contains',
'does not contain'] 'does not contain']
def tags(self):
return self.tr('extract,filter,attribute,value,contains,null,field').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Extract by attribute') self.name, self.i18n_name = self.trAlgorithm('Extract by attribute')
self.group, self.i18n_group = self.trAlgorithm('Vector selection tools') self.group, self.i18n_group = self.trAlgorithm('Vector selection tools')
self.tags = self.tr('extract,filter,attribute,value,contains,null,field')
self.i18n_operators = ['=', self.i18n_operators = ['=',
'!=', '!=',

View File

@ -40,10 +40,12 @@ class ExtractByExpression(GeoAlgorithm):
EXPRESSION = 'EXPRESSION' EXPRESSION = 'EXPRESSION'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('extract,filter,expression,field').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Extract by expression') self.name, self.i18n_name = self.trAlgorithm('Extract by expression')
self.group, self.i18n_group = self.trAlgorithm('Vector selection tools') self.group, self.i18n_group = self.trAlgorithm('Vector selection tools')
self.tags = self.tr('extract,filter,expression,field')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input Layer'))) self.tr('Input Layer')))

View File

@ -42,10 +42,12 @@ class ExtractByLocation(GeoAlgorithm):
PRECISION = 'PRECISION' PRECISION = 'PRECISION'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('extract,filter,location,intersects,contains,within').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Extract by location') self.name, self.i18n_name = self.trAlgorithm('Extract by location')
self.group, self.i18n_group = self.trAlgorithm('Vector selection tools') self.group, self.i18n_group = self.trAlgorithm('Vector selection tools')
self.tags = self.tr('extract,filter,location,intersects,contains,within')
self.predicates = ( self.predicates = (
('intersects', self.tr('intersects')), ('intersects', self.tr('intersects')),

View File

@ -51,10 +51,12 @@ class FindProjection(GeoAlgorithm):
TARGET_AREA_CRS = 'TARGET_AREA_CRS' TARGET_AREA_CRS = 'TARGET_AREA_CRS'
OUTPUT_HTML_FILE = 'OUTPUT_HTML_FILE' OUTPUT_HTML_FILE = 'OUTPUT_HTML_FILE'
def tags(self):
return self.tr('crs,srs,coordinate,reference,system,guess,estimate,finder,determine').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Find projection') self.name, self.i18n_name = self.trAlgorithm('Find projection')
self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.group, self.i18n_group = self.trAlgorithm('Vector general tools')
self.tags = self.tr('crs,srs,coordinate,reference,system,guess,estimate,finder,determine')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'))) self.tr('Input layer')))

View File

@ -40,10 +40,12 @@ class FixGeometry(GeoAlgorithm):
INPUT = 'INPUT' INPUT = 'INPUT'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('repair,invalid,geometry').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Fix geometries') self.name, self.i18n_name = self.trAlgorithm('Fix geometries')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('repair,invalid,geometry')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input Layer'), self.tr('Input Layer'),

View File

@ -61,10 +61,12 @@ class GridLine(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'vector_grid.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'vector_grid.png'))
def tags(self):
return self.tr('grid,lines,vector,create,fishnet').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Create grid (lines)') self.name, self.i18n_name = self.trAlgorithm('Create grid (lines)')
self.group, self.i18n_group = self.trAlgorithm('Vector creation tools') self.group, self.i18n_group = self.trAlgorithm('Vector creation tools')
self.tags = self.tr('grid,lines,vector,create,fishnet')
self.addParameter(ParameterExtent(self.EXTENT, self.addParameter(ParameterExtent(self.EXTENT,
self.tr('Grid extent'), optional=False)) self.tr('Grid extent'), optional=False))

View File

@ -57,10 +57,12 @@ class GridPolygon(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'vector_grid.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'vector_grid.png'))
def tags(self):
return self.tr('grid,lines,vector,create,fishnet').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Create grid (polygon)') self.name, self.i18n_name = self.trAlgorithm('Create grid (polygon)')
self.group, self.i18n_group = self.trAlgorithm('Vector creation tools') self.group, self.i18n_group = self.trAlgorithm('Vector creation tools')
self.tags = self.tr('grid,polygons,vector,create,fishnet')
self.types = [self.tr('Rectangle (polygon)'), self.types = [self.tr('Rectangle (polygon)'),
self.tr('Diamond (polygon)'), self.tr('Diamond (polygon)'),

View File

@ -71,10 +71,12 @@ class Heatmap(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'heatmap.png')) return QIcon(os.path.join(pluginPath, 'images', 'heatmap.png'))
def tags(self):
return self.tr('heatmap,kde,hotspot').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Heatmap (Kernel Density Estimation)') self.name, self.i18n_name = self.trAlgorithm('Heatmap (Kernel Density Estimation)')
self.group, self.i18n_group = self.trAlgorithm('Interpolation') self.group, self.i18n_group = self.trAlgorithm('Interpolation')
self.tags = self.tr('heatmap,kde,hotspot')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Point layer'), [dataobjects.TYPE_VECTOR_POINT])) self.tr('Point layer'), [dataobjects.TYPE_VECTOR_POINT]))

View File

@ -47,10 +47,12 @@ class LinesToPolygons(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'to_lines.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'to_lines.png'))
def tags(self):
return self.tr('line,polygon,convert').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Lines to polygons') self.name, self.i18n_name = self.trAlgorithm('Lines to polygons')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('line,polygon,convert')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'), self.tr('Input layer'),

View File

@ -48,10 +48,12 @@ class MergeLines(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'to_lines.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'to_lines.png'))
def tags(self):
return self.tr('line,merge,join,parts').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Merge lines') self.name, self.i18n_name = self.trAlgorithm('Merge lines')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('line,merge,join,parts')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_LINE])) self.tr('Input layer'), [dataobjects.TYPE_VECTOR_LINE]))

View File

@ -41,10 +41,12 @@ class Orthogonalize(GeoAlgorithm):
DISTANCE_THRESHOLD = 'DISTANCE_THRESHOLD' DISTANCE_THRESHOLD = 'DISTANCE_THRESHOLD'
ANGLE_TOLERANCE = 'ANGLE_TOLERANCE' ANGLE_TOLERANCE = 'ANGLE_TOLERANCE'
def tags(self):
return self.tr('rectangle,perpendicular,right,angles,square,quadrilateralise').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Orthogonalize') self.name, self.i18n_name = self.trAlgorithm('Orthogonalize')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('rectangle,perpendicular,right,angles,square,quadrilateralise')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_LINE, self.tr('Input layer'), [dataobjects.TYPE_VECTOR_LINE,

View File

@ -52,10 +52,12 @@ class PointsAlongGeometry(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'extract_nodes.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'extract_nodes.png'))
def tags(self):
return self.tr('create,interpolate,points,lines').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Points along lines') self.name, self.i18n_name = self.trAlgorithm('Points along lines')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('create,interpolate,points,lines')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'), self.tr('Input layer'),

View File

@ -44,10 +44,12 @@ class PointsLayerFromTable(GeoAlgorithm):
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
TARGET_CRS = 'TARGET_CRS' TARGET_CRS = 'TARGET_CRS'
def tags(self):
return self.tr('points,create,values,attributes').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Create points layer from table') self.name, self.i18n_name = self.trAlgorithm('Create points layer from table')
self.group, self.i18n_group = self.trAlgorithm('Vector creation tools') self.group, self.i18n_group = self.trAlgorithm('Vector creation tools')
self.tags = self.tr('points,create,values,attributes')
self.addParameter(ParameterTable(self.INPUT, self.addParameter(ParameterTable(self.INPUT,
self.tr('Input layer'))) self.tr('Input layer')))
self.addParameter(ParameterTableField(self.XFIELD, self.addParameter(ParameterTableField(self.XFIELD,

View File

@ -50,10 +50,12 @@ class PoleOfInaccessibility(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'centroids.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'centroids.png'))
def tags(self):
return self.tr('furthest,point,distant,extreme,maximum,centroid,center,centre').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Pole of Inaccessibility') self.name, self.i18n_name = self.trAlgorithm('Pole of Inaccessibility')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('furthest,point,distant,extreme,maximum,centroid,center,centre')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'), self.tr('Input layer'),

View File

@ -47,10 +47,12 @@ class Polygonize(GeoAlgorithm):
FIELDS = 'FIELDS' FIELDS = 'FIELDS'
GEOMETRY = 'GEOMETRY' GEOMETRY = 'GEOMETRY'
def tags(self):
return self.tr('create,lines,polygons,convert').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Polygonize') self.name, self.i18n_name = self.trAlgorithm('Polygonize')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('create,lines,polygons,convert')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_LINE])) self.tr('Input layer'), [dataobjects.TYPE_VECTOR_LINE]))
self.addParameter(ParameterBoolean(self.FIELDS, self.addParameter(ParameterBoolean(self.FIELDS,

View File

@ -47,10 +47,12 @@ class PolygonsToLines(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'to_lines.png')) return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'to_lines.png'))
def tags(self):
return self.tr('line,polygon,convert').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Polygons to lines') self.name, self.i18n_name = self.trAlgorithm('Polygons to lines')
self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools') self.group, self.i18n_group = self.trAlgorithm('Vector geometry tools')
self.tags = self.tr('line,polygon,convert')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POLYGON])) self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POLYGON]))

View File

@ -36,10 +36,12 @@ class RemoveNullGeometry(GeoAlgorithm):
INPUT_LAYER = 'INPUT_LAYER' INPUT_LAYER = 'INPUT_LAYER'
OUTPUT_LAYER = 'OUTPUT_LAYER' OUTPUT_LAYER = 'OUTPUT_LAYER'
def tags(self):
return self.tr('remove,drop,delete,empty,geometry').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Remove null geometries') self.name, self.i18n_name = self.trAlgorithm('Remove null geometries')
self.group, self.i18n_group = self.trAlgorithm('Vector selection tools') self.group, self.i18n_group = self.trAlgorithm('Vector selection tools')
self.tags = self.tr('remove,drop,delete,empty,geometry')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_ANY])) self.tr('Input layer'), [dataobjects.TYPE_VECTOR_ANY]))

View File

@ -47,10 +47,12 @@ class ReprojectLayer(GeoAlgorithm):
def getIcon(self): def getIcon(self):
return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'warp.png')) return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'warp.png'))
def tags(self):
return self.tr('transform,reproject,crs,srs,warp').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Reproject layer') self.name, self.i18n_name = self.trAlgorithm('Reproject layer')
self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.group, self.i18n_group = self.trAlgorithm('Vector general tools')
self.tags = self.tr('transform,reproject,crs,srs,warp')
self.addParameter(ParameterVector(self.INPUT, self.addParameter(ParameterVector(self.INPUT,
self.tr('Input layer'))) self.tr('Input layer')))

View File

@ -60,10 +60,12 @@ class SelectByAttribute(GeoAlgorithm):
'contains', 'contains',
'does not contain'] 'does not contain']
def tags(self):
return self.tr('select,attribute,value,contains,null,field').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Select by attribute') self.name, self.i18n_name = self.trAlgorithm('Select by attribute')
self.group, self.i18n_group = self.trAlgorithm('Vector selection tools') self.group, self.i18n_group = self.trAlgorithm('Vector selection tools')
self.tags = self.tr('select,attribute,value,contains,null,field')
self.i18n_operators = ['=', self.i18n_operators = ['=',
'!=', '!=',

View File

@ -56,10 +56,12 @@ class TopoColor(GeoAlgorithm):
BALANCE = 'BALANCE' BALANCE = 'BALANCE'
OUTPUT_LAYER = 'OUTPUT_LAYER' OUTPUT_LAYER = 'OUTPUT_LAYER'
def tags(self):
return self.tr('topocolor,colors,graph,adjacent,assign').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Topological coloring') self.name, self.i18n_name = self.trAlgorithm('Topological coloring')
self.group, self.i18n_group = self.trAlgorithm('Cartographic tools') self.group, self.i18n_group = self.trAlgorithm('Cartographic tools')
self.tags = self.tr('topocolor,colors,graph,adjacent,assign')
self.addParameter(ParameterVector(self.INPUT_LAYER, self.addParameter(ParameterVector(self.INPUT_LAYER,
self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POLYGON])) self.tr('Input layer'), [dataobjects.TYPE_VECTOR_POLYGON]))

View File

@ -37,9 +37,11 @@ class TruncateTable(GeoAlgorithm):
INPUT = 'INPUT' INPUT = 'INPUT'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
def tags(self):
return self.tr('empty,delete,layer,clear,features').split(',')
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Truncate table') self.name, self.i18n_name = self.trAlgorithm('Truncate table')
self.tags = self.tr('empty,delete,layer,clear,features')
self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.group, self.i18n_group = self.trAlgorithm('Vector general tools')
self.addParameter(ParameterTable(self.INPUT, self.addParameter(ParameterTable(self.INPUT,

View File

@ -55,6 +55,7 @@ class GeoAlgorithm(QgsProcessingAlgorithm):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self._icon = QgsApplication.getThemeIcon("/processingAlgorithm.svg") self._icon = QgsApplication.getThemeIcon("/processingAlgorithm.svg")
# Parameters needed by the algorithm # Parameters needed by the algorithm
self.parameters = list() self.parameters = list()
@ -65,9 +66,6 @@ class GeoAlgorithm(QgsProcessingAlgorithm):
self.name, self.i18n_name = '', '' self.name, self.i18n_name = '', ''
self.group, self.i18n_group = '', '' self.group, self.i18n_group = '', ''
# Tags
self.tags = ''
# The crs taken from input layers (if possible), and used when # The crs taken from input layers (if possible), and used when
# loading output layers # loading output layers
self.crs = None self.crs = None

View File

@ -357,7 +357,7 @@ class TreeAlgorithmItem(QTreeWidgetItem):
self.setToolTip(0, name) self.setToolTip(0, name)
self.setText(0, name) self.setText(0, name)
self.setData(0, Qt.UserRole, nameEn) self.setData(0, Qt.UserRole, nameEn)
self.setData(0, Qt.UserRole + 1, alg.tags.split(',')) self.setData(0, Qt.UserRole + 1, alg.tags())
class TreeActionItem(QTreeWidgetItem): class TreeActionItem(QTreeWidgetItem):

View File

@ -619,7 +619,7 @@ class ModelerDialog(BASE, WIDGET):
continue continue
item_text = [alg.name.lower()] item_text = [alg.name.lower()]
item_text.extend(alg.tags.split(',')) item_text.extend(alg.tags())
show = not search_strings or all( show = not search_strings or all(
any(part in t for t in item_text) any(part in t for t in item_text)

View File

@ -40,6 +40,12 @@ class CORE_EXPORT QgsProcessingAlgorithm
virtual ~QgsProcessingAlgorithm() = default; virtual ~QgsProcessingAlgorithm() = default;
/**
* Returns a list of tags which relate to the algorithm, and are used to assist users in searching
* for suitable algorithms. These tags should be localised.
*/
virtual QStringList tags() const { return QStringList(); }
}; };
#endif // QGSPROCESSINGALGORITHM_H #endif // QGSPROCESSINGALGORITHM_H