765 Commits

Author SHA1 Message Date
Alexander Bruy
263278e429
Merge pull request #63323 from alexbruy/processing-maplayer-types
fix handling of tiled scene and vector tile layers in Processing
2025-09-25 13:20:12 +01:00
Denis Rouzaud
9efd6af839
[core] Introduce QgsLayerTreeCustomNode and a first use case: Custom Elevation Profile Sources (#62819)
* Introduce QgsLayerTreeCustomNode to handle items in QgsLayerTree which are not layers nor layer groups (e.g., a custom profile source from a web service to the Elevation Profile layer tree); make QgsAbstractProfileSource and its generator classes get an id in the constructor, so that subclasses don't need to deal with source ids (source ids from the generators are already in use, whereas source id from source subclasses will be used to link sources to QgsLayerTreeCustomNodes, and will be used to retrieve sources from source registry)

* [elevation] Add/remove nodes to Elevation's layer tree when registering/unregistering profile sources via QgsProfileSourceRegistry

* [elevation] Add updateCanvasSources() to Elevation Profile widget, so that after changes in the elevation layer tree, the canvas gets an updated list of profile sources, taking profile sources (i.e., from custom nodes) into account. Add QgsProfileSourceRegistry::findSourceById() for getting profile sources by id from the registry.

* [elevation] Allow for setting a display name for custom profile sources (to be displayed as layer tree node name)

* [elevation] Refactor profile source handling in Layout Elevation Profile widget, so that after changes in the elevation layer tree, the canvas gets an updated list of profile sources, taking profile sources (i.e., from custom nodes) into account. Adjust QgsLayerTreeGroup to be able to find layers and custom nodes, as well as order layer and custom nodes inside a group (only direct children).

* [elevation] Profile Source Registry improvements:

 + Avoid registering a source if its id is already registered,
 + New method to unregister a source by id, deprecating the unregister by source object.

* [tests] Add tests for QgsLayerTreeCustomNode

* [tests] add tests for legacy Elevation Profile sources and for legacy Layout Profile items:

 + make sure we keep the API untouched and mark some stuff as legacy (e.g., pure virtual methods in QgsAbstractProfileSource need to have a default implementation and making them pure virtual is postponed until QGIS 5.0),
 + add insertCustomNode(index, node) method to QgsLayerTreeGroup, so that we can set up the custom node before adding it to the layer tree, because if we add it with no custom properties set (e.g., for the elevation profile custom node), it will trigger plot updates but it won't be found due to a still missing custom property.

* [elevation] Make sure legacy layer ordering in canvas, layout item profile, and layer tree are kept (i.e., keep API untouched). Make profile source ordering works in the most expected way: canvas, layout item profile, and layer tree are in the same order, and sources are only reversed right before passing them to renderers. Add unit tests.

* [tests] Custom node for custom Elevation profiles: make sure layout item sources are stored in and read from the project

* Address review on custom nodes for elevation profile's tree view
2025-09-25 13:47:21 +02:00
Alexander Bruy
ee48ed8a50 fix QGIS version in since annotation 2025-09-25 06:53:15 +01:00
Alexander Bruy
3dea8531d9 fix handling of tiled scene and vector tile layers in Processing map
layer parameter and associated widget wrapper
2025-09-24 09:36:39 +01:00
Alexander Bruy
e290dc7629 fix typo in the OpenLayersToResolveDescriptions sublayer query flag 2025-09-24 08:36:21 +10:00
Nyall Dawson
1ac32faf76 Add 'OpenLayersToResolveDescriptions' sublayer query flag
Make (potentially very slow) opening of layers to resolve descriptions opt-in
2025-09-18 13:00:47 +10:00
Mathieu Pellerin
a1e8115733
Merge pull request #63168 from nirvn/project_metadata_translation
Project/layer metadata localization support
2025-09-18 09:49:00 +07:00
Nyall Dawson
d9362e6687 [api] Introduce flag to disable error message logging for network requests
Fixes #53721
2025-09-18 12:44:10 +10:00
Loïc Bartoletti
3fe31730eb
Merge pull request #63062 from benoitdm-oslandia/feat/chamfer-fillet-improvements
Feat/chamfer fillet improvements
2025-09-16 07:58:40 +02:00
Mathieu Pellerin
fd0cb2c37d [projects] Implement translation support for project and layer metadata 2025-09-13 11:18:47 +07:00
Mathieu Pellerin
8b72152aff
Charts implementation, part 3: data defined properties (#63100)
* [charts] Implement data-defined properties, connect GUI

* Fix copy/paste typo with grid symbol buttons

* Address review
2025-09-09 14:16:41 +07:00
Germán Carrillo
ed14d45755 Address review: Add QgsProcessingParameterRasterLayer's parameter capabilities flags and associated getter/setter, to allow algorithms to state that a raster layer supports the advanced raster options panel 2025-09-09 13:38:16 +10:00
Germán Carrillo
8ce111115c [core] Introduce QgsWmsUtils to get centralized access to WMS related utilities 2025-09-09 13:38:16 +10:00
Germán Carrillo
9e67aca98f Address review (miscellaneous): Scale parameter from long to double; use processing API to create temp files 2025-09-09 13:38:16 +10:00
Germán Carrillo
c2b5060802 [processing] Introduce QgsProcessingRasterLayerDefinition to support advanced raster source options like reference scale and DPI for WMS layers. These options allow users to tailor the raster to be used as input in Processing algs. For instance, a WMS raster can be specified to have a particular scale to obtain images with symbology/labeling that correspond to that scale. 2025-09-09 13:38:16 +10:00
Mathieu Pellerin
21e9095b0e [charts] Implement data-defined properties, connect GUI 2025-09-09 09:13:36 +07:00
Mathieu Pellerin
092bbc479b
Brand new pie chart plot type (#63099) 2025-09-08 23:05:26 +07:00
bdm-oslandia
3593cbbea9 qgsgeometryutils(chamfer/fillet): add exception management to chamfer/fillet 2025-09-05 07:37:29 +02:00
Jean Felder
571d335857 fix(qgis): Fix 3d buffer style version added 2025-09-05 09:30:02 +10:00
bdm-oslandia
9edd0de3a2 fixes from review 2025-09-05 09:30:02 +10:00
bdm-oslandia
40db5c8ef1 add sfcgal sip files 2025-09-05 09:30:02 +10:00
bdm-oslandia
ec0f29434e fix JoinStyle3D 2025-09-05 09:30:02 +10:00
bdm-oslandia
8b18258714 sfcgal: add buffer like operations 2025-09-05 09:30:02 +10:00
Mathieu Pellerin
3ff54d8166
Charts implementation, part 2: layout chart items (#62952) 2025-09-04 09:46:23 +07:00
Nyall Dawson
9c2c2d86a5 Add method for PyQGIS to determine whether the QGIS build has QtWebKit 2025-08-28 13:51:07 +10:00
Mathieu Pellerin
643d49bbb0
[plots] Introduction of a plot data gatherer from vector layers (#62938) 2025-08-26 13:44:30 +07:00
Mathieu Pellerin
bbbea51070 [plots] Add default marker/line and fill symbols for bar/line charts 2025-08-25 09:58:10 +07:00
Nyall Dawson
3e8c2cdf14 Add layer legend flags 2025-08-25 12:17:32 +10:00
Loïc Bartoletti
064eb69ecc
Merge pull request #62572 from lbartoletti/feature/add_chamfer_fillet
Feature/add chamfer fillet
2025-08-22 09:55:02 +02:00
Mathieu Pellerin
366fdfc307 Address second round of reviews 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
63ed8cb23a Add plot render context object and arguments 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
c6c099cbd2 Address review 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
c233382cd6 Break down qgschartplot.cpp/h into distinct files for each chart plot type 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
bb04984d95 QgsChartPlotRegistry -> QgsPlotRegistry 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
75ec5e4962 Address comments provided during the QEP review phase 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
abcb1785c9 Add missing files 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
d837af123f Implement a chart registry, to be used in GUI when offering a combobox of available charts 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
c89b4961c8 Implement {bar,line}chart writeXml and readXml function, add a plot type() virtual function 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
b0a73b65e3 Rework categories handling, move it into the QgsPlotData to increase logic robustness and simplicity 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
a0c45d9380 [plots] Add QgsBarChart and QgsLineChart classes, implement category typed axis rendering 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
a2caa8ea75 [plots] Add plot data classes 2025-08-22 10:41:20 +10:00
Mathieu Pellerin
a453dd65b6 [plots] Break Qgs2DPlot into a axis-less Qgs2DPlot and a X/Y axes Qgs2DXyPlot 2025-08-22 10:41:20 +10:00
Germap
c4ba1560e7
Merge branch 'master' into custom_layer_tree_node 2025-08-18 03:13:56 -05:00
Nyall Dawson
d6d8e307c0 Implement elevation profile manager model 2025-08-17 04:26:36 +10:00
Nyall Dawson
fdcda15365 [api] Create elevation profile manager, attached to QgsProject
This mimics QgsLayoutManager, but for storage of elevation profiles
attached to a project
2025-08-17 04:26:36 +10:00
Nyall Dawson
d7edbfe723 Introduce QgsMathUtils class
Currently contains a method for converting doubles to approximate
rational fractions
2025-08-07 11:56:06 +10:00
Loïc Bartoletti
1d246cdb27 refactor(QgsGeometryUtils): replace raw pointers by smart pointers 2025-08-05 11:53:27 +02:00
Loïc Bartoletti
b76cbadde8 refactor(chamfer/fillet): move logic to qgsgeometryutils 2025-08-05 07:24:23 +02:00
Loïc Bartoletti
351ae63ab1 feat(geometry): add chamfer and fillet core functions to QgsGeometryUtilsBase
Add createChamfer() and createFillet() methods for 2D geometric operations.
These low-level functions handle segment intersection, angle calculation,
and tangent point computation for CAD-style corner modifications.
2025-08-05 07:24:22 +02:00
Germán Carrillo
3725b93f39 [elevation] Make sure legacy layer ordering in canvas, layout item profile, and layer tree are kept (i.e., keep API untouched). Make profile source ordering works in the most expected way: canvas, layout item profile, and layer tree are in the same order, and sources are only reversed right before passing them to renderers. Add unit tests. 2025-08-04 14:15:53 +02:00