712 Commits

Author SHA1 Message Date
Nyall Dawson
c686bb1f88 Generalise proxy model to support generic attached objects 2025-08-03 08:56:23 +10:00
Nyall Dawson
231b95bc45 Generalise QgsLayoutManagerModel to template class for project stored objects
Allows us to re-use the model for other attached object types
2025-08-03 08:56:23 +10:00
Nyall Dawson
24adfe7619 Move layout manager model to separate files 2025-08-03 08:56:23 +10:00
Nyall Dawson
cacdea42fd Create abstract base class for managers for objects attached to QgsProject
This generalizes the logic from QgsLayoutManager, so that additional
manager classes handling other object types can be added without
incurring a lot of near-duplicate code.

This is a step toward allowing storage of elevation profiles
within projects.
2025-08-03 08:56:23 +10:00
Nyall Dawson
741b9260fe Add processing documentation flag for algorithms which respect ellipsoid 2025-07-22 13:06:50 +10:00
signedav
bcddeb2605
Merge pull request #62343 from signedav/ordered
Relation Reference Order By Option
2025-07-18 12:18:45 +02:00
signedav
5603f44005 Use Qt::sortOrder to define if the order direction should be ascending or descending 2025-07-17 15:32:08 +02:00
Nyall Dawson
b04a908892
Clarify docs 2025-07-08 16:34:28 +10:00
Yoann Quenach de Quivillic
91e25e8051 Apply suggestions from review 2025-07-07 11:08:27 +12:00
Yoann Quenach de Quivillic
4c3aaa09ca Add methods to remove plugin-defined layout items when unloading plugin 2025-07-07 11:08:27 +12:00
Julien Cabieces
e83db3e361
Merge pull request #62139 from Simon-Lopez/simon/PR-add-profileSource
Add QgsMapLayer::profileSource
2025-07-03 14:54:30 +02:00
Mathieu Pellerin
8c7edbeec2 Rename rotation enum keys 2025-07-02 11:38:05 +12:00
Mathieu Pellerin
ce2c8ac21f Address review 2025-07-02 11:38:05 +12:00
Mathieu Pellerin
4bad76d876 Where did my pre-commit hook go? 2025-07-02 11:38:05 +12:00
Mathieu Pellerin
231929e6e3 Make the feature filter provider thread friendly, relocate old filter classes back into server 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
d8d7d5480e Fix rebase conflict 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
d2377a0c48 Sipify 2025-06-30 11:07:37 +12:00
Nyall Dawson
9241880300 Fix ambiguity in QgsMapLayer::saveStyleToDatabase API
Don't require successful generation of both QML AND SLD, and return descriptive results flags
2025-06-25 10:19:31 +12:00
Simon Lopez
be9608f776 Add QgsMapLayer::profileSource
This commit adds a virtual method to QgsMapLayer to enable the creation of custom
elevation profiles for any type of layer.
The methods returns a pointer to a helper class of type
QgsAbstractProfileSource which is a factory for profile generators
(cf. documentation for QgsAbstractProfileSource).
Existing layers that derive from QgsAbstractProfileSource just override
this method returning a *this* pointer.
As the method is *sipified* it can be used in python to declare custom
profile source for classes derived from PluginLayer (ownership of the
QgsAbstractProfileSource must then be managed on the python side).
2025-06-24 23:24:00 +02:00
signedav
2ae1bec1fe Expression and order (direction) to sort entries of the relation reference widget. If not configured it takes the displayExpression.
This introduces a new expression and order value in the featurepickermodel and a sortvalue in its feature value gatherer. Sorting is still done in the model (not on feature request), to be not needed to make another request on re-ordering.
This resolves #48191
2025-06-20 12:00:22 +02:00
Nyall Dawson
fa40eedcd3 Return requires rasterization flag when required 2025-06-19 14:49:17 +12:00
Nyall Dawson
01cf5bbc63 Introduce paint effect flags 2025-06-19 14:49:17 +12:00
Mathieu Pellerin
95fb3fa475 Do not expose STAC data item implementation classes 2025-06-13 16:58:47 +07:00
Mathieu Pellerin
64bb655c18 QgsStacCollections -> QgsStacCollectionList 2025-06-12 18:12:38 +07:00
Mathieu Pellerin
dadf550c40 [api] Expose core STAC classes to python bindings 2025-06-12 18:02:00 +07:00
Nyall Dawson
9f4a373488 Consider cesium ion Google 3D tiles as a 3d basemap
as this completely covers the globe and contains embedded terrain
2025-06-11 10:36:54 +12:00
Nyall Dawson
b182ae02e8 Add enum flags for 3D basemap hints
Like the existing 2D basemap flags, but exclusively for layers with 3d content
2025-06-11 10:36:54 +12:00
Nyall Dawson
206cd12297 Fix build 2025-06-05 09:24:52 +10:00
Nyall Dawson
b9d88da6c5 QgsTopologicalMesh must be exposed to sip
It's inherited by QgsMeshAdvancedEditing, which is itself exposed,
hence the base class must also be exposed.

