This is an automated email from the git hooks/post-receive script. sebastic pushed a change to branch upstream in repository qgis.
from 69701af New upstream version 3.0.0+dfsg new 62a3ed3 New upstream version 3.0.1+dfsg The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: .ci/travis/linux/before_install.sh | 1 - .ci/travis/linux/before_script.sh | 45 +- .ci/travis/linux/docker-build-test.sh | 23 +- .ci/travis/linux/script.sh | 21 +- .ci/travis/scripts/ctest2travis.py | 2 +- .ci/travis/scripts/travis_envvar_helper.sh | 14 + .docker/Dockerfile-build-test | 10 - .docker/docker-compose.travis.yml | 2 +- .docker/qgis.dockerfile | 46 + .../{Dockerfile => qgis3-build-deps.dockerfile} | 22 +- .travis.yml | 4 +- CMakeLists.txt | 2 +- ChangeLog | 1083 ++ Dockerfile | 38 - debian/changelog | 10 +- debian/control.in | 36 +- debian/libqgis-dev.install.in | 2 +- debian/rules | 12 +- doc/TRANSLATORS | 80 +- i18n/qgis_de.ts | 12266 +++++++------ i18n/qgis_es.ts | 18393 +++++++++---------- i18n/qgis_pl.ts | 12 +- ms-windows/osgeo4w/package.cmd | 7 - ms-windows/osgeo4w/postinstall-desktop.bat | 3 +- ms-windows/osgeo4w/postinstall-dev.bat | 1 + .../osgeo4w/postinstall-grass-plugin-common.bat | 1 + ms-windows/osgeo4w/postinstall-grass.bat | 8 +- ms-windows/osgeo4w/preremove-grass.bat | 6 +- python/PyQt/PyQt5/Qsci.py | 2 +- python/PyQt/PyQt5/Qt.py | 2 +- python/PyQt/PyQt5/QtCore.py | 2 +- python/PyQt/PyQt5/QtGui.py | 2 +- python/PyQt/PyQt5/QtNetwork.py | 2 +- python/PyQt/PyQt5/QtPrintSupport.py | 2 +- python/PyQt/PyQt5/QtSql.py | 2 +- python/PyQt/PyQt5/QtSvg.py | 2 +- python/PyQt/PyQt5/QtTest.py | 2 +- python/PyQt/PyQt5/QtWebKit.py | 2 +- python/PyQt/PyQt5/QtWebKitWidgets.py | 2 +- python/PyQt/PyQt5/QtWidgets.py | 2 +- python/PyQt/PyQt5/QtXml.py | 2 +- python/PyQt/PyQt5/uic/__init__.py | 2 +- python/PyQt/PyQt5/uic/properties.py | 2 +- python/PyQt/PyQt5/uic/pyuic.py | 2 +- python/__init__.py | 2 +- python/analysis/__init__.py | 2 +- python/analysis/network/qgsgraphdirector.sip.in | 2 + python/console/__init__.py | 2 +- python/core/__init__.py | 2 +- python/core/contextmanagers.py | 2 +- python/core/conversions.sip | 8 +- .../core/processing/qgsprocessingfeedback.sip.in | 9 +- python/core/qgsaction.sip.in | 9 + python/core/qgsfileutils.sip.in | 4 +- python/core/qgsmapsettings.sip.in | 4 + python/core/qgspluginlayer.sip.in | 5 +- .../symbology/qgscategorizedsymbolrenderer.sip.in | 46 +- python/gui/__init__.py | 2 +- .../qgsprocessingalgorithmdialogbase.sip.in | 11 +- python/gui/qgisinterface.sip.in | 1 + python/gui/qgsactionmenu.sip.in | 7 + python/gui/qgsattributeform.sip.in | 1 + python/gui/qgsfilterlineedit.sip.in | 9 + python/gui/qgsmaplayeractionregistry.sip.in | 31 +- python/plugins/db_manager/db_manager.py | 1 + .../db_manager/db_plugins/oracle/sql_dictionary.py | 2 +- .../db_plugins/postgis/connector_test.py | 2 +- .../db_manager/db_plugins/postgis/plugin_test.py | 2 +- .../postgis/plugins/qgis_topoview/__init__.py | 6 +- .../db_plugins/postgis/sql_dictionary.py | 2 +- .../db_plugins/spatialite/sql_dictionary.py | 2 +- .../db_plugins/vlayers/sql_dictionary.py | 2 +- python/plugins/db_manager/dlg_field_properties.py | 2 +- python/plugins/db_manager/sql_dictionary.py | 2 +- python/plugins/db_manager/sqledit.py | 2 +- python/plugins/processing/ProcessingPlugin.py | 2 +- python/plugins/processing/__init__.py | 2 +- .../algs/exampleprovider/ExampleAlgorithm.py | 2 +- .../exampleprovider/ExampleAlgorithmProvider.py | 2 +- .../ProcessingExampleProviderPlugin.py | 2 +- .../processing/algs/exampleprovider/__init__.py | 2 +- .../processing/algs/gdal/AssignProjection.py | 2 +- python/plugins/processing/algs/gdal/Buffer.py | 2 +- .../processing/algs/gdal/ClipRasterByExtent.py | 5 +- .../processing/algs/gdal/ClipRasterByMask.py | 7 +- .../processing/algs/gdal/ClipVectorByExtent.py | 2 +- .../processing/algs/gdal/ClipVectorByMask.py | 2 +- python/plugins/processing/algs/gdal/ColorRelief.py | 2 +- python/plugins/processing/algs/gdal/Dissolve.py | 2 +- python/plugins/processing/algs/gdal/ExecuteSql.py | 2 +- .../plugins/processing/algs/gdal/GdalAlgorithm.py | 2 +- .../processing/algs/gdal/GdalAlgorithmDialog.py | 4 +- .../processing/algs/gdal/GdalAlgorithmProvider.py | 2 +- python/plugins/processing/algs/gdal/GdalUtils.py | 24 +- python/plugins/processing/algs/gdal/GridAverage.py | 5 +- .../processing/algs/gdal/GridDataMetrics.py | 5 +- .../processing/algs/gdal/GridInverseDistance.py | 5 +- .../gdal/GridInverseDistanceNearestNeighbor.py | 5 +- python/plugins/processing/algs/gdal/GridLinear.py | 5 +- .../processing/algs/gdal/GridNearestNeighbor.py | 5 +- python/plugins/processing/algs/gdal/OffsetCurve.py | 2 +- .../plugins/processing/algs/gdal/OgrToPostGis.py | 2 +- .../plugins/processing/algs/gdal/OneSideBuffer.py | 2 +- .../processing/algs/gdal/PointsAlongLines.py | 2 +- python/plugins/processing/algs/gdal/aspect.py | 5 +- python/plugins/processing/algs/gdal/buildvrt.py | 11 +- python/plugins/processing/algs/gdal/contour.py | 2 +- .../processing/algs/gdal/extractprojection.py | 2 +- python/plugins/processing/algs/gdal/fillnodata.py | 2 +- python/plugins/processing/algs/gdal/gdal2tiles.py | 2 +- python/plugins/processing/algs/gdal/gdal2xyz.py | 7 +- python/plugins/processing/algs/gdal/gdaladdo.py | 2 +- python/plugins/processing/algs/gdal/gdalcalc.py | 2 +- python/plugins/processing/algs/gdal/gdalinfo.py | 6 +- python/plugins/processing/algs/gdal/gdaltindex.py | 2 +- python/plugins/processing/algs/gdal/hillshade.py | 5 +- python/plugins/processing/algs/gdal/merge.py | 45 +- python/plugins/processing/algs/gdal/nearblack.py | 5 +- python/plugins/processing/algs/gdal/ogr2ogr.py | 2 +- .../algs/gdal/ogr2ogrtabletopostgislist.py | 2 +- .../processing/algs/gdal/ogr2ogrtopostgislist.py | 2 +- python/plugins/processing/algs/gdal/ogrinfo.py | 6 +- python/plugins/processing/algs/gdal/pct2rgb.py | 2 +- python/plugins/processing/algs/gdal/polygonize.py | 2 +- python/plugins/processing/algs/gdal/proximity.py | 5 +- python/plugins/processing/algs/gdal/rasterize.py | 5 +- .../plugins/processing/algs/gdal/rasterize_over.py | 2 +- python/plugins/processing/algs/gdal/retile.py | 5 +- python/plugins/processing/algs/gdal/rgb2pct.py | 2 +- python/plugins/processing/algs/gdal/roughness.py | 2 +- python/plugins/processing/algs/gdal/sieve.py | 2 +- python/plugins/processing/algs/gdal/slope.py | 5 +- python/plugins/processing/algs/gdal/tpi.py | 5 +- python/plugins/processing/algs/gdal/translate.py | 5 +- python/plugins/processing/algs/gdal/tri.py | 5 +- .../processing/algs/gdal/ui/RasterOptionsWidget.py | 4 +- python/plugins/processing/algs/gdal/warp.py | 5 +- .../processing/algs/grass7/Grass7Algorithm.py | 18 +- .../algs/grass7/Grass7AlgorithmProvider.py | 2 +- .../plugins/processing/algs/grass7/Grass7Utils.py | 2 +- .../algs/grass7/description/v.net.visibility.txt | 2 +- python/plugins/processing/algs/grass7/ext/i.py | 2 +- .../plugins/processing/algs/grass7/ext/i_albedo.py | 2 +- python/plugins/processing/algs/grass7/ext/i_cca.py | 2 +- .../processing/algs/grass7/ext/i_cluster.py | 2 +- .../processing/algs/grass7/ext/i_colors_enhance.py | 2 +- .../processing/algs/grass7/ext/i_evapo_mh.py | 2 +- .../plugins/processing/algs/grass7/ext/i_gensig.py | 2 +- .../processing/algs/grass7/ext/i_gensigset.py | 2 +- .../plugins/processing/algs/grass7/ext/i_group.py | 2 +- .../processing/algs/grass7/ext/i_in_spotvgt.py | 2 +- .../processing/algs/grass7/ext/i_landsat_acca.py | 2 +- .../processing/algs/grass7/ext/i_landsat_toar.py | 2 +- .../plugins/processing/algs/grass7/ext/i_maxlik.py | 2 +- python/plugins/processing/algs/grass7/ext/i_oif.py | 2 +- .../processing/algs/grass7/ext/i_pansharpen.py | 2 +- python/plugins/processing/algs/grass7/ext/i_pca.py | 2 +- .../processing/algs/grass7/ext/i_segment.py | 2 +- .../plugins/processing/algs/grass7/ext/i_smap.py | 2 +- .../processing/algs/grass7/ext/i_tasscap.py | 2 +- .../processing/algs/grass7/ext/r_blend_combine.py | 2 +- .../processing/algs/grass7/ext/r_blend_rgb.py | 2 +- .../processing/algs/grass7/ext/r_category.py | 2 +- .../plugins/processing/algs/grass7/ext/r_colors.py | 2 +- .../processing/algs/grass7/ext/r_colors_stddev.py | 2 +- .../plugins/processing/algs/grass7/ext/r_drain.py | 2 +- .../processing/algs/grass7/ext/r_horizon.py | 2 +- python/plugins/processing/algs/grass7/ext/r_li.py | 2 +- .../processing/algs/grass7/ext/r_li_cwed.py | 2 +- .../processing/algs/grass7/ext/r_li_cwed_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_dominance.py | 2 +- .../algs/grass7/ext/r_li_dominance_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_edgedensity.py | 2 +- .../algs/grass7/ext/r_li_edgedensity_ascii.py | 2 +- .../plugins/processing/algs/grass7/ext/r_li_mpa.py | 2 +- .../processing/algs/grass7/ext/r_li_mpa_ascii.py | 2 +- .../plugins/processing/algs/grass7/ext/r_li_mps.py | 2 +- .../processing/algs/grass7/ext/r_li_mps_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_padcv.py | 2 +- .../processing/algs/grass7/ext/r_li_padcv_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_padrange.py | 2 +- .../algs/grass7/ext/r_li_padrange_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_padsd.py | 2 +- .../processing/algs/grass7/ext/r_li_padsd_ascii.py | 2 +- .../algs/grass7/ext/r_li_patchdensity.py | 2 +- .../algs/grass7/ext/r_li_patchdensity_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_patchnum.py | 2 +- .../algs/grass7/ext/r_li_patchnum_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_pielou.py | 2 +- .../algs/grass7/ext/r_li_pielou_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_renyi.py | 2 +- .../processing/algs/grass7/ext/r_li_renyi_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_richness.py | 2 +- .../algs/grass7/ext/r_li_richness_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_shannon.py | 2 +- .../algs/grass7/ext/r_li_shannon_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_shape.py | 2 +- .../processing/algs/grass7/ext/r_li_shape_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_simpson.py | 2 +- .../algs/grass7/ext/r_li_simpson_ascii.py | 2 +- .../processing/algs/grass7/ext/r_mapcalc.py | 2 +- .../processing/algs/grass7/ext/r_mask_rast.py | 2 +- .../processing/algs/grass7/ext/r_mask_vect.py | 2 +- .../plugins/processing/algs/grass7/ext/r_null.py | 2 +- .../plugins/processing/algs/grass7/ext/r_proj.py | 2 +- .../processing/algs/grass7/ext/r_reclass.py | 2 +- .../processing/algs/grass7/ext/r_resamp_filter.py | 2 +- python/plugins/processing/algs/grass7/ext/r_rgb.py | 2 +- .../processing/algs/grass7/ext/r_series_interp.py | 2 +- .../plugins/processing/algs/grass7/ext/r_shade.py | 2 +- .../processing/algs/grass7/ext/r_statistics.py | 2 +- .../algs/grass7/ext/r_stats_quantile_rast.py | 2 +- .../processing/algs/grass7/ext/r_what_color.py | 2 +- .../processing/algs/grass7/ext/v_distance.py | 2 +- .../plugins/processing/algs/grass7/ext/v_edit.py | 2 +- .../processing/algs/grass7/ext/v_extrude.py | 2 +- .../processing/algs/grass7/ext/v_in_geonames.py | 2 +- python/plugins/processing/algs/grass7/ext/v_net.py | 2 +- .../processing/algs/grass7/ext/v_net_alloc.py | 2 +- .../processing/algs/grass7/ext/v_net_allpairs.py | 2 +- .../processing/algs/grass7/ext/v_net_bridge.py | 2 +- .../processing/algs/grass7/ext/v_net_centrality.py | 2 +- .../processing/algs/grass7/ext/v_net_components.py | 2 +- .../algs/grass7/ext/v_net_connectivity.py | 2 +- .../processing/algs/grass7/ext/v_net_distance.py | 2 +- .../processing/algs/grass7/ext/v_net_flow.py | 2 +- .../processing/algs/grass7/ext/v_net_iso.py | 2 +- .../processing/algs/grass7/ext/v_net_path.py | 2 +- .../processing/algs/grass7/ext/v_net_salesman.py | 2 +- .../algs/grass7/ext/v_net_spanningtree.py | 2 +- .../processing/algs/grass7/ext/v_net_steiner.py | 2 +- .../processing/algs/grass7/ext/v_net_visibility.py | 2 +- .../plugins/processing/algs/grass7/ext/v_proj.py | 2 +- .../processing/algs/grass7/ext/v_rast_stats.py | 2 +- .../processing/algs/grass7/ext/v_rectify.py | 2 +- .../plugins/processing/algs/grass7/ext/v_sample.py | 2 +- .../plugins/processing/algs/grass7/ext/v_to_3d.py | 2 +- .../processing/algs/grass7/ext/v_vect_stats.py | 2 +- .../processing/algs/grass7/ext/v_voronoi.py | 2 +- .../processing/algs/grass7/ext/v_what_rast.py | 2 +- .../processing/algs/grass7/ext/v_what_vect.py | 2 +- python/plugins/processing/algs/help/__init__.py | 2 +- .../plugins/processing/algs/qgis/AddTableField.py | 2 +- python/plugins/processing/algs/qgis/Aggregate.py | 2 +- python/plugins/processing/algs/qgis/Aspect.py | 2 +- python/plugins/processing/algs/qgis/BarPlot.py | 7 +- .../processing/algs/qgis/BasicStatistics.py | 4 +- python/plugins/processing/algs/qgis/BoxPlot.py | 4 +- python/plugins/processing/algs/qgis/Buffer.py | 2 +- .../plugins/processing/algs/qgis/CheckValidity.py | 2 +- python/plugins/processing/algs/qgis/ConcaveHull.py | 4 +- .../processing/algs/qgis/CreateAttributeIndex.py | 2 +- .../processing/algs/qgis/CreateConstantRaster.py | 2 +- .../processing/algs/qgis/Datasources2Vrt.py | 2 +- .../processing/algs/qgis/DefineProjection.py | 2 +- python/plugins/processing/algs/qgis/Delaunay.py | 2 +- .../plugins/processing/algs/qgis/DeleteColumn.py | 2 +- .../algs/qgis/DeleteDuplicateGeometries.py | 2 +- python/plugins/processing/algs/qgis/DeleteHoles.py | 2 +- .../processing/algs/qgis/DensifyGeometries.py | 2 +- .../algs/qgis/DensifyGeometriesInterval.py | 2 +- python/plugins/processing/algs/qgis/Difference.py | 2 +- .../processing/algs/qgis/EliminateSelection.py | 2 +- python/plugins/processing/algs/qgis/ExecuteSQL.py | 2 +- python/plugins/processing/algs/qgis/Explode.py | 2 +- .../processing/algs/qgis/ExportGeometryInfo.py | 2 +- python/plugins/processing/algs/qgis/ExtendLines.py | 2 +- .../processing/algs/qgis/ExtentFromLayer.py | 2 +- .../algs/qgis/ExtractSpecificVertices.py | 2 +- .../plugins/processing/algs/qgis/FieldPyculator.py | 2 +- .../processing/algs/qgis/FieldsCalculator.py | 2 +- .../plugins/processing/algs/qgis/FieldsMapper.py | 53 +- .../plugins/processing/algs/qgis/FindProjection.py | 2 +- .../processing/algs/qgis/GeometryByExpression.py | 2 +- .../processing/algs/qgis/GeometryConvert.py | 2 +- python/plugins/processing/algs/qgis/Grid.py | 7 +- python/plugins/processing/algs/qgis/Heatmap.py | 2 +- python/plugins/processing/algs/qgis/Hillshade.py | 2 +- .../processing/algs/qgis/HubDistanceLines.py | 2 +- .../processing/algs/qgis/HubDistancePoints.py | 2 +- .../processing/algs/qgis/HypsometricCurves.py | 2 +- .../processing/algs/qgis/IdwInterpolation.py | 2 +- .../processing/algs/qgis/ImportIntoPostGIS.py | 2 +- .../processing/algs/qgis/ImportIntoSpatialite.py | 2 +- .../plugins/processing/algs/qgis/Intersection.py | 2 +- .../processing/algs/qgis/KeepNBiggestParts.py | 2 +- .../processing/algs/qgis/LinesToPolygons.py | 2 +- .../processing/algs/qgis/MeanAndStdDevPlot.py | 6 +- .../algs/qgis/MinimumBoundingGeometry.py | 2 +- .../algs/qgis/NearestNeighbourAnalysis.py | 4 +- python/plugins/processing/algs/qgis/OffsetLine.py | 2 +- .../plugins/processing/algs/qgis/Orthogonalize.py | 2 +- .../plugins/processing/algs/qgis/PointDistance.py | 2 +- .../plugins/processing/algs/qgis/PointOnSurface.py | 2 +- .../processing/algs/qgis/PointsAlongGeometry.py | 2 +- .../processing/algs/qgis/PointsDisplacement.py | 2 +- .../processing/algs/qgis/PointsFromLines.py | 2 +- .../processing/algs/qgis/PointsFromPolygons.py | 2 +- .../processing/algs/qgis/PointsInPolygon.py | 2 +- .../processing/algs/qgis/PointsLayerFromTable.py | 2 +- .../plugins/processing/algs/qgis/PointsToPaths.py | 4 +- python/plugins/processing/algs/qgis/PolarPlot.py | 6 +- .../processing/algs/qgis/PoleOfInaccessibility.py | 2 +- python/plugins/processing/algs/qgis/Polygonize.py | 2 +- .../processing/algs/qgis/PolygonsToLines.py | 2 +- .../processing/algs/qgis/PostGISExecuteSQL.py | 2 +- .../plugins/processing/algs/qgis/QgisAlgorithm.py | 2 +- .../processing/algs/qgis/QgisAlgorithmProvider.py | 2 +- .../plugins/processing/algs/qgis/RandomExtract.py | 2 +- .../algs/qgis/RandomExtractWithinSubsets.py | 2 +- .../processing/algs/qgis/RandomPointsAlongLines.py | 2 +- .../processing/algs/qgis/RandomPointsExtent.py | 2 +- .../processing/algs/qgis/RandomPointsLayer.py | 2 +- .../processing/algs/qgis/RandomPointsPolygons.py | 2 +- .../processing/algs/qgis/RandomSelection.py | 2 +- .../algs/qgis/RandomSelectionWithinSubsets.py | 2 +- .../processing/algs/qgis/RasterCalculator.py | 2 +- .../processing/algs/qgis/RasterLayerHistogram.py | 6 +- .../processing/algs/qgis/RasterLayerStatistics.py | 4 +- python/plugins/processing/algs/qgis/Rasterize.py | 2 +- .../algs/qgis/RectanglesOvalsDiamondsFixed.py | 2 +- .../algs/qgis/RectanglesOvalsDiamondsVariable.py | 2 +- .../plugins/processing/algs/qgis/RegularPoints.py | 2 +- python/plugins/processing/algs/qgis/Relief.py | 2 +- .../processing/algs/qgis/ReverseLineDirection.py | 2 +- python/plugins/processing/algs/qgis/Ruggedness.py | 2 +- .../processing/algs/qgis/SelectByAttribute.py | 2 +- .../processing/algs/qgis/SelectByExpression.py | 2 +- .../processing/algs/qgis/ServiceAreaFromLayer.py | 2 +- .../processing/algs/qgis/ServiceAreaFromPoint.py | 2 +- python/plugins/processing/algs/qgis/SetMValue.py | 2 +- .../plugins/processing/algs/qgis/SetRasterStyle.py | 2 +- .../plugins/processing/algs/qgis/SetVectorStyle.py | 2 +- python/plugins/processing/algs/qgis/SetZValue.py | 2 +- .../algs/qgis/ShortestPathLayerToPoint.py | 2 +- .../algs/qgis/ShortestPathPointToLayer.py | 2 +- .../algs/qgis/ShortestPathPointToPoint.py | 2 +- .../processing/algs/qgis/SingleSidedBuffer.py | 2 +- python/plugins/processing/algs/qgis/Slope.py | 2 +- .../plugins/processing/algs/qgis/SnapGeometries.py | 2 +- .../plugins/processing/algs/qgis/SpatialIndex.py | 2 +- python/plugins/processing/algs/qgis/SpatialJoin.py | 2 +- .../processing/algs/qgis/SpatialJoinSummary.py | 2 +- .../processing/algs/qgis/SpatialiteExecuteSQL.py | 2 +- .../processing/algs/qgis/StatisticsByCategories.py | 2 +- python/plugins/processing/algs/qgis/SumLines.py | 2 +- .../processing/algs/qgis/SymmetricalDifference.py | 2 +- python/plugins/processing/algs/qgis/TextToFloat.py | 2 +- .../processing/algs/qgis/TinInterpolation.py | 2 +- python/plugins/processing/algs/qgis/TopoColors.py | 2 +- .../plugins/processing/algs/qgis/TruncateTable.py | 2 +- python/plugins/processing/algs/qgis/Union.py | 2 +- .../plugins/processing/algs/qgis/UniqueValues.py | 6 +- .../processing/algs/qgis/VariableDistanceBuffer.py | 2 +- .../processing/algs/qgis/VectorLayerHistogram.py | 6 +- .../processing/algs/qgis/VectorLayerScatterplot.py | 6 +- .../algs/qgis/VectorLayerScatterplot3D.py | 4 +- python/plugins/processing/algs/qgis/VectorSplit.py | 2 +- .../processing/algs/qgis/VoronoiPolygons.py | 2 +- .../processing/algs/qgis/ZonalStatistics.py | 2 +- .../processing/algs/qgis/ui/AggregatesPanel.py | 2 +- .../algs/qgis/ui/FieldsCalculatorDialog.py | 4 +- .../processing/algs/qgis/ui/FieldsMappingPanel.py | 2 +- .../algs/qgis/ui/InterpolationDataWidget.py | 2 +- .../algs/qgis/ui/RasterCalculatorWidgets.py | 2 +- .../processing/algs/qgis/ui/ReliefColorsWidget.py | 2 +- python/plugins/processing/algs/qgis/voronoi.py | 2 +- .../plugins/processing/algs/saga/SagaAlgorithm.py | 11 +- .../processing/algs/saga/SagaAlgorithmBase.py | 2 +- .../processing/algs/saga/SagaAlgorithmProvider.py | 2 +- .../processing/algs/saga/SagaDescriptionCreator.py | 2 +- .../processing/algs/saga/SagaNameDecorator.py | 2 +- python/plugins/processing/algs/saga/SagaUtils.py | 2 +- .../plugins/processing/algs/saga/SplitRGBBands.py | 2 +- .../algs/saga/ext/supervisedclassification.py | 2 +- .../plugins/processing/algs/saga/versioncheck.py | 2 +- python/plugins/processing/core/Processing.py | 2 +- python/plugins/processing/core/ProcessingConfig.py | 2 +- python/plugins/processing/core/ProcessingLog.py | 2 +- .../plugins/processing/core/ProcessingResults.py | 2 +- python/plugins/processing/core/defaultproviders.py | 2 +- python/plugins/processing/core/outputs.py | 2 +- python/plugins/processing/core/parameters.py | 2 +- python/plugins/processing/gui/AlgorithmDialog.py | 2 +- .../plugins/processing/gui/AlgorithmDialogBase.py | 2 +- python/plugins/processing/gui/AlgorithmExecutor.py | 2 +- .../processing/gui/AlgorithmLocatorFilter.py | 2 +- python/plugins/processing/gui/AutofillDialog.py | 2 +- .../plugins/processing/gui/BatchAlgorithmDialog.py | 2 +- .../processing/gui/BatchInputSelectionPanel.py | 2 +- .../processing/gui/BatchOutputSelectionPanel.py | 2 +- python/plugins/processing/gui/BatchPanel.py | 8 +- python/plugins/processing/gui/CheckboxesPanel.py | 8 +- python/plugins/processing/gui/ConfigDialog.py | 2 +- python/plugins/processing/gui/ContextAction.py | 2 +- .../processing/gui/DestinationSelectionPanel.py | 2 +- .../processing/gui/DirectorySelectorDialog.py | 2 +- .../processing/gui/EditRenderingStylesDialog.py | 2 +- .../plugins/processing/gui/ExtentSelectionPanel.py | 2 +- .../plugins/processing/gui/FileSelectionPanel.py | 2 +- python/plugins/processing/gui/FixedTableDialog.py | 2 +- python/plugins/processing/gui/FixedTablePanel.py | 2 +- python/plugins/processing/gui/Help2Html.py | 2 +- python/plugins/processing/gui/HelpEditionDialog.py | 2 +- python/plugins/processing/gui/HistoryDialog.py | 4 +- .../processing/gui/ListMultiselectWidget.py | 2 +- .../plugins/processing/gui/MessageBarProgress.py | 4 +- python/plugins/processing/gui/MessageDialog.py | 2 +- .../processing/gui/MultipleFileInputDialog.py | 2 +- .../plugins/processing/gui/MultipleInputDialog.py | 2 +- .../plugins/processing/gui/MultipleInputPanel.py | 2 +- python/plugins/processing/gui/NumberInputPanel.py | 2 +- python/plugins/processing/gui/ParameterGuiUtils.py | 2 +- python/plugins/processing/gui/ParametersPanel.py | 2 +- python/plugins/processing/gui/PointMapTool.py | 2 +- .../plugins/processing/gui/PointSelectionPanel.py | 2 +- .../plugins/processing/gui/PostgisTableSelector.py | 2 +- python/plugins/processing/gui/Postprocessing.py | 2 +- python/plugins/processing/gui/ProcessingToolbox.py | 2 +- python/plugins/processing/gui/RangePanel.py | 2 +- python/plugins/processing/gui/RectangleMapTool.py | 2 +- .../processing/gui/RenderingStyleFilePanel.py | 2 +- python/plugins/processing/gui/RenderingStyles.py | 2 +- python/plugins/processing/gui/ResultsDock.py | 2 +- python/plugins/processing/gui/TestTools.py | 2 +- python/plugins/processing/gui/ToolboxAction.py | 2 +- python/plugins/processing/gui/__init__.py | 2 +- python/plugins/processing/gui/menus.py | 47 +- python/plugins/processing/gui/wrappers.py | 4 +- .../processing/modeler/AddModelFromFileAction.py | 2 +- .../processing/modeler/CreateNewModelAction.py | 2 +- .../processing/modeler/DeleteModelAction.py | 2 +- .../plugins/processing/modeler/EditModelAction.py | 2 +- .../processing/modeler/ModelerAlgorithmProvider.py | 2 +- python/plugins/processing/modeler/ModelerDialog.py | 23 +- .../processing/modeler/ModelerGraphicItem.py | 2 +- .../modeler/ModelerParameterDefinitionDialog.py | 2 +- .../processing/modeler/ModelerParametersDialog.py | 4 +- python/plugins/processing/modeler/ModelerScene.py | 2 +- python/plugins/processing/modeler/ModelerUtils.py | 2 +- .../processing/modeler/MultilineTextPanel.py | 2 +- .../processing/modeler/OpenModelFromFileAction.py | 2 +- .../processing/modeler/WrongModelException.py | 2 +- .../DeletePreconfiguredAlgorithmAction.py | 2 +- .../NewPreconfiguredAlgorithmAction.py | 2 +- .../preconfigured/PreconfiguredAlgorithm.py | 2 +- .../preconfigured/PreconfiguredAlgorithmDialog.py | 2 +- .../PreconfiguredAlgorithmProvider.py | 2 +- .../processing/script/AddScriptFromFileAction.py | 5 +- .../processing/script/CreateNewScriptAction.py | 2 +- .../processing/script/DeleteScriptAction.py | 2 +- .../plugins/processing/script/EditScriptAction.py | 2 +- .../processing/script/ScriptAlgorithmProvider.py | 2 +- python/plugins/processing/script/ScriptEdit.py | 2 +- .../processing/script/ScriptEditorDialog.py | 2 +- python/plugins/processing/script/ScriptUtils.py | 2 +- python/plugins/processing/tests/GuiTest.py | 2 +- python/plugins/processing/tests/ModelerTest.py | 2 +- python/plugins/processing/tests/TestData.py | 2 +- python/plugins/processing/tests/ToolsTest.py | 2 +- .../testdata/expected/concave_hull_points_03.gml | 21 + .../testdata/expected/concave_hull_points_03.xsd | 37 + .../testdata/expected/concave_hull_points_07.gml | 21 + .../testdata/expected/concave_hull_points_07.xsd | 37 + .../testdata/expected/refactor_fields_null.gml | 77 + .../testdata/expected/refactor_fields_null.xsd | 44 + .../tests/testdata/gdal_algorithm_tests.yaml | 1 + .../tests/testdata/qgis_algorithm_tests.yaml | 61 + python/plugins/processing/tools/__init__.py | 2 +- python/plugins/processing/tools/dataobjects.py | 2 +- python/plugins/processing/tools/general.py | 2 +- python/plugins/processing/tools/postgis.py | 2 +- python/plugins/processing/tools/raster.py | 2 +- python/plugins/processing/tools/spatialite.py | 2 +- python/plugins/processing/tools/system.py | 2 +- python/plugins/processing/tools/vector.py | 2 +- python/pyplugin_installer/__init__.py | 2 +- python/server/__init__.py | 2 +- python/server/qgsmapserviceexception.sip.in | 2 +- python/user.py | 2 +- python/utils.py | 2 +- resources/function_help/json/make_triangle | 13 + resources/qgis_global_settings.ini | 4 - scripts/generate_test_mask_image.py | 2 +- scripts/mkuidefaults.py | 2 +- scripts/parse_dash_results.py | 4 +- scripts/pyuic-wrapper.py | 2 +- scripts/sipify.pl | 6 +- scripts/widgets_tree.py | 2 +- src/analysis/network/qgsgraphdirector.h | 5 + .../processing/qgsalgorithmfiledownloader.cpp | 1 - src/analysis/processing/qgsalgorithmpackage.cpp | 1 - .../qgsalgorithmrasterlayeruniquevalues.cpp | 2 - src/analysis/raster/qgsrelief.cpp | 3 + src/app/3d/qgs3dmapcanvasdockwidget.cpp | 2 + src/app/layout/qgslayoutmapwidget.cpp | 2 +- src/app/layout/qgslayoutpropertieswidget.cpp | 2 +- src/app/qgisapp.cpp | 78 +- src/app/qgsattributeactiondialog.cpp | 19 +- src/app/qgsattributeactiondialog.h | 5 +- src/app/qgsattributeactionpropertiesdialog.cpp | 7 +- src/app/qgsattributeactionpropertiesdialog.h | 4 +- src/app/qgsattributetabledialog.cpp | 42 +- src/app/qgsclipboard.cpp | 4 +- src/app/qgsfeatureaction.cpp | 3 + src/app/qgsidentifyresultsdialog.cpp | 14 +- src/app/qgsmaptooloffsetcurve.cpp | 8 +- src/app/qgsmaptoolselectradius.cpp | 18 +- src/app/qgsmaptoolselectradius.h | 2 + src/app/qgsmaptoolsimplify.cpp | 2 +- src/app/qgsoptions.cpp | 12 +- src/app/qgsrastercalcdialog.cpp | 1 + src/app/qgssnappingwidget.cpp | 12 +- src/app/qgsstatusbarcoordinateswidget.cpp | 5 +- src/app/qgsstatusbarcoordinateswidget.h | 3 +- src/core/auth/qgsauthcertutils.cpp | 10 +- src/core/geometry/qgsgeometryeditutils.cpp | 6 +- src/core/geometry/qgsgeometrymakevalid.cpp | 12 +- src/core/geometry/qgsgeos.cpp | 3 + src/core/geometry/qgslinestring.cpp | 23 +- src/core/layout/qgscompositionconverter.cpp | 27 +- src/core/layout/qgscompositionconverter.h | 17 + src/core/layout/qgslayout.cpp | 13 +- src/core/layout/qgslayoutitemlegend.cpp | 4 +- src/core/layout/qgslayouttable.cpp | 1 + src/core/layout/qgslayoutundostack.cpp | 3 + src/core/pal/feature.cpp | 7 +- src/core/pal/pointset.cpp | 5 + src/core/pal/pointset.h | 7 +- src/core/processing/qgsprocessingalgrunnertask.cpp | 4 + src/core/processing/qgsprocessingfeedback.cpp | 4 +- src/core/processing/qgsprocessingfeedback.h | 9 +- src/core/processing/qgsprocessingparameters.cpp | 9 +- src/core/processing/qgsprocessingprovider.cpp | 7 +- src/core/processing/qgsprocessingutils.cpp | 3 +- src/core/qgsaction.cpp | 2 + src/core/qgsaction.h | 36 + src/core/qgsapplication.cpp | 4 +- src/core/qgsbrowsermodel.cpp | 2 +- src/core/qgscolorschemeregistry.cpp | 2 +- src/core/qgscoordinateformatter.cpp | 2 +- src/core/qgscoordinateutils.cpp | 11 +- src/core/qgscoordinateutils.h | 8 +- src/core/qgsfileutils.cpp | 2 +- src/core/qgsfileutils.h | 2 +- src/core/qgsmapsettings.cpp | 10 +- src/core/qgsmapsettings.h | 2 + src/core/qgsmapsettingsutils.cpp | 13 +- src/core/qgspallabeling.cpp | 20 +- src/core/qgspallabeling.h | 3 +- src/core/qgspathresolver.cpp | 17 +- src/core/qgspluginlayer.cpp | 48 + src/core/qgspluginlayer.h | 32 +- src/core/qgssettings.h | 4 +- src/core/qgssnappingconfig.cpp | 8 +- src/core/qgsstacktrace.cpp | 2 - src/core/qgstolerance.cpp | 6 +- src/core/qgsvectorfilewriter.cpp | 2 +- src/core/qgsvectorlayer.cpp | 4 +- src/core/raster/qgsrasterinterface.cpp | 3 +- .../symbology/qgscategorizedsymbolrenderer.cpp | 31 +- src/core/symbology/qgscategorizedsymbolrenderer.h | 40 +- src/core/symbology/qgsfillsymbollayer.cpp | 5 + src/core/symbology/qgssymbol.cpp | 14 + src/core/symbology/qgssymbollayerutils.cpp | 6 +- src/crashhandler/qgsstacktrace.cpp | 3 - src/crashhandler/qgsstacktrace.h | 2 - src/gui/attributetable/qgsattributetableview.cpp | 7 + src/gui/attributetable/qgsdualview.cpp | 25 +- src/gui/editorwidgets/qgsdatetimeedit.cpp | 52 +- src/gui/editorwidgets/qgsdatetimeedit.h | 1 + src/gui/editorwidgets/qgsdatetimeeditwrapper.cpp | 17 +- src/gui/effects/qgseffectstackpropertieswidget.cpp | 2 +- src/gui/layertree/qgslayertreemapcanvasbridge.cpp | 16 +- .../layertree/qgslayertreeviewdefaultactions.cpp | 10 +- .../layout/qgslayoutnewitempropertiesdialog.cpp | 2 +- .../qgsprocessingalgorithmdialogbase.cpp | 30 +- .../processing/qgsprocessingalgorithmdialogbase.h | 15 +- src/gui/qgsactionmenu.cpp | 19 + src/gui/qgsactionmenu.h | 9 + src/gui/qgsattributedialog.cpp | 36 +- src/gui/qgsattributedialog.h | 7 +- src/gui/qgsattributeform.cpp | 15 + src/gui/qgsattributeform.h | 1 + src/gui/qgscolorbutton.cpp | 12 +- src/gui/qgscolorrampbutton.cpp | 16 +- src/gui/qgscolorwidgets.cpp | 2 +- src/gui/qgsexternalresourcewidget.cpp | 6 +- src/gui/qgsfilterlineedit.cpp | 9 + src/gui/qgsfilterlineedit.h | 9 + src/gui/qgsfontbutton.cpp | 10 +- src/gui/qgsidentifymenu.cpp | 2 + src/gui/qgslegendfilterbutton.cpp | 4 +- src/gui/qgsmapcanvas.cpp | 2 +- src/gui/qgsmaplayeractionregistry.cpp | 33 +- src/gui/qgsmaplayeractionregistry.h | 46 +- src/gui/qgsmaptoolidentify.cpp | 4 +- src/gui/qgsmessagebar.cpp | 2 +- src/gui/qgsoptionsdialoghighlightwidgetsimpl.cpp | 35 +- src/gui/qgsoptionsdialoghighlightwidgetsimpl.h | 8 +- src/gui/qgspropertyoverridebutton.cpp | 2 +- src/gui/qgssymbolbutton.cpp | 10 +- src/gui/symbology/qgsstylemanagerdialog.cpp | 6 +- src/gui/symbology/qgssymbolslistwidget.cpp | 2 +- src/plugins/grass/qgis_grass_test.py | 2 +- src/plugins/grass/scripts/db.connect-login.pg.py | 2 +- src/plugins/grass/scripts/qgis.v.kernel.rast.py | 2 +- src/plugins/grass/scripts/qgis.v.upgrade.py | 2 +- src/plugins/grass/scripts/r.external.all.py | 2 +- src/plugins/grass/scripts/v.out.ogr.pg.py | 2 +- src/providers/gdal/qgsgdalprovider.cpp | 17 +- src/providers/grass/qgsgrassoptions.cpp | 2 +- src/providers/grass/qgsgrassprovidermodule.cpp | 10 +- src/providers/grass/qgsgrassprovidermodule.h | 2 +- src/providers/ogr/qgsogrprovider.cpp | 15 +- src/providers/ogr/qgsogrprovider.h | 2 +- src/providers/oracle/qgsoraclefeatureiterator.cpp | 4 +- src/providers/oracle/qgsoracleprovider.cpp | 18 +- src/providers/oracle/qgsoracleprovider.h | 10 +- src/providers/postgres/qgspgnewconnection.cpp | 2 +- src/providers/postgres/qgspostgresprovider.cpp | 10 +- .../virtual/qgsvirtuallayerqueryparser.cpp | 7 +- src/providers/wfs/qgswfsprovider.cpp | 7 + .../services/wfs/qgswfsdescribefeaturetype.cpp | 2 +- src/server/services/wfs/qgswfsgetfeature.cpp | 78 +- src/server/services/wms/qgswmsrenderer.cpp | 22 +- src/ui/layout/qgslayoutdesignerbase.ui | 158 +- src/ui/layout/qgslayoutlegendwidgetbase.ui | 2 +- src/ui/qgisapp.ui | 42 +- src/ui/qgsattributeactiondialogbase.ui | 36 +- src/ui/qgsattributeactionpropertiesdialogbase.ui | 72 +- src/ui/qgsexpressionselectiondialogbase.ui | 2 +- src/ui/qgsmapcanvasdockwidgetbase.ui | 21 +- src/ui/qgsoptionsbase.ui | 3 + src/ui/qgsvectorlayerpropertiesbase.ui | 25 +- src/ui/symbollayer/widget_layerproperties.ui | 2 +- tests/code_layout/acceptable_missing_doc.py | 4 +- tests/code_layout/test_qgsdoccoverage.py | 2 +- tests/code_layout/test_qgssipcoverage.py | 2 +- tests/code_layout/test_sipfiles_uptodate.sh | 4 +- tests/src/analysis/testqgsprocessing.cpp | 31 + tests/src/core/testqgscompositionconverter.cpp | 62 +- tests/src/core/testqgslabelingengine.cpp | 72 + tests/src/core/testqgsmapsettings.cpp | 18 + tests/src/core/testqgsmapsettingsutils.cpp | 3 + tests/src/core/testqgsproject.cpp | 32 +- tests/src/core/testqgssettings.cpp | 12 +- tests/src/python/CMakeLists.txt | 1 + tests/src/python/featuresourcetestbase.py | 2 +- tests/src/python/offlineditingtestbase.py | 2 +- tests/src/python/providertestbase.py | 2 +- tests/src/python/qgis_interface.py | 2 +- tests/src/python/qgis_local_server.py | 2 +- tests/src/python/qgis_wrapped_server.py | 2 +- tests/src/python/test_authmanager_ogr.py | 2 +- tests/src/python/test_authmanager_ogr_postgres.py | 2 +- tests/src/python/test_authmanager_password_ows.py | 2 +- .../python/test_authmanager_password_postgres.py | 2 +- tests/src/python/test_authmanager_pki_ows.py | 2 +- tests/src/python/test_authmanager_pki_postgres.py | 2 +- tests/src/python/test_authmanager_proxy.py | 2 +- tests/src/python/test_authsettingswidget.py | 2 +- tests/src/python/test_console.py | 2 +- tests/src/python/test_db_manager_gpkg.py | 2 +- tests/src/python/test_layer_dependencies.py | 2 +- tests/src/python/test_offline_editing_wfs.py | 2 +- tests/src/python/test_provider_afs.py | 2 +- tests/src/python/test_provider_db2.py | 2 +- tests/src/python/test_provider_memory.py | 2 +- tests/src/python/test_provider_mssql.py | 2 +- tests/src/python/test_provider_ogr.py | 2 +- tests/src/python/test_provider_ogr_gpkg.py | 2 +- tests/src/python/test_provider_ogr_sqlite.py | 2 +- tests/src/python/test_provider_oracle.py | 2 +- tests/src/python/test_provider_postgres.py | 2 +- tests/src/python/test_provider_shapefile.py | 2 +- tests/src/python/test_provider_spatialite.py | 2 +- tests/src/python/test_provider_tabfile.py | 2 +- tests/src/python/test_provider_virtual.py | 2 +- tests/src/python/test_provider_wfs.py | 2 +- tests/src/python/test_provider_wfs_gui.py | 2 +- tests/src/python/test_qgis_local_server.py | 2 +- tests/src/python/test_qgsactionmanager.py | 2 +- tests/src/python/test_qgsaggregatecalculator.py | 2 +- tests/src/python/test_qgsannotation.py | 2 +- tests/src/python/test_qgsapplication.py | 2 +- tests/src/python/test_qgsappstartup.py | 2 +- tests/src/python/test_qgsarrowsymbollayer.py | 2 +- .../python/test_qgsattributeformeditorwidget.py | 2 +- tests/src/python/test_qgsattributetableconfig.py | 2 +- tests/src/python/test_qgsattributetablemodel.py | 2 +- tests/src/python/test_qgsauthsystem.py | 2 +- tests/src/python/test_qgsauxiliarystorage.py | 2 +- tests/src/python/test_qgsbearingutils.py | 2 +- tests/src/python/test_qgsblendmodes.py | 2 +- tests/src/python/test_qgsbox3d.py | 2 +- .../python/test_qgscategorizedsymbolrenderer.py | 145 +- tests/src/python/test_qgscheckablecombobox.py | 2 +- tests/src/python/test_qgscolorbutton.py | 2 +- tests/src/python/test_qgscolorscheme.py | 2 +- tests/src/python/test_qgscolorschemeregistry.py | 2 +- tests/src/python/test_qgsconditionalstyle.py | 2 +- tests/src/python/test_qgscoordinateformatter.py | 9 +- tests/src/python/test_qgscoordinatetransform.py | 2 +- .../python/test_qgscoordinatetransformcontext.py | 2 +- tests/src/python/test_qgsdatetimeedit.py | 2 +- .../python/test_qgsdatetimestatisticalsummary.py | 2 +- tests/src/python/test_qgsdefaultvalue.py | 2 +- tests/src/python/test_qgsdelimitedtextprovider.py | 2 +- .../python/test_qgsdelimitedtextprovider_wanted.py | 2 +- tests/src/python/test_qgsdistancearea.py | 8 +- tests/src/python/test_qgseditformconfig.py | 2 +- tests/src/python/test_qgseditwidgets.py | 2 +- tests/src/python/test_qgsellipsoidutils.py | 2 +- .../src/python/test_qgsencodingselectiondialog.py | 2 +- tests/src/python/test_qgsexpression.py | 2 +- .../src/python/test_qgsexpressionbuilderwidget.py | 2 +- tests/src/python/test_qgsexpressionlineedit.py | 2 +- tests/src/python/test_qgsextentgroupbox.py | 2 +- tests/src/python/test_qgsfeature.py | 2 +- tests/src/python/test_qgsfeatureiterator.py | 2 +- tests/src/python/test_qgsfeaturesink.py | 2 +- tests/src/python/test_qgsfeaturesource.py | 2 +- tests/src/python/test_qgsfeedback.py | 2 +- tests/src/python/test_qgsfieldcombobox.py | 2 +- tests/src/python/test_qgsfieldformatters.py | 2 +- tests/src/python/test_qgsfieldmodel.py | 2 +- tests/src/python/test_qgsfields.py | 2 +- tests/src/python/test_qgsfieldvalidator.py | 2 +- tests/src/python/test_qgsfiledownloader.py | 2 +- tests/src/python/test_qgsfileutils.py | 6 +- tests/src/python/test_qgsfillsymbollayers.py | 2 +- tests/src/python/test_qgsfilterlineedit.py | 2 +- tests/src/python/test_qgsfloatingwidget.py | 2 +- tests/src/python/test_qgsfontbutton.py | 2 +- tests/src/python/test_qgsfontutils.py | 2 +- tests/src/python/test_qgsgeometry.py | 18 +- .../python/test_qgsgeometry_avoid_intersections.py | 2 +- .../python/test_qgsgeometrygeneratorsymbollayer.py | 2 +- tests/src/python/test_qgsgeometryvalidator.py | 2 +- tests/src/python/test_qgsgeonodeconnection.py | 2 +- .../src/python/test_qgsgraduatedsymbolrenderer.py | 2 +- tests/src/python/test_qgshighlight.py | 2 +- tests/src/python/test_qgsinterval.py | 2 +- tests/src/python/test_qgsissue7244.py | 2 +- tests/src/python/test_qgsjsonutils.py | 2 +- tests/src/python/test_qgslayerdefinition.py | 2 +- tests/src/python/test_qgslayermetadata.py | 2 +- tests/src/python/test_qgslayertree.py | 2 +- .../src/python/test_qgslayertreemapcanvasbridge.py | 38 +- tests/src/python/test_qgslayout.py | 2 +- tests/src/python/test_qgslayoutaligner.py | 2 +- tests/src/python/test_qgslayoutatlas.py | 2 +- tests/src/python/test_qgslayoutexporter.py | 2 +- tests/src/python/test_qgslayoutframe.py | 2 +- tests/src/python/test_qgslayoutgridsettings.py | 2 +- tests/src/python/test_qgslayoutguides.py | 2 +- tests/src/python/test_qgslayouthtml.py | 2 +- tests/src/python/test_qgslayoutitem.py | 2 +- .../python/test_qgslayoutitempropertiesdialog.py | 2 +- tests/src/python/test_qgslayoutlabel.py | 2 +- tests/src/python/test_qgslayoutlegend.py | 25 +- tests/src/python/test_qgslayoutmanager.py | 2 +- tests/src/python/test_qgslayoutmap.py | 2 +- tests/src/python/test_qgslayoutmapgrid.py | 2 +- tests/src/python/test_qgslayoutpage.py | 2 +- tests/src/python/test_qgslayoutpagecollection.py | 2 +- tests/src/python/test_qgslayoutpicture.py | 2 +- tests/src/python/test_qgslayoutpolygon.py | 2 +- tests/src/python/test_qgslayoutpolyline.py | 2 +- tests/src/python/test_qgslayoutscalebar.py | 2 +- tests/src/python/test_qgslayoutshape.py | 2 +- tests/src/python/test_qgslayoutsnapper.py | 2 +- tests/src/python/test_qgslayoutunitscombobox.py | 2 +- tests/src/python/test_qgslayoutview.py | 2 +- tests/src/python/test_qgslinesymbollayers.py | 2 +- tests/src/python/test_qgslocator.py | 2 +- tests/src/python/test_qgslogger.py | 2 +- tests/src/python/test_qgsmapcanvas.py | 2 +- .../src/python/test_qgsmapcanvasannotationitem.py | 2 +- tests/src/python/test_qgsmaplayer.py | 2 +- tests/src/python/test_qgsmaplayeraction.py | 96 + tests/src/python/test_qgsmaplayermodel.py | 2 +- tests/src/python/test_qgsmaplayerstore.py | 2 +- tests/src/python/test_qgsmaprenderer.py | 2 +- tests/src/python/test_qgsmaprenderercache.py | 2 +- tests/src/python/test_qgsmapthemecollection.py | 2 +- tests/src/python/test_qgsmapunitscale.py | 2 +- tests/src/python/test_qgsmargins.py | 2 +- tests/src/python/test_qgsmultiedittoolbutton.py | 2 +- tests/src/python/test_qgsnetworkcontentfetcher.py | 2 +- .../src/python/test_qgsnewgeopackagelayerdialog.py | 2 +- tests/src/python/test_qgsnoapplication.py | 2 +- tests/src/python/test_qgsnullsymbolrenderer.py | 2 +- tests/src/python/test_qgsopacitywidget.py | 2 +- tests/src/python/test_qgsowsconnection.py | 2 +- tests/src/python/test_qgspallabeling_base.py | 2 +- tests/src/python/test_qgspallabeling_canvas.py | 2 +- tests/src/python/test_qgspallabeling_layout.py | 2 +- tests/src/python/test_qgspallabeling_placement.py | 2 +- tests/src/python/test_qgspallabeling_server.py | 2 +- tests/src/python/test_qgspallabeling_tests.py | 2 +- tests/src/python/test_qgspanelwidget.py | 2 +- tests/src/python/test_qgspanelwidgetstack.py | 2 +- tests/src/python/test_qgspoint.py | 2 +- tests/src/python/test_qgspointclusterrenderer.py | 2 +- .../python/test_qgspointdisplacementrenderer.py | 2 +- tests/src/python/test_qgspostgresdomain.py | 2 +- tests/src/python/test_qgsproject.py | 48 +- .../python/test_qgsprojectionselectionwidgets.py | 2 +- tests/src/python/test_qgsrange.py | 2 +- tests/src/python/test_qgsrangewidgets.py | 2 +- tests/src/python/test_qgsrasterbandcombobox.py | 2 +- tests/src/python/test_qgsrastercolorrampshader.py | 2 +- tests/src/python/test_qgsrasterfilewriter.py | 2 +- tests/src/python/test_qgsrasterfilewritertask.py | 2 +- tests/src/python/test_qgsrasterlayer.py | 2 +- tests/src/python/test_qgsratiolockbutton.py | 2 +- tests/src/python/test_qgsrectangle.py | 2 +- tests/src/python/test_qgsreferencedgeometry.py | 2 +- tests/src/python/test_qgsrelation.py | 2 +- tests/src/python/test_qgsrelationeditwidget.py | 2 +- tests/src/python/test_qgsrelationmanager.py | 2 +- tests/src/python/test_qgsrendercontext.py | 2 +- tests/src/python/test_qgsrenderer.py | 2 +- tests/src/python/test_qgsreport.py | 2 +- tests/src/python/test_qgsrulebasedrenderer.py | 2 +- tests/src/python/test_qgssearchwidgettoolbutton.py | 2 +- tests/src/python/test_qgssearchwidgetwrapper.py | 2 +- tests/src/python/test_qgsserver.py | 2 +- tests/src/python/test_qgsserver_accesscontrol.py | 2 +- tests/src/python/test_qgsserver_modules.py | 2 +- tests/src/python/test_qgsserver_plugins.py | 2 +- tests/src/python/test_qgsserver_projectutils.py | 2 +- tests/src/python/test_qgsserver_request.py | 2 +- tests/src/python/test_qgsserver_response.py | 2 +- tests/src/python/test_qgsserver_security.py | 2 +- tests/src/python/test_qgsserver_services.py | 2 +- tests/src/python/test_qgsserver_settings.py | 2 +- tests/src/python/test_qgsserver_wfs.py | 6 +- tests/src/python/test_qgsserver_wfst.py | 2 +- tests/src/python/test_qgsserver_wms.py | 13 +- .../python/test_qgsserver_wms_getlegendgraphic.py | 2 +- tests/src/python/test_qgsserver_wms_getmap.py | 2 +- tests/src/python/test_qgsserver_wms_getprint.py | 2 +- tests/src/python/test_qgssettings.py | 2 +- tests/src/python/test_qgsshortcutsmanager.py | 2 +- tests/src/python/test_qgssinglesymbolrenderer.py | 2 +- tests/src/python/test_qgssourceselectprovider.py | 2 +- tests/src/python/test_qgsspatialindex.py | 2 +- tests/src/python/test_qgssqlstatement.py | 2 +- .../src/python/test_qgsstringstatisticalsummary.py | 2 +- tests/src/python/test_qgsstringutils.py | 2 +- tests/src/python/test_qgssymbol.py | 345 +- tests/src/python/test_qgssymbolbutton.py | 2 +- .../python/test_qgssymbolexpressionvariables.py | 2 +- tests/src/python/test_qgssymbollayer.py | 2 +- tests/src/python/test_qgssymbollayer_createsld.py | 2 +- tests/src/python/test_qgssymbollayer_readsld.py | 2 +- tests/src/python/test_qgssymbollayerutils.py | 2 +- tests/src/python/test_qgstaskmanager.py | 2 +- tests/src/python/test_qgstextformatwidget.py | 2 +- tests/src/python/test_qgstextrenderer.py | 2 +- tests/src/python/test_qgstreewidgetitem.py | 2 +- tests/src/python/test_qgsunittypes.py | 2 +- tests/src/python/test_qgsvectorcolorramp.py | 2 +- tests/src/python/test_qgsvectorfilewriter.py | 2 +- tests/src/python/test_qgsvectorfilewritertask.py | 2 +- tests/src/python/test_qgsvectorlayer.py | 2 +- tests/src/python/test_qgsvectorlayercache.py | 2 +- tests/src/python/test_qgsvectorlayereditbuffer.py | 2 +- tests/src/python/test_qgsvectorlayertools.py | 2 +- tests/src/python/test_qgsvectorlayerutils.py | 2 +- tests/src/python/test_qgsvirtuallayerdefinition.py | 2 +- tests/src/python/test_qgsxmlutils.py | 2 +- tests/src/python/test_qgsziputils.py | 2 +- tests/src/python/test_qgszonalstatistics.py | 2 +- tests/src/python/test_syntactic_sugar.py | 2 +- tests/src/python/utilities.py | 2 +- .../expected_annotation_fillstyle_mask.png | Bin 0 -> 2652 bytes .../expected_annotation_margins_mask.png | Bin 0 -> 2655 bytes .../expected_html_annotation_mask.png | Bin 0 -> 3321 bytes .../travis/expected_html_feature_mask.png | Bin 0 -> 5772 bytes .../travis/expected_html_nofeature_mask.png | Bin 0 -> 7403 bytes .../expected_relative_style_mask.png | Bin 0 -> 2655 bytes .../expected_svg_annotation_mask.png | Bin 3207 -> 4483 bytes .../default/expected_text_annotation_mask.png | Bin 10932 -> 11564 bytes .../expected_layoutmap_rasterized_mask.png | Bin 44417 -> 44622 bytes .../expected_importComposerAtlas_0.png | Bin 44293 -> 44490 bytes .../expected_importComposerAtlas_0_mask.png | Bin 0 -> 11226 bytes .../expected_importComposerTemplateArrow_0.png | Bin 12414 -> 12426 bytes ...cted_importComposerTemplateAttributeTable_0.png | Bin 42969 -> 43761 bytes ...importComposerTemplateAttributeTable_0_mask.png | Bin 0 -> 19669 bytes .../expected_importComposerTemplateHtml_0.png | Bin 5677 -> 5655 bytes .../expected_importComposerTemplateHtml_0_mask.png | Bin 0 -> 6921 bytes .../expected_importComposerTemplateLegend_0.png | Bin 18623 -> 18581 bytes ...xpected_importComposerTemplateLegend_0_mask.png | Bin 0 -> 10734 bytes .../expected_importComposerTemplateMap_0.png | Bin 153619 -> 153432 bytes .../expected_importComposerTemplateMap_0_mask.png | Bin 7323 -> 145272 bytes .../expected_importComposerTemplatePicture_0.png | Bin 8140 -> 8151 bytes .../expected_importComposerTemplatePolygon_0.png | Bin 16983 -> 17034 bytes .../expected_importComposerTemplatePolyline_0.png | Bin 11849 -> 11862 bytes .../expected_importComposerTemplateScaleBar_0.png | Bin 8455 -> 8550 bytes .../expected_importComposerTemplateShape_0.png | Bin 6533 -> 6546 bytes .../expected_importComposerTemplate_0.png | Bin 187229 -> 186966 bytes .../expected_importComposerTemplate_0_mask.png | Bin 12157 -> 30282 bytes .../expected_importComposerTemplate_1.png | Bin 83697 -> 82375 bytes .../expected_importComposerTemplate_1_mask.png | Bin 0 -> 23368 bytes .../expected_painteffect_blur_mask.png | Bin 2098 -> 2085 bytes .../expected_painteffect_dropshadow_mask.png | Bin 2734 -> 2441 bytes .../expected_painteffect_stack_mask.png | Bin 2238 -> 2226 bytes .../expected_svgcache_changed_after_mask.png | Bin 2723 -> 3393 bytes .../expected_svgcache_changed_before_mask.png | Bin 0 -> 2151 bytes .../WMS_GetMap_Annotations_mask.png | Bin 12926 -> 13447 bytes .../WMS_GetMap_Mode_1bit_mask.png | Bin 4254 -> 13975 bytes .../WMS_GetMap_Mode_8bit_mask.png | Bin 27202 -> 27229 bytes .../WMS_GetMap_StyleCustom_mask.png | Bin 25999 -> 25874 bytes .../WMS_GetPrint_Basic/WMS_GetPrint_Basic_mask.png | Bin 53020 -> 54850 bytes .../WMS_GetPrint_Grid/WMS_GetPrint_Grid_mask.png | Bin 49140 -> 49868 bytes .../WMS_GetPrint_Highlight_mask.png | Bin 96021 -> 95546 bytes .../WMS_GetPrint_LabelUpdated_mask.png | Bin 57395 -> 57901 bytes .../WMS_GetPrint_Legend_mask.png | Bin 67609 -> 67622 bytes .../WMS_GetPrint_Opacity_mask.png | Bin 66325 -> 66329 bytes .../WMS_GetPrint_Rotation_mask.png | Bin 49140 -> 49868 bytes .../WMS_GetPrint_Scale/WMS_GetPrint_Scale_mask.png | Bin 53020 -> 54850 bytes .../WMS_GetPrint_Selection_mask.png | Bin 49140 -> 49868 bytes .../WMS_GetPrint_StyleCustom_mask.png | Bin 237315 -> 237737 bytes .../WMS_GetPrint_StyleDefault_mask.png | Bin 73078 -> 73095 bytes .../expected_reprojection_errors_linestring.png | Bin 0 -> 569 bytes .../expected_reprojection_errors_polygon.png | Bin 0 -> 569 bytes .../expected_datadefined_subsymbol_mask.png | Bin 3210 -> 5891 bytes .../wfs_getFeature_1_0_0_featureid_0_1_0_0.txt | 26 + .../wms_getfeatureinfo_geometry_filter.txt | 2 +- ...=> wms_getfeatureinfo_geometry_filter_3857.txt} | 0 .../test_plugin_path/PluginPathTest/__init__.py | 2 +- 935 files changed, 20431 insertions(+), 16742 deletions(-) create mode 100644 .ci/travis/scripts/travis_envvar_helper.sh delete mode 100644 .docker/Dockerfile-build-test create mode 100644 .docker/qgis.dockerfile rename .docker/{Dockerfile => qgis3-build-deps.dockerfile} (77%) delete mode 100644 Dockerfile create mode 100644 python/plugins/processing/tests/testdata/expected/concave_hull_points_03.gml create mode 100644 python/plugins/processing/tests/testdata/expected/concave_hull_points_03.xsd create mode 100644 python/plugins/processing/tests/testdata/expected/concave_hull_points_07.gml create mode 100644 python/plugins/processing/tests/testdata/expected/concave_hull_points_07.xsd create mode 100644 python/plugins/processing/tests/testdata/expected/refactor_fields_null.gml create mode 100644 python/plugins/processing/tests/testdata/expected/refactor_fields_null.xsd create mode 100644 resources/function_help/json/make_triangle create mode 100644 tests/src/python/test_qgsmaplayeraction.py create mode 100644 tests/testdata/control_images/annotations/expected_annotation_fillstyle/expected_annotation_fillstyle_mask.png create mode 100644 tests/testdata/control_images/annotations/expected_annotation_margins/expected_annotation_margins_mask.png create mode 100644 tests/testdata/control_images/annotations/expected_html_annotation/expected_html_annotation_mask.png create mode 100644 tests/testdata/control_images/annotations/expected_html_feature/travis/expected_html_feature_mask.png create mode 100644 tests/testdata/control_images/annotations/expected_html_nofeature/travis/expected_html_nofeature_mask.png create mode 100644 tests/testdata/control_images/annotations/expected_relative_style/expected_relative_style_mask.png create mode 100644 tests/testdata/control_images/compositionconverter/expected_importComposerAtlas_0/expected_importComposerAtlas_0_mask.png create mode 100644 tests/testdata/control_images/compositionconverter/expected_importComposerTemplateAttributeTable_0/expected_importComposerTemplateAttributeTable_0_mask.png create mode 100644 tests/testdata/control_images/compositionconverter/expected_importComposerTemplateHtml_0/expected_importComposerTemplateHtml_0_mask.png create mode 100644 tests/testdata/control_images/compositionconverter/expected_importComposerTemplateLegend_0/expected_importComposerTemplateLegend_0_mask.png create mode 100644 tests/testdata/control_images/compositionconverter/expected_importComposerTemplate_1/expected_importComposerTemplate_1_mask.png create mode 100644 tests/testdata/control_images/expected_svgcache_changed_before/expected_svgcache_changed_before_mask.png create mode 100644 tests/testdata/control_images/symbol/expected_reprojection_errors_linestring/expected_reprojection_errors_linestring.png create mode 100644 tests/testdata/control_images/symbol/expected_reprojection_errors_polygon/expected_reprojection_errors_polygon.png create mode 100644 tests/testdata/qgis_server/wfs_getFeature_1_0_0_featureid_0_1_0_0.txt copy tests/testdata/qgis_server/{wms_getfeatureinfo_geometry_filter.txt => wms_getfeatureinfo_geometry_filter_3857.txt} (100%) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qgis.git _______________________________________________ Pkg-grass-devel mailing list Pkg-grass-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel