6048 Commits

Author SHA1 Message Date
signedav
6b5396bd53 introduce VerticalAnchorMode in FontSymbols to have a proper 'hidden' setting for this mode making a differene between legacy and baseline (and future bounds) on the positioning of the characters 2025-03-03 17:12:32 +10:00
signedav
f80df88534 with the parameter fixverticalanchor, the position of the point is calculated with the same offset like the offset of the font. this differed before what leaded to issues. still the old way is available as legacy 2025-03-03 17:12:32 +10:00
Nyall Dawson
896e867e98 Add method to valid SQL options before creating query layer to QgsAbstractDatabaseProviderConnection
And implement for MS SQL provider.

Generates a user-friendly descriptive message when the SQL is
not valid for creating a layer in QGIS.
2025-03-03 13:16:40 +10:00
Alexander Bruy
ce1b0c70ca address review comments and add test 2025-03-03 11:48:15 +10:00
Alexander Bruy
bb60704ed0 fetch feature with geometry when executing map layer action on feature
(fix #48964)
2025-03-03 11:48:15 +10:00
Nyall Dawson
632d196e62 Don't show useless "available in python as" notes in PyQGIS docs
Since the method name used in the docs is ALREADY the python version!
2025-02-28 18:32:09 +10:00
Nyall Dawson
bb4827e9f9
Create a class for managing stored database queries
This class is designed to be compatible with DB Manager's storage
of queries in projects, but extended to allow storage within
the local profile too.
2025-02-26 10:54:25 +10:00
Nyall Dawson
a363ed1862 Fix leak when directly iterating feature in PyQGIS
Fixes #32944
2025-02-22 05:23:15 +10:00
Nyall Dawson
149c106ea0 Optimise conversion of QgsAttributes to Python objects
Applies the same optimisations as are present in the QgsFeature
methods to avoid the overhead of sip's QVariant conversion logic
when attributes are of a basic type
2025-02-22 05:22:41 +10:00
Julien Cabieces
a96ea4a104
Merge pull request #60674 from nyalldawson/gdal-release-name
Show GDAL release nickname in about screen
2025-02-20 09:18:23 +01:00
Nyall Dawson
8911a5b726 Move QgsLegendStyle::Style enum to Qgis, rename to LegendComponent 2025-02-20 13:08:54 +10:00
Nyall Dawson
4f2bbe407a
Fix compilation on GDAL 3.11 2025-02-20 09:54:05 +10:00
Alexander Bruy
3d44213606 do not enable default Duplicate Feature and Digitize action for geometryless layers (refs #57916) 2025-02-20 08:44:48 +10:00
Nyall Dawson
2ffb8c00db Fix data-defined overrides ignored in legend text format
Fixes #60628
2025-02-19 12:05:10 +10:00
Nyall Dawson
a152cbecdb
Fix numerous leaks in sip method code
From the sip documentation:

    If state is not NULL then the location it points to is set to
    describe the state of the returned C/C++ instance and is the
    value returned by any %ConvertToTypeCode. The calling code
    must then release the value at some point to prevent a memory
    leak by calling sipReleaseType().

These methods were only calling sipReleaseType in the case that
an error occurred, which is incorrect -- it should always be
called.
2025-02-17 10:42:19 +10:00
Nyall Dawson
46b0436bbc Also fix render order for arrow line 2025-02-14 14:37:04 +10:00
Nyall Dawson
ed0bd43ee0 Also fix render order for filled line 2025-02-14 14:37:04 +10:00
Nyall Dawson
849063d4e5 Fix render order of symbol layers for filled marker subsymbol
If a filled marker had eg a centroid fill marker in the subsymbol,
this would always be rendered on top, regardless of the actual
defined order
2025-02-14 14:37:04 +10:00
Loïc Bartoletti
a6beaa96e8 docs(QgsCircle): pet doxygen 2025-02-14 08:56:11 +10:00
Loïc Bartoletti
e637eb3df2 move SegmentCalculationMethod to qgis.h 2025-02-14 08:56:11 +10:00
Loïc Bartoletti
157383300c feat(QgsCircle): Add segment calculation methods 2025-02-14 08:56:11 +10:00
Nyall Dawson
a48ec1012f Add methods to directly buffer/offset GEOS geometry in QgsGeos
These methods directly work with GEOS geometries and avoid the
forced conversions to/from QgsAbstractGeometry objects, and are
intended for use in chained operations where the intermediate conversions
are not required.
2025-02-13 14:54:20 +10:00
Nyall Dawson
8f4893d8b2 Move some useful utility methods to QgsSymbolLayerUtils 2025-02-13 14:54:20 +10:00
Nyall Dawson
60360f9b97 Add method to directly convert QgsAbstractGeometry to QPolygonF lists
This overload avoids creating a QgsGeometry if we only have a
QgsAbstractGeometry pointer object to convert
2025-02-13 14:54:20 +10:00
Nyall Dawson
e7e41e84f8 Add equality operators for QgsDataSourceUri, missing setters 2025-02-12 06:33:14 +10:00
Nyall Dawson
148ae1fb28 Add equality operator for QgsHttpHeaders 2025-02-12 06:33:14 +10:00
ughur-a
0b9bc85378
docs(qgsprocessingcontext): fix typo (#60541)
* docs(qgsprocessingcontext): fix typo

* Update .sip.in files

---------

Co-authored-by: Even Rouault <even.rouault@spatialys.com>
2025-02-11 15:11:38 +01:00
Nyall Dawson
2744627b4c Improve documentation 2025-02-11 09:24:35 +10:00
Nyall Dawson
c8198d865e Remove redundant providerType methods from raster, mesh layers
This exact same method is implemented in QgsMapLayer already
2025-02-11 09:24:35 +10:00
Julien Cabieces
d58e5f24f4
Merge pull request #60139 from Djedouas/fix-exclude-end-temporal-range
Fix include/exclude in QgsRange
2025-02-10 15:02:56 +01:00
Jacky Volpes
ae65d1be44 fix(qgsdaterange): consider infinite bounds in overlaps method
Infinite left or right date bound were not considered when computing
overlaps, leading to ranges being considered overlapping where they
don't.
2025-02-07 17:29:37 +01:00
Nyall Dawson
83ad87fcda Documentation precision 2025-02-07 16:15:03 +10:00
Nyall Dawson
ea9ac1dde1 When changing master password, don't prompt for the existing
password if it is stored in the system password helper and
is valid
2025-02-07 16:15:03 +10:00
Nyall Dawson
f7702bc446 Add method to verify that password stored in password helper is valid 2025-02-07 16:15:03 +10:00
Nyall Dawson
038036d021 Use "auto" for std::unique_ptr<X> = std::make_unique<X>
Refs https://github.com/qgis/QGIS-Enhancement-Proposals/pull/319
2025-02-07 13:10:27 +10:00
Julien Cabieces
c5dee65d0f fix(RuleBasedRendering): keep rule key while cloning when needed
rule key is used by other object as reference (masking for instance)

Fixes #46402
2025-02-07 12:25:19 +10:00
Hannes
b7bd622523 Fix QgsError.isEmpty() documentation
The method checks if there is an empty message list. It will actually return `TRUE` if there is *no* error message and `FALSE` if there *is* an error.
2025-02-07 12:24:59 +10:00
Jean Felder
bd4eb2f2cf qgslayertreeregistrybridge: Add a layerInsertionPoint getter 2025-02-07 10:22:53 +10:00
Nyall Dawson
8a0bb7f0fa On systems with keychain support, automatically just create a random
master authentication password and store in keychain

This avoids the need for users to manually create a pw, and makes
things MUCH nicer for plugins which want to utilise the secure
authentication framework.

Right now the options for plugins are:
1. Create a auto generated password themselves and force it on
the user (basically what we are doing here automatically now)
2. Show a confusing/scary message to users asking them to set
a master password. From my experience users have NO idea what
this means and consider it a QGIS bug.
2025-02-06 09:15:43 +10:00
Alexander Bruy
2fd017500b restore default scalebar style only if fill symbol is invisible 2025-02-06 08:37:09 +10:00
Alexander Bruy
1f7d1ad3d0 restore fill brush when switching back to single and double box scalebar
(fix #37413)
2025-02-06 08:37:09 +10:00
Nyall Dawson
431bf62fae Cleanup memory management in paint effects
Don't use raw pointers, memory allocation
2025-02-06 04:38:13 +10:00
Alessandro Pasotti
e381be985b
Merge pull request #60441 from nyalldawson/auth_manager_ux_tweaks
Auth manager ux tweaks
2025-02-05 16:13:50 +01:00
Alexander Bruy
e7d22c7e7c always return "main" label for main annotation layer 2025-02-05 20:54:06 +10:00
Nyall Dawson
f705bad517 [sensorthings] Hide proxy fields for interval fields in filter builder
These don't exist on the backend, so just hide them from the builder
dialog to avoid user confusion.

(Note that it's impossible to show the actual non-proxy fields
here, as we can ONLY show fields with types compatible with native
QGIS field types in this dialog)

Fixes #59528
2025-02-05 18:43:13 +10:00
Nyall Dawson
20972fceed More fixes for use of inline data for SVG content
Followup https://github.com/qgis/QGIS/pull/59589

Fixes #60427
2025-02-05 14:44:50 +10:00
Nyall Dawson
d26104f31f Fix potential crashes when layer tree insertion target group is deleted 2025-02-05 14:18:25 +10:00
Julien Cabieces
ed11cc6951 design(MaskSymbolLayer): add clearMasks only in mask symbol layer 2025-02-05 09:48:12 +10:00
Julien Cabieces
87ffd09aff fix(CategorizedRenderer): reset mask information on source symbol
Both symbol layer ids and masks need to be removed from symbol
layers which can be inherited from a converted renderer
2025-02-05 09:48:12 +10:00
Nyall Dawson
cbee8326ca
Can't use SIP_DEPRECATED with non-methods 2025-02-05 09:11:18 +10:00