Fixes #61951
2025-06-05 09:24:52 +10:00
Mathieu Pellerin
2dc9a23094
[symbology] Fix line/point pattern fill symbol layer freezing QGIS when rendering an insane amount of points/lines per pixel (#62074) 2025-06-03 18:01:29 +07:00
Nyall Dawson
868e067da9 Rename 'AllowRasterization' to 'Default' 2025-06-03 11:34:13 +10:00
Nyall Dawson
6bd71ef1de Promote layout render context flags to enum class, move to Qgis 2025-06-03 11:34:13 +10:00
Nyall Dawson
e04145f053 Add new enum for rasterised rendering policy 2025-06-03 11:34:13 +10:00
Nyall Dawson
29e6723f1e Don't try to pass unset attributes to ArcGIS REST backends
Fixes #61673
2025-06-01 10:33:39 +10:00
Olivier Dalang
97583c82a4 feat: sld supports rastersymbollayers 2025-05-31 03:50:30 +10:00
Jan Caha
c263c8dc31
Move table to another schema for PostgreSQL Provider (#61851) 2025-05-28 11:31:34 +10:00
Nyall Dawson
183e86f5b3 [api] Add method to test if labeling as non-default blend modes 2025-05-21 07:19:45 +10:00
Alexander Bruy
a1ec95cf70
Merge pull request #61542 from boardend/content_cache_invalidatate
Add invalidateCacheEntry() for QgsAbstractContentCache implementations
2025-05-05 10:43:33 +01:00
Nyall Dawson
72ad735b1e [api] Add QgsSipUtils, with method to test if object is owned by Python
QgsSipUtils.isPyOwned will return True if an object is owned
by python, or False if ownership is held by another object
or c++ class.

This gives a way to test in advance if we can safely assign
an object to a method which takes ownership (which always results
in a crash).
2025-05-05 07:15:43 +10:00
Nyall Dawson
f1b8682e36 Improve API for exporting to SLD
Deprecate old methods and make methods always take QgsSldExportContext.
Add capacity to QgsSldExportContext to collect export errors and
warnings.

The old API had no way to reliably report errors/warnings during
export to users.
2025-05-04 17:55:25 +10:00
Michael Schmuki
1672330cdc Add invalidateCacheEntry() for QgsAbstractContentCache implementations 2025-05-02 11:59:09 +02:00
Nyall Dawson
6bd91f8381 [processing][api] Add API for an algorithm to auto-set parameter values
Adds an API which an algorithm can implement to support auto-setting
parameter values. This is designed to handle the case
of eg an algorithm which does a file format translation, where
it's desirable to default the output parameter value to an input
parameter value with a different extension.

This can now be done by implementing autogenerateParameterValues
in the algorithm, eg:

    def autogenerateParameterValues(self, existingParameters, changedParameter, mode):
        if changedParameter == self.INPUT:
            input_file = existingParameters.get(self.INPUT)
            if input_file:
                input_path = Path(input_file)
                if input_path.exists():
                    # auto set output parameter to same as input but with 'qgs' extension
                    return {self.OUTPUT: input_path.with_suffix('.qgs').as_posix()}

        return {}

Works for both toolbox and batch modes for algorithms
2025-04-30 13:56:09 +10:00
Nyall Dawson
31ac029d0a Move processing dialog mode enum to Qgis and rename 2025-04-30 13:56:09 +10:00
Valentin Buira
f56f85dc7c
Add basic drag and drop support in the model designer (#60664) 2025-04-30 09:47:48 +10:00
Nyall Dawson
c2ee323793 [feature] Add labeling setting to prevent duplicate labels within xx mm
Improves the appearance of labels in situations like road networks,
where things like dual carriageways, service roads, etc can result
in many labels of the exact same text appearing close to each other.

When active, removes any labels with the exact same text (case
sensitive!) which are closer then this minimum distance.

The setting applies across layers, so duplicate text from ANY
layer will be considered.
2025-04-22 11:45:25 +10:00
Nyall Dawson
4d98f21d67 [feature] Add 'margin around labels' setting for labeling
Allows setting a margin around a layer's labels, which prevents
other labels from being placed closer than this margin distance
to the layer's labels.
2025-04-22 11:45:25 +10:00
Matthias Kuhn
6aac924cc2
Merge pull request #60134 from btzy/codearg
Open and load --code file and --py-args arguments in C++
2025-04-21 19:52:14 +02:00
Nyall Dawson
2925f42dfa
Add optimised method to fill a QgsRasterBlock with a constant value 2025-04-16 14:35:25 +10:00
Bernard Teo
c55a567070
Open and load --code file in C++ 2025-04-16 00:30:00 +08:00
Nyall Dawson
0e6d5f5593 Properly silence overloaded-virtual warning on Fedora 42 2025-04-12 06:38:32 +10:00