Compare commits

..

42 Commits

Author SHA1 Message Date
bdm-oslandia
739c6ec98e test(qgsdatasourceuri): add uri in uri test 2025-07-01 11:49:05 +02:00
bdm-oslandia
2b40e3a7a4 fix(httpheaders): add missing urlencode to headers when updating QUrlQuery 2025-07-01 11:49:05 +02:00
bdm-oslandia
a3b523d368 fix(QgsProjectStorageRegistry): project uri can be urlencoded and starts with XXX%3A 2025-07-01 11:49:05 +02:00
Max Tobias Weber
4de79c55ba fix double URL-encoding issue with curly braces in z,x,y placeholders of VectorTile Sources in QgsDataSurceUri 2025-07-01 11:49:05 +02:00
Max Tobias Weber
3d392af31d fix(test): add/adjust tests for url encoding
add decoding step before adding the "url" value to QgsDataSourceUri in TestQgsIdentify::identifyVectorTile(), as QgsDataSourceUri now reliably returns the values that were provided.

adjust tests to QgsDataSourceUri full value URL-encoding

fix test tests/src/core/testqgshttpheaders.cpp

fix test tests/src/core/testqgssensorthingsconnection.cpp

fix test tests/src/core/testqgstiledsceneconnection.cpp

fix test tests/src/core/testqgsvectortileconnection.cpp

fix test tests/src/python/test_qgsvectortile.py

fix test tests/src/server/wms/test_qgsserver_wms_parameters.cpp

fix tests tests/src/core/testqgshttpheaders.cpp

fix most tests in tests/src/core/testqgsvectortilelayer.cpp
2025-07-01 11:49:05 +02:00
Max Tobias Weber
fa7f98a666 make sure QgsDataSourceUri values are FullyUrlDecoded when parsing QgsDataSourceUri strings in QgsDataSourceUri::setEncodedUri 2025-07-01 11:49:05 +02:00
Max Tobias Weber
fd7c2bfec4 move QUrl::toPercentEncoding and QUrl::fromPercentEncoding steps from QgsDataSourceUri param setter and getter functions to URI serialization QgsDataSourceUri::encodedUri() 2025-07-01 11:49:05 +02:00
Max Tobias Weber
ade7904a42 fix faulty assertion of URI parameter values not being fully URL-encoded in tests/src/providers/testqgswmsprovider.cpp 2025-07-01 11:49:05 +02:00
Max Tobias Weber
6ee3e72827 fix faulty assertion in tests/src/core/testqgsdatasourceuri.cpp
URl-encoded in URL-parameter values characters will be URL-decoded on retrieval.
2025-07-01 11:49:04 +02:00
Max Tobias Weber
f43bad1baa ensure values in QgsDataSourceUri are URL-encoded when assigned and properly decoded when retrieved, preventing any potential loss of information. 2025-07-01 11:49:04 +02:00
Loïc Bartoletti
1f0166d35e
Merge pull request #62365 from benoitdm-oslandia/fix/cgibin_dir
fix: update default cgi-bin installation paths according to OS
2025-07-01 07:26:25 +02:00
Loïc Bartoletti
ada589bb1d
Merge pull request #62052 from martin-s42/visitPointsByRegularDistance-segfault-fix
fix segfault due to calling qgsDoubleNear with tollerance that can ne…
2025-07-01 06:59:03 +02:00
Alexander Bruy
08dd318614
Merge pull request #62463 from qgis/m-kuhn-patch-2
Add qtimageformats
2025-06-30 12:19:41 +01:00
Nyall Dawson
ac9051e2b6 Update src/core/CMakeLists.txt 2025-06-30 14:03:24 +12:00
Nyall Dawson
a940543035 Fix a number of warnings when building in c++20 mode 2025-06-30 14:03:24 +12:00
qgis-bot
d1528ee83d auto sipify 🍺 2025-06-29 23:10:34 +00:00
Mathieu Pellerin
d49bfa66ee Disable bogus lint warnings 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
d31b74c0ae Address review 2025-06-30 11:07:37 +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
8133424f5e Address review 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
d8d7d5480e Fix rebase conflict 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
42e2fbfc09 Add test masks 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
6c9e71fae2 Sipify, again! 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
d2377a0c48 Sipify 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
432e29a504 Add test coverage 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
cc17d79bd7 [layout] Add an atlas option to limit coverage layer rendering to the current feature only 2025-06-30 11:07:37 +12:00
Mathieu Pellerin
cbee242034 Move QgsFeatureFilter and QgsFeatureFilterProviderGroup from server into core 2025-06-30 11:07:37 +12:00
github-actions[bot]
e5ee5686c1 auto-fix pre-commit issues 2025-06-29 23:04:38 +00:00
Harrissou Sant-anna
8c0a4221e1 Add more methods to the Processing script template 2025-06-30 11:03:42 +12:00
David Koňařík
174c548d40 Improve camera XML format per review suggestion 2025-06-29 19:44:56 +02:00
David Koňařík
19ded7be74 Fix saving/loading 3D map view viewpoint
Previously the point was saved in origin-relative coordinates. Now since
we pick the origin automatically, it can be changed by various
initialisation routines, so the coordinates will be interpreted relative
to the wrong origin.

This commit changes the format to use map coordinates instead, and saves
the "original" origin from the XML for interpreting older projects.
2025-06-29 19:44:56 +02:00
Matthias Kuhn
89dbd40b8f
Add qtimageformats 2025-06-29 13:02:03 +02:00
Germán Carrillo
429500187c [tests] Add more tests for extent parameter in Package Layers algorithm 2025-06-29 09:00:21 +12:00
Germán Carrillo
cd7a0f9ce4 [tests] Tests for extent parameter in Package Layers algorithm 2025-06-29 09:00:21 +12:00
Germán Carrillo
700ba50d15 [feature] Add optional extent parameter for Package Layers alg., to only export features that intersect a given extent 2025-06-29 09:00:21 +12:00
Alexander Bruy
4edb67501a
Merge pull request #62438 from uclaros/fix-vtiles-longint
Fix overflow in vector tile long int attributes
2025-06-27 15:38:04 +01:00
bdm-oslandia
b1c8ef3265 fixup! fix: update default cgi-bin installation paths according to OS 2025-06-27 09:35:48 +02:00
uclaros
7e1d3bb944 Fix overflow in vector tile long int attributes 2025-06-26 16:58:11 +03:00
bdm-oslandia
f4cf09d4b0 fixup! fix: update default cgi-bin installation paths according to OS 2025-06-25 08:29:52 +02:00
bdm-oslandia
9db58e3726 fixup! fix: update default cgi-bin installation paths according to OS 2025-06-24 17:37:57 +02:00
bdm-oslandia
551aa20f20 fix: update default cgi-bin installation paths according to OS 2025-06-23 10:44:49 +02:00
Martin Siegert
a156c43f7b
fix segfault due to calling qgsDoubleNear with tollerance that can never been reached
see issue #60772: function interpolatePoint in qgsabstractprofilesurfacegenerator.cpp:157 can return a nullpointer causing a segfault because qgsDoubleNear in visitPointsByRegularDistance in qgslinestring.cpp is called with a tolerance that is too small so that qgsDoubleNear always returns false. Solution: scale epsilon by the size of the numbers to be compared.
2025-05-29 13:37:03 -07:00
474 changed files with 3747 additions and 2360 deletions

View File

@ -979,7 +979,31 @@ if (WITH_CORE)
else() else()
# UNIX # UNIX
set (DEFAULT_BIN_SUBDIR bin) set (DEFAULT_BIN_SUBDIR bin)
set (DEFAULT_CGIBIN_SUBDIR bin)
# From https://www.cyberciti.biz/faq/how-do-i-find-the-url-for-my-cgi-bin/
execute_process(COMMAND lsb_release -a OUTPUT_VARIABLE LSB_RELEASE_A)
if(EXISTS "/etc/fedora-release")
# in /var/www/cgi-bin
set (DEFAULT_CGIBIN_SUBDIR www/cgi-bin)
elseif (${CMAKE_HOST_SYSTEM_NAME} MATCHES "FreeBSD")
# in /usr/local/www/cgi-bin/
set (DEFAULT_CGIBIN_SUBDIR www/cgi-bin)
elseif (${CMAKE_HOST_SYSTEM_NAME} MATCHES "BSD")
# in /usr/local/libexec/cgi-bin/
set (DEFAULT_CGIBIN_SUBDIR libexec/cgi-bin)
elseif ("${LSB_RELEASE_A}" MATCHES "Ubuntu" OR "${LSB_RELEASE_A}" MATCHES "Debian" OR "${LSB_RELEASE_A}" MATCHES "Mint")
# in /usr/lib/cgi-bin/
set (DEFAULT_CGIBIN_SUBDIR lib/cgi-bin)
else()
# others: Red Hat/CentOS/Rocky/Alma Linux
# in /var/www/cgi-bin/
set (DEFAULT_CGIBIN_SUBDIR www/cgi-bin)
endif()
set (DEFAULT_LIB_SUBDIR lib${LIB_SUFFIX}) set (DEFAULT_LIB_SUBDIR lib${LIB_SUFFIX})
set (DEFAULT_DATA_SUBDIR share/qgis) set (DEFAULT_DATA_SUBDIR share/qgis)
set (DEFAULT_LIBEXEC_SUBDIR lib${LIB_SUFFIX}/qgis) set (DEFAULT_LIBEXEC_SUBDIR lib${LIB_SUFFIX}/qgis)

View File

@ -62,7 +62,7 @@ Returns intensity of the light
Sets intensity of the light Sets intensity of the light
%End %End
bool operator==( const QgsDirectionalLightSettings &other ); bool operator==( const QgsDirectionalLightSettings &other ) const;
}; };

View File

@ -95,7 +95,7 @@ Returns quadratic attenuation (A_2)
Sets quadratic attenuation (A_2) Sets quadratic attenuation (A_2)
%End %End
bool operator==( const QgsPointLightSettings &other ); bool operator==( const QgsPointLightSettings &other ) const;
}; };

View File

@ -153,7 +153,7 @@ pointing towards north. The angle should range from 0 to 360.
%Docstring %Docstring
Writes camera configuration to the given DOM element Writes camera configuration to the given DOM element
%End %End
void readXml( const QDomElement &elem ); void readXml( const QDomElement &elem, QgsVector3D savedOrigin );
%Docstring %Docstring
Reads camera configuration from the given DOM element Reads camera configuration from the given DOM element
%End %End

View File

@ -62,7 +62,7 @@ Returns intensity of the light
Sets intensity of the light Sets intensity of the light
%End %End
bool operator==( const QgsDirectionalLightSettings &other ); bool operator==( const QgsDirectionalLightSettings &other ) const;
}; };

View File

@ -95,7 +95,7 @@ Returns quadratic attenuation (A_2)
Sets quadratic attenuation (A_2) Sets quadratic attenuation (A_2)
%End %End
bool operator==( const QgsPointLightSettings &other ); bool operator==( const QgsPointLightSettings &other ) const;
}; };

View File

@ -153,7 +153,7 @@ pointing towards north. The angle should range from 0 to 360.
%Docstring %Docstring
Writes camera configuration to the given DOM element Writes camera configuration to the given DOM element
%End %End
void readXml( const QDomElement &elem ); void readXml( const QDomElement &elem, QgsVector3D savedOrigin );
%Docstring %Docstring
Reads camera configuration from the given DOM element Reads camera configuration from the given DOM element
%End %End

View File

@ -10135,6 +10135,9 @@ QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks = Qgis.LayoutRenderFlag.AlwaysUs
QgsLayoutRenderContext.Flag.FlagAlwaysUseGlobalMasks = Qgis.LayoutRenderFlag.AlwaysUseGlobalMasks QgsLayoutRenderContext.Flag.FlagAlwaysUseGlobalMasks = Qgis.LayoutRenderFlag.AlwaysUseGlobalMasks
QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.is_monkey_patched = True QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.is_monkey_patched = True
QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.__doc__ = "When applying clipping paths for selective masking, always use global (\"entire map\") paths, instead of calculating local clipping paths per rendered feature. This results in considerably more complex layout exports in all current Qt versions. This flag only applies to vector layout exports. \n.. versionadded:: 3.38" QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.__doc__ = "When applying clipping paths for selective masking, always use global (\"entire map\") paths, instead of calculating local clipping paths per rendered feature. This results in considerably more complex layout exports in all current Qt versions. This flag only applies to vector layout exports. \n.. versionadded:: 3.38"
QgsLayoutRenderContext.LimitCoverageLayerRenderToCurrentFeature = Qgis.LayoutRenderFlag.LimitCoverageLayerRenderToCurrentFeature
QgsLayoutRenderContext.LimitCoverageLayerRenderToCurrentFeature.is_monkey_patched = True
QgsLayoutRenderContext.LimitCoverageLayerRenderToCurrentFeature.__doc__ = "Limit coverage layer rendering to the current atlas feature. \n.. versionadded:: 4.0"
Qgis.LayoutRenderFlag.__doc__ = """Flags for controlling how a layout is rendered. Qgis.LayoutRenderFlag.__doc__ = """Flags for controlling how a layout is rendered.
.. note:: .. note::
@ -10200,6 +10203,10 @@ Qgis.LayoutRenderFlag.__doc__ = """Flags for controlling how a layout is rendere
Available as ``QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks`` in older QGIS releases. Available as ``QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks`` in older QGIS releases.
* ``LimitCoverageLayerRenderToCurrentFeature``: Limit coverage layer rendering to the current atlas feature.
.. versionadded:: 4.0
""" """
# -- # --

View File

@ -0,0 +1,5 @@
# The following has been generated automatically from src/core/qgsfeatureexpressionfilterprovider.h
try:
QgsFeatureExpressionFilterProvider.__overridden_methods__ = ['filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError):
pass

View File

@ -1,5 +1,6 @@
# The following has been generated automatically from src/core/qgsfeaturefilterprovider.h # The following has been generated automatically from src/core/qgsfeaturefilterprovider.h
try: try:
QgsFeatureFilterProvider.__abstract_methods__ = ['filterFeatures', 'layerAttributes', 'clone'] QgsFeatureFilterProvider.__virtual_methods__ = ['isFilterThreadSafe', 'filterFeatures']
QgsFeatureFilterProvider.__abstract_methods__ = ['layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -0,0 +1,5 @@
# The following has been generated automatically from src/core/qgsgroupedfeaturefilterprovider.h
try:
QgsGroupedFeatureFilterProvider.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError):
pass

View File

@ -73,6 +73,26 @@ Sets whether the coverage layer should be hidden in map items in the
layouts. layouts.
.. seealso:: :py:func:`hideCoverage` .. seealso:: :py:func:`hideCoverage`
%End
bool limitCoverageLayerRenderToCurrentFeature() const;
%Docstring
Returns ``True`` if the atlas is set to limit rendering on the coverage
layer to the current feature.
.. seealso:: :py:func:`setHideCoverage`
.. versionadded:: 4.0
%End
void setLimitCoverageLayerRenderToCurrentFeature( bool limit );
%Docstring
Sets whether the rendering of the coverage layer should be limited to
the current feature.
.. seealso:: :py:func:`hideCoverage`
.. versionadded:: 4.0
%End %End
QString filenameExpression() const; QString filenameExpression() const;

View File

@ -2912,6 +2912,7 @@ The development version
LosslessImageRendering, LosslessImageRendering,
SynchronousLegendGraphics, SynchronousLegendGraphics,
AlwaysUseGlobalMasks, AlwaysUseGlobalMasks,
LimitCoverageLayerRenderToCurrentFeature,
}; };
typedef QFlags<Qgis::LayoutRenderFlag> LayoutRenderFlags; typedef QFlags<Qgis::LayoutRenderFlag> LayoutRenderFlags;

View File

@ -0,0 +1,57 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeatureexpressionfilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsFeatureExpressionFilterProvider : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a
per-layer basis.
.. versionadded:: 4.0
%End
%TypeHeaderCode
#include "qgsfeatureexpressionfilterprovider.h"
%End
public:
QgsFeatureExpressionFilterProvider();
%Docstring
Constructor
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureExpressionFilterProvider *clone() const /Factory/;
void setFilter( const QString &layerId, const QgsExpression &expression );
%Docstring
Set a filter for the given layer.
:param layerId: the layer to filter
:param expression: the filter expression
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeatureexpressionfilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -0,0 +1,93 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilter.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsFeatureFilter : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a
per-layer basis.
%End
%TypeHeaderCode
#include "qgsfeaturefilter.h"
%End
public:
QgsFeatureFilter();
%Docstring
Constructor
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ) /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Set a filter for the given layer.
:param layer: the layer to filter
:param expression: the filter expression
.. deprecated:: 4.0
Use the layer ID variant.
%End
void setFilter( const QString &layerId, const QgsExpression &expression );
%Docstring
Set a filter for the given layer.
:param layerId: the layer to filter
:param expression: the filter expression
.. versionadded:: 4.0
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilter.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -30,7 +30,17 @@ also available.
public: public:
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const = 0; virtual bool isFilterThreadSafe() const /Deprecated="Since 4.0. "/;
%Docstring
Returns ``True`` if the filterFeature function is thread safe, which
will lead to reliance on layer ID instead of the raw layer pointer.
.. versionadded:: 4.0
.. deprecated:: 4.0
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring %Docstring
Add additional filters to the feature request to further restrict the Add additional filters to the feature request to further restrict the
features returned by the request. Derived classes must implement this features returned by the request. Derived classes must implement this
@ -38,6 +48,22 @@ method.
:param layer: the layer to filter :param layer: the layer to filter
:param featureRequest: the feature request to update :param featureRequest: the feature request to update
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &featureRequest ) const;
%Docstring
Add additional filters to the feature request to further restrict the
features returned by the request. Derived classes must implement this
method.
:param layerId: the layer ID to filter
:param featureRequest: the feature request to update
.. versionadded:: 4.0
%End %End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0;

View File

@ -0,0 +1,81 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilterprovidergroup.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsFeatureFilterProviderGroup : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A filter filter provider grouping several filter providers.
%End
%TypeHeaderCode
#include "qgsfeaturefilterprovidergroup.h"
%End
public:
QgsFeatureFilterProviderGroup();
%Docstring
Constructor
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
.. versionadded:: 4.0
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring
Add another filter provider to the group
:param provider: The provider to add
:return: itself
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilterprovidergroup.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -0,0 +1,60 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsgroupedfeaturefilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsGroupedFeatureFilterProvider : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A filter filter provider grouping several filter providers.
.. versionadded:: 4.0
%End
%TypeHeaderCode
#include "qgsgroupedfeaturefilterprovider.h"
%End
public:
QgsGroupedFeatureFilterProvider();
%Docstring
Constructor
%End
virtual bool isFilterThreadSafe() const /Deprecated/;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsGroupedFeatureFilterProvider *clone() const /Factory/;
QgsGroupedFeatureFilterProvider &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring
Add another filter provider to the group
:param provider: The provider to add
:return: itself
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsgroupedfeaturefilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -1,14 +1,14 @@
Qgis.defaultProjectScales: src/core/qgis.h#L6067 Qgis.defaultProjectScales: src/core/qgis.h#L6068
Qgis.devVersion: src/core/qgis.h#L89 Qgis.devVersion: src/core/qgis.h#L89
Qgis.geoNone: src/core/qgis.h#L6112 Qgis.geoNone: src/core/qgis.h#L6113
Qgis.geoProj4: src/core/qgis.h#L6142 Qgis.geoProj4: src/core/qgis.h#L6143
Qgis.geoWkt: src/core/qgis.h#L6133 Qgis.geoWkt: src/core/qgis.h#L6134
Qgis.geographicCrsAuthId: src/core/qgis.h#L6122 Qgis.geographicCrsAuthId: src/core/qgis.h#L6123
Qgis.geosVersion: src/core/qgis.h#L6102 Qgis.geosVersion: src/core/qgis.h#L6103
Qgis.geosVersionInt: src/core/qgis.h#L6074 Qgis.geosVersionInt: src/core/qgis.h#L6075
Qgis.geosVersionMajor: src/core/qgis.h#L6081 Qgis.geosVersionMajor: src/core/qgis.h#L6082
Qgis.geosVersionMinor: src/core/qgis.h#L6088 Qgis.geosVersionMinor: src/core/qgis.h#L6089
Qgis.geosVersionPatch: src/core/qgis.h#L6095 Qgis.geosVersionPatch: src/core/qgis.h#L6096
Qgis.releaseName: src/core/qgis.h#L79 Qgis.releaseName: src/core/qgis.h#L79
Qgis.version: src/core/qgis.h#L65 Qgis.version: src/core/qgis.h#L65
Qgis.versionInt: src/core/qgis.h#L72 Qgis.versionInt: src/core/qgis.h#L72
@ -4268,6 +4268,12 @@ QgsFeature.setGeometry: src/core/qgsfeature.h#L873
QgsFeature.setId: src/core/qgsfeature.h#L530 QgsFeature.setId: src/core/qgsfeature.h#L530
QgsFeature.setValid: src/core/qgsfeature.h#L813 QgsFeature.setValid: src/core/qgsfeature.h#L813
QgsFeature: src/core/qgsfeature.h#L57 QgsFeature: src/core/qgsfeature.h#L57
QgsFeatureExpressionFilterProvider.clone: src/core/qgsfeatureexpressionfilterprovider.h#L43
QgsFeatureExpressionFilterProvider.filterFeatures: src/core/qgsfeatureexpressionfilterprovider.h#L40
QgsFeatureExpressionFilterProvider.filterFeatures: src/core/qgsfeatureexpressionfilterprovider.h#L41
QgsFeatureExpressionFilterProvider.layerAttributes: src/core/qgsfeatureexpressionfilterprovider.h#L42
QgsFeatureExpressionFilterProvider.setFilter: src/core/qgsfeatureexpressionfilterprovider.h#L50
QgsFeatureExpressionFilterProvider: src/core/qgsfeatureexpressionfilterprovider.h#L34
QgsFeatureFilterModel.QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L48 QgsFeatureFilterModel.QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L48
QgsFeatureFilterModel.extraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L85 QgsFeatureFilterModel.extraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L85
QgsFeatureFilterModel.extraIdentifierValuesChanged: src/core/qgsfeaturefiltermodel.h#L107 QgsFeatureFilterModel.extraIdentifierValuesChanged: src/core/qgsfeaturefiltermodel.h#L107
@ -4279,9 +4285,11 @@ QgsFeatureFilterModel.setExtraIdentifierValueToNull: src/core/qgsfeaturefiltermo
QgsFeatureFilterModel.setExtraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L92 QgsFeatureFilterModel.setExtraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L92
QgsFeatureFilterModel.setIdentifierFields: src/core/qgsfeaturefiltermodel.h#L71 QgsFeatureFilterModel.setIdentifierFields: src/core/qgsfeaturefiltermodel.h#L71
QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L27 QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L27
QgsFeatureFilterProvider.clone: src/core/qgsfeaturefilterprovider.h#L71 QgsFeatureFilterProvider.clone: src/core/qgsfeaturefilterprovider.h#L97
QgsFeatureFilterProvider.filterFeatures: src/core/qgsfeaturefilterprovider.h#L59 QgsFeatureFilterProvider.filterFeatures: src/core/qgsfeaturefilterprovider.h#L72
QgsFeatureFilterProvider.layerAttributes: src/core/qgsfeaturefilterprovider.h#L65 QgsFeatureFilterProvider.filterFeatures: src/core/qgsfeaturefilterprovider.h#L85
QgsFeatureFilterProvider.isFilterThreadSafe: src/core/qgsfeaturefilterprovider.h#L59
QgsFeatureFilterProvider.layerAttributes: src/core/qgsfeaturefilterprovider.h#L91
QgsFeatureFilterProvider: src/core/qgsfeaturefilterprovider.h#L41 QgsFeatureFilterProvider: src/core/qgsfeaturefilterprovider.h#L41
QgsFeatureIterator.__iter__: src/core/qgsfeatureiterator.h#L294 QgsFeatureIterator.__iter__: src/core/qgsfeatureiterator.h#L294
QgsFeatureIterator.__next__: src/core/qgsfeatureiterator.h#L299 QgsFeatureIterator.__next__: src/core/qgsfeatureiterator.h#L299
@ -5762,6 +5770,12 @@ QgsGroupLayer.setTransformContext: src/core/qgsgrouplayer.h#L87
QgsGroupLayer.writeSymbology: src/core/qgsgrouplayer.h#L90 QgsGroupLayer.writeSymbology: src/core/qgsgrouplayer.h#L90
QgsGroupLayer.writeXml: src/core/qgsgrouplayer.h#L89 QgsGroupLayer.writeXml: src/core/qgsgrouplayer.h#L89
QgsGroupLayer: src/core/qgsgrouplayer.h#L41 QgsGroupLayer: src/core/qgsgrouplayer.h#L41
QgsGroupedFeatureFilterProvider.clone: src/core/qgsgroupedfeaturefilterprovider.h#L43
QgsGroupedFeatureFilterProvider.filterFeatures: src/core/qgsgroupedfeaturefilterprovider.h#L40
QgsGroupedFeatureFilterProvider.filterFeatures: src/core/qgsgroupedfeaturefilterprovider.h#L41
QgsGroupedFeatureFilterProvider.isFilterThreadSafe: src/core/qgsgroupedfeaturefilterprovider.h#L38
QgsGroupedFeatureFilterProvider.layerAttributes: src/core/qgsgroupedfeaturefilterprovider.h#L42
QgsGroupedFeatureFilterProvider: src/core/qgsgroupedfeaturefilterprovider.h#L32
QgsHashedLineSymbolLayer.clone: src/core/symbology/qgslinesymbollayer.h#L1040 QgsHashedLineSymbolLayer.clone: src/core/symbology/qgslinesymbollayer.h#L1040
QgsHashedLineSymbolLayer.color: src/core/symbology/qgslinesymbollayer.h#L1042 QgsHashedLineSymbolLayer.color: src/core/symbology/qgslinesymbollayer.h#L1042
QgsHashedLineSymbolLayer.create: src/core/symbology/qgslinesymbollayer.h#L1034 QgsHashedLineSymbolLayer.create: src/core/symbology/qgslinesymbollayer.h#L1034
@ -6780,53 +6794,55 @@ QgsLayoutAligner.alignItems: src/core/layout/qgslayoutaligner.h#L79
QgsLayoutAligner.distributeItems: src/core/layout/qgslayoutaligner.h#L86 QgsLayoutAligner.distributeItems: src/core/layout/qgslayoutaligner.h#L86
QgsLayoutAligner.resizeItems: src/core/layout/qgslayoutaligner.h#L93 QgsLayoutAligner.resizeItems: src/core/layout/qgslayoutaligner.h#L93
QgsLayoutAligner: src/core/layout/qgslayoutaligner.h#L35 QgsLayoutAligner: src/core/layout/qgslayoutaligner.h#L35
QgsLayoutAtlas.beginRender: src/core/layout/qgslayoutatlas.h#L245 QgsLayoutAtlas.beginRender: src/core/layout/qgslayoutatlas.h#L261
QgsLayoutAtlas.changed: src/core/layout/qgslayoutatlas.h#L314 QgsLayoutAtlas.changed: src/core/layout/qgslayoutatlas.h#L330
QgsLayoutAtlas.count: src/core/layout/qgslayoutatlas.h#L247 QgsLayoutAtlas.count: src/core/layout/qgslayoutatlas.h#L263
QgsLayoutAtlas.coverageLayer: src/core/layout/qgslayoutatlas.h#L115 QgsLayoutAtlas.coverageLayer: src/core/layout/qgslayoutatlas.h#L131
QgsLayoutAtlas.coverageLayerChanged: src/core/layout/qgslayoutatlas.h#L320 QgsLayoutAtlas.coverageLayerChanged: src/core/layout/qgslayoutatlas.h#L336
QgsLayoutAtlas.createExpressionContext: src/core/layout/qgslayoutatlas.h#L255 QgsLayoutAtlas.createExpressionContext: src/core/layout/qgslayoutatlas.h#L271
QgsLayoutAtlas.currentFeatureNumber: src/core/layout/qgslayoutatlas.h#L253 QgsLayoutAtlas.currentFeatureNumber: src/core/layout/qgslayoutatlas.h#L269
QgsLayoutAtlas.currentFilename: src/core/layout/qgslayoutatlas.h#L109 QgsLayoutAtlas.currentFilename: src/core/layout/qgslayoutatlas.h#L125
QgsLayoutAtlas.enabled: src/core/layout/qgslayoutatlas.h#L66 QgsLayoutAtlas.enabled: src/core/layout/qgslayoutatlas.h#L66
QgsLayoutAtlas.endRender: src/core/layout/qgslayoutatlas.h#L246 QgsLayoutAtlas.endRender: src/core/layout/qgslayoutatlas.h#L262
QgsLayoutAtlas.featureChanged: src/core/layout/qgslayoutatlas.h#L331 QgsLayoutAtlas.featureChanged: src/core/layout/qgslayoutatlas.h#L347
QgsLayoutAtlas.filePath: src/core/layout/qgslayoutatlas.h#L248 QgsLayoutAtlas.filePath: src/core/layout/qgslayoutatlas.h#L264
QgsLayoutAtlas.filenameExpression: src/core/layout/qgslayoutatlas.h#L92 QgsLayoutAtlas.filenameExpression: src/core/layout/qgslayoutatlas.h#L108
QgsLayoutAtlas.filterExpression: src/core/layout/qgslayoutatlas.h#L224 QgsLayoutAtlas.filterExpression: src/core/layout/qgslayoutatlas.h#L240
QgsLayoutAtlas.filterFeatures: src/core/layout/qgslayoutatlas.h#L207 QgsLayoutAtlas.filterFeatures: src/core/layout/qgslayoutatlas.h#L223
QgsLayoutAtlas.first: src/core/layout/qgslayoutatlas.h#L286 QgsLayoutAtlas.first: src/core/layout/qgslayoutatlas.h#L302
QgsLayoutAtlas.hideCoverage: src/core/layout/qgslayoutatlas.h#L78 QgsLayoutAtlas.hideCoverage: src/core/layout/qgslayoutatlas.h#L78
QgsLayoutAtlas.last: src/core/layout/qgslayoutatlas.h#L277 QgsLayoutAtlas.last: src/core/layout/qgslayoutatlas.h#L293
QgsLayoutAtlas.layout: src/core/layout/qgslayoutatlas.h#L51 QgsLayoutAtlas.layout: src/core/layout/qgslayoutatlas.h#L51
QgsLayoutAtlas.messagePushed: src/core/layout/qgslayoutatlas.h#L323 QgsLayoutAtlas.limitCoverageLayerRenderToCurrentFeature: src/core/layout/qgslayoutatlas.h#L92
QgsLayoutAtlas.nameForPage: src/core/layout/qgslayoutatlas.h#L140 QgsLayoutAtlas.messagePushed: src/core/layout/qgslayoutatlas.h#L339
QgsLayoutAtlas.next: src/core/layout/qgslayoutatlas.h#L259 QgsLayoutAtlas.nameForPage: src/core/layout/qgslayoutatlas.h#L156
QgsLayoutAtlas.numberFeaturesChanged: src/core/layout/qgslayoutatlas.h#L328 QgsLayoutAtlas.next: src/core/layout/qgslayoutatlas.h#L275
QgsLayoutAtlas.pageNameExpression: src/core/layout/qgslayoutatlas.h#L128 QgsLayoutAtlas.numberFeaturesChanged: src/core/layout/qgslayoutatlas.h#L344
QgsLayoutAtlas.previous: src/core/layout/qgslayoutatlas.h#L268 QgsLayoutAtlas.pageNameExpression: src/core/layout/qgslayoutatlas.h#L144
QgsLayoutAtlas.previous: src/core/layout/qgslayoutatlas.h#L284
QgsLayoutAtlas.readXml: src/core/layout/qgslayoutatlas.h#L60 QgsLayoutAtlas.readXml: src/core/layout/qgslayoutatlas.h#L60
QgsLayoutAtlas.refreshCurrentFeature: src/core/layout/qgslayoutatlas.h#L309 QgsLayoutAtlas.refreshCurrentFeature: src/core/layout/qgslayoutatlas.h#L325
QgsLayoutAtlas.renderBegun: src/core/layout/qgslayoutatlas.h#L334 QgsLayoutAtlas.renderBegun: src/core/layout/qgslayoutatlas.h#L350
QgsLayoutAtlas.renderEnded: src/core/layout/qgslayoutatlas.h#L337 QgsLayoutAtlas.renderEnded: src/core/layout/qgslayoutatlas.h#L353
QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L295 QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L311
QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L304 QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L320
QgsLayoutAtlas.setCoverageLayer: src/core/layout/qgslayoutatlas.h#L121 QgsLayoutAtlas.setCoverageLayer: src/core/layout/qgslayoutatlas.h#L137
QgsLayoutAtlas.setEnabled: src/core/layout/qgslayoutatlas.h#L72 QgsLayoutAtlas.setEnabled: src/core/layout/qgslayoutatlas.h#L72
QgsLayoutAtlas.setFilenameExpression: src/core/layout/qgslayoutatlas.h#L102 QgsLayoutAtlas.setFilenameExpression: src/core/layout/qgslayoutatlas.h#L118
QgsLayoutAtlas.setFilterExpression: src/core/layout/qgslayoutatlas.h#L237 QgsLayoutAtlas.setFilterExpression: src/core/layout/qgslayoutatlas.h#L253
QgsLayoutAtlas.setFilterFeatures: src/core/layout/qgslayoutatlas.h#L214 QgsLayoutAtlas.setFilterFeatures: src/core/layout/qgslayoutatlas.h#L230
QgsLayoutAtlas.setHideCoverage: src/core/layout/qgslayoutatlas.h#L84 QgsLayoutAtlas.setHideCoverage: src/core/layout/qgslayoutatlas.h#L84
QgsLayoutAtlas.setPageNameExpression: src/core/layout/qgslayoutatlas.h#L134 QgsLayoutAtlas.setLimitCoverageLayerRenderToCurrentFeature: src/core/layout/qgslayoutatlas.h#L100
QgsLayoutAtlas.setSortAscending: src/core/layout/qgslayoutatlas.h#L178 QgsLayoutAtlas.setPageNameExpression: src/core/layout/qgslayoutatlas.h#L150
QgsLayoutAtlas.setSortExpression: src/core/layout/qgslayoutatlas.h#L200 QgsLayoutAtlas.setSortAscending: src/core/layout/qgslayoutatlas.h#L194
QgsLayoutAtlas.setSortFeatures: src/core/layout/qgslayoutatlas.h#L156 QgsLayoutAtlas.setSortExpression: src/core/layout/qgslayoutatlas.h#L216
QgsLayoutAtlas.sortAscending: src/core/layout/qgslayoutatlas.h#L167 QgsLayoutAtlas.setSortFeatures: src/core/layout/qgslayoutatlas.h#L172
QgsLayoutAtlas.sortExpression: src/core/layout/qgslayoutatlas.h#L189 QgsLayoutAtlas.sortAscending: src/core/layout/qgslayoutatlas.h#L183
QgsLayoutAtlas.sortFeatures: src/core/layout/qgslayoutatlas.h#L148 QgsLayoutAtlas.sortExpression: src/core/layout/qgslayoutatlas.h#L205
QgsLayoutAtlas.sortFeatures: src/core/layout/qgslayoutatlas.h#L164
QgsLayoutAtlas.stringType: src/core/layout/qgslayoutatlas.h#L50 QgsLayoutAtlas.stringType: src/core/layout/qgslayoutatlas.h#L50
QgsLayoutAtlas.toggled: src/core/layout/qgslayoutatlas.h#L317 QgsLayoutAtlas.toggled: src/core/layout/qgslayoutatlas.h#L333
QgsLayoutAtlas.updateFeatures: src/core/layout/qgslayoutatlas.h#L243 QgsLayoutAtlas.updateFeatures: src/core/layout/qgslayoutatlas.h#L259
QgsLayoutAtlas.writeXml: src/core/layout/qgslayoutatlas.h#L59 QgsLayoutAtlas.writeXml: src/core/layout/qgslayoutatlas.h#L59
QgsLayoutAtlas: src/core/layout/qgslayoutatlas.h#L40 QgsLayoutAtlas: src/core/layout/qgslayoutatlas.h#L40
QgsLayoutChecker.setSize: src/core/qgsmultirenderchecker.h#L209 QgsLayoutChecker.setSize: src/core/qgsmultirenderchecker.h#L209
@ -7310,119 +7326,119 @@ QgsLayoutItemManualTable.type: src/core/layout/qgslayoutitemmanualtable.h#L46
QgsLayoutItemManualTable.verticalAlignmentForCell: src/core/layout/qgslayoutitemmanualtable.h#L145 QgsLayoutItemManualTable.verticalAlignmentForCell: src/core/layout/qgslayoutitemmanualtable.h#L145
QgsLayoutItemManualTable.writePropertiesToElement: src/core/layout/qgslayoutitemmanualtable.h#L139 QgsLayoutItemManualTable.writePropertiesToElement: src/core/layout/qgslayoutitemmanualtable.h#L139
QgsLayoutItemManualTable: src/core/layout/qgslayoutitemmanualtable.h#L31 QgsLayoutItemManualTable: src/core/layout/qgslayoutitemmanualtable.h#L31
QgsLayoutItemMap.QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L361 QgsLayoutItemMap.QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L362
QgsLayoutItemMap.accept: src/core/layout/qgslayoutitemmap.h#L828 QgsLayoutItemMap.accept: src/core/layout/qgslayoutitemmap.h#L829
QgsLayoutItemMap.addLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L785 QgsLayoutItemMap.addLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L786
QgsLayoutItemMap.addRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L842 QgsLayoutItemMap.addRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L843
QgsLayoutItemMap.assignFreeId: src/core/layout/qgslayoutitemmap.h#L385 QgsLayoutItemMap.assignFreeId: src/core/layout/qgslayoutitemmap.h#L386
QgsLayoutItemMap.atlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L862 QgsLayoutItemMap.atlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L863
QgsLayoutItemMap.atlasDriven: src/core/layout/qgslayoutitemmap.h#L643 QgsLayoutItemMap.atlasDriven: src/core/layout/qgslayoutitemmap.h#L644
QgsLayoutItemMap.atlasMargin: src/core/layout/qgslayoutitemmap.h#L685 QgsLayoutItemMap.atlasMargin: src/core/layout/qgslayoutitemmap.h#L686
QgsLayoutItemMap.atlasScalingMode: src/core/layout/qgslayoutitemmap.h#L662 QgsLayoutItemMap.atlasScalingMode: src/core/layout/qgslayoutitemmap.h#L663
QgsLayoutItemMap.boundingRect: src/core/layout/qgslayoutitemmap.h#L928 QgsLayoutItemMap.boundingRect: src/core/layout/qgslayoutitemmap.h#L929
QgsLayoutItemMap.containsAdvancedEffects: src/core/layout/qgslayoutitemmap.h#L604 QgsLayoutItemMap.containsAdvancedEffects: src/core/layout/qgslayoutitemmap.h#L605
QgsLayoutItemMap.containsWmsLayer: src/core/layout/qgslayoutitemmap.h#L601 QgsLayoutItemMap.containsWmsLayer: src/core/layout/qgslayoutitemmap.h#L602
QgsLayoutItemMap.create: src/core/layout/qgslayoutitemmap.h#L395 QgsLayoutItemMap.create: src/core/layout/qgslayoutitemmap.h#L396
QgsLayoutItemMap.createExpressionContext: src/core/layout/qgslayoutitemmap.h#L748 QgsLayoutItemMap.createExpressionContext: src/core/layout/qgslayoutitemmap.h#L749
QgsLayoutItemMap.crs: src/core/layout/qgslayoutitemmap.h#L471 QgsLayoutItemMap.crs: src/core/layout/qgslayoutitemmap.h#L472
QgsLayoutItemMap.crsChanged: src/core/layout/qgslayoutitemmap.h#L981 QgsLayoutItemMap.crsChanged: src/core/layout/qgslayoutitemmap.h#L982
QgsLayoutItemMap.displayName: src/core/layout/qgslayoutitemmap.h#L388 QgsLayoutItemMap.displayName: src/core/layout/qgslayoutitemmap.h#L389
QgsLayoutItemMap.draw: src/core/layout/qgslayoutitemmap.h#L919 QgsLayoutItemMap.draw: src/core/layout/qgslayoutitemmap.h#L920
QgsLayoutItemMap.drawAnnotations: src/core/layout/qgslayoutitemmap.h#L634 QgsLayoutItemMap.drawAnnotations: src/core/layout/qgslayoutitemmap.h#L635
QgsLayoutItemMap.estimatedFrameBleed: src/core/layout/qgslayoutitemmap.h#L915 QgsLayoutItemMap.estimatedFrameBleed: src/core/layout/qgslayoutitemmap.h#L916
QgsLayoutItemMap.exportLayerBehavior: src/core/layout/qgslayoutitemmap.h#L408 QgsLayoutItemMap.exportLayerBehavior: src/core/layout/qgslayoutitemmap.h#L409
QgsLayoutItemMap.exportLayerDetails: src/core/layout/qgslayoutitemmap.h#L409 QgsLayoutItemMap.exportLayerDetails: src/core/layout/qgslayoutitemmap.h#L410
QgsLayoutItemMap.extent: src/core/layout/qgslayoutitemmap.h#L451 QgsLayoutItemMap.extent: src/core/layout/qgslayoutitemmap.h#L452
QgsLayoutItemMap.extentChanged: src/core/layout/qgslayoutitemmap.h#L948 QgsLayoutItemMap.extentChanged: src/core/layout/qgslayoutitemmap.h#L949
QgsLayoutItemMap.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L766 QgsLayoutItemMap.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L767
QgsLayoutItemMap.followVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L570 QgsLayoutItemMap.followVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L571
QgsLayoutItemMap.followVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L584 QgsLayoutItemMap.followVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L585
QgsLayoutItemMap.framePath: src/core/layout/qgslayoutitemmap.h#L922 QgsLayoutItemMap.framePath: src/core/layout/qgslayoutitemmap.h#L923
QgsLayoutItemMap.grid: src/core/layout/qgslayoutitemmap.h#L707 QgsLayoutItemMap.grid: src/core/layout/qgslayoutitemmap.h#L708
QgsLayoutItemMap.grids: src/core/layout/qgslayoutitemmap.h#L701 QgsLayoutItemMap.grids: src/core/layout/qgslayoutitemmap.h#L702
QgsLayoutItemMap.icon: src/core/layout/qgslayoutitemmap.h#L365 QgsLayoutItemMap.icon: src/core/layout/qgslayoutitemmap.h#L366
QgsLayoutItemMap.invalidateCache: src/core/layout/qgslayoutitemmap.h#L994 QgsLayoutItemMap.invalidateCache: src/core/layout/qgslayoutitemmap.h#L995
QgsLayoutItemMap.isDrawing: src/core/layout/qgslayoutitemmap.h#L925 QgsLayoutItemMap.isDrawing: src/core/layout/qgslayoutitemmap.h#L926
QgsLayoutItemMap.isLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L811 QgsLayoutItemMap.isLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L812
QgsLayoutItemMap.itemClippingSettings: src/core/layout/qgslayoutitemmap.h#L869 QgsLayoutItemMap.itemClippingSettings: src/core/layout/qgslayoutitemmap.h#L870
QgsLayoutItemMap.itemFlags: src/core/layout/qgslayoutitemmap.h#L366 QgsLayoutItemMap.itemFlags: src/core/layout/qgslayoutitemmap.h#L367
QgsLayoutItemMap.keepLayerSet: src/core/layout/qgslayoutitemmap.h#L500 QgsLayoutItemMap.keepLayerSet: src/core/layout/qgslayoutitemmap.h#L501
QgsLayoutItemMap.keepLayerStyles: src/core/layout/qgslayoutitemmap.h#L535 QgsLayoutItemMap.keepLayerStyles: src/core/layout/qgslayoutitemmap.h#L536
QgsLayoutItemMap.labelMargin: src/core/layout/qgslayoutitemmap.h#L734 QgsLayoutItemMap.labelMargin: src/core/layout/qgslayoutitemmap.h#L735
QgsLayoutItemMap.layerStyleOverridesChanged: src/core/layout/qgslayoutitemmap.h#L964 QgsLayoutItemMap.layerStyleOverridesChanged: src/core/layout/qgslayoutitemmap.h#L965
QgsLayoutItemMap.layoutToMapCoordsTransform: src/core/layout/qgslayoutitemmap.h#L855 QgsLayoutItemMap.layoutToMapCoordsTransform: src/core/layout/qgslayoutitemmap.h#L856
QgsLayoutItemMap.mapFlags: src/core/layout/qgslayoutitemmap.h#L373 QgsLayoutItemMap.mapFlags: src/core/layout/qgslayoutitemmap.h#L374
QgsLayoutItemMap.mapRotation: src/core/layout/qgslayoutitemmap.h#L622 QgsLayoutItemMap.mapRotation: src/core/layout/qgslayoutitemmap.h#L623
QgsLayoutItemMap.mapRotationChanged: src/core/layout/qgslayoutitemmap.h#L955 QgsLayoutItemMap.mapRotationChanged: src/core/layout/qgslayoutitemmap.h#L956
QgsLayoutItemMap.mapSettings: src/core/layout/qgslayoutitemmap.h#L764 QgsLayoutItemMap.mapSettings: src/core/layout/qgslayoutitemmap.h#L765
QgsLayoutItemMap.mapToItemCoords: src/core/layout/qgslayoutitemmap.h#L934 QgsLayoutItemMap.mapToItemCoords: src/core/layout/qgslayoutitemmap.h#L935
QgsLayoutItemMap.mapUnitsToLayoutUnits: src/core/layout/qgslayoutitemmap.h#L755 QgsLayoutItemMap.mapUnitsToLayoutUnits: src/core/layout/qgslayoutitemmap.h#L756
QgsLayoutItemMap.moveContent: src/core/layout/qgslayoutitemmap.h#L594 QgsLayoutItemMap.moveContent: src/core/layout/qgslayoutitemmap.h#L595
QgsLayoutItemMap.nextExportPart: src/core/layout/qgslayoutitemmap.h#L407 QgsLayoutItemMap.nextExportPart: src/core/layout/qgslayoutitemmap.h#L408
QgsLayoutItemMap.numberExportLayers: src/core/layout/qgslayoutitemmap.h#L403 QgsLayoutItemMap.numberExportLayers: src/core/layout/qgslayoutitemmap.h#L404
QgsLayoutItemMap.overview: src/core/layout/qgslayoutitemmap.h#L722 QgsLayoutItemMap.overview: src/core/layout/qgslayoutitemmap.h#L723
QgsLayoutItemMap.overviews: src/core/layout/qgslayoutitemmap.h#L715 QgsLayoutItemMap.overviews: src/core/layout/qgslayoutitemmap.h#L716
QgsLayoutItemMap.paint: src/core/layout/qgslayoutitemmap.h#L398 QgsLayoutItemMap.paint: src/core/layout/qgslayoutitemmap.h#L399
QgsLayoutItemMap.preparedForAtlas: src/core/layout/qgslayoutitemmap.h#L958 QgsLayoutItemMap.preparedForAtlas: src/core/layout/qgslayoutitemmap.h#L959
QgsLayoutItemMap.presetCrs: src/core/layout/qgslayoutitemmap.h#L481 QgsLayoutItemMap.presetCrs: src/core/layout/qgslayoutitemmap.h#L482
QgsLayoutItemMap.previewLabelingResults: src/core/layout/qgslayoutitemmap.h#L826 QgsLayoutItemMap.previewLabelingResults: src/core/layout/qgslayoutitemmap.h#L827
QgsLayoutItemMap.previewRefreshed: src/core/layout/qgslayoutitemmap.h#L988 QgsLayoutItemMap.previewRefreshed: src/core/layout/qgslayoutitemmap.h#L989
QgsLayoutItemMap.readPropertiesFromElement: src/core/layout/qgslayoutitemmap.h#L921 QgsLayoutItemMap.readPropertiesFromElement: src/core/layout/qgslayoutitemmap.h#L922
QgsLayoutItemMap.refresh: src/core/layout/qgslayoutitemmap.h#L992 QgsLayoutItemMap.refresh: src/core/layout/qgslayoutitemmap.h#L993
QgsLayoutItemMap.refreshDataDefinedProperty: src/core/layout/qgslayoutitemmap.h#L999 QgsLayoutItemMap.refreshDataDefinedProperty: src/core/layout/qgslayoutitemmap.h#L1000
QgsLayoutItemMap.removeLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L798 QgsLayoutItemMap.removeLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L799
QgsLayoutItemMap.removeRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L850 QgsLayoutItemMap.removeRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L851
QgsLayoutItemMap.renderingErrors: src/core/layout/qgslayoutitemmap.h#L817 QgsLayoutItemMap.renderingErrors: src/core/layout/qgslayoutitemmap.h#L818
QgsLayoutItemMap.requestedExtent: src/core/layout/qgslayoutitemmap.h#L939 QgsLayoutItemMap.requestedExtent: src/core/layout/qgslayoutitemmap.h#L940
QgsLayoutItemMap.requiresRasterization: src/core/layout/qgslayoutitemmap.h#L603 QgsLayoutItemMap.requiresRasterization: src/core/layout/qgslayoutitemmap.h#L604
QgsLayoutItemMap.scale: src/core/layout/qgslayoutitemmap.h#L417 QgsLayoutItemMap.scale: src/core/layout/qgslayoutitemmap.h#L418
QgsLayoutItemMap.setAtlasDriven: src/core/layout/qgslayoutitemmap.h#L651 QgsLayoutItemMap.setAtlasDriven: src/core/layout/qgslayoutitemmap.h#L652
QgsLayoutItemMap.setAtlasMargin: src/core/layout/qgslayoutitemmap.h#L694 QgsLayoutItemMap.setAtlasMargin: src/core/layout/qgslayoutitemmap.h#L695
QgsLayoutItemMap.setAtlasScalingMode: src/core/layout/qgslayoutitemmap.h#L673 QgsLayoutItemMap.setAtlasScalingMode: src/core/layout/qgslayoutitemmap.h#L674
QgsLayoutItemMap.setCrs: src/core/layout/qgslayoutitemmap.h#L490 QgsLayoutItemMap.setCrs: src/core/layout/qgslayoutitemmap.h#L491
QgsLayoutItemMap.setDrawAnnotations: src/core/layout/qgslayoutitemmap.h#L628 QgsLayoutItemMap.setDrawAnnotations: src/core/layout/qgslayoutitemmap.h#L629
QgsLayoutItemMap.setExtent: src/core/layout/qgslayoutitemmap.h#L435 QgsLayoutItemMap.setExtent: src/core/layout/qgslayoutitemmap.h#L436
QgsLayoutItemMap.setFollowVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L575 QgsLayoutItemMap.setFollowVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L576
QgsLayoutItemMap.setFollowVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L592 QgsLayoutItemMap.setFollowVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L593
QgsLayoutItemMap.setFrameStrokeWidth: src/core/layout/qgslayoutitemmap.h#L410 QgsLayoutItemMap.setFrameStrokeWidth: src/core/layout/qgslayoutitemmap.h#L411
QgsLayoutItemMap.setKeepLayerSet: src/core/layout/qgslayoutitemmap.h#L510 QgsLayoutItemMap.setKeepLayerSet: src/core/layout/qgslayoutitemmap.h#L511
QgsLayoutItemMap.setKeepLayerStyles: src/core/layout/qgslayoutitemmap.h#L541 QgsLayoutItemMap.setKeepLayerStyles: src/core/layout/qgslayoutitemmap.h#L542
QgsLayoutItemMap.setLabelMargin: src/core/layout/qgslayoutitemmap.h#L746 QgsLayoutItemMap.setLabelMargin: src/core/layout/qgslayoutitemmap.h#L747
QgsLayoutItemMap.setLayerStyleOverrides: src/core/layout/qgslayoutitemmap.h#L553 QgsLayoutItemMap.setLayerStyleOverrides: src/core/layout/qgslayoutitemmap.h#L554
QgsLayoutItemMap.setLayers: src/core/layout/qgslayoutitemmap.h#L529 QgsLayoutItemMap.setLayers: src/core/layout/qgslayoutitemmap.h#L530
QgsLayoutItemMap.setMapFlags: src/core/layout/qgslayoutitemmap.h#L380 QgsLayoutItemMap.setMapFlags: src/core/layout/qgslayoutitemmap.h#L381
QgsLayoutItemMap.setMapRotation: src/core/layout/qgslayoutitemmap.h#L612 QgsLayoutItemMap.setMapRotation: src/core/layout/qgslayoutitemmap.h#L613
QgsLayoutItemMap.setMoveContentPreviewOffset: src/core/layout/qgslayoutitemmap.h#L595 QgsLayoutItemMap.setMoveContentPreviewOffset: src/core/layout/qgslayoutitemmap.h#L596
QgsLayoutItemMap.setScale: src/core/layout/qgslayoutitemmap.h#L426 QgsLayoutItemMap.setScale: src/core/layout/qgslayoutitemmap.h#L427
QgsLayoutItemMap.setZRange: src/core/layout/qgslayoutitemmap.h#L912 QgsLayoutItemMap.setZRange: src/core/layout/qgslayoutitemmap.h#L913
QgsLayoutItemMap.setZRangeEnabled: src/core/layout/qgslayoutitemmap.h#L878 QgsLayoutItemMap.setZRangeEnabled: src/core/layout/qgslayoutitemmap.h#L879
QgsLayoutItemMap.startLayeredExport: src/core/layout/qgslayoutitemmap.h#L405 QgsLayoutItemMap.startLayeredExport: src/core/layout/qgslayoutitemmap.h#L406
QgsLayoutItemMap.stopLayeredExport: src/core/layout/qgslayoutitemmap.h#L406 QgsLayoutItemMap.stopLayeredExport: src/core/layout/qgslayoutitemmap.h#L407
QgsLayoutItemMap.storeCurrentLayerStyles: src/core/layout/qgslayoutitemmap.h#L558 QgsLayoutItemMap.storeCurrentLayerStyles: src/core/layout/qgslayoutitemmap.h#L559
QgsLayoutItemMap.themeChanged: src/core/layout/qgslayoutitemmap.h#L974 QgsLayoutItemMap.themeChanged: src/core/layout/qgslayoutitemmap.h#L975
QgsLayoutItemMap.transformedMapPolygon: src/core/layout/qgslayoutitemmap.h#L931 QgsLayoutItemMap.transformedMapPolygon: src/core/layout/qgslayoutitemmap.h#L932
QgsLayoutItemMap.type: src/core/layout/qgslayoutitemmap.h#L364 QgsLayoutItemMap.type: src/core/layout/qgslayoutitemmap.h#L365
QgsLayoutItemMap.updateBoundingRect: src/core/layout/qgslayoutitemmap.h#L997 QgsLayoutItemMap.updateBoundingRect: src/core/layout/qgslayoutitemmap.h#L998
QgsLayoutItemMap.visibleExtentPolygon: src/core/layout/qgslayoutitemmap.h#L461 QgsLayoutItemMap.visibleExtentPolygon: src/core/layout/qgslayoutitemmap.h#L462
QgsLayoutItemMap.writePropertiesToElement: src/core/layout/qgslayoutitemmap.h#L920 QgsLayoutItemMap.writePropertiesToElement: src/core/layout/qgslayoutitemmap.h#L921
QgsLayoutItemMap.zRange: src/core/layout/qgslayoutitemmap.h#L900 QgsLayoutItemMap.zRange: src/core/layout/qgslayoutitemmap.h#L901
QgsLayoutItemMap.zRangeEnabled: src/core/layout/qgslayoutitemmap.h#L888 QgsLayoutItemMap.zRangeEnabled: src/core/layout/qgslayoutitemmap.h#L889
QgsLayoutItemMap.zoomContent: src/core/layout/qgslayoutitemmap.h#L597 QgsLayoutItemMap.zoomContent: src/core/layout/qgslayoutitemmap.h#L598
QgsLayoutItemMap.zoomToExtent: src/core/layout/qgslayoutitemmap.h#L444 QgsLayoutItemMap.zoomToExtent: src/core/layout/qgslayoutitemmap.h#L445
QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L317 QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L318
QgsLayoutItemMapAtlasClippingSettings.changed: src/core/layout/qgslayoutitemmap.h#L148 QgsLayoutItemMapAtlasClippingSettings.changed: src/core/layout/qgslayoutitemmap.h#L149
QgsLayoutItemMapAtlasClippingSettings.enabled: src/core/layout/qgslayoutitemmap.h#L56 QgsLayoutItemMapAtlasClippingSettings.enabled: src/core/layout/qgslayoutitemmap.h#L57
QgsLayoutItemMapAtlasClippingSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L70 QgsLayoutItemMapAtlasClippingSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L71
QgsLayoutItemMapAtlasClippingSettings.forceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L84 QgsLayoutItemMapAtlasClippingSettings.forceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L85
QgsLayoutItemMapAtlasClippingSettings.readXml: src/core/layout/qgslayoutitemmap.h#L141 QgsLayoutItemMapAtlasClippingSettings.readXml: src/core/layout/qgslayoutitemmap.h#L142
QgsLayoutItemMapAtlasClippingSettings.restrictToLayers: src/core/layout/qgslayoutitemmap.h#L99 QgsLayoutItemMapAtlasClippingSettings.restrictToLayers: src/core/layout/qgslayoutitemmap.h#L100
QgsLayoutItemMapAtlasClippingSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L63 QgsLayoutItemMapAtlasClippingSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L64
QgsLayoutItemMapAtlasClippingSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L77 QgsLayoutItemMapAtlasClippingSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L78
QgsLayoutItemMapAtlasClippingSettings.setForceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L91 QgsLayoutItemMapAtlasClippingSettings.setForceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L92
QgsLayoutItemMapAtlasClippingSettings.setLayersToClip: src/core/layout/qgslayoutitemmap.h#L127 QgsLayoutItemMapAtlasClippingSettings.setLayersToClip: src/core/layout/qgslayoutitemmap.h#L128
QgsLayoutItemMapAtlasClippingSettings.setRestrictToLayers: src/core/layout/qgslayoutitemmap.h#L107 QgsLayoutItemMapAtlasClippingSettings.setRestrictToLayers: src/core/layout/qgslayoutitemmap.h#L108
QgsLayoutItemMapAtlasClippingSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L134 QgsLayoutItemMapAtlasClippingSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L135
QgsLayoutItemMapAtlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L40 QgsLayoutItemMapAtlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L41
QgsLayoutItemMapGrid.accept: src/core/layout/qgslayoutitemmapgrid.h#L1005 QgsLayoutItemMapGrid.accept: src/core/layout/qgslayoutitemmapgrid.h#L1005
QgsLayoutItemMapGrid.annotationDirection: src/core/layout/qgslayoutitemmapgrid.h#L701 QgsLayoutItemMapGrid.annotationDirection: src/core/layout/qgslayoutitemmapgrid.h#L701
QgsLayoutItemMapGrid.annotationDisplay: src/core/layout/qgslayoutitemmapgrid.h#L656 QgsLayoutItemMapGrid.annotationDisplay: src/core/layout/qgslayoutitemmapgrid.h#L656
@ -7553,23 +7569,23 @@ QgsLayoutItemMapItem.stackingPosition: src/core/layout/qgslayoutitemmapitem.h#L1
QgsLayoutItemMapItem.usesAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L128 QgsLayoutItemMapItem.usesAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L128
QgsLayoutItemMapItem.writeXml: src/core/layout/qgslayoutitemmapitem.h#L65 QgsLayoutItemMapItem.writeXml: src/core/layout/qgslayoutitemmapitem.h#L65
QgsLayoutItemMapItem: src/core/layout/qgslayoutitemmapitem.h#L32 QgsLayoutItemMapItem: src/core/layout/qgslayoutitemmapitem.h#L32
QgsLayoutItemMapItemClipPathSettings.changed: src/core/layout/qgslayoutitemmap.h#L297 QgsLayoutItemMapItemClipPathSettings.changed: src/core/layout/qgslayoutitemmap.h#L298
QgsLayoutItemMapItemClipPathSettings.clipPathInMapItemCoordinates: src/core/layout/qgslayoutitemmap.h#L219 QgsLayoutItemMapItemClipPathSettings.clipPathInMapItemCoordinates: src/core/layout/qgslayoutitemmap.h#L220
QgsLayoutItemMapItemClipPathSettings.clippedMapExtent: src/core/layout/qgslayoutitemmap.h#L208 QgsLayoutItemMapItemClipPathSettings.clippedMapExtent: src/core/layout/qgslayoutitemmap.h#L209
QgsLayoutItemMapItemClipPathSettings.enabled: src/core/layout/qgslayoutitemmap.h#L194 QgsLayoutItemMapItemClipPathSettings.enabled: src/core/layout/qgslayoutitemmap.h#L195
QgsLayoutItemMapItemClipPathSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L248 QgsLayoutItemMapItemClipPathSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L249
QgsLayoutItemMapItemClipPathSettings.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L290 QgsLayoutItemMapItemClipPathSettings.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L291
QgsLayoutItemMapItemClipPathSettings.forceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L262 QgsLayoutItemMapItemClipPathSettings.forceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L263
QgsLayoutItemMapItemClipPathSettings.isActive: src/core/layout/qgslayoutitemmap.h#L187 QgsLayoutItemMapItemClipPathSettings.isActive: src/core/layout/qgslayoutitemmap.h#L188
QgsLayoutItemMapItemClipPathSettings.readXml: src/core/layout/qgslayoutitemmap.h#L284 QgsLayoutItemMapItemClipPathSettings.readXml: src/core/layout/qgslayoutitemmap.h#L285
QgsLayoutItemMapItemClipPathSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L201 QgsLayoutItemMapItemClipPathSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L202
QgsLayoutItemMapItemClipPathSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L255 QgsLayoutItemMapItemClipPathSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L256
QgsLayoutItemMapItemClipPathSettings.setForceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L269 QgsLayoutItemMapItemClipPathSettings.setForceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L270
QgsLayoutItemMapItemClipPathSettings.setSourceItem: src/core/layout/qgslayoutitemmap.h#L233 QgsLayoutItemMapItemClipPathSettings.setSourceItem: src/core/layout/qgslayoutitemmap.h#L234
QgsLayoutItemMapItemClipPathSettings.sourceItem: src/core/layout/qgslayoutitemmap.h#L241 QgsLayoutItemMapItemClipPathSettings.sourceItem: src/core/layout/qgslayoutitemmap.h#L242
QgsLayoutItemMapItemClipPathSettings.toMapClippingRegion: src/core/layout/qgslayoutitemmap.h#L224 QgsLayoutItemMapItemClipPathSettings.toMapClippingRegion: src/core/layout/qgslayoutitemmap.h#L225
QgsLayoutItemMapItemClipPathSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L276 QgsLayoutItemMapItemClipPathSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L277
QgsLayoutItemMapItemClipPathSettings: src/core/layout/qgslayoutitemmap.h#L170 QgsLayoutItemMapItemClipPathSettings: src/core/layout/qgslayoutitemmap.h#L171
QgsLayoutItemMapItemStack.addItem: src/core/layout/qgslayoutitemmapitem.h#L306 QgsLayoutItemMapItemStack.addItem: src/core/layout/qgslayoutitemmapitem.h#L306
QgsLayoutItemMapItemStack.containsAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L282 QgsLayoutItemMapItemStack.containsAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L282
QgsLayoutItemMapItemStack.drawItems: src/core/layout/qgslayoutitemmapitem.h#L276 QgsLayoutItemMapItemStack.drawItems: src/core/layout/qgslayoutitemmapitem.h#L276

View File

@ -51,6 +51,7 @@
%Include auto_generated/qgsexpressioncontextscopegenerator.sip %Include auto_generated/qgsexpressioncontextscopegenerator.sip
%Include auto_generated/qgsexpressionfieldbuffer.sip %Include auto_generated/qgsexpressionfieldbuffer.sip
%Include auto_generated/qgsfeature.sip %Include auto_generated/qgsfeature.sip
%Include auto_generated/qgsfeatureexpressionfilterprovider.sip
%Include auto_generated/qgsfeaturepickermodel.sip %Include auto_generated/qgsfeaturepickermodel.sip
%Include auto_generated/qgsfeaturepickermodelbase.sip %Include auto_generated/qgsfeaturepickermodelbase.sip
%Include auto_generated/qgsfeaturefiltermodel.sip %Include auto_generated/qgsfeaturefiltermodel.sip
@ -77,6 +78,7 @@
%Include auto_generated/qgsgeometryvalidator.sip %Include auto_generated/qgsgeometryvalidator.sip
%Include auto_generated/qgsgml.sip %Include auto_generated/qgsgml.sip
%Include auto_generated/qgsgmlschema.sip %Include auto_generated/qgsgmlschema.sip
%Include auto_generated/qgsgroupedfeaturefilterprovider.sip
%Include auto_generated/qgsgrouplayer.sip %Include auto_generated/qgsgrouplayer.sip
%Include auto_generated/qgshistogram.sip %Include auto_generated/qgshistogram.sip
%Include auto_generated/qgshstoreutils.sip %Include auto_generated/qgshstoreutils.sip

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsaccesscontrol.h # The following has been generated automatically from src/server/qgsaccesscontrol.h
try: try:
QgsAccessControl.__overridden_methods__ = ['filterFeatures', 'clone', 'layerAttributes'] QgsAccessControl.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsfeaturefilter.h # The following has been generated automatically from src/server/qgsfeaturefilter.h
try: try:
QgsFeatureFilter.__overridden_methods__ = ['filterFeatures', 'layerAttributes', 'clone'] QgsFeatureFilter.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsfeaturefilterprovidergroup.h # The following has been generated automatically from src/server/qgsfeaturefilterprovidergroup.h
try: try:
QgsFeatureFilterProviderGroup.__overridden_methods__ = ['filterFeatures', 'layerAttributes', 'clone'] QgsFeatureFilterProviderGroup.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -35,6 +35,15 @@ Constructor
~QgsAccessControl(); ~QgsAccessControl();
virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsAccessControl *clone() const /Factory/;
void resolveFilterFeatures( const QList<QgsMapLayer *> &layers ); void resolveFilterFeatures( const QList<QgsMapLayer *> &layers );
%Docstring %Docstring
Resolve features' filter of layers The method fetch filter's expressions Resolve features' filter of layers The method fetch filter's expressions
@ -49,23 +58,6 @@ for efficiency; between each requests, the cache must be cleared using
void unresolveFilterFeatures(); void unresolveFilterFeatures();
%Docstring %Docstring
Clear expression's cache computed from `resolveFilterFeatures` Clear expression's cache computed from `resolveFilterFeatures`
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End %End
QString extraSubsetString( const QgsVectorLayer *layer ) const; QString extraSubsetString( const QgsVectorLayer *layer ) const;
@ -111,17 +103,6 @@ Returns the layer delete right
:param layer: the layer to control :param layer: the layer to control
:return: ``True`` if we can do a delete :return: ``True`` if we can do a delete
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
%Docstring
Returns the authorized layer attributes
:param layer: the layer to control
:param attributes: the list of attribute
:return: the list of visible attributes
%End %End
bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const; bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const;

View File

@ -16,6 +16,10 @@ class QgsFeatureFilter : QgsFeatureFilterProvider
%Docstring(signature="appended") %Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a A feature filter provider allowing to set filter expressions on a
per-layer basis. per-layer basis.
.. deprecated:: 3.4
Use :py:class:`QgsFeatureExpressionFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -27,25 +31,14 @@ per-layer basis.
Constructor Constructor
%End %End
virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/; virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ); void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression );
%Docstring %Docstring

View File

@ -14,6 +14,10 @@ class QgsFeatureFilterProviderGroup : QgsFeatureFilterProvider
{ {
%Docstring(signature="appended") %Docstring(signature="appended")
A filter filter provider grouping several filter providers. A filter filter provider grouping several filter providers.
.. deprecated:: 3.4
Use :py:class:`QgsGroupedFeatureFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -25,25 +29,14 @@ A filter filter provider grouping several filter providers.
Constructor Constructor
%End %End
virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProviderGroup *clone() const /Factory/;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider ); QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring %Docstring

View File

@ -1,16 +1,17 @@
QgsAccessControl.allowToEdit: src/server/qgsaccesscontrol.h#L152 QgsAccessControl.allowToEdit: src/server/qgsaccesscontrol.h#L137
QgsAccessControl.clone: src/server/qgsaccesscontrol.h#L101 QgsAccessControl.clone: src/server/qgsaccesscontrol.h#L78
QgsAccessControl.extraSubsetString: src/server/qgsaccesscontrol.h#L108 QgsAccessControl.extraSubsetString: src/server/qgsaccesscontrol.h#L101
QgsAccessControl.fillCacheKey: src/server/qgsaccesscontrol.h#L158 QgsAccessControl.fillCacheKey: src/server/qgsaccesscontrol.h#L143
QgsAccessControl.filterFeatures: src/server/qgsaccesscontrol.h#L95 QgsAccessControl.filterFeatures: src/server/qgsaccesscontrol.h#L76
QgsAccessControl.layerAttributes: src/server/qgsaccesscontrol.h#L144 QgsAccessControl.isFilterThreadSafe: src/server/qgsaccesscontrol.h#L74
QgsAccessControl.layerDeletePermission: src/server/qgsaccesscontrol.h#L136 QgsAccessControl.layerAttributes: src/server/qgsaccesscontrol.h#L77
QgsAccessControl.layerInsertPermission: src/server/qgsaccesscontrol.h#L122 QgsAccessControl.layerDeletePermission: src/server/qgsaccesscontrol.h#L129
QgsAccessControl.layerReadPermission: src/server/qgsaccesscontrol.h#L115 QgsAccessControl.layerInsertPermission: src/server/qgsaccesscontrol.h#L115
QgsAccessControl.layerUpdatePermission: src/server/qgsaccesscontrol.h#L129 QgsAccessControl.layerReadPermission: src/server/qgsaccesscontrol.h#L108
QgsAccessControl.registerAccessControl: src/server/qgsaccesscontrol.h#L165 QgsAccessControl.layerUpdatePermission: src/server/qgsaccesscontrol.h#L122
QgsAccessControl.resolveFilterFeatures: src/server/qgsaccesscontrol.h#L83 QgsAccessControl.registerAccessControl: src/server/qgsaccesscontrol.h#L150
QgsAccessControl.unresolveFilterFeatures: src/server/qgsaccesscontrol.h#L88 QgsAccessControl.resolveFilterFeatures: src/server/qgsaccesscontrol.h#L89
QgsAccessControl.unresolveFilterFeatures: src/server/qgsaccesscontrol.h#L94
QgsAccessControl: src/server/qgsaccesscontrol.h#L35 QgsAccessControl: src/server/qgsaccesscontrol.h#L35
QgsAccessControlFilter.allowToEdit: src/server/qgsaccesscontrolfilter.h#L109 QgsAccessControlFilter.allowToEdit: src/server/qgsaccesscontrolfilter.h#L109
QgsAccessControlFilter.authorizedLayerAttributes: src/server/qgsaccesscontrolfilter.h#L101 QgsAccessControlFilter.authorizedLayerAttributes: src/server/qgsaccesscontrolfilter.h#L101
@ -54,15 +55,17 @@ QgsFcgiServerRequest.data: src/server/qgsfcgiserverrequest.h#L36
QgsFcgiServerRequest.hasError: src/server/qgsfcgiserverrequest.h#L41 QgsFcgiServerRequest.hasError: src/server/qgsfcgiserverrequest.h#L41
QgsFcgiServerRequest.header: src/server/qgsfcgiserverrequest.h#L49 QgsFcgiServerRequest.header: src/server/qgsfcgiserverrequest.h#L49
QgsFcgiServerRequest: src/server/qgsfcgiserverrequest.h#L31 QgsFcgiServerRequest: src/server/qgsfcgiserverrequest.h#L31
QgsFeatureFilter.clone: src/server/qgsfeaturefilter.h#L52 QgsFeatureFilter.clone: src/server/qgsfeaturefilter.h#L44
QgsFeatureFilter.filterFeatures: src/server/qgsfeaturefilter.h#L44 QgsFeatureFilter.filterFeatures: src/server/qgsfeaturefilter.h#L42
QgsFeatureFilter.layerAttributes: src/server/qgsfeaturefilter.h#L46 QgsFeatureFilter.isFilterThreadSafe: src/server/qgsfeaturefilter.h#L40
QgsFeatureFilter.setFilter: src/server/qgsfeaturefilter.h#L59 QgsFeatureFilter.layerAttributes: src/server/qgsfeaturefilter.h#L43
QgsFeatureFilter: src/server/qgsfeaturefilter.h#L33 QgsFeatureFilter.setFilter: src/server/qgsfeaturefilter.h#L51
QgsFeatureFilterProviderGroup.clone: src/server/qgsfeaturefilterprovidergroup.h#L50 QgsFeatureFilter: src/server/qgsfeaturefilter.h#L34
QgsFeatureFilterProviderGroup.filterFeatures: src/server/qgsfeaturefilterprovidergroup.h#L42 QgsFeatureFilterProviderGroup.clone: src/server/qgsfeaturefilterprovidergroup.h#L42
QgsFeatureFilterProviderGroup.layerAttributes: src/server/qgsfeaturefilterprovidergroup.h#L44 QgsFeatureFilterProviderGroup.filterFeatures: src/server/qgsfeaturefilterprovidergroup.h#L40
QgsFeatureFilterProviderGroup: src/server/qgsfeaturefilterprovidergroup.h#L31 QgsFeatureFilterProviderGroup.isFilterThreadSafe: src/server/qgsfeaturefilterprovidergroup.h#L38
QgsFeatureFilterProviderGroup.layerAttributes: src/server/qgsfeaturefilterprovidergroup.h#L41
QgsFeatureFilterProviderGroup: src/server/qgsfeaturefilterprovidergroup.h#L32
QgsOgcServiceException.code: src/server/qgsserverexception.h#L94 QgsOgcServiceException.code: src/server/qgsserverexception.h#L94
QgsOgcServiceException.formatResponse: src/server/qgsserverexception.h#L102 QgsOgcServiceException.formatResponse: src/server/qgsserverexception.h#L102
QgsOgcServiceException.locator: src/server/qgsserverexception.h#L97 QgsOgcServiceException.locator: src/server/qgsserverexception.h#L97

View File

@ -10055,6 +10055,9 @@ QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks = Qgis.LayoutRenderFlag.AlwaysUs
QgsLayoutRenderContext.Flag.FlagAlwaysUseGlobalMasks = Qgis.LayoutRenderFlag.AlwaysUseGlobalMasks QgsLayoutRenderContext.Flag.FlagAlwaysUseGlobalMasks = Qgis.LayoutRenderFlag.AlwaysUseGlobalMasks
QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.is_monkey_patched = True QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.is_monkey_patched = True
QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.__doc__ = "When applying clipping paths for selective masking, always use global (\"entire map\") paths, instead of calculating local clipping paths per rendered feature. This results in considerably more complex layout exports in all current Qt versions. This flag only applies to vector layout exports. \n.. versionadded:: 3.38" QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks.__doc__ = "When applying clipping paths for selective masking, always use global (\"entire map\") paths, instead of calculating local clipping paths per rendered feature. This results in considerably more complex layout exports in all current Qt versions. This flag only applies to vector layout exports. \n.. versionadded:: 3.38"
QgsLayoutRenderContext.LimitCoverageLayerRenderToCurrentFeature = Qgis.LayoutRenderFlag.LimitCoverageLayerRenderToCurrentFeature
QgsLayoutRenderContext.LimitCoverageLayerRenderToCurrentFeature.is_monkey_patched = True
QgsLayoutRenderContext.LimitCoverageLayerRenderToCurrentFeature.__doc__ = "Limit coverage layer rendering to the current atlas feature. \n.. versionadded:: 4.0"
Qgis.LayoutRenderFlag.__doc__ = """Flags for controlling how a layout is rendered. Qgis.LayoutRenderFlag.__doc__ = """Flags for controlling how a layout is rendered.
.. note:: .. note::
@ -10120,6 +10123,10 @@ Qgis.LayoutRenderFlag.__doc__ = """Flags for controlling how a layout is rendere
Available as ``QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks`` in older QGIS releases. Available as ``QgsLayoutRenderContext.FlagAlwaysUseGlobalMasks`` in older QGIS releases.
* ``LimitCoverageLayerRenderToCurrentFeature``: Limit coverage layer rendering to the current atlas feature.
.. versionadded:: 4.0
""" """
# -- # --

View File

@ -0,0 +1,5 @@
# The following has been generated automatically from src/core/qgsfeatureexpressionfilterprovider.h
try:
QgsFeatureExpressionFilterProvider.__overridden_methods__ = ['filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError):
pass

View File

@ -1,5 +1,6 @@
# The following has been generated automatically from src/core/qgsfeaturefilterprovider.h # The following has been generated automatically from src/core/qgsfeaturefilterprovider.h
try: try:
QgsFeatureFilterProvider.__abstract_methods__ = ['filterFeatures', 'layerAttributes', 'clone'] QgsFeatureFilterProvider.__virtual_methods__ = ['isFilterThreadSafe', 'filterFeatures']
QgsFeatureFilterProvider.__abstract_methods__ = ['layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -0,0 +1,5 @@
# The following has been generated automatically from src/core/qgsgroupedfeaturefilterprovider.h
try:
QgsGroupedFeatureFilterProvider.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError):
pass

View File

@ -73,6 +73,26 @@ Sets whether the coverage layer should be hidden in map items in the
layouts. layouts.
.. seealso:: :py:func:`hideCoverage` .. seealso:: :py:func:`hideCoverage`
%End
bool limitCoverageLayerRenderToCurrentFeature() const;
%Docstring
Returns ``True`` if the atlas is set to limit rendering on the coverage
layer to the current feature.
.. seealso:: :py:func:`setHideCoverage`
.. versionadded:: 4.0
%End
void setLimitCoverageLayerRenderToCurrentFeature( bool limit );
%Docstring
Sets whether the rendering of the coverage layer should be limited to
the current feature.
.. seealso:: :py:func:`hideCoverage`
.. versionadded:: 4.0
%End %End
QString filenameExpression() const; QString filenameExpression() const;

View File

@ -2912,6 +2912,7 @@ The development version
LosslessImageRendering, LosslessImageRendering,
SynchronousLegendGraphics, SynchronousLegendGraphics,
AlwaysUseGlobalMasks, AlwaysUseGlobalMasks,
LimitCoverageLayerRenderToCurrentFeature,
}; };
typedef QFlags<Qgis::LayoutRenderFlag> LayoutRenderFlags; typedef QFlags<Qgis::LayoutRenderFlag> LayoutRenderFlags;

View File

@ -0,0 +1,57 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeatureexpressionfilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsFeatureExpressionFilterProvider : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a
per-layer basis.
.. versionadded:: 4.0
%End
%TypeHeaderCode
#include "qgsfeatureexpressionfilterprovider.h"
%End
public:
QgsFeatureExpressionFilterProvider();
%Docstring
Constructor
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureExpressionFilterProvider *clone() const /Factory/;
void setFilter( const QString &layerId, const QgsExpression &expression );
%Docstring
Set a filter for the given layer.
:param layerId: the layer to filter
:param expression: the filter expression
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeatureexpressionfilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -0,0 +1,93 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilter.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsFeatureFilter : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a
per-layer basis.
%End
%TypeHeaderCode
#include "qgsfeaturefilter.h"
%End
public:
QgsFeatureFilter();
%Docstring
Constructor
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ) /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Set a filter for the given layer.
:param layer: the layer to filter
:param expression: the filter expression
.. deprecated:: 4.0
Use the layer ID variant.
%End
void setFilter( const QString &layerId, const QgsExpression &expression );
%Docstring
Set a filter for the given layer.
:param layerId: the layer to filter
:param expression: the filter expression
.. versionadded:: 4.0
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilter.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -30,7 +30,17 @@ also available.
public: public:
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const = 0; virtual bool isFilterThreadSafe() const /Deprecated="Since 4.0. "/;
%Docstring
Returns ``True`` if the filterFeature function is thread safe, which
will lead to reliance on layer ID instead of the raw layer pointer.
.. versionadded:: 4.0
.. deprecated:: 4.0
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring %Docstring
Add additional filters to the feature request to further restrict the Add additional filters to the feature request to further restrict the
features returned by the request. Derived classes must implement this features returned by the request. Derived classes must implement this
@ -38,6 +48,22 @@ method.
:param layer: the layer to filter :param layer: the layer to filter
:param featureRequest: the feature request to update :param featureRequest: the feature request to update
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &featureRequest ) const;
%Docstring
Add additional filters to the feature request to further restrict the
features returned by the request. Derived classes must implement this
method.
:param layerId: the layer ID to filter
:param featureRequest: the feature request to update
.. versionadded:: 4.0
%End %End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0;

View File

@ -0,0 +1,81 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilterprovidergroup.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsFeatureFilterProviderGroup : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A filter filter provider grouping several filter providers.
%End
%TypeHeaderCode
#include "qgsfeaturefilterprovidergroup.h"
%End
public:
QgsFeatureFilterProviderGroup();
%Docstring
Constructor
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
.. versionadded:: 4.0
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring
Add another filter provider to the group
:param provider: The provider to add
:return: itself
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsfeaturefilterprovidergroup.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -0,0 +1,60 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsgroupedfeaturefilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/
class QgsGroupedFeatureFilterProvider : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A filter filter provider grouping several filter providers.
.. versionadded:: 4.0
%End
%TypeHeaderCode
#include "qgsgroupedfeaturefilterprovider.h"
%End
public:
QgsGroupedFeatureFilterProvider();
%Docstring
Constructor
%End
virtual bool isFilterThreadSafe() const /Deprecated/;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsGroupedFeatureFilterProvider *clone() const /Factory/;
QgsGroupedFeatureFilterProvider &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring
Add another filter provider to the group
:param provider: The provider to add
:return: itself
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsgroupedfeaturefilterprovider.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.py again *
************************************************************************/

View File

@ -1,14 +1,14 @@
Qgis.defaultProjectScales: src/core/qgis.h#L6067 Qgis.defaultProjectScales: src/core/qgis.h#L6068
Qgis.devVersion: src/core/qgis.h#L89 Qgis.devVersion: src/core/qgis.h#L89
Qgis.geoNone: src/core/qgis.h#L6112 Qgis.geoNone: src/core/qgis.h#L6113
Qgis.geoProj4: src/core/qgis.h#L6142 Qgis.geoProj4: src/core/qgis.h#L6143
Qgis.geoWkt: src/core/qgis.h#L6133 Qgis.geoWkt: src/core/qgis.h#L6134
Qgis.geographicCrsAuthId: src/core/qgis.h#L6122 Qgis.geographicCrsAuthId: src/core/qgis.h#L6123
Qgis.geosVersion: src/core/qgis.h#L6102 Qgis.geosVersion: src/core/qgis.h#L6103
Qgis.geosVersionInt: src/core/qgis.h#L6074 Qgis.geosVersionInt: src/core/qgis.h#L6075
Qgis.geosVersionMajor: src/core/qgis.h#L6081 Qgis.geosVersionMajor: src/core/qgis.h#L6082
Qgis.geosVersionMinor: src/core/qgis.h#L6088 Qgis.geosVersionMinor: src/core/qgis.h#L6089
Qgis.geosVersionPatch: src/core/qgis.h#L6095 Qgis.geosVersionPatch: src/core/qgis.h#L6096
Qgis.releaseName: src/core/qgis.h#L79 Qgis.releaseName: src/core/qgis.h#L79
Qgis.version: src/core/qgis.h#L65 Qgis.version: src/core/qgis.h#L65
Qgis.versionInt: src/core/qgis.h#L72 Qgis.versionInt: src/core/qgis.h#L72
@ -4268,6 +4268,12 @@ QgsFeature.setGeometry: src/core/qgsfeature.h#L873
QgsFeature.setId: src/core/qgsfeature.h#L530 QgsFeature.setId: src/core/qgsfeature.h#L530
QgsFeature.setValid: src/core/qgsfeature.h#L813 QgsFeature.setValid: src/core/qgsfeature.h#L813
QgsFeature: src/core/qgsfeature.h#L57 QgsFeature: src/core/qgsfeature.h#L57
QgsFeatureExpressionFilterProvider.clone: src/core/qgsfeatureexpressionfilterprovider.h#L43
QgsFeatureExpressionFilterProvider.filterFeatures: src/core/qgsfeatureexpressionfilterprovider.h#L40
QgsFeatureExpressionFilterProvider.filterFeatures: src/core/qgsfeatureexpressionfilterprovider.h#L41
QgsFeatureExpressionFilterProvider.layerAttributes: src/core/qgsfeatureexpressionfilterprovider.h#L42
QgsFeatureExpressionFilterProvider.setFilter: src/core/qgsfeatureexpressionfilterprovider.h#L50
QgsFeatureExpressionFilterProvider: src/core/qgsfeatureexpressionfilterprovider.h#L34
QgsFeatureFilterModel.QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L48 QgsFeatureFilterModel.QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L48
QgsFeatureFilterModel.extraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L85 QgsFeatureFilterModel.extraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L85
QgsFeatureFilterModel.extraIdentifierValuesChanged: src/core/qgsfeaturefiltermodel.h#L107 QgsFeatureFilterModel.extraIdentifierValuesChanged: src/core/qgsfeaturefiltermodel.h#L107
@ -4279,9 +4285,11 @@ QgsFeatureFilterModel.setExtraIdentifierValueToNull: src/core/qgsfeaturefiltermo
QgsFeatureFilterModel.setExtraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L92 QgsFeatureFilterModel.setExtraIdentifierValues: src/core/qgsfeaturefiltermodel.h#L92
QgsFeatureFilterModel.setIdentifierFields: src/core/qgsfeaturefiltermodel.h#L71 QgsFeatureFilterModel.setIdentifierFields: src/core/qgsfeaturefiltermodel.h#L71
QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L27 QgsFeatureFilterModel: src/core/qgsfeaturefiltermodel.h#L27
QgsFeatureFilterProvider.clone: src/core/qgsfeaturefilterprovider.h#L71 QgsFeatureFilterProvider.clone: src/core/qgsfeaturefilterprovider.h#L97
QgsFeatureFilterProvider.filterFeatures: src/core/qgsfeaturefilterprovider.h#L59 QgsFeatureFilterProvider.filterFeatures: src/core/qgsfeaturefilterprovider.h#L72
QgsFeatureFilterProvider.layerAttributes: src/core/qgsfeaturefilterprovider.h#L65 QgsFeatureFilterProvider.filterFeatures: src/core/qgsfeaturefilterprovider.h#L85
QgsFeatureFilterProvider.isFilterThreadSafe: src/core/qgsfeaturefilterprovider.h#L59
QgsFeatureFilterProvider.layerAttributes: src/core/qgsfeaturefilterprovider.h#L91
QgsFeatureFilterProvider: src/core/qgsfeaturefilterprovider.h#L41 QgsFeatureFilterProvider: src/core/qgsfeaturefilterprovider.h#L41
QgsFeatureIterator.__iter__: src/core/qgsfeatureiterator.h#L294 QgsFeatureIterator.__iter__: src/core/qgsfeatureiterator.h#L294
QgsFeatureIterator.__next__: src/core/qgsfeatureiterator.h#L299 QgsFeatureIterator.__next__: src/core/qgsfeatureiterator.h#L299
@ -5762,6 +5770,12 @@ QgsGroupLayer.setTransformContext: src/core/qgsgrouplayer.h#L87
QgsGroupLayer.writeSymbology: src/core/qgsgrouplayer.h#L90 QgsGroupLayer.writeSymbology: src/core/qgsgrouplayer.h#L90
QgsGroupLayer.writeXml: src/core/qgsgrouplayer.h#L89 QgsGroupLayer.writeXml: src/core/qgsgrouplayer.h#L89
QgsGroupLayer: src/core/qgsgrouplayer.h#L41 QgsGroupLayer: src/core/qgsgrouplayer.h#L41
QgsGroupedFeatureFilterProvider.clone: src/core/qgsgroupedfeaturefilterprovider.h#L43
QgsGroupedFeatureFilterProvider.filterFeatures: src/core/qgsgroupedfeaturefilterprovider.h#L40
QgsGroupedFeatureFilterProvider.filterFeatures: src/core/qgsgroupedfeaturefilterprovider.h#L41
QgsGroupedFeatureFilterProvider.isFilterThreadSafe: src/core/qgsgroupedfeaturefilterprovider.h#L38
QgsGroupedFeatureFilterProvider.layerAttributes: src/core/qgsgroupedfeaturefilterprovider.h#L42
QgsGroupedFeatureFilterProvider: src/core/qgsgroupedfeaturefilterprovider.h#L32
QgsHashedLineSymbolLayer.clone: src/core/symbology/qgslinesymbollayer.h#L1040 QgsHashedLineSymbolLayer.clone: src/core/symbology/qgslinesymbollayer.h#L1040
QgsHashedLineSymbolLayer.color: src/core/symbology/qgslinesymbollayer.h#L1042 QgsHashedLineSymbolLayer.color: src/core/symbology/qgslinesymbollayer.h#L1042
QgsHashedLineSymbolLayer.create: src/core/symbology/qgslinesymbollayer.h#L1034 QgsHashedLineSymbolLayer.create: src/core/symbology/qgslinesymbollayer.h#L1034
@ -6780,53 +6794,55 @@ QgsLayoutAligner.alignItems: src/core/layout/qgslayoutaligner.h#L79
QgsLayoutAligner.distributeItems: src/core/layout/qgslayoutaligner.h#L86 QgsLayoutAligner.distributeItems: src/core/layout/qgslayoutaligner.h#L86
QgsLayoutAligner.resizeItems: src/core/layout/qgslayoutaligner.h#L93 QgsLayoutAligner.resizeItems: src/core/layout/qgslayoutaligner.h#L93
QgsLayoutAligner: src/core/layout/qgslayoutaligner.h#L35 QgsLayoutAligner: src/core/layout/qgslayoutaligner.h#L35
QgsLayoutAtlas.beginRender: src/core/layout/qgslayoutatlas.h#L245 QgsLayoutAtlas.beginRender: src/core/layout/qgslayoutatlas.h#L261
QgsLayoutAtlas.changed: src/core/layout/qgslayoutatlas.h#L314 QgsLayoutAtlas.changed: src/core/layout/qgslayoutatlas.h#L330
QgsLayoutAtlas.count: src/core/layout/qgslayoutatlas.h#L247 QgsLayoutAtlas.count: src/core/layout/qgslayoutatlas.h#L263
QgsLayoutAtlas.coverageLayer: src/core/layout/qgslayoutatlas.h#L115 QgsLayoutAtlas.coverageLayer: src/core/layout/qgslayoutatlas.h#L131
QgsLayoutAtlas.coverageLayerChanged: src/core/layout/qgslayoutatlas.h#L320 QgsLayoutAtlas.coverageLayerChanged: src/core/layout/qgslayoutatlas.h#L336
QgsLayoutAtlas.createExpressionContext: src/core/layout/qgslayoutatlas.h#L255 QgsLayoutAtlas.createExpressionContext: src/core/layout/qgslayoutatlas.h#L271
QgsLayoutAtlas.currentFeatureNumber: src/core/layout/qgslayoutatlas.h#L253 QgsLayoutAtlas.currentFeatureNumber: src/core/layout/qgslayoutatlas.h#L269
QgsLayoutAtlas.currentFilename: src/core/layout/qgslayoutatlas.h#L109 QgsLayoutAtlas.currentFilename: src/core/layout/qgslayoutatlas.h#L125
QgsLayoutAtlas.enabled: src/core/layout/qgslayoutatlas.h#L66 QgsLayoutAtlas.enabled: src/core/layout/qgslayoutatlas.h#L66
QgsLayoutAtlas.endRender: src/core/layout/qgslayoutatlas.h#L246 QgsLayoutAtlas.endRender: src/core/layout/qgslayoutatlas.h#L262
QgsLayoutAtlas.featureChanged: src/core/layout/qgslayoutatlas.h#L331 QgsLayoutAtlas.featureChanged: src/core/layout/qgslayoutatlas.h#L347
QgsLayoutAtlas.filePath: src/core/layout/qgslayoutatlas.h#L248 QgsLayoutAtlas.filePath: src/core/layout/qgslayoutatlas.h#L264
QgsLayoutAtlas.filenameExpression: src/core/layout/qgslayoutatlas.h#L92 QgsLayoutAtlas.filenameExpression: src/core/layout/qgslayoutatlas.h#L108
QgsLayoutAtlas.filterExpression: src/core/layout/qgslayoutatlas.h#L224 QgsLayoutAtlas.filterExpression: src/core/layout/qgslayoutatlas.h#L240
QgsLayoutAtlas.filterFeatures: src/core/layout/qgslayoutatlas.h#L207 QgsLayoutAtlas.filterFeatures: src/core/layout/qgslayoutatlas.h#L223
QgsLayoutAtlas.first: src/core/layout/qgslayoutatlas.h#L286 QgsLayoutAtlas.first: src/core/layout/qgslayoutatlas.h#L302
QgsLayoutAtlas.hideCoverage: src/core/layout/qgslayoutatlas.h#L78 QgsLayoutAtlas.hideCoverage: src/core/layout/qgslayoutatlas.h#L78
QgsLayoutAtlas.last: src/core/layout/qgslayoutatlas.h#L277 QgsLayoutAtlas.last: src/core/layout/qgslayoutatlas.h#L293
QgsLayoutAtlas.layout: src/core/layout/qgslayoutatlas.h#L51 QgsLayoutAtlas.layout: src/core/layout/qgslayoutatlas.h#L51
QgsLayoutAtlas.messagePushed: src/core/layout/qgslayoutatlas.h#L323 QgsLayoutAtlas.limitCoverageLayerRenderToCurrentFeature: src/core/layout/qgslayoutatlas.h#L92
QgsLayoutAtlas.nameForPage: src/core/layout/qgslayoutatlas.h#L140 QgsLayoutAtlas.messagePushed: src/core/layout/qgslayoutatlas.h#L339
QgsLayoutAtlas.next: src/core/layout/qgslayoutatlas.h#L259 QgsLayoutAtlas.nameForPage: src/core/layout/qgslayoutatlas.h#L156
QgsLayoutAtlas.numberFeaturesChanged: src/core/layout/qgslayoutatlas.h#L328 QgsLayoutAtlas.next: src/core/layout/qgslayoutatlas.h#L275
QgsLayoutAtlas.pageNameExpression: src/core/layout/qgslayoutatlas.h#L128 QgsLayoutAtlas.numberFeaturesChanged: src/core/layout/qgslayoutatlas.h#L344
QgsLayoutAtlas.previous: src/core/layout/qgslayoutatlas.h#L268 QgsLayoutAtlas.pageNameExpression: src/core/layout/qgslayoutatlas.h#L144
QgsLayoutAtlas.previous: src/core/layout/qgslayoutatlas.h#L284
QgsLayoutAtlas.readXml: src/core/layout/qgslayoutatlas.h#L60 QgsLayoutAtlas.readXml: src/core/layout/qgslayoutatlas.h#L60
QgsLayoutAtlas.refreshCurrentFeature: src/core/layout/qgslayoutatlas.h#L309 QgsLayoutAtlas.refreshCurrentFeature: src/core/layout/qgslayoutatlas.h#L325
QgsLayoutAtlas.renderBegun: src/core/layout/qgslayoutatlas.h#L334 QgsLayoutAtlas.renderBegun: src/core/layout/qgslayoutatlas.h#L350
QgsLayoutAtlas.renderEnded: src/core/layout/qgslayoutatlas.h#L337 QgsLayoutAtlas.renderEnded: src/core/layout/qgslayoutatlas.h#L353
QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L295 QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L311
QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L304 QgsLayoutAtlas.seekTo: src/core/layout/qgslayoutatlas.h#L320
QgsLayoutAtlas.setCoverageLayer: src/core/layout/qgslayoutatlas.h#L121 QgsLayoutAtlas.setCoverageLayer: src/core/layout/qgslayoutatlas.h#L137
QgsLayoutAtlas.setEnabled: src/core/layout/qgslayoutatlas.h#L72 QgsLayoutAtlas.setEnabled: src/core/layout/qgslayoutatlas.h#L72
QgsLayoutAtlas.setFilenameExpression: src/core/layout/qgslayoutatlas.h#L102 QgsLayoutAtlas.setFilenameExpression: src/core/layout/qgslayoutatlas.h#L118
QgsLayoutAtlas.setFilterExpression: src/core/layout/qgslayoutatlas.h#L237 QgsLayoutAtlas.setFilterExpression: src/core/layout/qgslayoutatlas.h#L253
QgsLayoutAtlas.setFilterFeatures: src/core/layout/qgslayoutatlas.h#L214 QgsLayoutAtlas.setFilterFeatures: src/core/layout/qgslayoutatlas.h#L230
QgsLayoutAtlas.setHideCoverage: src/core/layout/qgslayoutatlas.h#L84 QgsLayoutAtlas.setHideCoverage: src/core/layout/qgslayoutatlas.h#L84
QgsLayoutAtlas.setPageNameExpression: src/core/layout/qgslayoutatlas.h#L134 QgsLayoutAtlas.setLimitCoverageLayerRenderToCurrentFeature: src/core/layout/qgslayoutatlas.h#L100
QgsLayoutAtlas.setSortAscending: src/core/layout/qgslayoutatlas.h#L178 QgsLayoutAtlas.setPageNameExpression: src/core/layout/qgslayoutatlas.h#L150
QgsLayoutAtlas.setSortExpression: src/core/layout/qgslayoutatlas.h#L200 QgsLayoutAtlas.setSortAscending: src/core/layout/qgslayoutatlas.h#L194
QgsLayoutAtlas.setSortFeatures: src/core/layout/qgslayoutatlas.h#L156 QgsLayoutAtlas.setSortExpression: src/core/layout/qgslayoutatlas.h#L216
QgsLayoutAtlas.sortAscending: src/core/layout/qgslayoutatlas.h#L167 QgsLayoutAtlas.setSortFeatures: src/core/layout/qgslayoutatlas.h#L172
QgsLayoutAtlas.sortExpression: src/core/layout/qgslayoutatlas.h#L189 QgsLayoutAtlas.sortAscending: src/core/layout/qgslayoutatlas.h#L183
QgsLayoutAtlas.sortFeatures: src/core/layout/qgslayoutatlas.h#L148 QgsLayoutAtlas.sortExpression: src/core/layout/qgslayoutatlas.h#L205
QgsLayoutAtlas.sortFeatures: src/core/layout/qgslayoutatlas.h#L164
QgsLayoutAtlas.stringType: src/core/layout/qgslayoutatlas.h#L50 QgsLayoutAtlas.stringType: src/core/layout/qgslayoutatlas.h#L50
QgsLayoutAtlas.toggled: src/core/layout/qgslayoutatlas.h#L317 QgsLayoutAtlas.toggled: src/core/layout/qgslayoutatlas.h#L333
QgsLayoutAtlas.updateFeatures: src/core/layout/qgslayoutatlas.h#L243 QgsLayoutAtlas.updateFeatures: src/core/layout/qgslayoutatlas.h#L259
QgsLayoutAtlas.writeXml: src/core/layout/qgslayoutatlas.h#L59 QgsLayoutAtlas.writeXml: src/core/layout/qgslayoutatlas.h#L59
QgsLayoutAtlas: src/core/layout/qgslayoutatlas.h#L40 QgsLayoutAtlas: src/core/layout/qgslayoutatlas.h#L40
QgsLayoutChecker.setSize: src/core/qgsmultirenderchecker.h#L209 QgsLayoutChecker.setSize: src/core/qgsmultirenderchecker.h#L209
@ -7310,119 +7326,119 @@ QgsLayoutItemManualTable.type: src/core/layout/qgslayoutitemmanualtable.h#L46
QgsLayoutItemManualTable.verticalAlignmentForCell: src/core/layout/qgslayoutitemmanualtable.h#L145 QgsLayoutItemManualTable.verticalAlignmentForCell: src/core/layout/qgslayoutitemmanualtable.h#L145
QgsLayoutItemManualTable.writePropertiesToElement: src/core/layout/qgslayoutitemmanualtable.h#L139 QgsLayoutItemManualTable.writePropertiesToElement: src/core/layout/qgslayoutitemmanualtable.h#L139
QgsLayoutItemManualTable: src/core/layout/qgslayoutitemmanualtable.h#L31 QgsLayoutItemManualTable: src/core/layout/qgslayoutitemmanualtable.h#L31
QgsLayoutItemMap.QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L361 QgsLayoutItemMap.QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L362
QgsLayoutItemMap.accept: src/core/layout/qgslayoutitemmap.h#L828 QgsLayoutItemMap.accept: src/core/layout/qgslayoutitemmap.h#L829
QgsLayoutItemMap.addLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L785 QgsLayoutItemMap.addLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L786
QgsLayoutItemMap.addRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L842 QgsLayoutItemMap.addRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L843
QgsLayoutItemMap.assignFreeId: src/core/layout/qgslayoutitemmap.h#L385 QgsLayoutItemMap.assignFreeId: src/core/layout/qgslayoutitemmap.h#L386
QgsLayoutItemMap.atlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L862 QgsLayoutItemMap.atlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L863
QgsLayoutItemMap.atlasDriven: src/core/layout/qgslayoutitemmap.h#L643 QgsLayoutItemMap.atlasDriven: src/core/layout/qgslayoutitemmap.h#L644
QgsLayoutItemMap.atlasMargin: src/core/layout/qgslayoutitemmap.h#L685 QgsLayoutItemMap.atlasMargin: src/core/layout/qgslayoutitemmap.h#L686
QgsLayoutItemMap.atlasScalingMode: src/core/layout/qgslayoutitemmap.h#L662 QgsLayoutItemMap.atlasScalingMode: src/core/layout/qgslayoutitemmap.h#L663
QgsLayoutItemMap.boundingRect: src/core/layout/qgslayoutitemmap.h#L928 QgsLayoutItemMap.boundingRect: src/core/layout/qgslayoutitemmap.h#L929
QgsLayoutItemMap.containsAdvancedEffects: src/core/layout/qgslayoutitemmap.h#L604 QgsLayoutItemMap.containsAdvancedEffects: src/core/layout/qgslayoutitemmap.h#L605
QgsLayoutItemMap.containsWmsLayer: src/core/layout/qgslayoutitemmap.h#L601 QgsLayoutItemMap.containsWmsLayer: src/core/layout/qgslayoutitemmap.h#L602
QgsLayoutItemMap.create: src/core/layout/qgslayoutitemmap.h#L395 QgsLayoutItemMap.create: src/core/layout/qgslayoutitemmap.h#L396
QgsLayoutItemMap.createExpressionContext: src/core/layout/qgslayoutitemmap.h#L748 QgsLayoutItemMap.createExpressionContext: src/core/layout/qgslayoutitemmap.h#L749
QgsLayoutItemMap.crs: src/core/layout/qgslayoutitemmap.h#L471 QgsLayoutItemMap.crs: src/core/layout/qgslayoutitemmap.h#L472
QgsLayoutItemMap.crsChanged: src/core/layout/qgslayoutitemmap.h#L981 QgsLayoutItemMap.crsChanged: src/core/layout/qgslayoutitemmap.h#L982
QgsLayoutItemMap.displayName: src/core/layout/qgslayoutitemmap.h#L388 QgsLayoutItemMap.displayName: src/core/layout/qgslayoutitemmap.h#L389
QgsLayoutItemMap.draw: src/core/layout/qgslayoutitemmap.h#L919 QgsLayoutItemMap.draw: src/core/layout/qgslayoutitemmap.h#L920
QgsLayoutItemMap.drawAnnotations: src/core/layout/qgslayoutitemmap.h#L634 QgsLayoutItemMap.drawAnnotations: src/core/layout/qgslayoutitemmap.h#L635
QgsLayoutItemMap.estimatedFrameBleed: src/core/layout/qgslayoutitemmap.h#L915 QgsLayoutItemMap.estimatedFrameBleed: src/core/layout/qgslayoutitemmap.h#L916
QgsLayoutItemMap.exportLayerBehavior: src/core/layout/qgslayoutitemmap.h#L408 QgsLayoutItemMap.exportLayerBehavior: src/core/layout/qgslayoutitemmap.h#L409
QgsLayoutItemMap.exportLayerDetails: src/core/layout/qgslayoutitemmap.h#L409 QgsLayoutItemMap.exportLayerDetails: src/core/layout/qgslayoutitemmap.h#L410
QgsLayoutItemMap.extent: src/core/layout/qgslayoutitemmap.h#L451 QgsLayoutItemMap.extent: src/core/layout/qgslayoutitemmap.h#L452
QgsLayoutItemMap.extentChanged: src/core/layout/qgslayoutitemmap.h#L948 QgsLayoutItemMap.extentChanged: src/core/layout/qgslayoutitemmap.h#L949
QgsLayoutItemMap.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L766 QgsLayoutItemMap.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L767
QgsLayoutItemMap.followVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L570 QgsLayoutItemMap.followVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L571
QgsLayoutItemMap.followVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L584 QgsLayoutItemMap.followVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L585
QgsLayoutItemMap.framePath: src/core/layout/qgslayoutitemmap.h#L922 QgsLayoutItemMap.framePath: src/core/layout/qgslayoutitemmap.h#L923
QgsLayoutItemMap.grid: src/core/layout/qgslayoutitemmap.h#L707 QgsLayoutItemMap.grid: src/core/layout/qgslayoutitemmap.h#L708
QgsLayoutItemMap.grids: src/core/layout/qgslayoutitemmap.h#L701 QgsLayoutItemMap.grids: src/core/layout/qgslayoutitemmap.h#L702
QgsLayoutItemMap.icon: src/core/layout/qgslayoutitemmap.h#L365 QgsLayoutItemMap.icon: src/core/layout/qgslayoutitemmap.h#L366
QgsLayoutItemMap.invalidateCache: src/core/layout/qgslayoutitemmap.h#L994 QgsLayoutItemMap.invalidateCache: src/core/layout/qgslayoutitemmap.h#L995
QgsLayoutItemMap.isDrawing: src/core/layout/qgslayoutitemmap.h#L925 QgsLayoutItemMap.isDrawing: src/core/layout/qgslayoutitemmap.h#L926
QgsLayoutItemMap.isLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L811 QgsLayoutItemMap.isLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L812
QgsLayoutItemMap.itemClippingSettings: src/core/layout/qgslayoutitemmap.h#L869 QgsLayoutItemMap.itemClippingSettings: src/core/layout/qgslayoutitemmap.h#L870
QgsLayoutItemMap.itemFlags: src/core/layout/qgslayoutitemmap.h#L366 QgsLayoutItemMap.itemFlags: src/core/layout/qgslayoutitemmap.h#L367
QgsLayoutItemMap.keepLayerSet: src/core/layout/qgslayoutitemmap.h#L500 QgsLayoutItemMap.keepLayerSet: src/core/layout/qgslayoutitemmap.h#L501
QgsLayoutItemMap.keepLayerStyles: src/core/layout/qgslayoutitemmap.h#L535 QgsLayoutItemMap.keepLayerStyles: src/core/layout/qgslayoutitemmap.h#L536
QgsLayoutItemMap.labelMargin: src/core/layout/qgslayoutitemmap.h#L734 QgsLayoutItemMap.labelMargin: src/core/layout/qgslayoutitemmap.h#L735
QgsLayoutItemMap.layerStyleOverridesChanged: src/core/layout/qgslayoutitemmap.h#L964 QgsLayoutItemMap.layerStyleOverridesChanged: src/core/layout/qgslayoutitemmap.h#L965
QgsLayoutItemMap.layoutToMapCoordsTransform: src/core/layout/qgslayoutitemmap.h#L855 QgsLayoutItemMap.layoutToMapCoordsTransform: src/core/layout/qgslayoutitemmap.h#L856
QgsLayoutItemMap.mapFlags: src/core/layout/qgslayoutitemmap.h#L373 QgsLayoutItemMap.mapFlags: src/core/layout/qgslayoutitemmap.h#L374
QgsLayoutItemMap.mapRotation: src/core/layout/qgslayoutitemmap.h#L622 QgsLayoutItemMap.mapRotation: src/core/layout/qgslayoutitemmap.h#L623
QgsLayoutItemMap.mapRotationChanged: src/core/layout/qgslayoutitemmap.h#L955 QgsLayoutItemMap.mapRotationChanged: src/core/layout/qgslayoutitemmap.h#L956
QgsLayoutItemMap.mapSettings: src/core/layout/qgslayoutitemmap.h#L764 QgsLayoutItemMap.mapSettings: src/core/layout/qgslayoutitemmap.h#L765
QgsLayoutItemMap.mapToItemCoords: src/core/layout/qgslayoutitemmap.h#L934 QgsLayoutItemMap.mapToItemCoords: src/core/layout/qgslayoutitemmap.h#L935
QgsLayoutItemMap.mapUnitsToLayoutUnits: src/core/layout/qgslayoutitemmap.h#L755 QgsLayoutItemMap.mapUnitsToLayoutUnits: src/core/layout/qgslayoutitemmap.h#L756
QgsLayoutItemMap.moveContent: src/core/layout/qgslayoutitemmap.h#L594 QgsLayoutItemMap.moveContent: src/core/layout/qgslayoutitemmap.h#L595
QgsLayoutItemMap.nextExportPart: src/core/layout/qgslayoutitemmap.h#L407 QgsLayoutItemMap.nextExportPart: src/core/layout/qgslayoutitemmap.h#L408
QgsLayoutItemMap.numberExportLayers: src/core/layout/qgslayoutitemmap.h#L403 QgsLayoutItemMap.numberExportLayers: src/core/layout/qgslayoutitemmap.h#L404
QgsLayoutItemMap.overview: src/core/layout/qgslayoutitemmap.h#L722 QgsLayoutItemMap.overview: src/core/layout/qgslayoutitemmap.h#L723
QgsLayoutItemMap.overviews: src/core/layout/qgslayoutitemmap.h#L715 QgsLayoutItemMap.overviews: src/core/layout/qgslayoutitemmap.h#L716
QgsLayoutItemMap.paint: src/core/layout/qgslayoutitemmap.h#L398 QgsLayoutItemMap.paint: src/core/layout/qgslayoutitemmap.h#L399
QgsLayoutItemMap.preparedForAtlas: src/core/layout/qgslayoutitemmap.h#L958 QgsLayoutItemMap.preparedForAtlas: src/core/layout/qgslayoutitemmap.h#L959
QgsLayoutItemMap.presetCrs: src/core/layout/qgslayoutitemmap.h#L481 QgsLayoutItemMap.presetCrs: src/core/layout/qgslayoutitemmap.h#L482
QgsLayoutItemMap.previewLabelingResults: src/core/layout/qgslayoutitemmap.h#L826 QgsLayoutItemMap.previewLabelingResults: src/core/layout/qgslayoutitemmap.h#L827
QgsLayoutItemMap.previewRefreshed: src/core/layout/qgslayoutitemmap.h#L988 QgsLayoutItemMap.previewRefreshed: src/core/layout/qgslayoutitemmap.h#L989
QgsLayoutItemMap.readPropertiesFromElement: src/core/layout/qgslayoutitemmap.h#L921 QgsLayoutItemMap.readPropertiesFromElement: src/core/layout/qgslayoutitemmap.h#L922
QgsLayoutItemMap.refresh: src/core/layout/qgslayoutitemmap.h#L992 QgsLayoutItemMap.refresh: src/core/layout/qgslayoutitemmap.h#L993
QgsLayoutItemMap.refreshDataDefinedProperty: src/core/layout/qgslayoutitemmap.h#L999 QgsLayoutItemMap.refreshDataDefinedProperty: src/core/layout/qgslayoutitemmap.h#L1000
QgsLayoutItemMap.removeLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L798 QgsLayoutItemMap.removeLabelBlockingItem: src/core/layout/qgslayoutitemmap.h#L799
QgsLayoutItemMap.removeRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L850 QgsLayoutItemMap.removeRenderedFeatureHandler: src/core/layout/qgslayoutitemmap.h#L851
QgsLayoutItemMap.renderingErrors: src/core/layout/qgslayoutitemmap.h#L817 QgsLayoutItemMap.renderingErrors: src/core/layout/qgslayoutitemmap.h#L818
QgsLayoutItemMap.requestedExtent: src/core/layout/qgslayoutitemmap.h#L939 QgsLayoutItemMap.requestedExtent: src/core/layout/qgslayoutitemmap.h#L940
QgsLayoutItemMap.requiresRasterization: src/core/layout/qgslayoutitemmap.h#L603 QgsLayoutItemMap.requiresRasterization: src/core/layout/qgslayoutitemmap.h#L604
QgsLayoutItemMap.scale: src/core/layout/qgslayoutitemmap.h#L417 QgsLayoutItemMap.scale: src/core/layout/qgslayoutitemmap.h#L418
QgsLayoutItemMap.setAtlasDriven: src/core/layout/qgslayoutitemmap.h#L651 QgsLayoutItemMap.setAtlasDriven: src/core/layout/qgslayoutitemmap.h#L652
QgsLayoutItemMap.setAtlasMargin: src/core/layout/qgslayoutitemmap.h#L694 QgsLayoutItemMap.setAtlasMargin: src/core/layout/qgslayoutitemmap.h#L695
QgsLayoutItemMap.setAtlasScalingMode: src/core/layout/qgslayoutitemmap.h#L673 QgsLayoutItemMap.setAtlasScalingMode: src/core/layout/qgslayoutitemmap.h#L674
QgsLayoutItemMap.setCrs: src/core/layout/qgslayoutitemmap.h#L490 QgsLayoutItemMap.setCrs: src/core/layout/qgslayoutitemmap.h#L491
QgsLayoutItemMap.setDrawAnnotations: src/core/layout/qgslayoutitemmap.h#L628 QgsLayoutItemMap.setDrawAnnotations: src/core/layout/qgslayoutitemmap.h#L629
QgsLayoutItemMap.setExtent: src/core/layout/qgslayoutitemmap.h#L435 QgsLayoutItemMap.setExtent: src/core/layout/qgslayoutitemmap.h#L436
QgsLayoutItemMap.setFollowVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L575 QgsLayoutItemMap.setFollowVisibilityPreset: src/core/layout/qgslayoutitemmap.h#L576
QgsLayoutItemMap.setFollowVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L592 QgsLayoutItemMap.setFollowVisibilityPresetName: src/core/layout/qgslayoutitemmap.h#L593
QgsLayoutItemMap.setFrameStrokeWidth: src/core/layout/qgslayoutitemmap.h#L410 QgsLayoutItemMap.setFrameStrokeWidth: src/core/layout/qgslayoutitemmap.h#L411
QgsLayoutItemMap.setKeepLayerSet: src/core/layout/qgslayoutitemmap.h#L510 QgsLayoutItemMap.setKeepLayerSet: src/core/layout/qgslayoutitemmap.h#L511
QgsLayoutItemMap.setKeepLayerStyles: src/core/layout/qgslayoutitemmap.h#L541 QgsLayoutItemMap.setKeepLayerStyles: src/core/layout/qgslayoutitemmap.h#L542
QgsLayoutItemMap.setLabelMargin: src/core/layout/qgslayoutitemmap.h#L746 QgsLayoutItemMap.setLabelMargin: src/core/layout/qgslayoutitemmap.h#L747
QgsLayoutItemMap.setLayerStyleOverrides: src/core/layout/qgslayoutitemmap.h#L553 QgsLayoutItemMap.setLayerStyleOverrides: src/core/layout/qgslayoutitemmap.h#L554
QgsLayoutItemMap.setLayers: src/core/layout/qgslayoutitemmap.h#L529 QgsLayoutItemMap.setLayers: src/core/layout/qgslayoutitemmap.h#L530
QgsLayoutItemMap.setMapFlags: src/core/layout/qgslayoutitemmap.h#L380 QgsLayoutItemMap.setMapFlags: src/core/layout/qgslayoutitemmap.h#L381
QgsLayoutItemMap.setMapRotation: src/core/layout/qgslayoutitemmap.h#L612 QgsLayoutItemMap.setMapRotation: src/core/layout/qgslayoutitemmap.h#L613
QgsLayoutItemMap.setMoveContentPreviewOffset: src/core/layout/qgslayoutitemmap.h#L595 QgsLayoutItemMap.setMoveContentPreviewOffset: src/core/layout/qgslayoutitemmap.h#L596
QgsLayoutItemMap.setScale: src/core/layout/qgslayoutitemmap.h#L426 QgsLayoutItemMap.setScale: src/core/layout/qgslayoutitemmap.h#L427
QgsLayoutItemMap.setZRange: src/core/layout/qgslayoutitemmap.h#L912 QgsLayoutItemMap.setZRange: src/core/layout/qgslayoutitemmap.h#L913
QgsLayoutItemMap.setZRangeEnabled: src/core/layout/qgslayoutitemmap.h#L878 QgsLayoutItemMap.setZRangeEnabled: src/core/layout/qgslayoutitemmap.h#L879
QgsLayoutItemMap.startLayeredExport: src/core/layout/qgslayoutitemmap.h#L405 QgsLayoutItemMap.startLayeredExport: src/core/layout/qgslayoutitemmap.h#L406
QgsLayoutItemMap.stopLayeredExport: src/core/layout/qgslayoutitemmap.h#L406 QgsLayoutItemMap.stopLayeredExport: src/core/layout/qgslayoutitemmap.h#L407
QgsLayoutItemMap.storeCurrentLayerStyles: src/core/layout/qgslayoutitemmap.h#L558 QgsLayoutItemMap.storeCurrentLayerStyles: src/core/layout/qgslayoutitemmap.h#L559
QgsLayoutItemMap.themeChanged: src/core/layout/qgslayoutitemmap.h#L974 QgsLayoutItemMap.themeChanged: src/core/layout/qgslayoutitemmap.h#L975
QgsLayoutItemMap.transformedMapPolygon: src/core/layout/qgslayoutitemmap.h#L931 QgsLayoutItemMap.transformedMapPolygon: src/core/layout/qgslayoutitemmap.h#L932
QgsLayoutItemMap.type: src/core/layout/qgslayoutitemmap.h#L364 QgsLayoutItemMap.type: src/core/layout/qgslayoutitemmap.h#L365
QgsLayoutItemMap.updateBoundingRect: src/core/layout/qgslayoutitemmap.h#L997 QgsLayoutItemMap.updateBoundingRect: src/core/layout/qgslayoutitemmap.h#L998
QgsLayoutItemMap.visibleExtentPolygon: src/core/layout/qgslayoutitemmap.h#L461 QgsLayoutItemMap.visibleExtentPolygon: src/core/layout/qgslayoutitemmap.h#L462
QgsLayoutItemMap.writePropertiesToElement: src/core/layout/qgslayoutitemmap.h#L920 QgsLayoutItemMap.writePropertiesToElement: src/core/layout/qgslayoutitemmap.h#L921
QgsLayoutItemMap.zRange: src/core/layout/qgslayoutitemmap.h#L900 QgsLayoutItemMap.zRange: src/core/layout/qgslayoutitemmap.h#L901
QgsLayoutItemMap.zRangeEnabled: src/core/layout/qgslayoutitemmap.h#L888 QgsLayoutItemMap.zRangeEnabled: src/core/layout/qgslayoutitemmap.h#L889
QgsLayoutItemMap.zoomContent: src/core/layout/qgslayoutitemmap.h#L597 QgsLayoutItemMap.zoomContent: src/core/layout/qgslayoutitemmap.h#L598
QgsLayoutItemMap.zoomToExtent: src/core/layout/qgslayoutitemmap.h#L444 QgsLayoutItemMap.zoomToExtent: src/core/layout/qgslayoutitemmap.h#L445
QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L317 QgsLayoutItemMap: src/core/layout/qgslayoutitemmap.h#L318
QgsLayoutItemMapAtlasClippingSettings.changed: src/core/layout/qgslayoutitemmap.h#L148 QgsLayoutItemMapAtlasClippingSettings.changed: src/core/layout/qgslayoutitemmap.h#L149
QgsLayoutItemMapAtlasClippingSettings.enabled: src/core/layout/qgslayoutitemmap.h#L56 QgsLayoutItemMapAtlasClippingSettings.enabled: src/core/layout/qgslayoutitemmap.h#L57
QgsLayoutItemMapAtlasClippingSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L70 QgsLayoutItemMapAtlasClippingSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L71
QgsLayoutItemMapAtlasClippingSettings.forceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L84 QgsLayoutItemMapAtlasClippingSettings.forceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L85
QgsLayoutItemMapAtlasClippingSettings.readXml: src/core/layout/qgslayoutitemmap.h#L141 QgsLayoutItemMapAtlasClippingSettings.readXml: src/core/layout/qgslayoutitemmap.h#L142
QgsLayoutItemMapAtlasClippingSettings.restrictToLayers: src/core/layout/qgslayoutitemmap.h#L99 QgsLayoutItemMapAtlasClippingSettings.restrictToLayers: src/core/layout/qgslayoutitemmap.h#L100
QgsLayoutItemMapAtlasClippingSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L63 QgsLayoutItemMapAtlasClippingSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L64
QgsLayoutItemMapAtlasClippingSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L77 QgsLayoutItemMapAtlasClippingSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L78
QgsLayoutItemMapAtlasClippingSettings.setForceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L91 QgsLayoutItemMapAtlasClippingSettings.setForceLabelsInsideFeature: src/core/layout/qgslayoutitemmap.h#L92
QgsLayoutItemMapAtlasClippingSettings.setLayersToClip: src/core/layout/qgslayoutitemmap.h#L127 QgsLayoutItemMapAtlasClippingSettings.setLayersToClip: src/core/layout/qgslayoutitemmap.h#L128
QgsLayoutItemMapAtlasClippingSettings.setRestrictToLayers: src/core/layout/qgslayoutitemmap.h#L107 QgsLayoutItemMapAtlasClippingSettings.setRestrictToLayers: src/core/layout/qgslayoutitemmap.h#L108
QgsLayoutItemMapAtlasClippingSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L134 QgsLayoutItemMapAtlasClippingSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L135
QgsLayoutItemMapAtlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L40 QgsLayoutItemMapAtlasClippingSettings: src/core/layout/qgslayoutitemmap.h#L41
QgsLayoutItemMapGrid.accept: src/core/layout/qgslayoutitemmapgrid.h#L1005 QgsLayoutItemMapGrid.accept: src/core/layout/qgslayoutitemmapgrid.h#L1005
QgsLayoutItemMapGrid.annotationDirection: src/core/layout/qgslayoutitemmapgrid.h#L701 QgsLayoutItemMapGrid.annotationDirection: src/core/layout/qgslayoutitemmapgrid.h#L701
QgsLayoutItemMapGrid.annotationDisplay: src/core/layout/qgslayoutitemmapgrid.h#L656 QgsLayoutItemMapGrid.annotationDisplay: src/core/layout/qgslayoutitemmapgrid.h#L656
@ -7553,23 +7569,23 @@ QgsLayoutItemMapItem.stackingPosition: src/core/layout/qgslayoutitemmapitem.h#L1
QgsLayoutItemMapItem.usesAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L128 QgsLayoutItemMapItem.usesAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L128
QgsLayoutItemMapItem.writeXml: src/core/layout/qgslayoutitemmapitem.h#L65 QgsLayoutItemMapItem.writeXml: src/core/layout/qgslayoutitemmapitem.h#L65
QgsLayoutItemMapItem: src/core/layout/qgslayoutitemmapitem.h#L32 QgsLayoutItemMapItem: src/core/layout/qgslayoutitemmapitem.h#L32
QgsLayoutItemMapItemClipPathSettings.changed: src/core/layout/qgslayoutitemmap.h#L297 QgsLayoutItemMapItemClipPathSettings.changed: src/core/layout/qgslayoutitemmap.h#L298
QgsLayoutItemMapItemClipPathSettings.clipPathInMapItemCoordinates: src/core/layout/qgslayoutitemmap.h#L219 QgsLayoutItemMapItemClipPathSettings.clipPathInMapItemCoordinates: src/core/layout/qgslayoutitemmap.h#L220
QgsLayoutItemMapItemClipPathSettings.clippedMapExtent: src/core/layout/qgslayoutitemmap.h#L208 QgsLayoutItemMapItemClipPathSettings.clippedMapExtent: src/core/layout/qgslayoutitemmap.h#L209
QgsLayoutItemMapItemClipPathSettings.enabled: src/core/layout/qgslayoutitemmap.h#L194 QgsLayoutItemMapItemClipPathSettings.enabled: src/core/layout/qgslayoutitemmap.h#L195
QgsLayoutItemMapItemClipPathSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L248 QgsLayoutItemMapItemClipPathSettings.featureClippingType: src/core/layout/qgslayoutitemmap.h#L249
QgsLayoutItemMapItemClipPathSettings.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L290 QgsLayoutItemMapItemClipPathSettings.finalizeRestoreFromXml: src/core/layout/qgslayoutitemmap.h#L291
QgsLayoutItemMapItemClipPathSettings.forceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L262 QgsLayoutItemMapItemClipPathSettings.forceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L263
QgsLayoutItemMapItemClipPathSettings.isActive: src/core/layout/qgslayoutitemmap.h#L187 QgsLayoutItemMapItemClipPathSettings.isActive: src/core/layout/qgslayoutitemmap.h#L188
QgsLayoutItemMapItemClipPathSettings.readXml: src/core/layout/qgslayoutitemmap.h#L284 QgsLayoutItemMapItemClipPathSettings.readXml: src/core/layout/qgslayoutitemmap.h#L285
QgsLayoutItemMapItemClipPathSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L201 QgsLayoutItemMapItemClipPathSettings.setEnabled: src/core/layout/qgslayoutitemmap.h#L202
QgsLayoutItemMapItemClipPathSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L255 QgsLayoutItemMapItemClipPathSettings.setFeatureClippingType: src/core/layout/qgslayoutitemmap.h#L256
QgsLayoutItemMapItemClipPathSettings.setForceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L269 QgsLayoutItemMapItemClipPathSettings.setForceLabelsInsideClipPath: src/core/layout/qgslayoutitemmap.h#L270
QgsLayoutItemMapItemClipPathSettings.setSourceItem: src/core/layout/qgslayoutitemmap.h#L233 QgsLayoutItemMapItemClipPathSettings.setSourceItem: src/core/layout/qgslayoutitemmap.h#L234
QgsLayoutItemMapItemClipPathSettings.sourceItem: src/core/layout/qgslayoutitemmap.h#L241 QgsLayoutItemMapItemClipPathSettings.sourceItem: src/core/layout/qgslayoutitemmap.h#L242
QgsLayoutItemMapItemClipPathSettings.toMapClippingRegion: src/core/layout/qgslayoutitemmap.h#L224 QgsLayoutItemMapItemClipPathSettings.toMapClippingRegion: src/core/layout/qgslayoutitemmap.h#L225
QgsLayoutItemMapItemClipPathSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L276 QgsLayoutItemMapItemClipPathSettings.writeXml: src/core/layout/qgslayoutitemmap.h#L277
QgsLayoutItemMapItemClipPathSettings: src/core/layout/qgslayoutitemmap.h#L170 QgsLayoutItemMapItemClipPathSettings: src/core/layout/qgslayoutitemmap.h#L171
QgsLayoutItemMapItemStack.addItem: src/core/layout/qgslayoutitemmapitem.h#L306 QgsLayoutItemMapItemStack.addItem: src/core/layout/qgslayoutitemmapitem.h#L306
QgsLayoutItemMapItemStack.containsAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L282 QgsLayoutItemMapItemStack.containsAdvancedEffects: src/core/layout/qgslayoutitemmapitem.h#L282
QgsLayoutItemMapItemStack.drawItems: src/core/layout/qgslayoutitemmapitem.h#L276 QgsLayoutItemMapItemStack.drawItems: src/core/layout/qgslayoutitemmapitem.h#L276

View File

@ -51,6 +51,7 @@
%Include auto_generated/qgsexpressioncontextscopegenerator.sip %Include auto_generated/qgsexpressioncontextscopegenerator.sip
%Include auto_generated/qgsexpressionfieldbuffer.sip %Include auto_generated/qgsexpressionfieldbuffer.sip
%Include auto_generated/qgsfeature.sip %Include auto_generated/qgsfeature.sip
%Include auto_generated/qgsfeatureexpressionfilterprovider.sip
%Include auto_generated/qgsfeaturepickermodel.sip %Include auto_generated/qgsfeaturepickermodel.sip
%Include auto_generated/qgsfeaturepickermodelbase.sip %Include auto_generated/qgsfeaturepickermodelbase.sip
%Include auto_generated/qgsfeaturefiltermodel.sip %Include auto_generated/qgsfeaturefiltermodel.sip
@ -77,6 +78,7 @@
%Include auto_generated/qgsgeometryvalidator.sip %Include auto_generated/qgsgeometryvalidator.sip
%Include auto_generated/qgsgml.sip %Include auto_generated/qgsgml.sip
%Include auto_generated/qgsgmlschema.sip %Include auto_generated/qgsgmlschema.sip
%Include auto_generated/qgsgroupedfeaturefilterprovider.sip
%Include auto_generated/qgsgrouplayer.sip %Include auto_generated/qgsgrouplayer.sip
%Include auto_generated/qgshistogram.sip %Include auto_generated/qgshistogram.sip
%Include auto_generated/qgshstoreutils.sip %Include auto_generated/qgshstoreutils.sip

View File

@ -79,13 +79,21 @@ class ExampleProcessingAlgorithm(QgsProcessingAlgorithm):
""" """
return "examplescripts" return "examplescripts"
def shortDescription(self) -> str:
"""
Returns an optional translated short description of the algorithm, displayed
on hover in Processing Toolbox. This should be at most a single sentence, e.g.,
Converts 2D features to 3D by sampling a DEM raster.
"""
return "Example algorithm short description on hover"
def shortHelpString(self) -> str: def shortHelpString(self) -> str:
""" """
Returns a localised short helper string for the algorithm. This string Returns a localised helper string for the algorithm displayed in the dialog.
should provide a basic description about what the algorithm does and the This string should provide a basic description about what the algorithm does and the
parameters and outputs associated with it. parameters and outputs associated with it.
""" """
return "Example algorithm short description" return "Example algorithm description"
def initAlgorithm(self, config: Optional[dict[str, Any]] = None): def initAlgorithm(self, config: Optional[dict[str, Any]] = None):
""" """
@ -95,13 +103,16 @@ class ExampleProcessingAlgorithm(QgsProcessingAlgorithm):
# We add the input vector features source. It can have any kind of # We add the input vector features source. It can have any kind of
# geometry. # geometry.
self.addParameter(
QgsProcessingParameterFeatureSource( input_layer = QgsProcessingParameterFeatureSource(
self.INPUT, self.INPUT,
"Input layer", "Input layer",
[QgsProcessing.SourceType.TypeVectorAnyGeometry], [QgsProcessing.SourceType.TypeVectorAnyGeometry],
)
) )
input_layer.setHelp(
"A descriptive, translated string explaining the parameters behavior and use in depth."
)
self.addParameter(input_layer)
# We add a feature sink in which to store our processed features (this # We add a feature sink in which to store our processed features (this
# usually takes the form of a newly created vector layer when the # usually takes the form of a newly created vector layer when the

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsaccesscontrol.h # The following has been generated automatically from src/server/qgsaccesscontrol.h
try: try:
QgsAccessControl.__overridden_methods__ = ['filterFeatures', 'clone', 'layerAttributes'] QgsAccessControl.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsfeaturefilter.h # The following has been generated automatically from src/server/qgsfeaturefilter.h
try: try:
QgsFeatureFilter.__overridden_methods__ = ['filterFeatures', 'layerAttributes', 'clone'] QgsFeatureFilter.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsfeaturefilterprovidergroup.h # The following has been generated automatically from src/server/qgsfeaturefilterprovidergroup.h
try: try:
QgsFeatureFilterProviderGroup.__overridden_methods__ = ['filterFeatures', 'layerAttributes', 'clone'] QgsFeatureFilterProviderGroup.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -35,6 +35,15 @@ Constructor
~QgsAccessControl(); ~QgsAccessControl();
virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsAccessControl *clone() const /Factory/;
void resolveFilterFeatures( const QList<QgsMapLayer *> &layers ); void resolveFilterFeatures( const QList<QgsMapLayer *> &layers );
%Docstring %Docstring
Resolve features' filter of layers The method fetch filter's expressions Resolve features' filter of layers The method fetch filter's expressions
@ -49,23 +58,6 @@ for efficiency; between each requests, the cache must be cleared using
void unresolveFilterFeatures(); void unresolveFilterFeatures();
%Docstring %Docstring
Clear expression's cache computed from `resolveFilterFeatures` Clear expression's cache computed from `resolveFilterFeatures`
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End %End
QString extraSubsetString( const QgsVectorLayer *layer ) const; QString extraSubsetString( const QgsVectorLayer *layer ) const;
@ -111,17 +103,6 @@ Returns the layer delete right
:param layer: the layer to control :param layer: the layer to control
:return: ``True`` if we can do a delete :return: ``True`` if we can do a delete
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
%Docstring
Returns the authorized layer attributes
:param layer: the layer to control
:param attributes: the list of attribute
:return: the list of visible attributes
%End %End
bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const; bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const;

View File

@ -16,6 +16,10 @@ class QgsFeatureFilter : QgsFeatureFilterProvider
%Docstring(signature="appended") %Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a A feature filter provider allowing to set filter expressions on a
per-layer basis. per-layer basis.
.. deprecated:: 3.4
Use :py:class:`QgsFeatureExpressionFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -27,25 +31,14 @@ per-layer basis.
Constructor Constructor
%End %End
virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/; virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ); void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression );
%Docstring %Docstring

View File

@ -14,6 +14,10 @@ class QgsFeatureFilterProviderGroup : QgsFeatureFilterProvider
{ {
%Docstring(signature="appended") %Docstring(signature="appended")
A filter filter provider grouping several filter providers. A filter filter provider grouping several filter providers.
.. deprecated:: 3.4
Use :py:class:`QgsGroupedFeatureFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -25,25 +29,14 @@ A filter filter provider grouping several filter providers.
Constructor Constructor
%End %End
virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProviderGroup *clone() const /Factory/;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider ); QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring %Docstring

View File

@ -1,16 +1,17 @@
QgsAccessControl.allowToEdit: src/server/qgsaccesscontrol.h#L152 QgsAccessControl.allowToEdit: src/server/qgsaccesscontrol.h#L137
QgsAccessControl.clone: src/server/qgsaccesscontrol.h#L101 QgsAccessControl.clone: src/server/qgsaccesscontrol.h#L78
QgsAccessControl.extraSubsetString: src/server/qgsaccesscontrol.h#L108 QgsAccessControl.extraSubsetString: src/server/qgsaccesscontrol.h#L101
QgsAccessControl.fillCacheKey: src/server/qgsaccesscontrol.h#L158 QgsAccessControl.fillCacheKey: src/server/qgsaccesscontrol.h#L143
QgsAccessControl.filterFeatures: src/server/qgsaccesscontrol.h#L95 QgsAccessControl.filterFeatures: src/server/qgsaccesscontrol.h#L76
QgsAccessControl.layerAttributes: src/server/qgsaccesscontrol.h#L144 QgsAccessControl.isFilterThreadSafe: src/server/qgsaccesscontrol.h#L74
QgsAccessControl.layerDeletePermission: src/server/qgsaccesscontrol.h#L136 QgsAccessControl.layerAttributes: src/server/qgsaccesscontrol.h#L77
QgsAccessControl.layerInsertPermission: src/server/qgsaccesscontrol.h#L122 QgsAccessControl.layerDeletePermission: src/server/qgsaccesscontrol.h#L129
QgsAccessControl.layerReadPermission: src/server/qgsaccesscontrol.h#L115 QgsAccessControl.layerInsertPermission: src/server/qgsaccesscontrol.h#L115
QgsAccessControl.layerUpdatePermission: src/server/qgsaccesscontrol.h#L129 QgsAccessControl.layerReadPermission: src/server/qgsaccesscontrol.h#L108
QgsAccessControl.registerAccessControl: src/server/qgsaccesscontrol.h#L165 QgsAccessControl.layerUpdatePermission: src/server/qgsaccesscontrol.h#L122
QgsAccessControl.resolveFilterFeatures: src/server/qgsaccesscontrol.h#L83 QgsAccessControl.registerAccessControl: src/server/qgsaccesscontrol.h#L150
QgsAccessControl.unresolveFilterFeatures: src/server/qgsaccesscontrol.h#L88 QgsAccessControl.resolveFilterFeatures: src/server/qgsaccesscontrol.h#L89
QgsAccessControl.unresolveFilterFeatures: src/server/qgsaccesscontrol.h#L94
QgsAccessControl: src/server/qgsaccesscontrol.h#L35 QgsAccessControl: src/server/qgsaccesscontrol.h#L35
QgsAccessControlFilter.allowToEdit: src/server/qgsaccesscontrolfilter.h#L109 QgsAccessControlFilter.allowToEdit: src/server/qgsaccesscontrolfilter.h#L109
QgsAccessControlFilter.authorizedLayerAttributes: src/server/qgsaccesscontrolfilter.h#L101 QgsAccessControlFilter.authorizedLayerAttributes: src/server/qgsaccesscontrolfilter.h#L101
@ -54,15 +55,17 @@ QgsFcgiServerRequest.data: src/server/qgsfcgiserverrequest.h#L36
QgsFcgiServerRequest.hasError: src/server/qgsfcgiserverrequest.h#L41 QgsFcgiServerRequest.hasError: src/server/qgsfcgiserverrequest.h#L41
QgsFcgiServerRequest.header: src/server/qgsfcgiserverrequest.h#L49 QgsFcgiServerRequest.header: src/server/qgsfcgiserverrequest.h#L49
QgsFcgiServerRequest: src/server/qgsfcgiserverrequest.h#L31 QgsFcgiServerRequest: src/server/qgsfcgiserverrequest.h#L31
QgsFeatureFilter.clone: src/server/qgsfeaturefilter.h#L52 QgsFeatureFilter.clone: src/server/qgsfeaturefilter.h#L44
QgsFeatureFilter.filterFeatures: src/server/qgsfeaturefilter.h#L44 QgsFeatureFilter.filterFeatures: src/server/qgsfeaturefilter.h#L42
QgsFeatureFilter.layerAttributes: src/server/qgsfeaturefilter.h#L46 QgsFeatureFilter.isFilterThreadSafe: src/server/qgsfeaturefilter.h#L40
QgsFeatureFilter.setFilter: src/server/qgsfeaturefilter.h#L59 QgsFeatureFilter.layerAttributes: src/server/qgsfeaturefilter.h#L43
QgsFeatureFilter: src/server/qgsfeaturefilter.h#L33 QgsFeatureFilter.setFilter: src/server/qgsfeaturefilter.h#L51
QgsFeatureFilterProviderGroup.clone: src/server/qgsfeaturefilterprovidergroup.h#L50 QgsFeatureFilter: src/server/qgsfeaturefilter.h#L34
QgsFeatureFilterProviderGroup.filterFeatures: src/server/qgsfeaturefilterprovidergroup.h#L42 QgsFeatureFilterProviderGroup.clone: src/server/qgsfeaturefilterprovidergroup.h#L42
QgsFeatureFilterProviderGroup.layerAttributes: src/server/qgsfeaturefilterprovidergroup.h#L44 QgsFeatureFilterProviderGroup.filterFeatures: src/server/qgsfeaturefilterprovidergroup.h#L40
QgsFeatureFilterProviderGroup: src/server/qgsfeaturefilterprovidergroup.h#L31 QgsFeatureFilterProviderGroup.isFilterThreadSafe: src/server/qgsfeaturefilterprovidergroup.h#L38
QgsFeatureFilterProviderGroup.layerAttributes: src/server/qgsfeaturefilterprovidergroup.h#L41
QgsFeatureFilterProviderGroup: src/server/qgsfeaturefilterprovidergroup.h#L32
QgsOgcServiceException.code: src/server/qgsserverexception.h#L94 QgsOgcServiceException.code: src/server/qgsserverexception.h#L94
QgsOgcServiceException.formatResponse: src/server/qgsserverexception.h#L102 QgsOgcServiceException.formatResponse: src/server/qgsserverexception.h#L102
QgsOgcServiceException.locator: src/server/qgsserverexception.h#L97 QgsOgcServiceException.locator: src/server/qgsserverexception.h#L97

View File

@ -64,7 +64,7 @@ void QgsDirectionalLightSettings::readXml( const QDomElement &elem, const QgsRea
mIntensity = elem.attribute( QStringLiteral( "intensity" ) ).toFloat(); mIntensity = elem.attribute( QStringLiteral( "intensity" ) ).toFloat();
} }
bool QgsDirectionalLightSettings::operator==( const QgsDirectionalLightSettings &other ) bool QgsDirectionalLightSettings::operator==( const QgsDirectionalLightSettings &other ) const
{ {
return mDirection == other.mDirection && mColor == other.mColor && mIntensity == other.mIntensity; return mDirection == other.mDirection && mColor == other.mColor && mIntensity == other.mIntensity;
} }

View File

@ -58,7 +58,7 @@ class _3D_EXPORT QgsDirectionalLightSettings : public QgsLightSource
void setIntensity( float intensity ) { mIntensity = intensity; } void setIntensity( float intensity ) { mIntensity = intensity; }
// TODO c++20 - replace with = default // TODO c++20 - replace with = default
bool operator==( const QgsDirectionalLightSettings &other ); bool operator==( const QgsDirectionalLightSettings &other ) const;
private: private:
QgsVector3D mDirection { -0.32, 0.27, -0.91 }; QgsVector3D mDirection { -0.32, 0.27, -0.91 };

View File

@ -107,7 +107,7 @@ void QgsPointLightSettings::readXml( const QDomElement &elem, const QgsReadWrite
mQuadraticAttenuation = elem.attribute( QStringLiteral( "attenuation-2" ) ).toDouble(); mQuadraticAttenuation = elem.attribute( QStringLiteral( "attenuation-2" ) ).toDouble();
} }
bool QgsPointLightSettings::operator==( const QgsPointLightSettings &other ) bool QgsPointLightSettings::operator==( const QgsPointLightSettings &other ) const
{ {
return mPosition == other.mPosition && mColor == other.mColor && mIntensity == other.mIntensity && mConstantAttenuation == other.mConstantAttenuation && mLinearAttenuation == other.mLinearAttenuation && mQuadraticAttenuation == other.mQuadraticAttenuation; return mPosition == other.mPosition && mColor == other.mColor && mIntensity == other.mIntensity && mConstantAttenuation == other.mConstantAttenuation && mLinearAttenuation == other.mLinearAttenuation && mQuadraticAttenuation == other.mQuadraticAttenuation;
} }

View File

@ -79,7 +79,7 @@ class _3D_EXPORT QgsPointLightSettings : public QgsLightSource
void setQuadraticAttenuation( float value ) { mQuadraticAttenuation = value; } void setQuadraticAttenuation( float value ) { mQuadraticAttenuation = value; }
// TODO c++20 - replace with = default // TODO c++20 - replace with = default
bool operator==( const QgsPointLightSettings &other ); bool operator==( const QgsPointLightSettings &other ) const;
private: private:
QgsVector3D mPosition { 0, 0, 1000 }; QgsVector3D mPosition { 0, 0, 1000 };

View File

@ -66,7 +66,7 @@ Qgs3DMapCanvas::Qgs3DMapCanvas()
const QgsSettings setting; const QgsSettings setting;
mEngine = new QgsWindow3DEngine( this ); mEngine = new QgsWindow3DEngine( this );
connect( mEngine, &QgsAbstract3DEngine::imageCaptured, this, [=]( const QImage &image ) { connect( mEngine, &QgsAbstract3DEngine::imageCaptured, this, [this]( const QImage &image ) {
if ( image.save( mCaptureFileName, mCaptureFileFormat.toLocal8Bit().data() ) ) if ( image.save( mCaptureFileName, mCaptureFileFormat.toLocal8Bit().data() ) )
{ {
emit savedAsImage( mCaptureFileName ); emit savedAsImage( mCaptureFileName );
@ -169,7 +169,7 @@ void Qgs3DMapCanvas::setMapSettings( Qgs3DMapSettings *mapSettings )
resetView(); resetView();
connect( cameraController(), &QgsCameraController::setCursorPosition, this, [=]( QPoint point ) { connect( cameraController(), &QgsCameraController::setCursorPosition, this, [this]( QPoint point ) {
QCursor::setPos( mapToGlobal( point ) ); QCursor::setPos( mapToGlobal( point ) );
} ); } );
connect( cameraController(), &QgsCameraController::cameraMovementSpeedChanged, mMapSettings, &Qgs3DMapSettings::setCameraMovementSpeed ); connect( cameraController(), &QgsCameraController::cameraMovementSpeedChanged, mMapSettings, &Qgs3DMapSettings::setCameraMovementSpeed );
@ -216,7 +216,7 @@ void Qgs3DMapCanvas::saveAsImage( const QString &fileName, const QString &fileFo
Qt3DLogic::QFrameAction *screenCaptureFrameAction = new Qt3DLogic::QFrameAction; Qt3DLogic::QFrameAction *screenCaptureFrameAction = new Qt3DLogic::QFrameAction;
mScene->addComponent( screenCaptureFrameAction ); mScene->addComponent( screenCaptureFrameAction );
// Wait to have the render capture enabled in the next frame // Wait to have the render capture enabled in the next frame
connect( screenCaptureFrameAction, &Qt3DLogic::QFrameAction::triggered, this, [=]( float ) { connect( screenCaptureFrameAction, &Qt3DLogic::QFrameAction::triggered, this, [this, screenCaptureFrameAction]( float ) {
mEngine->requestCaptureImage(); mEngine->requestCaptureImage();
mScene->removeComponent( screenCaptureFrameAction ); mScene->removeComponent( screenCaptureFrameAction );
screenCaptureFrameAction->deleteLater(); screenCaptureFrameAction->deleteLater();
@ -232,7 +232,7 @@ void Qgs3DMapCanvas::captureDepthBuffer()
Qt3DLogic::QFrameAction *screenCaptureFrameAction = new Qt3DLogic::QFrameAction; Qt3DLogic::QFrameAction *screenCaptureFrameAction = new Qt3DLogic::QFrameAction;
mScene->addComponent( screenCaptureFrameAction ); mScene->addComponent( screenCaptureFrameAction );
// Wait to have the render capture enabled in the next frame // Wait to have the render capture enabled in the next frame
connect( screenCaptureFrameAction, &Qt3DLogic::QFrameAction::triggered, this, [=]( float ) { connect( screenCaptureFrameAction, &Qt3DLogic::QFrameAction::triggered, this, [this, screenCaptureFrameAction]( float ) {
mEngine->requestDepthBufferCapture(); mEngine->requestDepthBufferCapture();
mScene->removeComponent( screenCaptureFrameAction ); mScene->removeComponent( screenCaptureFrameAction );
screenCaptureFrameAction->deleteLater(); screenCaptureFrameAction->deleteLater();

View File

@ -159,7 +159,7 @@ Qgs3DMapScene::Qgs3DMapScene( Qgs3DMapSettings &map, QgsAbstract3DEngine *engine
connect( &map, &Qgs3DMapSettings::originChanged, this, &Qgs3DMapScene::onOriginChanged ); connect( &map, &Qgs3DMapSettings::originChanged, this, &Qgs3DMapScene::onOriginChanged );
connect( QgsApplication::sourceCache(), &QgsSourceCache::remoteSourceFetched, this, [=]( const QString &url ) { connect( QgsApplication::sourceCache(), &QgsSourceCache::remoteSourceFetched, this, [this]( const QString &url ) {
const QList<QgsMapLayer *> modelVectorLayers = mModelVectorLayers; const QList<QgsMapLayer *> modelVectorLayers = mModelVectorLayers;
for ( QgsMapLayer *layer : modelVectorLayers ) for ( QgsMapLayer *layer : modelVectorLayers )
{ {

View File

@ -33,7 +33,7 @@ void QgsAbstract3DEngine::requestCaptureImage()
mFrameGraph->setRenderCaptureEnabled( true ); mFrameGraph->setRenderCaptureEnabled( true );
captureReply = mFrameGraph->renderCapture()->requestCapture(); captureReply = mFrameGraph->renderCapture()->requestCapture();
connect( captureReply, &Qt3DRender::QRenderCaptureReply::completed, this, [=] { connect( captureReply, &Qt3DRender::QRenderCaptureReply::completed, this, [this, captureReply] {
emit imageCaptured( captureReply->image() ); emit imageCaptured( captureReply->image() );
captureReply->deleteLater(); captureReply->deleteLater();
mFrameGraph->setRenderCaptureEnabled( false ); mFrameGraph->setRenderCaptureEnabled( false );
@ -45,7 +45,7 @@ void QgsAbstract3DEngine::requestDepthBufferCapture()
Qt3DRender::QRenderCaptureReply *captureReply; Qt3DRender::QRenderCaptureReply *captureReply;
captureReply = mFrameGraph->depthRenderCapture()->requestCapture(); captureReply = mFrameGraph->depthRenderCapture()->requestCapture();
connect( captureReply, &Qt3DRender::QRenderCaptureReply::completed, this, [=] { connect( captureReply, &Qt3DRender::QRenderCaptureReply::completed, this, [this, captureReply] {
emit depthBufferCaptured( captureReply->image() ); emit depthBufferCaptured( captureReply->image() );
captureReply->deleteLater(); captureReply->deleteLater();
} ); } );

View File

@ -264,38 +264,41 @@ void QgsCameraController::setCameraPose( const QgsCameraPose &camPose, bool forc
QDomElement QgsCameraController::writeXml( QDomDocument &doc ) const QDomElement QgsCameraController::writeXml( QDomDocument &doc ) const
{ {
QDomElement elemCamera = doc.createElement( QStringLiteral( "camera" ) ); QDomElement elemCamera = doc.createElement( QStringLiteral( "camera" ) );
QgsVector3D centerPoint; // Save center point in map coordinates, since our world origin won't be
switch ( mScene->mapSettings()->sceneMode() ) // the same on loading
{ QgsVector3D centerPoint = mCameraPose.centerPoint() + mOrigin;
case Qgis::SceneMode::Local: elemCamera.setAttribute( QStringLiteral( "xMap" ), centerPoint.x() );
centerPoint = mCameraPose.centerPoint(); elemCamera.setAttribute( QStringLiteral( "yMap" ), centerPoint.y() );
break; elemCamera.setAttribute( QStringLiteral( "zMap" ), centerPoint.z() );
case Qgis::SceneMode::Globe:
// Save center point in map coordinates, since our world origin won't be
// the same on loading
centerPoint = mCameraPose.centerPoint() + mOrigin;
break;
}
elemCamera.setAttribute( QStringLiteral( "x" ), centerPoint.x() );
elemCamera.setAttribute( QStringLiteral( "y" ), centerPoint.z() );
elemCamera.setAttribute( QStringLiteral( "elev" ), centerPoint.y() );
elemCamera.setAttribute( QStringLiteral( "dist" ), mCameraPose.distanceFromCenterPoint() ); elemCamera.setAttribute( QStringLiteral( "dist" ), mCameraPose.distanceFromCenterPoint() );
elemCamera.setAttribute( QStringLiteral( "pitch" ), mCameraPose.pitchAngle() ); elemCamera.setAttribute( QStringLiteral( "pitch" ), mCameraPose.pitchAngle() );
elemCamera.setAttribute( QStringLiteral( "yaw" ), mCameraPose.headingAngle() ); elemCamera.setAttribute( QStringLiteral( "yaw" ), mCameraPose.headingAngle() );
return elemCamera; return elemCamera;
} }
void QgsCameraController::readXml( const QDomElement &elem ) void QgsCameraController::readXml( const QDomElement &elem, QgsVector3D savedOrigin )
{ {
const float x = elem.attribute( QStringLiteral( "x" ) ).toFloat();
const float y = elem.attribute( QStringLiteral( "y" ) ).toFloat();
const float elev = elem.attribute( QStringLiteral( "elev" ) ).toFloat();
const float dist = elem.attribute( QStringLiteral( "dist" ) ).toFloat(); const float dist = elem.attribute( QStringLiteral( "dist" ) ).toFloat();
const float pitch = elem.attribute( QStringLiteral( "pitch" ) ).toFloat(); const float pitch = elem.attribute( QStringLiteral( "pitch" ) ).toFloat();
const float yaw = elem.attribute( QStringLiteral( "yaw" ) ).toFloat(); const float yaw = elem.attribute( QStringLiteral( "yaw" ) ).toFloat();
QgsVector3D centerPoint( x, elev, y );
if ( mScene->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) QgsVector3D centerPoint;
centerPoint = centerPoint - mOrigin; if ( elem.hasAttribute( "xMap" ) )
{
// Prefer newer point saved in map coordinates ...
const double x = elem.attribute( QStringLiteral( "xMap" ) ).toDouble();
const double y = elem.attribute( QStringLiteral( "yMap" ) ).toDouble();
const double z = elem.attribute( QStringLiteral( "zMap" ) ).toDouble();
centerPoint = QgsVector3D( x, y, z ) - mOrigin;
}
else
{
// ... but allow use of older origin-relative coordinates.
const double x = elem.attribute( QStringLiteral( "x" ) ).toDouble();
const double y = elem.attribute( QStringLiteral( "y" ) ).toDouble();
const double elev = elem.attribute( QStringLiteral( "elev" ) ).toDouble();
centerPoint = QgsVector3D( x, elev, y ) - savedOrigin + mOrigin;
}
setLookingAtPoint( centerPoint, dist, pitch, yaw ); setLookingAtPoint( centerPoint, dist, pitch, yaw );
} }
@ -519,8 +522,8 @@ void QgsCameraController::onPositionChangedTerrainNavigation( Qt3DInput::QMouseE
const int dx = mouse->x() - mMousePos.x(); const int dx = mouse->x() - mMousePos.x();
const int dy = mouse->y() - mMousePos.y(); const int dy = mouse->y() - mMousePos.y();
const bool hasShift = ( mouse->modifiers() & Qt::ShiftModifier ); const bool hasShift = ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ShiftModifier );
const bool hasCtrl = ( mouse->modifiers() & Qt::ControlModifier ); const bool hasCtrl = ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ControlModifier );
const bool hasLeftButton = ( mouse->buttons() & Qt::LeftButton ); const bool hasLeftButton = ( mouse->buttons() & Qt::LeftButton );
const bool hasMiddleButton = ( mouse->buttons() & Qt::MiddleButton ); const bool hasMiddleButton = ( mouse->buttons() & Qt::MiddleButton );
const bool hasRightButton = ( mouse->buttons() & Qt::RightButton ); const bool hasRightButton = ( mouse->buttons() & Qt::RightButton );
@ -673,8 +676,8 @@ void QgsCameraController::onPositionChangedTerrainNavigation( Qt3DInput::QMouseE
void QgsCameraController::onPositionChangedGlobeTerrainNavigation( Qt3DInput::QMouseEvent *mouse ) void QgsCameraController::onPositionChangedGlobeTerrainNavigation( Qt3DInput::QMouseEvent *mouse )
{ {
const bool hasShift = ( mouse->modifiers() & Qt::ShiftModifier ); const bool hasShift = ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ShiftModifier );
const bool hasCtrl = ( mouse->modifiers() & Qt::ControlModifier ); const bool hasCtrl = ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ControlModifier );
const bool hasLeftButton = ( mouse->buttons() & Qt::LeftButton ); const bool hasLeftButton = ( mouse->buttons() & Qt::LeftButton );
const bool hasMiddleButton = ( mouse->buttons() & Qt::MiddleButton ); const bool hasMiddleButton = ( mouse->buttons() & Qt::MiddleButton );
@ -812,7 +815,7 @@ void QgsCameraController::onWheel( Qt3DInput::QWheelEvent *wheel )
{ {
case Qgis::NavigationMode::Walk: case Qgis::NavigationMode::Walk:
{ {
const float scaling = ( ( wheel->modifiers() & Qt::ControlModifier ) != 0 ? 0.1f : 1.0f ) / 1000.f; const float scaling = ( ( wheel->modifiers() & Qt3DInput::QWheelEvent::Modifiers::ControlModifier ) != 0 ? 0.1f : 1.0f ) / 1000.f;
setCameraMovementSpeed( mCameraMovementSpeed + mCameraMovementSpeed * scaling * wheel->angleDelta().y() ); setCameraMovementSpeed( mCameraMovementSpeed + mCameraMovementSpeed * scaling * wheel->angleDelta().y() );
break; break;
} }
@ -821,7 +824,7 @@ void QgsCameraController::onWheel( Qt3DInput::QWheelEvent *wheel )
{ {
// Scale our variable to roughly "number of normal steps", with Ctrl // Scale our variable to roughly "number of normal steps", with Ctrl
// increasing granularity 10x // increasing granularity 10x
const double scaling = ( 1.0 / 120.0 ) * ( ( wheel->modifiers() & Qt::ControlModifier ) != 0 ? 0.1 : 1.0 ); const double scaling = ( 1.0 / 120.0 ) * ( ( wheel->modifiers() & Qt3DInput::QWheelEvent::Modifiers::ControlModifier ) != 0 ? 0.1 : 1.0 );
// Apparently angleDelta needs to be accumulated // Apparently angleDelta needs to be accumulated
// see: https://doc.qt.io/qt-5/qwheelevent.html#angleDelta // see: https://doc.qt.io/qt-5/qwheelevent.html#angleDelta
@ -858,7 +861,7 @@ void QgsCameraController::onMousePressed( Qt3DInput::QMouseEvent *mouse )
mKeyboardHandler->setFocus( true ); mKeyboardHandler->setFocus( true );
if ( mouse->button() == Qt3DInput::QMouseEvent::MiddleButton || ( ( mouse->modifiers() & Qt::ShiftModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ) || ( ( mouse->modifiers() & Qt::ControlModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ) ) if ( mouse->button() == Qt3DInput::QMouseEvent::MiddleButton || ( ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ShiftModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ) || ( ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ControlModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ) )
{ {
mMousePos = QPoint( mouse->x(), mouse->y() ); mMousePos = QPoint( mouse->x(), mouse->y() );
@ -866,7 +869,7 @@ void QgsCameraController::onMousePressed( Qt3DInput::QMouseEvent *mouse )
mIgnoreNextMouseMove = true; mIgnoreNextMouseMove = true;
const MouseOperation operation { const MouseOperation operation {
( mouse->modifiers() & Qt::ControlModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ? MouseOperation::RotationCamera : MouseOperation::RotationCenter ( mouse->modifiers() & Qt3DInput::QMouseEvent::Modifiers::ControlModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ? MouseOperation::RotationCamera : MouseOperation::RotationCenter
}; };
setMouseParameters( operation, mMousePos ); setMouseParameters( operation, mMousePos );
} }

View File

@ -174,7 +174,7 @@ class _3D_EXPORT QgsCameraController : public QObject
//! Writes camera configuration to the given DOM element //! Writes camera configuration to the given DOM element
QDomElement writeXml( QDomDocument &doc ) const; QDomElement writeXml( QDomDocument &doc ) const;
//! Reads camera configuration from the given DOM element //! Reads camera configuration from the given DOM element
void readXml( const QDomElement &elem ); void readXml( const QDomElement &elem, QgsVector3D savedOrigin );
//! Zoom the map by \a factor //! Zoom the map by \a factor
void zoom( float factor ); void zoom( float factor );

View File

@ -278,7 +278,7 @@ class QgsGlobeChunkLoader : public QgsChunkLoader
, mTextureGenerator( textureGenerator ) , mTextureGenerator( textureGenerator )
, mGlobeCrsToLatLon( globeCrsToLatLon ) , mGlobeCrsToLatLon( globeCrsToLatLon )
{ {
connect( mTextureGenerator, &QgsTerrainTextureGenerator::tileReady, this, [=]( int job, const QImage &img ) { connect( mTextureGenerator, &QgsTerrainTextureGenerator::tileReady, this, [this]( int job, const QImage &img ) {
if ( job == mJobId ) if ( job == mJobId )
{ {
mTexture = img; mTexture = img;
@ -436,7 +436,7 @@ class QgsGlobeMapUpdateJob : public QgsChunkQueueJob
QgsTerrainTextureImage *terrainTexImage = qobject_cast<QgsTerrainTextureImage *>( texImages[0] ); QgsTerrainTextureImage *terrainTexImage = qobject_cast<QgsTerrainTextureImage *>( texImages[0] );
Q_ASSERT( terrainTexImage ); Q_ASSERT( terrainTexImage );
connect( textureGenerator, &QgsTerrainTextureGenerator::tileReady, this, [=]( int jobId, const QImage &image ) { connect( textureGenerator, &QgsTerrainTextureGenerator::tileReady, this, [this, terrainTexImage]( int jobId, const QImage &image ) {
if ( mJobId == jobId ) if ( mJobId == jobId )
{ {
terrainTexImage->setImage( image ); terrainTexImage->setImage( image );
@ -487,7 +487,7 @@ class QgsGlobeMapUpdateJobFactory : public QgsChunkQueueJobFactory
QgsGlobeEntity::QgsGlobeEntity( Qgs3DMapSettings *mapSettings ) QgsGlobeEntity::QgsGlobeEntity( Qgs3DMapSettings *mapSettings )
: QgsChunkedEntity( mapSettings, mapSettings->terrainSettings()->maximumScreenError(), new QgsGlobeChunkLoaderFactory( mapSettings ), true ) : QgsChunkedEntity( mapSettings, mapSettings->terrainSettings()->maximumScreenError(), new QgsGlobeChunkLoaderFactory( mapSettings ), true )
{ {
connect( mapSettings, &Qgs3DMapSettings::showTerrainBoundingBoxesChanged, this, [=] { connect( mapSettings, &Qgs3DMapSettings::showTerrainBoundingBoxesChanged, this, [this, mapSettings] {
setShowBoundingBoxes( mapSettings->showTerrainBoundingBoxes() ); setShowBoundingBoxes( mapSettings->showTerrainBoundingBoxes() );
} ); } );
connect( mapSettings, &Qgs3DMapSettings::showTerrainTilesInfoChanged, this, &QgsGlobeEntity::invalidateMapImages ); connect( mapSettings, &Qgs3DMapSettings::showTerrainTilesInfoChanged, this, &QgsGlobeEntity::invalidateMapImages );

View File

@ -135,7 +135,7 @@ bool QgsVectorWarperTask::run()
QgsVectorWarper warper( mMethod, mPoints, mDestinationCrs ); QgsVectorWarper warper( mMethod, mPoints, mDestinationCrs );
connect( mFeedback.get(), &QgsFeedback::processedCountChanged, this, [=]( long long count ) { connect( mFeedback.get(), &QgsFeedback::processedCountChanged, this, [this]( long long count ) {
const double newProgress = 100.0 * count / mFeatureCount; const double newProgress = 100.0 * count / mFeatureCount;
// avoid flooding with too many events // avoid flooding with too many events
if ( static_cast<int>( newProgress * 10 ) != static_cast<int>( mLastProgress * 10 ) ) if ( static_cast<int>( newProgress * 10 ) != static_cast<int>( mLastProgress * 10 ) )

View File

@ -73,10 +73,10 @@ QVariantMap QgsPdalInformationAlgorithm::processAlgorithm( const QVariantMap &pa
QStringList commandOutput; QStringList commandOutput;
QgsBlockingProcess wrenchProcess( wrenchPath, processArgs ); QgsBlockingProcess wrenchProcess( wrenchPath, processArgs );
wrenchProcess.setStdErrHandler( [=]( const QByteArray &ba ) { wrenchProcess.setStdErrHandler( [feedback]( const QByteArray &ba ) {
feedback->reportError( ba.trimmed() ); feedback->reportError( ba.trimmed() );
} ); } );
wrenchProcess.setStdOutHandler( [=, &commandOutput]( const QByteArray &ba ) { wrenchProcess.setStdOutHandler( [feedback, &commandOutput]( const QByteArray &ba ) {
feedback->pushConsoleInfo( ba.trimmed() ); feedback->pushConsoleInfo( ba.trimmed() );
commandOutput << ba; commandOutput << ba;
} ); } );

View File

@ -189,10 +189,10 @@ QVariantMap QgsPdalAlgorithmBase::processAlgorithm( const QVariantMap &parameter
QString buffer; QString buffer;
QgsBlockingProcess wrenchProcess( wrenchPath, processArgs ); QgsBlockingProcess wrenchProcess( wrenchPath, processArgs );
wrenchProcess.setStdErrHandler( [=]( const QByteArray &ba ) { wrenchProcess.setStdErrHandler( [feedback]( const QByteArray &ba ) {
feedback->reportError( ba.trimmed() ); feedback->reportError( ba.trimmed() );
} ); } );
wrenchProcess.setStdOutHandler( [=, &progress, &buffer]( const QByteArray &ba ) { wrenchProcess.setStdOutHandler( [feedback, &progress, &buffer]( const QByteArray &ba ) {
QString data( ba ); QString data( ba );
QRegularExpression re( "\\.*(\\d+)?\\.*$" ); QRegularExpression re( "\\.*(\\d+)?\\.*$" );

View File

@ -137,7 +137,7 @@ QgsFeatureList QgsDrapeAlgorithmBase::processFeature( const QgsFeature &feature,
// a pointless iteration over all vertices // a pointless iteration over all vertices
if ( !mRasterExtent.isNull() && geometry.boundingBoxIntersects( mRasterExtent ) ) if ( !mRasterExtent.isNull() && geometry.boundingBoxIntersects( mRasterExtent ) )
{ {
geometry.transformVertices( [=]( const QgsPoint &p ) -> QgsPoint { geometry.transformVertices( [this, nodata, scale, offset, feedback, &f]( const QgsPoint &p ) -> QgsPoint {
QgsPointXY t; QgsPointXY t;
double val = nodata; double val = nodata;
try try

View File

@ -111,10 +111,10 @@ QVariantMap QgsConvertGpxFeatureTypeAlgorithm::processAlgorithm( const QVariantM
feedback->pushCommandInfo( QObject::tr( "Conversion command: " ) + babelPath + ' ' + logArgs.join( ' ' ) ); feedback->pushCommandInfo( QObject::tr( "Conversion command: " ) + babelPath + ' ' + logArgs.join( ' ' ) );
QgsBlockingProcess babelProcess( babelPath, processArgs ); QgsBlockingProcess babelProcess( babelPath, processArgs );
babelProcess.setStdErrHandler( [=]( const QByteArray &ba ) { babelProcess.setStdErrHandler( [feedback]( const QByteArray &ba ) {
feedback->reportError( ba ); feedback->reportError( ba );
} ); } );
babelProcess.setStdOutHandler( [=]( const QByteArray &ba ) { babelProcess.setStdOutHandler( [feedback]( const QByteArray &ba ) {
feedback->pushDebugInfo( ba ); feedback->pushDebugInfo( ba );
} ); } );
@ -355,10 +355,10 @@ QVariantMap QgsConvertGpsDataAlgorithm::processAlgorithm( const QVariantMap &par
feedback->pushCommandInfo( QObject::tr( "Conversion command: " ) + logCommand.join( ' ' ) ); feedback->pushCommandInfo( QObject::tr( "Conversion command: " ) + logCommand.join( ' ' ) );
QgsBlockingProcess babelProcess( processCommand.value( 0 ), processCommand.mid( 1 ) ); QgsBlockingProcess babelProcess( processCommand.value( 0 ), processCommand.mid( 1 ) );
babelProcess.setStdErrHandler( [=]( const QByteArray &ba ) { babelProcess.setStdErrHandler( [feedback]( const QByteArray &ba ) {
feedback->reportError( ba ); feedback->reportError( ba );
} ); } );
babelProcess.setStdOutHandler( [=]( const QByteArray &ba ) { babelProcess.setStdOutHandler( [feedback]( const QByteArray &ba ) {
feedback->pushDebugInfo( ba ); feedback->pushDebugInfo( ba );
} ); } );
@ -576,10 +576,10 @@ QVariantMap QgsDownloadGpsDataAlgorithm::processAlgorithm( const QVariantMap &pa
feedback->pushCommandInfo( QObject::tr( "Download command: " ) + logCommand.join( ' ' ) ); feedback->pushCommandInfo( QObject::tr( "Download command: " ) + logCommand.join( ' ' ) );
QgsBlockingProcess babelProcess( processCommand.value( 0 ), processCommand.mid( 1 ) ); QgsBlockingProcess babelProcess( processCommand.value( 0 ), processCommand.mid( 1 ) );
babelProcess.setStdErrHandler( [=]( const QByteArray &ba ) { babelProcess.setStdErrHandler( [feedback]( const QByteArray &ba ) {
feedback->reportError( ba ); feedback->reportError( ba );
} ); } );
babelProcess.setStdOutHandler( [=]( const QByteArray &ba ) { babelProcess.setStdOutHandler( [feedback]( const QByteArray &ba ) {
feedback->pushDebugInfo( ba ); feedback->pushDebugInfo( ba );
} ); } );
@ -796,10 +796,10 @@ QVariantMap QgsUploadGpsDataAlgorithm::processAlgorithm( const QVariantMap &para
feedback->pushCommandInfo( QObject::tr( "Upload command: " ) + logCommand.join( ' ' ) ); feedback->pushCommandInfo( QObject::tr( "Upload command: " ) + logCommand.join( ' ' ) );
QgsBlockingProcess babelProcess( processCommand.value( 0 ), processCommand.mid( 1 ) ); QgsBlockingProcess babelProcess( processCommand.value( 0 ), processCommand.mid( 1 ) );
babelProcess.setStdErrHandler( [=]( const QByteArray &ba ) { babelProcess.setStdErrHandler( [feedback]( const QByteArray &ba ) {
feedback->reportError( ba ); feedback->reportError( ba );
} ); } );
babelProcess.setStdOutHandler( [=]( const QByteArray &ba ) { babelProcess.setStdOutHandler( [feedback]( const QByteArray &ba ) {
feedback->pushDebugInfo( ba ); feedback->pushDebugInfo( ba );
} ); } );

View File

@ -61,6 +61,9 @@ void QgsPackageAlgorithm::initAlgorithm( const QVariantMap & )
addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "SAVE_METADATA" ), QObject::tr( "Save layer metadata into GeoPackage" ), true ) ); addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "SAVE_METADATA" ), QObject::tr( "Save layer metadata into GeoPackage" ), true ) );
addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "SELECTED_FEATURES_ONLY" ), QObject::tr( "Save only selected features" ), false ) ); addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "SELECTED_FEATURES_ONLY" ), QObject::tr( "Save only selected features" ), false ) );
addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "EXPORT_RELATED_LAYERS" ), QObject::tr( "Export related layers following relations defined in the project" ), false ) ); addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "EXPORT_RELATED_LAYERS" ), QObject::tr( "Export related layers following relations defined in the project" ), false ) );
auto extentParam = std::make_unique<QgsProcessingParameterExtent>( QStringLiteral( "EXTENT" ), QObject::tr( "Extent" ), QVariant(), true );
extentParam->setHelp( QObject::tr( "Limit exported features to those with geometries intersecting the provided extent" ) );
addParameter( extentParam.release() );
addOutput( new QgsProcessingOutputMultipleLayers( QStringLiteral( "OUTPUT_LAYERS" ), QObject::tr( "Layers within new package" ) ) ); addOutput( new QgsProcessingOutputMultipleLayers( QStringLiteral( "OUTPUT_LAYERS" ), QObject::tr( "Layers within new package" ) ) );
} }
@ -139,7 +142,7 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap &parameters
int recursionGuard { 0 }; int recursionGuard { 0 };
// This function recursively finds referenced layers // This function recursively finds referenced layers
const auto findReferenced = [=, &project, &feedback, &recursionGuard, &layers]( const QgsVectorLayer *vLayer, bool onlySaveSelected, auto &&findReferenced ) -> void { const auto findReferenced = [this, &project, &feedback, &recursionGuard, &layers]( const QgsVectorLayer *vLayer, bool onlySaveSelected, auto &&findReferenced ) -> void {
const QgsVectorLayer *originalLayer { qobject_cast<QgsVectorLayer *>( project->mapLayer( mClonedLayerIds.value( vLayer->id(), vLayer->id() ) ) ) }; const QgsVectorLayer *originalLayer { qobject_cast<QgsVectorLayer *>( project->mapLayer( mClonedLayerIds.value( vLayer->id(), vLayer->id() ) ) ) };
Q_ASSERT( originalLayer ); Q_ASSERT( originalLayer );
const QList<QgsRelation> relations { project->relationManager()->referencingRelations( originalLayer ) }; const QList<QgsRelation> relations { project->relationManager()->referencingRelations( originalLayer ) };
@ -205,7 +208,7 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap &parameters
}; };
// This function recursively finds referencing layers // This function recursively finds referencing layers
const auto findReferencing = [=, &project, &feedback, &recursionGuard, &layers]( const QgsVectorLayer *vLayer, bool onlySaveSelected, auto &&findReferencing ) -> void { const auto findReferencing = [this, &project, &feedback, &recursionGuard, &layers]( const QgsVectorLayer *vLayer, bool onlySaveSelected, auto &&findReferencing ) -> void {
const QgsVectorLayer *originalLayer { qobject_cast<QgsVectorLayer *>( project->mapLayer( mClonedLayerIds.value( vLayer->id(), vLayer->id() ) ) ) }; const QgsVectorLayer *originalLayer { qobject_cast<QgsVectorLayer *>( project->mapLayer( mClonedLayerIds.value( vLayer->id(), vLayer->id() ) ) ) };
Q_ASSERT( originalLayer ); Q_ASSERT( originalLayer );
const QList<QgsRelation> relations { project->relationManager()->referencedRelations( originalLayer ) }; const QList<QgsRelation> relations { project->relationManager()->referencedRelations( originalLayer ) };
@ -309,6 +312,7 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap &parameters
throw QgsProcessingException( QObject::tr( "Opening database %1 failed (OGR error: %2)" ).arg( packagePath, QString::fromUtf8( CPLGetLastErrorMsg() ) ) ); throw QgsProcessingException( QObject::tr( "Opening database %1 failed (OGR error: %2)" ).arg( packagePath, QString::fromUtf8( CPLGetLastErrorMsg() ) ) );
} }
const bool validExtent = parameters.value( QStringLiteral( "EXTENT" ) ).isValid();
bool errored = false; bool errored = false;
@ -335,12 +339,25 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap &parameters
feedback->pushInfo( QObject::tr( "Packaging layer %1/%2: %3" ).arg( i ).arg( mLayers.size() ).arg( layer ? layer->name() : QString() ) ); feedback->pushInfo( QObject::tr( "Packaging layer %1/%2: %3" ).arg( i ).arg( mLayers.size() ).arg( layer ? layer->name() : QString() ) );
QgsRectangle extent;
switch ( layer->type() ) switch ( layer->type() )
{ {
case Qgis::LayerType::Vector: case Qgis::LayerType::Vector:
{ {
QgsVectorLayer *vectorLayer = qobject_cast<QgsVectorLayer *>( layer.get() ); QgsVectorLayer *vectorLayer = qobject_cast<QgsVectorLayer *>( layer.get() );
if ( !packageVectorLayer( vectorLayer, packagePath, context, &multiStepFeedback, saveStyles, saveMetadata, selectedFeaturesOnly ) )
if ( validExtent )
{
if ( vectorLayer->hasSpatialIndex() == Qgis::SpatialIndexPresence::NotPresent )
{
feedback->pushWarning( QObject::tr( "No spatial index exists for layer %1, performance will be severely degraded" ).arg( vectorLayer->name() ) );
}
extent = parameterAsExtent( parameters, QStringLiteral( "EXTENT" ), context, layer->crs() );
}
if ( !packageVectorLayer( vectorLayer, packagePath, context, &multiStepFeedback, saveStyles, saveMetadata, selectedFeaturesOnly, extent ) )
errored = true; errored = true;
else else
outputLayers.append( QStringLiteral( "%1|layername=%2" ).arg( packagePath, layer->name() ) ); outputLayers.append( QStringLiteral( "%1|layername=%2" ).arg( packagePath, layer->name() ) );
@ -408,7 +425,7 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap &parameters
return outputs; return outputs;
} }
bool QgsPackageAlgorithm::packageVectorLayer( QgsVectorLayer *layer, const QString &path, QgsProcessingContext &context, QgsProcessingFeedback *feedback, bool saveStyles, bool saveMetadata, bool selectedFeaturesOnly ) bool QgsPackageAlgorithm::packageVectorLayer( QgsVectorLayer *layer, const QString &path, QgsProcessingContext &context, QgsProcessingFeedback *feedback, bool saveStyles, bool saveMetadata, bool selectedFeaturesOnly, const QgsRectangle &extent )
{ {
QgsVectorFileWriter::SaveVectorOptions options; QgsVectorFileWriter::SaveVectorOptions options;
options.driverName = QStringLiteral( "GPKG" ); options.driverName = QStringLiteral( "GPKG" );
@ -450,6 +467,11 @@ bool QgsPackageAlgorithm::packageVectorLayer( QgsVectorLayer *layer, const QStri
options.skipAttributeCreation = true; options.skipAttributeCreation = true;
} }
if ( !extent.isNull() )
{
options.filterExtent = extent;
}
QString error; QString error;
QString newFilename; QString newFilename;
QString newLayer; QString newLayer;

View File

@ -49,7 +49,7 @@ class QgsPackageAlgorithm : public QgsProcessingAlgorithm
QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override; QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
private: private:
bool packageVectorLayer( QgsVectorLayer *layer, const QString &path, QgsProcessingContext &context, QgsProcessingFeedback *feedback, bool saveStyles, bool saveMetadata, bool selectedFeaturesOnly ); bool packageVectorLayer( QgsVectorLayer *layer, const QString &path, QgsProcessingContext &context, QgsProcessingFeedback *feedback, bool saveStyles, bool saveMetadata, bool selectedFeaturesOnly, const QgsRectangle &extent );
std::vector<std::unique_ptr<QgsMapLayer>> mLayers; std::vector<std::unique_ptr<QgsMapLayer>> mLayers;
QMap<QString, QString> mClonedLayerIds; QMap<QString, QString> mClonedLayerIds;

View File

@ -179,7 +179,7 @@ QVariantMap QgsRasterBooleanLogicAlgorithmBase::processAlgorithm( const QVariant
QgsRasterLogicalOrAlgorithm::QgsRasterLogicalOrAlgorithm() QgsRasterLogicalOrAlgorithm::QgsRasterLogicalOrAlgorithm()
{ {
mExtractValFunc = [=]( const std::vector<std::unique_ptr<QgsRasterBlock>> &inputs, bool &res, bool &resIsNoData, int row, int column, bool treatNoDataAsFalse ) { mExtractValFunc = []( const std::vector<std::unique_ptr<QgsRasterBlock>> &inputs, bool &res, bool &resIsNoData, int row, int column, bool treatNoDataAsFalse ) {
res = false; res = false;
resIsNoData = false; resIsNoData = false;
bool isNoData = false; bool isNoData = false;
@ -252,7 +252,7 @@ QgsRasterLogicalOrAlgorithm *QgsRasterLogicalOrAlgorithm::createInstance() const
QgsRasterLogicalAndAlgorithm::QgsRasterLogicalAndAlgorithm() QgsRasterLogicalAndAlgorithm::QgsRasterLogicalAndAlgorithm()
{ {
mExtractValFunc = [=]( const std::vector<std::unique_ptr<QgsRasterBlock>> &inputs, bool &res, bool &resIsNoData, int row, int column, bool treatNoDataAsFalse ) { mExtractValFunc = []( const std::vector<std::unique_ptr<QgsRasterBlock>> &inputs, bool &res, bool &resIsNoData, int row, int column, bool treatNoDataAsFalse ) {
res = true; res = true;
resIsNoData = false; resIsNoData = false;
bool isNoData = false; bool isNoData = false;

View File

@ -40,7 +40,7 @@ Qgs3DAnimationExportDialog::Qgs3DAnimationExportDialog()
QValidator *validator = new QRegularExpressionValidator( rx, this ); QValidator *validator = new QRegularExpressionValidator( rx, this );
mTemplateLineEdit->setValidator( validator ); mTemplateLineEdit->setValidator( validator );
connect( mTemplateLineEdit, &QLineEdit::textChanged, this, [=] { connect( mTemplateLineEdit, &QLineEdit::textChanged, this, [this] {
QgsSettings settings; QgsSettings settings;
settings.setValue( QStringLiteral( "Export3DAnimation/fileNameTemplate" ), mTemplateLineEdit->text() ); settings.setValue( QStringLiteral( "Export3DAnimation/fileNameTemplate" ), mTemplateLineEdit->text() );
} ); } );
@ -51,30 +51,30 @@ Qgs3DAnimationExportDialog::Qgs3DAnimationExportDialog()
mOutputDirFileWidget->setDefaultRoot( settings.value( QStringLiteral( "Export3DAnimation/lastDir" ), QString(), QgsSettings::App ).toString() ); mOutputDirFileWidget->setDefaultRoot( settings.value( QStringLiteral( "Export3DAnimation/lastDir" ), QString(), QgsSettings::App ).toString() );
mOutputDirFileWidget->setFilePath( settings.value( QStringLiteral( "Export3DAnimation/lastDir" ), QString(), QgsSettings::App ).toString() ); mOutputDirFileWidget->setFilePath( settings.value( QStringLiteral( "Export3DAnimation/lastDir" ), QString(), QgsSettings::App ).toString() );
connect( mOutputDirFileWidget, &QgsFileWidget::fileChanged, this, [=] { connect( mOutputDirFileWidget, &QgsFileWidget::fileChanged, this, [this] {
QgsSettings settings; QgsSettings settings;
settings.setValue( QStringLiteral( "Export3DAnimation/lastDir" ), mOutputDirFileWidget->filePath(), QgsSettings::App ); settings.setValue( QStringLiteral( "Export3DAnimation/lastDir" ), mOutputDirFileWidget->filePath(), QgsSettings::App );
} ); } );
mFpsSpinBox->setValue( settings.value( QStringLiteral( "Export3DAnimation/fps" ), 30 ).toInt() ); mFpsSpinBox->setValue( settings.value( QStringLiteral( "Export3DAnimation/fps" ), 30 ).toInt() );
connect( mFpsSpinBox, static_cast<void ( QSpinBox::* )( int )>( &QgsSpinBox::valueChanged ), this, [=] { connect( mFpsSpinBox, static_cast<void ( QSpinBox::* )( int )>( &QgsSpinBox::valueChanged ), this, [this] {
QgsSettings settings; QgsSettings settings;
settings.setValue( QStringLiteral( "Export3DAnimation/fps" ), mFpsSpinBox->value() ); settings.setValue( QStringLiteral( "Export3DAnimation/fps" ), mFpsSpinBox->value() );
} ); } );
mWidthSpinBox->setValue( settings.value( QStringLiteral( "Export3DAnimation/width" ), 800 ).toInt() ); mWidthSpinBox->setValue( settings.value( QStringLiteral( "Export3DAnimation/width" ), 800 ).toInt() );
connect( mWidthSpinBox, static_cast<void ( QSpinBox::* )( int )>( &QgsSpinBox::valueChanged ), this, [=] { connect( mWidthSpinBox, static_cast<void ( QSpinBox::* )( int )>( &QgsSpinBox::valueChanged ), this, [this] {
QgsSettings settings; QgsSettings settings;
settings.setValue( QStringLiteral( "Export3DAnimation/width" ), mWidthSpinBox->value() ); settings.setValue( QStringLiteral( "Export3DAnimation/width" ), mWidthSpinBox->value() );
} ); } );
mHeightSpinBox->setValue( settings.value( QStringLiteral( "Export3DAnimation/height" ), 600 ).toInt() ); mHeightSpinBox->setValue( settings.value( QStringLiteral( "Export3DAnimation/height" ), 600 ).toInt() );
connect( mHeightSpinBox, static_cast<void ( QSpinBox::* )( int )>( &QgsSpinBox::valueChanged ), this, [=] { connect( mHeightSpinBox, static_cast<void ( QSpinBox::* )( int )>( &QgsSpinBox::valueChanged ), this, [this] {
QgsSettings settings; QgsSettings settings;
settings.setValue( QStringLiteral( "Export3DAnimation/height" ), mHeightSpinBox->value() ); settings.setValue( QStringLiteral( "Export3DAnimation/height" ), mHeightSpinBox->value() );
} ); } );
connect( mButtonBox, &QDialogButtonBox::helpRequested, this, [=] { connect( mButtonBox, &QDialogButtonBox::helpRequested, this, [] {
QgsHelp::openHelp( QStringLiteral( "map_views/3d_map_view.html#create-animation" ) ); QgsHelp::openHelp( QStringLiteral( "map_views/3d_map_view.html#create-animation" ) );
} ); } );

View File

@ -75,29 +75,29 @@ void Qgs3DDebugWidget::setMapSettings( Qgs3DMapSettings *mapSettings )
whileBlocking( chkStopUpdates )->setChecked( mMap->stopUpdates() ); whileBlocking( chkStopUpdates )->setChecked( mMap->stopUpdates() );
whileBlocking( chkStopOriginShifts )->setChecked( !m3DMapCanvas->scene()->hasSceneOriginShiftEnabled() ); whileBlocking( chkStopOriginShifts )->setChecked( !m3DMapCanvas->scene()->hasSceneOriginShiftEnabled() );
whileBlocking( chkDebugOverlay )->setChecked( mMap->isDebugOverlayEnabled() ); whileBlocking( chkDebugOverlay )->setChecked( mMap->isDebugOverlayEnabled() );
connect( chkShowTileInfo, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setShowTerrainTilesInfo( enabled ); } ); connect( chkShowTileInfo, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setShowTerrainTilesInfo( enabled ); } );
connect( chkShowBoundingBoxes, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setShowTerrainBoundingBoxes( enabled ); } ); connect( chkShowBoundingBoxes, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setShowTerrainBoundingBoxes( enabled ); } );
connect( chkShowCameraViewCenter, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setShowCameraViewCenter( enabled ); } ); connect( chkShowCameraViewCenter, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setShowCameraViewCenter( enabled ); } );
connect( chkShowCameraRotationCenter, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setShowCameraRotationCenter( enabled ); } ); connect( chkShowCameraRotationCenter, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setShowCameraRotationCenter( enabled ); } );
connect( chkShowLightSourceOrigins, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setShowLightSourceOrigins( enabled ); } ); connect( chkShowLightSourceOrigins, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setShowLightSourceOrigins( enabled ); } );
connect( chkStopUpdates, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setStopUpdates( enabled ); } ); connect( chkStopUpdates, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setStopUpdates( enabled ); } );
connect( chkStopOriginShifts, &QCheckBox::toggled, this, [=]( const bool enabled ) { connect( chkStopOriginShifts, &QCheckBox::toggled, this, [this]( const bool enabled ) {
m3DMapCanvas->scene()->setSceneOriginShiftEnabled( !enabled ); m3DMapCanvas->scene()->setSceneOriginShiftEnabled( !enabled );
} ); } );
connect( chkDebugOverlay, &QCheckBox::toggled, this, [=]( const bool enabled ) { mMap->setIsDebugOverlayEnabled( enabled ); } ); connect( chkDebugOverlay, &QCheckBox::toggled, this, [this]( const bool enabled ) { mMap->setIsDebugOverlayEnabled( enabled ); } );
// set up the shadow map block // set up the shadow map block
whileBlocking( mDebugShadowMapGroupBox )->setChecked( mMap->debugShadowMapEnabled() ); whileBlocking( mDebugShadowMapGroupBox )->setChecked( mMap->debugShadowMapEnabled() );
whileBlocking( mDebugShadowMapCornerComboBox )->setCurrentIndex( mMap->debugShadowMapCorner() ); whileBlocking( mDebugShadowMapCornerComboBox )->setCurrentIndex( mMap->debugShadowMapCorner() );
whileBlocking( mDebugShadowMapSizeSpinBox )->setValue( mMap->debugShadowMapSize() ); whileBlocking( mDebugShadowMapSizeSpinBox )->setValue( mMap->debugShadowMapSize() );
// Do not display the shadow debug map if the shadow effect is not enabled. // Do not display the shadow debug map if the shadow effect is not enabled.
connect( mDebugShadowMapGroupBox, &QGroupBox::toggled, this, [=]( const bool enabled ) { connect( mDebugShadowMapGroupBox, &QGroupBox::toggled, this, [this]( const bool enabled ) {
mMap->setDebugShadowMapSettings( enabled && mMap->shadowSettings().renderShadows(), static_cast<Qt::Corner>( mDebugShadowMapCornerComboBox->currentIndex() ), mDebugShadowMapSizeSpinBox->value() ); mMap->setDebugShadowMapSettings( enabled && mMap->shadowSettings().renderShadows(), static_cast<Qt::Corner>( mDebugShadowMapCornerComboBox->currentIndex() ), mDebugShadowMapSizeSpinBox->value() );
} ); } );
connect( mDebugShadowMapCornerComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( const int index ) { connect( mDebugShadowMapCornerComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( const int index ) {
mMap->setDebugShadowMapSettings( mDebugShadowMapGroupBox->isChecked() && mMap->shadowSettings().renderShadows(), static_cast<Qt::Corner>( index ), mDebugShadowMapSizeSpinBox->value() ); mMap->setDebugShadowMapSettings( mDebugShadowMapGroupBox->isChecked() && mMap->shadowSettings().renderShadows(), static_cast<Qt::Corner>( index ), mDebugShadowMapSizeSpinBox->value() );
} ); } );
connect( mDebugShadowMapSizeSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mDebugShadowMapSizeSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
mMap->setDebugShadowMapSettings( mDebugShadowMapGroupBox->isChecked() && mMap->shadowSettings().renderShadows(), static_cast<Qt::Corner>( mDebugShadowMapCornerComboBox->currentIndex() ), value ); mMap->setDebugShadowMapSettings( mDebugShadowMapGroupBox->isChecked() && mMap->shadowSettings().renderShadows(), static_cast<Qt::Corner>( mDebugShadowMapCornerComboBox->currentIndex() ), value );
} ); } );
@ -105,39 +105,39 @@ void Qgs3DDebugWidget::setMapSettings( Qgs3DMapSettings *mapSettings )
whileBlocking( mDebugDepthMapGroupBox )->setChecked( mMap->debugDepthMapEnabled() ); whileBlocking( mDebugDepthMapGroupBox )->setChecked( mMap->debugDepthMapEnabled() );
whileBlocking( mDebugDepthMapCornerComboBox )->setCurrentIndex( mMap->debugDepthMapCorner() ); whileBlocking( mDebugDepthMapCornerComboBox )->setCurrentIndex( mMap->debugDepthMapCorner() );
whileBlocking( mDebugDepthMapSizeSpinBox )->setValue( mMap->debugDepthMapSize() ); whileBlocking( mDebugDepthMapSizeSpinBox )->setValue( mMap->debugDepthMapSize() );
connect( mDebugDepthMapGroupBox, &QGroupBox::toggled, this, [=]( const bool enabled ) { connect( mDebugDepthMapGroupBox, &QGroupBox::toggled, this, [this]( const bool enabled ) {
mMap->setDebugDepthMapSettings( enabled, static_cast<Qt::Corner>( mDebugDepthMapCornerComboBox->currentIndex() ), mDebugDepthMapSizeSpinBox->value() ); mMap->setDebugDepthMapSettings( enabled, static_cast<Qt::Corner>( mDebugDepthMapCornerComboBox->currentIndex() ), mDebugDepthMapSizeSpinBox->value() );
} ); } );
connect( mDebugDepthMapCornerComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( const int index ) { connect( mDebugDepthMapCornerComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( const int index ) {
mMap->setDebugDepthMapSettings( mDebugDepthMapGroupBox->isChecked(), static_cast<Qt::Corner>( index ), mDebugDepthMapSizeSpinBox->value() ); mMap->setDebugDepthMapSettings( mDebugDepthMapGroupBox->isChecked(), static_cast<Qt::Corner>( index ), mDebugDepthMapSizeSpinBox->value() );
} ); } );
connect( mDebugDepthMapSizeSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mDebugDepthMapSizeSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
mMap->setDebugDepthMapSettings( mDebugDepthMapGroupBox->isChecked(), static_cast<Qt::Corner>( mDebugDepthMapCornerComboBox->currentIndex() ), value ); mMap->setDebugDepthMapSettings( mDebugDepthMapGroupBox->isChecked(), static_cast<Qt::Corner>( mDebugDepthMapCornerComboBox->currentIndex() ), value );
} ); } );
// connect the camera info spin boxes with changing functions // connect the camera info spin boxes with changing functions
connect( mNearPlane, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mNearPlane, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
m3DMapCanvas->cameraController()->camera()->setNearPlane( static_cast<float>( value ) ); m3DMapCanvas->cameraController()->camera()->setNearPlane( static_cast<float>( value ) );
} ); } );
connect( mFarPlane, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mFarPlane, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
m3DMapCanvas->cameraController()->camera()->setFarPlane( static_cast<float>( value ) ); m3DMapCanvas->cameraController()->camera()->setFarPlane( static_cast<float>( value ) );
} ); } );
connect( mCameraX, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mCameraX, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
QVector3D newPosition = m3DMapCanvas->cameraController()->camera()->position(); QVector3D newPosition = m3DMapCanvas->cameraController()->camera()->position();
newPosition.setX( static_cast<float>( value ) ); newPosition.setX( static_cast<float>( value ) );
m3DMapCanvas->cameraController()->camera()->setPosition( newPosition ); m3DMapCanvas->cameraController()->camera()->setPosition( newPosition );
} ); } );
connect( mCameraY, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mCameraY, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
QVector3D newPosition = m3DMapCanvas->cameraController()->camera()->position(); QVector3D newPosition = m3DMapCanvas->cameraController()->camera()->position();
newPosition.setY( static_cast<float>( value ) ); newPosition.setY( static_cast<float>( value ) );
m3DMapCanvas->cameraController()->camera()->setPosition( newPosition ); m3DMapCanvas->cameraController()->camera()->setPosition( newPosition );
} ); } );
connect( mCameraZ, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mCameraZ, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
QVector3D newPosition = m3DMapCanvas->cameraController()->camera()->position(); QVector3D newPosition = m3DMapCanvas->cameraController()->camera()->position();
newPosition.setZ( static_cast<float>( value ) ); newPosition.setZ( static_cast<float>( value ) );
m3DMapCanvas->cameraController()->camera()->setPosition( newPosition ); m3DMapCanvas->cameraController()->camera()->setPosition( newPosition );
} ); } );
connect( mLookingX, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mLookingX, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
QgsVector3D newLookingAt = m3DMapCanvas->cameraController()->lookingAtPoint(); QgsVector3D newLookingAt = m3DMapCanvas->cameraController()->lookingAtPoint();
newLookingAt.setX( value ); newLookingAt.setX( value );
m3DMapCanvas->cameraController()->setLookingAtPoint( m3DMapCanvas->cameraController()->setLookingAtPoint(
@ -147,7 +147,7 @@ void Qgs3DDebugWidget::setMapSettings( Qgs3DMapSettings *mapSettings )
m3DMapCanvas->cameraController()->yaw() m3DMapCanvas->cameraController()->yaw()
); );
} ); } );
connect( mLookingY, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mLookingY, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
QgsVector3D newLookingAt = m3DMapCanvas->cameraController()->lookingAtPoint(); QgsVector3D newLookingAt = m3DMapCanvas->cameraController()->lookingAtPoint();
newLookingAt.setY( value ); newLookingAt.setY( value );
m3DMapCanvas->cameraController()->setLookingAtPoint( m3DMapCanvas->cameraController()->setLookingAtPoint(
@ -157,7 +157,7 @@ void Qgs3DDebugWidget::setMapSettings( Qgs3DMapSettings *mapSettings )
m3DMapCanvas->cameraController()->yaw() m3DMapCanvas->cameraController()->yaw()
); );
} ); } );
connect( mLookingZ, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( const double value ) { connect( mLookingZ, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( const double value ) {
QgsVector3D newLookingAt = m3DMapCanvas->cameraController()->lookingAtPoint(); QgsVector3D newLookingAt = m3DMapCanvas->cameraController()->lookingAtPoint();
newLookingAt.setZ( value ); newLookingAt.setZ( value );
m3DMapCanvas->cameraController()->setLookingAtPoint( m3DMapCanvas->cameraController()->setLookingAtPoint(

View File

@ -230,7 +230,7 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mActionSync2DNavTo3D = new QAction( tr( "2D Map View Follows 3D Camera" ), this ); mActionSync2DNavTo3D = new QAction( tr( "2D Map View Follows 3D Camera" ), this );
mActionSync2DNavTo3D->setCheckable( true ); mActionSync2DNavTo3D->setCheckable( true );
connect( mActionSync2DNavTo3D, &QAction::triggered, this, [=]( bool enabled ) { connect( mActionSync2DNavTo3D, &QAction::triggered, this, [this]( bool enabled ) {
Qgis::ViewSyncModeFlags syncMode = mCanvas->mapSettings()->viewSyncMode(); Qgis::ViewSyncModeFlags syncMode = mCanvas->mapSettings()->viewSyncMode();
syncMode.setFlag( Qgis::ViewSyncModeFlag::Sync2DTo3D, enabled ); syncMode.setFlag( Qgis::ViewSyncModeFlag::Sync2DTo3D, enabled );
mCanvas->mapSettings()->setViewSyncMode( syncMode ); mCanvas->mapSettings()->setViewSyncMode( syncMode );
@ -239,7 +239,7 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mActionSync3DNavTo2D = new QAction( tr( "3D Camera Follows 2D Map View" ), this ); mActionSync3DNavTo2D = new QAction( tr( "3D Camera Follows 2D Map View" ), this );
mActionSync3DNavTo2D->setCheckable( true ); mActionSync3DNavTo2D->setCheckable( true );
connect( mActionSync3DNavTo2D, &QAction::triggered, this, [=]( bool enabled ) { connect( mActionSync3DNavTo2D, &QAction::triggered, this, [this]( bool enabled ) {
Qgis::ViewSyncModeFlags syncMode = mCanvas->mapSettings()->viewSyncMode(); Qgis::ViewSyncModeFlags syncMode = mCanvas->mapSettings()->viewSyncMode();
syncMode.setFlag( Qgis::ViewSyncModeFlag::Sync3DTo2D, enabled ); syncMode.setFlag( Qgis::ViewSyncModeFlag::Sync3DTo2D, enabled );
mCanvas->mapSettings()->setViewSyncMode( syncMode ); mCanvas->mapSettings()->setViewSyncMode( syncMode );
@ -248,14 +248,14 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mShowFrustumPolygon = new QAction( tr( "Show Visible Camera Area in 2D Map View" ), this ); mShowFrustumPolygon = new QAction( tr( "Show Visible Camera Area in 2D Map View" ), this );
mShowFrustumPolygon->setCheckable( true ); mShowFrustumPolygon->setCheckable( true );
connect( mShowFrustumPolygon, &QAction::triggered, this, [=]( bool enabled ) { connect( mShowFrustumPolygon, &QAction::triggered, this, [this]( bool enabled ) {
mCanvas->mapSettings()->setViewFrustumVisualizationEnabled( enabled ); mCanvas->mapSettings()->setViewFrustumVisualizationEnabled( enabled );
} ); } );
mCameraMenu->addAction( mShowFrustumPolygon ); mCameraMenu->addAction( mShowFrustumPolygon );
mActionSetSceneExtent = mCameraMenu->addAction( QgsApplication::getThemeIcon( QStringLiteral( "extents.svg" ) ), tr( "Set 3D Scene Extent on 2D Map View" ), this, &Qgs3DMapCanvasWidget::setSceneExtentOn2DCanvas ); mActionSetSceneExtent = mCameraMenu->addAction( QgsApplication::getThemeIcon( QStringLiteral( "extents.svg" ) ), tr( "Set 3D Scene Extent on 2D Map View" ), this, &Qgs3DMapCanvasWidget::setSceneExtentOn2DCanvas );
mActionSetSceneExtent->setCheckable( true ); mActionSetSceneExtent->setCheckable( true );
auto createShortcuts = [=]( const QString &objectName, void ( Qgs3DMapCanvasWidget::*slot )() ) { auto createShortcuts = [this]( const QString &objectName, void ( Qgs3DMapCanvasWidget::*slot )() ) {
if ( QShortcut *sc = QgsGui::shortcutsManager()->shortcutByName( objectName ) ) if ( QShortcut *sc = QgsGui::shortcutsManager()->shortcutByName( objectName ) )
connect( sc, &QShortcut::activated, this, slot ); connect( sc, &QShortcut::activated, this, slot );
}; };
@ -277,7 +277,7 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mActionEnableShadows = new QAction( tr( "Show Shadows" ), this ); mActionEnableShadows = new QAction( tr( "Show Shadows" ), this );
mActionEnableShadows->setCheckable( true ); mActionEnableShadows->setCheckable( true );
connect( mActionEnableShadows, &QAction::toggled, this, [=]( bool enabled ) { connect( mActionEnableShadows, &QAction::toggled, this, [this]( bool enabled ) {
QgsShadowSettings settings = mCanvas->mapSettings()->shadowSettings(); QgsShadowSettings settings = mCanvas->mapSettings()->shadowSettings();
settings.setRenderShadows( enabled ); settings.setRenderShadows( enabled );
mCanvas->mapSettings()->setShadowSettings( settings ); mCanvas->mapSettings()->setShadowSettings( settings );
@ -286,14 +286,14 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mActionEnableEyeDome = new QAction( tr( "Show Eye Dome Lighting" ), this ); mActionEnableEyeDome = new QAction( tr( "Show Eye Dome Lighting" ), this );
mActionEnableEyeDome->setCheckable( true ); mActionEnableEyeDome->setCheckable( true );
connect( mActionEnableEyeDome, &QAction::triggered, this, [=]( bool enabled ) { connect( mActionEnableEyeDome, &QAction::triggered, this, [this]( bool enabled ) {
mCanvas->mapSettings()->setEyeDomeLightingEnabled( enabled ); mCanvas->mapSettings()->setEyeDomeLightingEnabled( enabled );
} ); } );
mEffectsMenu->addAction( mActionEnableEyeDome ); mEffectsMenu->addAction( mActionEnableEyeDome );
mActionEnableAmbientOcclusion = new QAction( tr( "Show Ambient Occlusion" ), this ); mActionEnableAmbientOcclusion = new QAction( tr( "Show Ambient Occlusion" ), this );
mActionEnableAmbientOcclusion->setCheckable( true ); mActionEnableAmbientOcclusion->setCheckable( true );
connect( mActionEnableAmbientOcclusion, &QAction::triggered, this, [=]( bool enabled ) { connect( mActionEnableAmbientOcclusion, &QAction::triggered, this, [this]( bool enabled ) {
QgsAmbientOcclusionSettings ambientOcclusionSettings = mCanvas->mapSettings()->ambientOcclusionSettings(); QgsAmbientOcclusionSettings ambientOcclusionSettings = mCanvas->mapSettings()->ambientOcclusionSettings();
ambientOcclusionSettings.setEnabled( enabled ); ambientOcclusionSettings.setEnabled( enabled );
mCanvas->mapSettings()->setAmbientOcclusionSettings( ambientOcclusionSettings ); mCanvas->mapSettings()->setAmbientOcclusionSettings( ambientOcclusionSettings );
@ -308,7 +308,7 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mCanvas = new Qgs3DMapCanvas; mCanvas = new Qgs3DMapCanvas;
mCanvas->setMinimumSize( QSize( 200, 200 ) ); mCanvas->setMinimumSize( QSize( 200, 200 ) );
connect( mCanvas, &Qgs3DMapCanvas::savedAsImage, this, [=]( const QString &fileName ) { connect( mCanvas, &Qgs3DMapCanvas::savedAsImage, this, []( const QString &fileName ) {
QgisApp::instance()->messageBar()->pushSuccess( tr( "Save as Image" ), tr( "Successfully saved the 3D map to <a href=\"%1\">%2</a>" ).arg( QUrl::fromLocalFile( fileName ).toString(), QDir::toNativeSeparators( fileName ) ) ); QgisApp::instance()->messageBar()->pushSuccess( tr( "Save as Image" ), tr( "Successfully saved the 3D map to <a href=\"%1\">%2</a>" ).arg( QUrl::fromLocalFile( fileName ).toString(), QDir::toNativeSeparators( fileName ) ) );
} ); } );
@ -353,7 +353,7 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
mLabelNavSpeedHideTimeout = new QTimer( this ); mLabelNavSpeedHideTimeout = new QTimer( this );
mLabelNavSpeedHideTimeout->setInterval( 1000 ); mLabelNavSpeedHideTimeout->setInterval( 1000 );
connect( mLabelNavSpeedHideTimeout, &QTimer::timeout, this, [=] { connect( mLabelNavSpeedHideTimeout, &QTimer::timeout, this, [this] {
mLabelNavigationSpeed->hide(); mLabelNavigationSpeed->hide();
mLabelNavSpeedHideTimeout->stop(); mLabelNavSpeedHideTimeout->stop();
} ); } );
@ -404,10 +404,10 @@ Qgs3DMapCanvasWidget::Qgs3DMapCanvasWidget( const QString &name, bool isDocked )
} }
QAction *dockAction = mDockableWidgetHelper->createDockUndockAction( tr( "Dock 3D Map View" ), this ); QAction *dockAction = mDockableWidgetHelper->createDockUndockAction( tr( "Dock 3D Map View" ), this );
toolBar->addAction( dockAction ); toolBar->addAction( dockAction );
connect( mDockableWidgetHelper, &QgsDockableWidgetHelper::closed, this, [=]() { connect( mDockableWidgetHelper, &QgsDockableWidgetHelper::closed, this, [this]() {
QgisApp::instance()->close3DMapView( canvasName() ); QgisApp::instance()->close3DMapView( canvasName() );
} ); } );
connect( dockAction, &QAction::toggled, this, [=]( const bool isSmallSize ) { connect( dockAction, &QAction::toggled, this, [toolBar]( const bool isSmallSize ) {
toolBar->setIconSize( QgisApp::instance()->iconSize( isSmallSize ) ); toolBar->setIconSize( QgisApp::instance()->iconSize( isSmallSize ) );
} ); } );
@ -769,7 +769,7 @@ void Qgs3DMapCanvasWidget::configure()
Qgs3DMapConfigWidget *w = new Qgs3DMapConfigWidget( map, mMainCanvas, mCanvas, mConfigureDialog ); Qgs3DMapConfigWidget *w = new Qgs3DMapConfigWidget( map, mMainCanvas, mCanvas, mConfigureDialog );
QDialogButtonBox *buttons = new QDialogButtonBox( QDialogButtonBox::Apply | QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, mConfigureDialog ); QDialogButtonBox *buttons = new QDialogButtonBox( QDialogButtonBox::Apply | QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, mConfigureDialog );
auto applyConfig = [=]() { auto applyConfig = [this, map, w]() {
const QgsVector3D oldOrigin = map->origin(); const QgsVector3D oldOrigin = map->origin();
const QgsCoordinateReferenceSystem oldCrs = map->crs(); const QgsCoordinateReferenceSystem oldCrs = map->crs();
const QgsCameraPose oldCameraPose = mCanvas->cameraController()->cameraPose(); const QgsCameraPose oldCameraPose = mCanvas->cameraController()->cameraPose();
@ -797,7 +797,7 @@ void Qgs3DMapCanvasWidget::configure()
}; };
connect( buttons, &QDialogButtonBox::rejected, mConfigureDialog, &QDialog::reject ); connect( buttons, &QDialogButtonBox::rejected, mConfigureDialog, &QDialog::reject );
connect( buttons, &QDialogButtonBox::clicked, mConfigureDialog, [=]( QAbstractButton *button ) { connect( buttons, &QDialogButtonBox::clicked, mConfigureDialog, [this, buttons, applyConfig]( QAbstractButton *button ) {
if ( button == buttons->button( QDialogButtonBox::Apply ) || button == buttons->button( QDialogButtonBox::Ok ) ) if ( button == buttons->button( QDialogButtonBox::Apply ) || button == buttons->button( QDialogButtonBox::Ok ) )
applyConfig(); applyConfig();
if ( button == buttons->button( QDialogButtonBox::Ok ) ) if ( button == buttons->button( QDialogButtonBox::Ok ) )
@ -805,7 +805,7 @@ void Qgs3DMapCanvasWidget::configure()
} ); } );
connect( buttons, &QDialogButtonBox::helpRequested, w, []() { QgsHelp::openHelp( QStringLiteral( "map_views/3d_map_view.html#scene-configuration" ) ); } ); connect( buttons, &QDialogButtonBox::helpRequested, w, []() { QgsHelp::openHelp( QStringLiteral( "map_views/3d_map_view.html#scene-configuration" ) ); } );
connect( w, &Qgs3DMapConfigWidget::isValidChanged, this, [=]( bool valid ) { connect( w, &Qgs3DMapConfigWidget::isValidChanged, this, [buttons]( bool valid ) {
buttons->button( QDialogButtonBox::Apply )->setEnabled( valid ); buttons->button( QDialogButtonBox::Apply )->setEnabled( valid );
buttons->button( QDialogButtonBox::Ok )->setEnabled( valid ); buttons->button( QDialogButtonBox::Ok )->setEnabled( valid );
} ); } );
@ -838,7 +838,7 @@ void Qgs3DMapCanvasWidget::exportScene()
connect( buttons, &QDialogButtonBox::accepted, &dlg, &QDialog::accept ); connect( buttons, &QDialogButtonBox::accepted, &dlg, &QDialog::accept );
connect( buttons, &QDialogButtonBox::rejected, &dlg, &QDialog::reject ); connect( buttons, &QDialogButtonBox::rejected, &dlg, &QDialog::reject );
connect( buttons, &QDialogButtonBox::helpRequested, &dlg, [=] { QgsHelp::openHelp( QStringLiteral( "map_views/3d_map_view.html" ) ); } ); connect( buttons, &QDialogButtonBox::helpRequested, &dlg, [] { QgsHelp::openHelp( QStringLiteral( "map_views/3d_map_view.html" ) ); } );
QVBoxLayout *layout = new QVBoxLayout( &dlg ); QVBoxLayout *layout = new QVBoxLayout( &dlg );
layout->addWidget( &exportWidget, 1 ); layout->addWidget( &exportWidget, 1 );
@ -902,7 +902,7 @@ void Qgs3DMapCanvasWidget::mapThemeMenuAboutToShow()
{ {
actionFollowMain->setChecked( true ); actionFollowMain->setChecked( true );
} }
connect( actionFollowMain, &QAction::triggered, this, [=] { connect( actionFollowMain, &QAction::triggered, this, [this] {
mCanvas->mapSettings()->setTerrainMapTheme( QString() ); mCanvas->mapSettings()->setTerrainMapTheme( QString() );
} ); } );
mMapThemeMenuPresetActions.append( actionFollowMain ); mMapThemeMenuPresetActions.append( actionFollowMain );

View File

@ -59,7 +59,7 @@ Qgs3DMapConfigWidget::Qgs3DMapConfigWidget( Qgs3DMapSettings *map, QgsMapCanvas
// get rid of annoying outer focus rect on Mac // get rid of annoying outer focus rect on Mac
m3DOptionsListWidget->setAttribute( Qt::WA_MacShowFocusRect, false ); m3DOptionsListWidget->setAttribute( Qt::WA_MacShowFocusRect, false );
m3DOptionsListWidget->setCurrentRow( settings.value( QStringLiteral( "Windows/3DMapConfig/Tab" ), 0 ).toInt() ); m3DOptionsListWidget->setCurrentRow( settings.value( QStringLiteral( "Windows/3DMapConfig/Tab" ), 0 ).toInt() );
connect( m3DOptionsListWidget, &QListWidget::currentRowChanged, this, [=]( int index ) { m3DOptionsStackedWidget->setCurrentIndex( index ); } ); connect( m3DOptionsListWidget, &QListWidget::currentRowChanged, this, [this]( int index ) { m3DOptionsStackedWidget->setCurrentIndex( index ); } );
m3DOptionsStackedWidget->setCurrentIndex( m3DOptionsListWidget->currentRow() ); m3DOptionsStackedWidget->setCurrentIndex( m3DOptionsListWidget->currentRow() );
if ( !settings.contains( QStringLiteral( "Windows/3DMapConfig/OptionsSplitState" ) ) ) if ( !settings.contains( QStringLiteral( "Windows/3DMapConfig/OptionsSplitState" ) ) )
@ -76,7 +76,7 @@ Qgs3DMapConfigWidget::Qgs3DMapConfigWidget( Qgs3DMapSettings *map, QgsMapCanvas
cboCameraProjectionType->addItem( tr( "Perspective Projection" ), Qt3DRender::QCameraLens::PerspectiveProjection ); cboCameraProjectionType->addItem( tr( "Perspective Projection" ), Qt3DRender::QCameraLens::PerspectiveProjection );
cboCameraProjectionType->addItem( tr( "Orthogonal Projection" ), Qt3DRender::QCameraLens::OrthographicProjection ); cboCameraProjectionType->addItem( tr( "Orthogonal Projection" ), Qt3DRender::QCameraLens::OrthographicProjection );
connect( cboCameraProjectionType, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, [=]() { connect( cboCameraProjectionType, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, [this]() {
spinCameraFieldOfView->setEnabled( cboCameraProjectionType->currentIndex() == cboCameraProjectionType->findData( Qt3DRender::QCameraLens::PerspectiveProjection ) ); spinCameraFieldOfView->setEnabled( cboCameraProjectionType->currentIndex() == cboCameraProjectionType->findData( Qt3DRender::QCameraLens::PerspectiveProjection ) );
} ); } );

View File

@ -47,7 +47,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mZoomInButton, mZoomInButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
QgsCameraController *controller = m3DMapCanvas->cameraController(); QgsCameraController *controller = m3DMapCanvas->cameraController();
if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe )
controller->globeZoom( ZOOM_FACTOR ); controller->globeZoom( ZOOM_FACTOR );
@ -61,7 +61,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mZoomOutButton, mZoomOutButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
QgsCameraController *controller = m3DMapCanvas->cameraController(); QgsCameraController *controller = m3DMapCanvas->cameraController();
if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe )
controller->globeZoom( 1 / ZOOM_FACTOR ); controller->globeZoom( 1 / ZOOM_FACTOR );
@ -75,7 +75,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mTiltUpButton, mTiltUpButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
m3DMapCanvas->cameraController()->tiltUpAroundViewCenter( 1 ); m3DMapCanvas->cameraController()->tiltUpAroundViewCenter( 1 );
} }
); );
@ -85,7 +85,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mTiltDownButton, mTiltDownButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
m3DMapCanvas->cameraController()->tiltUpAroundViewCenter( -1 ); m3DMapCanvas->cameraController()->tiltUpAroundViewCenter( -1 );
} }
); );
@ -98,7 +98,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mCompass, mCompass,
&QwtDial::valueChanged, &QwtDial::valueChanged,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
m3DMapCanvas->cameraController()->setCameraHeadingAngle( float( mCompass->value() ) ); m3DMapCanvas->cameraController()->setCameraHeadingAngle( float( mCompass->value() ) );
} }
); );
@ -108,7 +108,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mMoveUpButton, mMoveUpButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
QgsCameraController *controller = m3DMapCanvas->cameraController(); QgsCameraController *controller = m3DMapCanvas->cameraController();
if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe )
controller->globeMoveCenterPoint( MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint(), 0 ); controller->globeMoveCenterPoint( MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint(), 0 );
@ -122,7 +122,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mMoveRightButton, mMoveRightButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
QgsCameraController *controller = m3DMapCanvas->cameraController(); QgsCameraController *controller = m3DMapCanvas->cameraController();
if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe )
controller->globeMoveCenterPoint( 0, MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint() ); controller->globeMoveCenterPoint( 0, MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint() );
@ -136,7 +136,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mMoveDownButton, mMoveDownButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
QgsCameraController *controller = m3DMapCanvas->cameraController(); QgsCameraController *controller = m3DMapCanvas->cameraController();
if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe )
controller->globeMoveCenterPoint( -MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint(), 0 ); controller->globeMoveCenterPoint( -MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint(), 0 );
@ -150,7 +150,7 @@ Qgs3DNavigationWidget::Qgs3DNavigationWidget( Qgs3DMapCanvas *canvas, QWidget *p
mMoveLeftButton, mMoveLeftButton,
&QToolButton::clicked, &QToolButton::clicked,
m3DMapCanvas, m3DMapCanvas,
[=] { [this] {
QgsCameraController *controller = m3DMapCanvas->cameraController(); QgsCameraController *controller = m3DMapCanvas->cameraController();
if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe ) if ( m3DMapCanvas->mapSettings()->sceneMode() == Qgis::SceneMode::Globe )
controller->globeMoveCenterPoint( 0, -MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint() ); controller->globeMoveCenterPoint( 0, -MOVE_FACTOR * controller->cameraPose().distanceFromCenterPoint() );

View File

@ -38,14 +38,14 @@ QgsMap3DExportWidget::QgsMap3DExportWidget( Qgs3DMapScene *scene, Qgs3DMapExport
loadSettings(); loadSettings();
connect( ui->sceneNameLineEdit, &QLineEdit::textChanged, this, [=]( const QString & ) { settingsChanged(); } ); connect( ui->sceneNameLineEdit, &QLineEdit::textChanged, this, [this]( const QString & ) { settingsChanged(); } );
connect( ui->selectFolderWidget, &QgsFileWidget::fileChanged, this, [=]( const QString & ) { settingsChanged(); } ); connect( ui->selectFolderWidget, &QgsFileWidget::fileChanged, this, [this]( const QString & ) { settingsChanged(); } );
connect( ui->smoothEdgesCheckBox, &QCheckBox::stateChanged, this, [=]( int ) { settingsChanged(); } ); connect( ui->smoothEdgesCheckBox, &QCheckBox::stateChanged, this, [this]( int ) { settingsChanged(); } );
connect( ui->terrainResolutionSpinBox, qOverload<int>( &QSpinBox::valueChanged ), this, [=]( int ) { settingsChanged(); } ); connect( ui->terrainResolutionSpinBox, qOverload<int>( &QSpinBox::valueChanged ), this, [this]( int ) { settingsChanged(); } );
connect( ui->exportNormalsCheckBox, &QCheckBox::stateChanged, this, [=]( int ) { settingsChanged(); } ); connect( ui->exportNormalsCheckBox, &QCheckBox::stateChanged, this, [this]( int ) { settingsChanged(); } );
connect( ui->exportTexturesCheckBox, &QCheckBox::stateChanged, this, [=]( int ) { settingsChanged(); } ); connect( ui->exportTexturesCheckBox, &QCheckBox::stateChanged, this, [this]( int ) { settingsChanged(); } );
connect( ui->terrainTextureResolutionSpinBox, qOverload<int>( &QSpinBox::valueChanged ), this, [=]( int ) { settingsChanged(); } ); connect( ui->terrainTextureResolutionSpinBox, qOverload<int>( &QSpinBox::valueChanged ), this, [this]( int ) { settingsChanged(); } );
connect( ui->scaleSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( int ) { settingsChanged(); } ); connect( ui->scaleSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( int ) { settingsChanged(); } );
// sets the export settings to whatever is on the scene // sets the export settings to whatever is on the scene
settingsChanged(); settingsChanged();

View File

@ -30,11 +30,11 @@ QgsMetalRoughMaterialWidget::QgsMetalRoughMaterialWidget( QWidget *parent, bool
setSettings( &defaultMaterial, nullptr ); setSettings( &defaultMaterial, nullptr );
connect( mButtonBaseColor, &QgsColorButton::colorChanged, this, &QgsMetalRoughMaterialWidget::changed ); connect( mButtonBaseColor, &QgsColorButton::colorChanged, this, &QgsMetalRoughMaterialWidget::changed );
connect( mSpinMetalness, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [=] { connect( mSpinMetalness, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [this] {
updateWidgetState(); updateWidgetState();
emit changed(); emit changed();
} ); } );
connect( mSpinRoughness, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [=] { connect( mSpinRoughness, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [this] {
updateWidgetState(); updateWidgetState();
emit changed(); emit changed();
} ); } );

View File

@ -34,7 +34,7 @@ QgsPhongMaterialWidget::QgsPhongMaterialWidget( QWidget *parent, bool hasOpacity
connect( btnDiffuse, &QgsColorButton::colorChanged, this, &QgsPhongMaterialWidget::changed ); connect( btnDiffuse, &QgsColorButton::colorChanged, this, &QgsPhongMaterialWidget::changed );
connect( btnAmbient, &QgsColorButton::colorChanged, this, &QgsPhongMaterialWidget::changed ); connect( btnAmbient, &QgsColorButton::colorChanged, this, &QgsPhongMaterialWidget::changed );
connect( btnSpecular, &QgsColorButton::colorChanged, this, &QgsPhongMaterialWidget::changed ); connect( btnSpecular, &QgsColorButton::colorChanged, this, &QgsPhongMaterialWidget::changed );
connect( spinShininess, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [=] { connect( spinShininess, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [this] {
updateWidgetState(); updateWidgetState();
emit changed(); emit changed();
} ); } );

View File

@ -33,7 +33,7 @@ QgsPhongTexturedMaterialWidget::QgsPhongTexturedMaterialWidget( QWidget *parent
connect( btnAmbient, &QgsColorButton::colorChanged, this, &QgsPhongTexturedMaterialWidget::changed ); connect( btnAmbient, &QgsColorButton::colorChanged, this, &QgsPhongTexturedMaterialWidget::changed );
connect( btnSpecular, &QgsColorButton::colorChanged, this, &QgsPhongTexturedMaterialWidget::changed ); connect( btnSpecular, &QgsColorButton::colorChanged, this, &QgsPhongTexturedMaterialWidget::changed );
connect( spinShininess, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [=] { connect( spinShininess, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, [this] {
updateWidgetState(); updateWidgetState();
emit changed(); emit changed();
} ); } );

View File

@ -587,8 +587,8 @@ Qgs3DRendererRulePropsWidget::Qgs3DRendererRulePropsWidget( QgsRuleBased3DRender
connect( editDescription, &QLineEdit::textChanged, this, &Qgs3DRendererRulePropsWidget::widgetChanged ); connect( editDescription, &QLineEdit::textChanged, this, &Qgs3DRendererRulePropsWidget::widgetChanged );
connect( groupSymbol, &QGroupBox::toggled, this, &Qgs3DRendererRulePropsWidget::widgetChanged ); connect( groupSymbol, &QGroupBox::toggled, this, &Qgs3DRendererRulePropsWidget::widgetChanged );
connect( mSymbolWidget, &QgsSymbol3DWidget::widgetChanged, this, &Qgs3DRendererRulePropsWidget::widgetChanged ); connect( mSymbolWidget, &QgsSymbol3DWidget::widgetChanged, this, &Qgs3DRendererRulePropsWidget::widgetChanged );
connect( mFilterRadio, &QRadioButton::toggled, this, [=]( bool toggled ) { filterFrame->setEnabled( toggled ); } ); connect( mFilterRadio, &QRadioButton::toggled, this, [this]( bool toggled ) { filterFrame->setEnabled( toggled ); } );
connect( mElseRadio, &QRadioButton::toggled, this, [=]( bool toggled ) { if ( toggled ) editFilter->setText( QStringLiteral( "ELSE" ) ); } ); connect( mElseRadio, &QRadioButton::toggled, this, [this]( bool toggled ) { if ( toggled ) editFilter->setText( QStringLiteral( "ELSE" ) ); } );
} }
Qgs3DRendererRulePropsWidget::~Qgs3DRendererRulePropsWidget() = default; Qgs3DRendererRulePropsWidget::~Qgs3DRendererRulePropsWidget() = default;

View File

@ -93,7 +93,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QgsSettings settings; QgsSettings settings;
QAction *actionRefresh = new QAction( tr( "Refresh" ), menu ); QAction *actionRefresh = new QAction( tr( "Refresh" ), menu );
connect( actionRefresh, &QAction::triggered, this, [=] { directoryItem->refresh(); } ); connect( actionRefresh, &QAction::triggered, this, [directoryItem] { directoryItem->refresh(); } );
menu->addAction( actionRefresh ); menu->addAction( actionRefresh );
menu->addSeparator(); menu->addSeparator();
@ -101,7 +101,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QMenu *newMenu = new QMenu( tr( "New" ), menu ); QMenu *newMenu = new QMenu( tr( "New" ), menu );
QAction *createFolder = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewFolder.svg" ) ), tr( "Directory…" ), menu ); QAction *createFolder = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewFolder.svg" ) ), tr( "Directory…" ), menu );
connect( createFolder, &QAction::triggered, this, [=] { connect( createFolder, &QAction::triggered, this, [directoryItem, context] {
bool ok = false; bool ok = false;
const QString name = QInputDialog::getText( QgisApp::instance(), tr( "Create Directory" ), tr( "Directory name" ), QLineEdit::Normal, QString(), &ok ); const QString name = QInputDialog::getText( QgisApp::instance(), tr( "Create Directory" ), tr( "Directory name" ), QLineEdit::Normal, QString(), &ok );
@ -126,7 +126,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QAction *createGpkg = new QAction( tr( "GeoPackage…" ), newMenu ); QAction *createGpkg = new QAction( tr( "GeoPackage…" ), newMenu );
createGpkg->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewGeoPackageLayer.svg" ) ) ); createGpkg->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewGeoPackageLayer.svg" ) ) );
connect( createGpkg, &QAction::triggered, this, [=] { connect( createGpkg, &QAction::triggered, this, [directoryItem, context] {
QDir dir( directoryItem->dirPath() ); QDir dir( directoryItem->dirPath() );
QString newName = tr( "New GeoPackage.gpkg" ); QString newName = tr( "New GeoPackage.gpkg" );
int i = 1; int i = 1;
@ -175,7 +175,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QAction *createShp = new QAction( tr( "ShapeFile…" ), newMenu ); QAction *createShp = new QAction( tr( "ShapeFile…" ), newMenu );
createShp->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewVectorLayer.svg" ) ) ); createShp->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewVectorLayer.svg" ) ) );
connect( createShp, &QAction::triggered, this, [=] { connect( createShp, &QAction::triggered, this, [directoryItem, item, context] {
QString enc; QString enc;
QDir dir( directoryItem->dirPath() ); QDir dir( directoryItem->dirPath() );
QString error; QString error;
@ -195,7 +195,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION( 3, 6, 0 ) #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION( 3, 6, 0 )
QAction *createFgdb = new QAction( tr( "ESRI FileGeodatabase…" ), newMenu ); QAction *createFgdb = new QAction( tr( "ESRI FileGeodatabase…" ), newMenu );
createFgdb->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewFileGeodatabase.svg" ) ) ); createFgdb->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionNewFileGeodatabase.svg" ) ) );
connect( createFgdb, &QAction::triggered, this, [=] { connect( createFgdb, &QAction::triggered, this, [directoryItem, context] {
QDir dir( directoryItem->dirPath() ); QDir dir( directoryItem->dirPath() );
QString newName = tr( "New File Geodatabase.gdb" ); QString newName = tr( "New File Geodatabase.gdb" );
int i = 1; int i = 1;
@ -254,7 +254,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QAction *addAsFavorite = new QAction( tr( "Add as a Favorite" ), menu ); QAction *addAsFavorite = new QAction( tr( "Add as a Favorite" ), menu );
addAsFavorite->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconFavorites.svg" ) ) ); addAsFavorite->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconFavorites.svg" ) ) );
menu->addAction( addAsFavorite ); menu->addAction( addAsFavorite );
connect( addAsFavorite, &QAction::triggered, this, [=] { connect( addAsFavorite, &QAction::triggered, this, [this, directoryItem] {
addFavorite( directoryItem ); addFavorite( directoryItem );
} ); } );
} }
@ -263,13 +263,13 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
if ( QgsFavoriteItem *favoriteItem = qobject_cast<QgsFavoriteItem *>( item ) ) if ( QgsFavoriteItem *favoriteItem = qobject_cast<QgsFavoriteItem *>( item ) )
{ {
QAction *actionRename = new QAction( tr( "Rename Favorite…" ), menu ); QAction *actionRename = new QAction( tr( "Rename Favorite…" ), menu );
connect( actionRename, &QAction::triggered, this, [=] { connect( actionRename, &QAction::triggered, this, [this, favoriteItem] {
renameFavorite( favoriteItem ); renameFavorite( favoriteItem );
} ); } );
menu->addAction( actionRename ); menu->addAction( actionRename );
QAction *removeFavoriteAction = new QAction( tr( "Remove Favorite" ), menu ); QAction *removeFavoriteAction = new QAction( tr( "Remove Favorite" ), menu );
connect( removeFavoriteAction, &QAction::triggered, this, [=] { connect( removeFavoriteAction, &QAction::triggered, this, [this, favoriteItem] {
removeFavorite( favoriteItem ); removeFavorite( favoriteItem );
} ); } );
menu->addAction( removeFavoriteAction ); menu->addAction( removeFavoriteAction );
@ -277,7 +277,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
} }
} }
QAction *hideAction = new QAction( tr( "Hide from Browser" ), menu ); QAction *hideAction = new QAction( tr( "Hide from Browser" ), menu );
connect( hideAction, &QAction::triggered, this, [=] { connect( hideAction, &QAction::triggered, this, [this, directoryItem] {
hideDirectory( directoryItem ); hideDirectory( directoryItem );
} ); } );
menu->addAction( hideAction ); menu->addAction( hideAction );
@ -289,7 +289,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
for ( const QString &path : hiddenPathList ) for ( const QString &path : hiddenPathList )
{ {
QAction *action = new QAction( QDir::toNativeSeparators( path ), hiddenMenu ); QAction *action = new QAction( QDir::toNativeSeparators( path ), hiddenMenu );
connect( action, &QAction::triggered, this, [=] { connect( action, &QAction::triggered, this, [path] {
QgsSettings s; QgsSettings s;
QStringList pathsList = s.value( QStringLiteral( "/browser/hiddenPaths" ) ).toStringList(); QStringList pathsList = s.value( QStringLiteral( "/browser/hiddenPaths" ) ).toStringList();
pathsList.removeAll( path ); pathsList.removeAll( path );
@ -321,7 +321,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
hiddenMenu->addSeparator(); hiddenMenu->addSeparator();
QAction *moreAction = new QAction( tr( "Show More…" ), hiddenMenu ); QAction *moreAction = new QAction( tr( "Show More…" ), hiddenMenu );
connect( moreAction, &QAction::triggered, this, [=] { connect( moreAction, &QAction::triggered, this, [] {
QgisApp::instance()->showOptionsDialog( QgisApp::instance(), QStringLiteral( "mOptionsPageDataSources" ) ); QgisApp::instance()->showOptionsDialog( QgisApp::instance(), QStringLiteral( "mOptionsPageDataSources" ) );
} ); } );
hiddenMenu->addAction( moreAction ); hiddenMenu->addAction( moreAction );
@ -337,14 +337,14 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
const QPixmap icon = QgsColorButton::createMenuIcon( directoryItem->iconColor(), true ); const QPixmap icon = QgsColorButton::createMenuIcon( directoryItem->iconColor(), true );
actionSetIconColor->setIcon( icon ); actionSetIconColor->setIcon( icon );
} }
connect( actionSetIconColor, &QAction::triggered, this, [=] { connect( actionSetIconColor, &QAction::triggered, this, [this, directoryItem] {
changeDirectoryColor( directoryItem ); changeDirectoryColor( directoryItem );
} ); } );
menu->addAction( actionSetIconColor ); menu->addAction( actionSetIconColor );
if ( directoryItem->iconColor().isValid() ) if ( directoryItem->iconColor().isValid() )
{ {
QAction *actionClearIconColor = new QAction( tr( "Clear Custom Color" ), menu ); QAction *actionClearIconColor = new QAction( tr( "Clear Custom Color" ), menu );
connect( actionClearIconColor, &QAction::triggered, this, [=] { connect( actionClearIconColor, &QAction::triggered, this, [this, directoryItem] {
clearDirectoryColor( directoryItem ); clearDirectoryColor( directoryItem );
} ); } );
menu->addAction( actionClearIconColor ); menu->addAction( actionClearIconColor );
@ -353,7 +353,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QMenu *scanningMenu = new QMenu( tr( "Scanning" ), menu ); QMenu *scanningMenu = new QMenu( tr( "Scanning" ), menu );
QAction *monitorAction = new QAction( tr( "Monitor for Changes" ), scanningMenu ); QAction *monitorAction = new QAction( tr( "Monitor for Changes" ), scanningMenu );
connect( monitorAction, &QAction::triggered, this, [=] { connect( monitorAction, &QAction::triggered, this, [this, directoryItem] {
toggleMonitor( directoryItem ); toggleMonitor( directoryItem );
} ); } );
monitorAction->setCheckable( true ); monitorAction->setCheckable( true );
@ -361,7 +361,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
scanningMenu->addAction( monitorAction ); scanningMenu->addAction( monitorAction );
QAction *fastScanAction = new QAction( tr( "Fast Scan this Directory" ), scanningMenu ); QAction *fastScanAction = new QAction( tr( "Fast Scan this Directory" ), scanningMenu );
connect( fastScanAction, &QAction::triggered, this, [=] { connect( fastScanAction, &QAction::triggered, this, [this, directoryItem] {
toggleFastScan( directoryItem ); toggleFastScan( directoryItem );
} ); } );
fastScanAction->setCheckable( true ); fastScanAction->setCheckable( true );
@ -373,7 +373,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
menu->addSeparator(); menu->addSeparator();
QAction *openFolder = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mIconFolder.svg" ) ), tr( "Open Directory…" ), menu ); QAction *openFolder = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mIconFolder.svg" ) ), tr( "Open Directory…" ), menu );
connect( openFolder, &QAction::triggered, this, [=] { connect( openFolder, &QAction::triggered, this, [directoryItem] {
QDesktopServices::openUrl( QUrl::fromLocalFile( directoryItem->dirPath() ) ); QDesktopServices::openUrl( QUrl::fromLocalFile( directoryItem->dirPath() ) );
} ); } );
menu->addAction( openFolder ); menu->addAction( openFolder );
@ -381,7 +381,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
if ( QgsGui::nativePlatformInterface()->capabilities() & QgsNative::NativeOpenTerminalAtPath ) if ( QgsGui::nativePlatformInterface()->capabilities() & QgsNative::NativeOpenTerminalAtPath )
{ {
QAction *openTerminal = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mActionTerminal.svg" ) ), tr( "Open in Terminal…" ), menu ); QAction *openTerminal = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mActionTerminal.svg" ) ), tr( "Open in Terminal…" ), menu );
connect( openTerminal, &QAction::triggered, this, [=] { connect( openTerminal, &QAction::triggered, this, [directoryItem] {
QgsGui::nativePlatformInterface()->openTerminalAtPath( directoryItem->dirPath() ); QgsGui::nativePlatformInterface()->openTerminalAtPath( directoryItem->dirPath() );
} ); } );
menu->addAction( openTerminal ); menu->addAction( openTerminal );
@ -389,7 +389,7 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
} }
QAction *propertiesAction = new QAction( tr( "Properties…" ), menu ); QAction *propertiesAction = new QAction( tr( "Properties…" ), menu );
connect( propertiesAction, &QAction::triggered, this, [=] { connect( propertiesAction, &QAction::triggered, this, [this, directoryItem, context] {
showProperties( directoryItem, context ); showProperties( directoryItem, context );
} ); } );
menu->addAction( propertiesAction ); menu->addAction( propertiesAction );
@ -513,7 +513,7 @@ void QgsAppFileItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *m
if ( !sourceSelectProviders.isEmpty() && sourceSelectProviders.first()->capabilities().testFlag( QgsSourceSelectProvider::Capability::ConfigureFromUri ) ) if ( !sourceSelectProviders.isEmpty() && sourceSelectProviders.first()->capabilities().testFlag( QgsSourceSelectProvider::Capability::ConfigureFromUri ) )
{ {
openDataSourceManagerAction = new QAction( tr( "Open with Data Source Manager…" ), menu ); openDataSourceManagerAction = new QAction( tr( "Open with Data Source Manager…" ), menu );
connect( openDataSourceManagerAction, &QAction::triggered, this, [=] { connect( openDataSourceManagerAction, &QAction::triggered, this, [layerItem] {
QString pageName { layerItem->providerKey() }; QString pageName { layerItem->providerKey() };
// GPKG special handling // GPKG special handling
if ( qobject_cast<QgsGeoPackageVectorLayerItem *>( layerItem ) ) if ( qobject_cast<QgsGeoPackageVectorLayerItem *>( layerItem ) )
@ -537,7 +537,7 @@ void QgsAppFileItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *m
{ {
const QgsProviderSublayerDetails &sublayer { sublayers.first() }; const QgsProviderSublayerDetails &sublayer { sublayers.first() };
openDataSourceManagerAction = new QAction( tr( "Open with Data Source Manager…" ), menu ); openDataSourceManagerAction = new QAction( tr( "Open with Data Source Manager…" ), menu );
connect( openDataSourceManagerAction, &QAction::triggered, this, [=] { connect( openDataSourceManagerAction, &QAction::triggered, this, [sublayer, layerItem] {
QString pageName { sublayer.providerKey() }; QString pageName { sublayer.providerKey() };
// GPKG special handling // GPKG special handling
if ( sublayer.driverName() == QLatin1String( "GeoPackage" ) ) if ( sublayer.driverName() == QLatin1String( "GeoPackage" ) )
@ -587,7 +587,7 @@ void QgsAppFileItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *m
if ( fi.suffix().compare( ext, Qt::CaseInsensitive ) == 0 ) if ( fi.suffix().compare( ext, Qt::CaseInsensitive ) == 0 )
{ {
QAction *viewAction = new QAction( tr( "Open %1 Externally…" ).arg( name ), menu ); QAction *viewAction = new QAction( tr( "Open %1 Externally…" ).arg( name ), menu );
connect( viewAction, &QAction::triggered, this, [=] { connect( viewAction, &QAction::triggered, this, [filename] {
QDesktopServices::openUrl( QUrl::fromLocalFile( filename ) ); QDesktopServices::openUrl( QUrl::fromLocalFile( filename ) );
} ); } );
@ -646,7 +646,7 @@ void QgsAppFileItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *m
{ {
const QString renameText = tr( "Rename “%1”…" ).arg( fi.fileName() ); const QString renameText = tr( "Rename “%1”…" ).arg( fi.fileName() );
QAction *renameAction = new QAction( renameText, menu ); QAction *renameAction = new QAction( renameText, menu );
connect( renameAction, &QAction::triggered, this, [=] { connect( renameAction, &QAction::triggered, this, [this, selectedFiles, context, selectedParents, menu] {
const QString oldPath = selectedFiles.value( 0 ); const QString oldPath = selectedFiles.value( 0 );
const QStringList existingNames = QFileInfo( oldPath ).dir().entryList(); const QStringList existingNames = QFileInfo( oldPath ).dir().entryList();
@ -670,7 +670,7 @@ void QgsAppFileItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *m
const QString deleteText = selectedFiles.count() == 1 ? tr( "Delete “%1”…" ).arg( fi.fileName() ) const QString deleteText = selectedFiles.count() == 1 ? tr( "Delete “%1”…" ).arg( fi.fileName() )
: tr( "Delete Selected Files…" ); : tr( "Delete Selected Files…" );
QAction *deleteAction = new QAction( deleteText, menu ); QAction *deleteAction = new QAction( deleteText, menu );
connect( deleteAction, &QAction::triggered, this, [=] { connect( deleteAction, &QAction::triggered, this, [selectedFiles, selectedParents, context] {
// Check if the files correspond to paths in the project // Check if the files correspond to paths in the project
QList<QgsMapLayer *> layersList; QList<QgsMapLayer *> layersList;
for ( const QString &path : std::as_const( selectedFiles ) ) for ( const QString &path : std::as_const( selectedFiles ) )
@ -810,12 +810,12 @@ void QgsAppFileItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *m
menu->addSeparator(); menu->addSeparator();
QAction *showInFilesAction = menu->addAction( tr( "Show in Files" ) ); QAction *showInFilesAction = menu->addAction( tr( "Show in Files" ) );
connect( showInFilesAction, &QAction::triggered, this, [=] { connect( showInFilesAction, &QAction::triggered, this, [item] {
QgsGui::nativePlatformInterface()->openFileExplorerAndSelectFile( item->path() ); QgsGui::nativePlatformInterface()->openFileExplorerAndSelectFile( item->path() );
} ); } );
QAction *filePropertiesAction = menu->addAction( tr( "File Properties…" ) ); QAction *filePropertiesAction = menu->addAction( tr( "File Properties…" ) );
connect( filePropertiesAction, &QAction::triggered, this, [=] { connect( filePropertiesAction, &QAction::triggered, this, [item] {
QgsGui::nativePlatformInterface()->showFileProperties( item->path() ); QgsGui::nativePlatformInterface()->showFileProperties( item->path() );
} ); } );
} }
@ -939,7 +939,7 @@ void QgsProjectHomeItemGuiProvider::populateContextMenu( QgsDataItem *item, QMen
menu->insertSeparator( menu->actions().at( 0 ) ); menu->insertSeparator( menu->actions().at( 0 ) );
QAction *setHome = new QAction( tr( "Set Project Home…" ), menu ); QAction *setHome = new QAction( tr( "Set Project Home…" ), menu );
connect( setHome, &QAction::triggered, this, [=] { connect( setHome, &QAction::triggered, this, [] {
QString oldHome = QgsProject::instance()->homePath(); QString oldHome = QgsProject::instance()->homePath();
QString newPath = QFileDialog::getExistingDirectory( QgisApp::instance(), tr( "Select Project Home Directory" ), oldHome ); QString newPath = QFileDialog::getExistingDirectory( QgisApp::instance(), tr( "Select Project Home Directory" ), oldHome );
if ( !newPath.isEmpty() ) if ( !newPath.isEmpty() )
@ -970,7 +970,7 @@ void QgsFavoritesItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu
return; return;
QAction *addAction = new QAction( tr( "Add a Directory…" ), menu ); QAction *addAction = new QAction( tr( "Add a Directory…" ), menu );
connect( addAction, &QAction::triggered, this, [=] { connect( addAction, &QAction::triggered, this, [] {
QString directory = QFileDialog::getExistingDirectory( QgisApp::instance(), tr( "Add Directory to Favorites" ) ); QString directory = QFileDialog::getExistingDirectory( QgisApp::instance(), tr( "Add Directory to Favorites" ) );
if ( !directory.isEmpty() ) if ( !directory.isEmpty() )
{ {
@ -1065,7 +1065,7 @@ void QgsLayerItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *men
const QString deleteText = selectedDeletableItemPaths.count() == 1 ? tr( "Delete Layer “%1”…" ).arg( layerItem->name() ) const QString deleteText = selectedDeletableItemPaths.count() == 1 ? tr( "Delete Layer “%1”…" ).arg( layerItem->name() )
: tr( "Delete Selected Layers…" ); : tr( "Delete Selected Layers…" );
QAction *deleteAction = new QAction( deleteText, menu ); QAction *deleteAction = new QAction( deleteText, menu );
connect( deleteAction, &QAction::triggered, this, [=] { connect( deleteAction, &QAction::triggered, this, [this, selectedDeletableItemPaths, context] {
deleteLayers( selectedDeletableItemPaths, context ); deleteLayers( selectedDeletableItemPaths, context );
} ); } );
@ -1095,7 +1095,7 @@ void QgsLayerItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *men
const QString addText = selectedItems.count() == 1 ? tr( "Add Layer to Project" ) const QString addText = selectedItems.count() == 1 ? tr( "Add Layer to Project" )
: tr( "Add Selected Layers to Project" ); : tr( "Add Selected Layers to Project" );
QAction *addAction = new QAction( addText, menu ); QAction *addAction = new QAction( addText, menu );
connect( addAction, &QAction::triggered, this, [=] { connect( addAction, &QAction::triggered, this, [this, selectedItems] {
addLayersFromItems( selectedItems ); addLayersFromItems( selectedItems );
} ); } );
menu->addAction( addAction ); menu->addAction( addAction );
@ -1117,7 +1117,7 @@ void QgsLayerItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *men
} }
QAction *propertiesAction = new QAction( tr( "Layer Properties…" ), menu ); QAction *propertiesAction = new QAction( tr( "Layer Properties…" ), menu );
connect( propertiesAction, &QAction::triggered, this, [=] { connect( propertiesAction, &QAction::triggered, this, [this, layerItem, context] {
showPropertiesForItem( layerItem, context ); showPropertiesForItem( layerItem, context );
} ); } );
menu->addAction( propertiesAction ); menu->addAction( propertiesAction );
@ -2077,13 +2077,13 @@ bool QgsDatabaseItemGuiProvider::handleDrop( QgsDataItem *item, QgsDataItemGuiCo
mainTask->addSubTask( exportTask ); mainTask->addSubTask( exportTask );
hasSubTasks = true; hasSubTasks = true;
// when export is successful: // when export is successful:
connect( exportTask, &QgsVectorLayerExporterTask::exportComplete, item, [=]() { connect( exportTask, &QgsVectorLayerExporterTask::exportComplete, item, [item, context]() {
notify( tr( "Import to database" ), tr( "Import was successful." ), context, Qgis::MessageLevel::Success ); notify( tr( "Import to database" ), tr( "Import was successful." ), context, Qgis::MessageLevel::Success );
item->refresh(); item->refresh();
} ); } );
// when an error occurs: // when an error occurs:
connect( exportTask, &QgsVectorLayerExporterTask::errorOccurred, item, [=]( Qgis::VectorExportResult error, const QString &errorMessage ) { connect( exportTask, &QgsVectorLayerExporterTask::errorOccurred, item, []( Qgis::VectorExportResult error, const QString &errorMessage ) {
if ( error != Qgis::VectorExportResult::UserCanceled ) if ( error != Qgis::VectorExportResult::UserCanceled )
{ {
QgsMessageOutput *output = QgsMessageOutput::createMessageOutput(); QgsMessageOutput *output = QgsMessageOutput::createMessageOutput();
@ -2297,7 +2297,7 @@ void QgsFieldDomainItemGuiProvider::populateContextMenu( QgsDataItem *item, QMen
{ {
QAction *rangeDomainAction = new QAction( QObject::tr( "New Range Domain…" ) ); QAction *rangeDomainAction = new QAction( QObject::tr( "New Range Domain…" ) );
createFieldDomainMenu->addAction( rangeDomainAction ); createFieldDomainMenu->addAction( rangeDomainAction );
connect( rangeDomainAction, &QAction::triggered, this, [=] { connect( rangeDomainAction, &QAction::triggered, this, [createDomain] {
createDomain( Qgis::FieldDomainType::Range ); createDomain( Qgis::FieldDomainType::Range );
} ); } );
} }
@ -2306,7 +2306,7 @@ void QgsFieldDomainItemGuiProvider::populateContextMenu( QgsDataItem *item, QMen
{ {
QAction *codedDomainAction = new QAction( QObject::tr( "New Coded Values Domain…" ) ); QAction *codedDomainAction = new QAction( QObject::tr( "New Coded Values Domain…" ) );
createFieldDomainMenu->addAction( codedDomainAction ); createFieldDomainMenu->addAction( codedDomainAction );
connect( codedDomainAction, &QAction::triggered, this, [=] { connect( codedDomainAction, &QAction::triggered, this, [createDomain] {
createDomain( Qgis::FieldDomainType::Coded ); createDomain( Qgis::FieldDomainType::Coded );
} ); } );
} }
@ -2315,7 +2315,7 @@ void QgsFieldDomainItemGuiProvider::populateContextMenu( QgsDataItem *item, QMen
{ {
QAction *globDomainAction = new QAction( QObject::tr( "New Glob Domain…" ) ); QAction *globDomainAction = new QAction( QObject::tr( "New Glob Domain…" ) );
createFieldDomainMenu->addAction( globDomainAction ); createFieldDomainMenu->addAction( globDomainAction );
connect( globDomainAction, &QAction::triggered, this, [=] { connect( globDomainAction, &QAction::triggered, this, [createDomain] {
createDomain( Qgis::FieldDomainType::Glob ); createDomain( Qgis::FieldDomainType::Glob );
} ); } );
} }
@ -2580,7 +2580,7 @@ void QgsRelationshipItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
QPointer<QgsDataItem> itemWeakPointer( item ); QPointer<QgsDataItem> itemWeakPointer( item );
connect( editRelationshipAction, &QAction::triggered, this, [=] { connect( editRelationshipAction, &QAction::triggered, this, [md, itemWeakPointer, relation, connectionUri, context] {
std::unique_ptr<QgsAbstractDatabaseProviderConnection> conn { static_cast<QgsAbstractDatabaseProviderConnection *>( md->createConnection( connectionUri, {} ) ) }; std::unique_ptr<QgsAbstractDatabaseProviderConnection> conn { static_cast<QgsAbstractDatabaseProviderConnection *>( md->createConnection( connectionUri, {} ) ) };
QgsDbRelationDialog dialog( conn.release(), QgisApp::instance() ); QgsDbRelationDialog dialog( conn.release(), QgisApp::instance() );

View File

@ -67,7 +67,7 @@ QgsDecorationCopyrightDialog::QgsDecorationCopyrightDialog( QgsDecorationCopyrig
cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft ); cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft );
cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter ); cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter );
cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight ); cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight );
connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( int ) { connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( int ) {
spnHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 ); spnHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 );
} ); } );
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) ); cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );

View File

@ -38,7 +38,7 @@ QgsDecorationGridDialog::QgsDecorationGridDialog( QgsDecorationGrid &deco, QWidg
connect( buttonBox, &QDialogButtonBox::accepted, this, &QgsDecorationGridDialog::buttonBox_accepted ); connect( buttonBox, &QDialogButtonBox::accepted, this, &QgsDecorationGridDialog::buttonBox_accepted );
connect( buttonBox, &QDialogButtonBox::rejected, this, &QgsDecorationGridDialog::buttonBox_rejected ); connect( buttonBox, &QDialogButtonBox::rejected, this, &QgsDecorationGridDialog::buttonBox_rejected );
connect( mGridTypeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, [=]( int ) { updateSymbolButtons(); } ); connect( mGridTypeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, [this]( int ) { updateSymbolButtons(); } );
connect( mPbtnUpdateFromExtents, &QPushButton::clicked, this, &QgsDecorationGridDialog::mPbtnUpdateFromExtents_clicked ); connect( mPbtnUpdateFromExtents, &QPushButton::clicked, this, &QgsDecorationGridDialog::mPbtnUpdateFromExtents_clicked );
connect( mPbtnUpdateFromLayer, &QPushButton::clicked, this, &QgsDecorationGridDialog::mPbtnUpdateFromLayer_clicked ); connect( mPbtnUpdateFromLayer, &QPushButton::clicked, this, &QgsDecorationGridDialog::mPbtnUpdateFromLayer_clicked );
connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsDecorationGridDialog::showHelp ); connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsDecorationGridDialog::showHelp );
@ -47,7 +47,7 @@ QgsDecorationGridDialog::QgsDecorationGridDialog( QgsDecorationGrid &deco, QWidg
mLineSymbolButton->setSymbolType( Qgis::SymbolType::Line ); mLineSymbolButton->setSymbolType( Qgis::SymbolType::Line );
grpEnable->setChecked( mDeco.enabled() ); grpEnable->setChecked( mDeco.enabled() );
connect( grpEnable, &QGroupBox::toggled, this, [=] { updateSymbolButtons(); } ); connect( grpEnable, &QGroupBox::toggled, this, [this] { updateSymbolButtons(); } );
mOffsetXEdit->setShowClearButton( true ); mOffsetXEdit->setShowClearButton( true );
mOffsetXEdit->setClearValue( 0 ); mOffsetXEdit->setClearValue( 0 );

View File

@ -51,7 +51,7 @@ QgsDecorationImageDialog::QgsDecorationImageDialog( QgsDecorationImage &deco, QW
cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft ); cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft );
cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter ); cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter );
cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight ); cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight );
connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( int ) { connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( int ) {
spinHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 ); spinHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 );
} ); } );
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) ); cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );
@ -69,7 +69,7 @@ QgsDecorationImageDialog::QgsDecorationImageDialog( QgsDecorationImage &deco, QW
// enabled // enabled
grpEnable->setChecked( mDeco.enabled() ); grpEnable->setChecked( mDeco.enabled() );
connect( grpEnable, &QGroupBox::toggled, this, [=] { updateEnabledColorButtons(); } ); connect( grpEnable, &QGroupBox::toggled, this, [this] { updateEnabledColorButtons(); } );
wgtImagePath->setFilePath( mDeco.imagePath() ); wgtImagePath->setFilePath( mDeco.imagePath() );
connect( wgtImagePath, &QgsFileWidget::fileChanged, this, &QgsDecorationImageDialog::updateImagePath ); connect( wgtImagePath, &QgsFileWidget::fileChanged, this, &QgsDecorationImageDialog::updateImagePath );
@ -83,8 +83,8 @@ QgsDecorationImageDialog::QgsDecorationImageDialog( QgsDecorationImage &deco, QW
pbnChangeOutlineColor->setColor( mDeco.mOutlineColor ); pbnChangeOutlineColor->setColor( mDeco.mOutlineColor );
pbnChangeOutlineColor->setContext( QStringLiteral( "gui" ) ); pbnChangeOutlineColor->setContext( QStringLiteral( "gui" ) );
pbnChangeOutlineColor->setColorDialogTitle( tr( "Select SVG Image Outline Color" ) ); pbnChangeOutlineColor->setColorDialogTitle( tr( "Select SVG Image Outline Color" ) );
connect( pbnChangeColor, &QgsColorButton::colorChanged, this, [=]( QColor ) { drawImage(); } ); connect( pbnChangeColor, &QgsColorButton::colorChanged, this, [this]( QColor ) { drawImage(); } );
connect( pbnChangeOutlineColor, &QgsColorButton::colorChanged, this, [=]( QColor ) { drawImage(); } ); connect( pbnChangeOutlineColor, &QgsColorButton::colorChanged, this, [this]( QColor ) { drawImage(); } );
drawImage(); drawImage();
} }

View File

@ -52,7 +52,7 @@ QgsDecorationNorthArrowDialog::QgsDecorationNorthArrowDialog( QgsDecorationNorth
spinAngle->setEnabled( !mDeco.mAutomatic ); spinAngle->setEnabled( !mDeco.mAutomatic );
sliderRotation->setEnabled( !mDeco.mAutomatic ); sliderRotation->setEnabled( !mDeco.mAutomatic );
connect( cboxAutomatic, &QAbstractButton::toggled, this, [=]( bool checked ) { connect( cboxAutomatic, &QAbstractButton::toggled, this, [this]( bool checked ) {
spinAngle->setEnabled( !checked ); spinAngle->setEnabled( !checked );
sliderRotation->setEnabled( !checked ); sliderRotation->setEnabled( !checked );
} ); } );
@ -66,7 +66,7 @@ QgsDecorationNorthArrowDialog::QgsDecorationNorthArrowDialog( QgsDecorationNorth
cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft ); cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft );
cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter ); cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter );
cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight ); cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight );
connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( int ) { connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( int ) {
spinHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 ); spinHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 );
} ); } );
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) ); cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );
@ -87,7 +87,7 @@ QgsDecorationNorthArrowDialog::QgsDecorationNorthArrowDialog( QgsDecorationNorth
mSvgPathLineEdit->setText( mDeco.mSvgPath ); mSvgPathLineEdit->setText( mDeco.mSvgPath );
connect( mSvgPathLineEdit, &QLineEdit::textChanged, this, &QgsDecorationNorthArrowDialog::updateSvgPath ); connect( mSvgPathLineEdit, &QLineEdit::textChanged, this, &QgsDecorationNorthArrowDialog::updateSvgPath );
connect( mSvgSelectorBtn, &QPushButton::clicked, this, [=] { connect( mSvgSelectorBtn, &QPushButton::clicked, this, [this] {
QgsSvgSelectorDialog svgDlg( this ); QgsSvgSelectorDialog svgDlg( this );
svgDlg.setWindowTitle( tr( "Select SVG file" ) ); svgDlg.setWindowTitle( tr( "Select SVG file" ) );
svgDlg.svgSelector()->setSvgPath( mSvgPathLineEdit->text().trimmed() ); svgDlg.svgSelector()->setSvgPath( mSvgPathLineEdit->text().trimmed() );
@ -109,8 +109,8 @@ QgsDecorationNorthArrowDialog::QgsDecorationNorthArrowDialog( QgsDecorationNorth
pbnChangeOutlineColor->setColor( mDeco.mOutlineColor ); pbnChangeOutlineColor->setColor( mDeco.mOutlineColor );
pbnChangeOutlineColor->setContext( QStringLiteral( "gui" ) ); pbnChangeOutlineColor->setContext( QStringLiteral( "gui" ) );
pbnChangeOutlineColor->setColorDialogTitle( tr( "Select North Arrow Outline Color" ) ); pbnChangeOutlineColor->setColorDialogTitle( tr( "Select North Arrow Outline Color" ) );
connect( pbnChangeColor, &QgsColorButton::colorChanged, this, [=]( QColor ) { drawNorthArrow(); } ); connect( pbnChangeColor, &QgsColorButton::colorChanged, this, [this]( QColor ) { drawNorthArrow(); } );
connect( pbnChangeOutlineColor, &QgsColorButton::colorChanged, this, [=]( QColor ) { drawNorthArrow(); } ); connect( pbnChangeOutlineColor, &QgsColorButton::colorChanged, this, [this]( QColor ) { drawNorthArrow(); } );
drawNorthArrow(); drawNorthArrow();
} }

View File

@ -64,7 +64,7 @@ QgsDecorationScaleBarDialog::QgsDecorationScaleBarDialog( QgsDecorationScaleBar
cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft ); cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft );
cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter ); cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter );
cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight ); cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight );
connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( int ) { connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( int ) {
spnHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 ); spnHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 );
} ); } );
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) ); cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );

View File

@ -74,7 +74,7 @@ QgsDecorationTitleDialog::QgsDecorationTitleDialog( QgsDecorationTitle &deco, QW
cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft ); cboPlacement->addItem( tr( "Bottom Left" ), QgsDecorationItem::BottomLeft );
cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter ); cboPlacement->addItem( tr( "Bottom Center" ), QgsDecorationItem::BottomCenter );
cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight ); cboPlacement->addItem( tr( "Bottom Right" ), QgsDecorationItem::BottomRight );
connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( int ) { connect( cboPlacement, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( int ) {
spnHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 ); spnHorizontal->setMinimum( cboPlacement->currentData() == QgsDecorationItem::TopCenter || cboPlacement->currentData() == QgsDecorationItem::BottomCenter ? -100 : 0 );
} ); } );
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) ); cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );

View File

@ -152,19 +152,19 @@ QList<QAction *> QgsNetworkLoggerRequestGroup::actions( QObject *parent )
{ {
QList<QAction *> res; QList<QAction *> res;
QAction *openUrlAction = new QAction( QObject::tr( "Open URL" ), parent ); QAction *openUrlAction = new QAction( QObject::tr( "Open URL" ), parent );
QObject::connect( openUrlAction, &QAction::triggered, openUrlAction, [=] { QObject::connect( openUrlAction, &QAction::triggered, openUrlAction, [this] {
QDesktopServices::openUrl( mUrl ); QDesktopServices::openUrl( mUrl );
} ); } );
res << openUrlAction; res << openUrlAction;
QAction *copyUrlAction = new QAction( QObject::tr( "Copy URL" ), parent ); QAction *copyUrlAction = new QAction( QObject::tr( "Copy URL" ), parent );
QObject::connect( copyUrlAction, &QAction::triggered, openUrlAction, [=] { QObject::connect( copyUrlAction, &QAction::triggered, openUrlAction, [this] {
QApplication::clipboard()->setText( mUrl.url() ); QApplication::clipboard()->setText( mUrl.url() );
} ); } );
res << copyUrlAction; res << copyUrlAction;
QAction *copyAsCurlAction = new QAction( QObject::tr( "Copy As cURL" ), parent ); QAction *copyAsCurlAction = new QAction( QObject::tr( "Copy As cURL" ), parent );
QObject::connect( copyAsCurlAction, &QAction::triggered, copyAsCurlAction, [=] { QObject::connect( copyAsCurlAction, &QAction::triggered, copyAsCurlAction, [this] {
QString curlHeaders; QString curlHeaders;
for ( const QPair<QString, QString> &header : std::as_const( mHeaders ) ) for ( const QPair<QString, QString> &header : std::as_const( mHeaders ) )
curlHeaders += QStringLiteral( "-H '%1: %2' " ).arg( header.first, header.second ); curlHeaders += QStringLiteral( "-H '%1: %2' " ).arg( header.first, header.second );
@ -211,7 +211,7 @@ QList<QAction *> QgsNetworkLoggerRequestGroup::actions( QObject *parent )
res << copyAsCurlAction; res << copyAsCurlAction;
QAction *copyJsonAction = new QAction( QObject::tr( "Copy as JSON" ), parent ); QAction *copyJsonAction = new QAction( QObject::tr( "Copy as JSON" ), parent );
QObject::connect( copyJsonAction, &QAction::triggered, openUrlAction, [=] { QObject::connect( copyJsonAction, &QAction::triggered, openUrlAction, [this] {
const QVariant value = toVariant(); const QVariant value = toVariant();
const QString json = QString::fromStdString( QgsJsonUtils::jsonFromVariant( value ).dump( 2 ) ); const QString json = QString::fromStdString( QgsJsonUtils::jsonFromVariant( value ).dump( 2 ) );
QApplication::clipboard()->setText( json ); QApplication::clipboard()->setText( json );

View File

@ -60,7 +60,7 @@ QgsNetworkLoggerTreeView::QgsNetworkLoggerTreeView( QgsNetworkLogger *logger, QW
mAutoScroll = false; mAutoScroll = false;
} ); } );
connect( mLogger, &QAbstractItemModel::rowsInserted, this, [=] { connect( mLogger, &QAbstractItemModel::rowsInserted, this, [this] {
if ( mLogger->rowCount() > ( QgsNetworkLogger::MAX_LOGGED_REQUESTS * 1.2 ) ) // 20 % more as buffer if ( mLogger->rowCount() > ( QgsNetworkLogger::MAX_LOGGED_REQUESTS * 1.2 ) ) // 20 % more as buffer
{ {
// never trim expanded nodes // never trim expanded nodes
@ -185,11 +185,11 @@ QgsNetworkLoggerPanelWidget::QgsNetworkLoggerPanelWidget( QgsNetworkLogger *logg
connect( mActionShowSuccessful, &QAction::toggled, mTreeView, &QgsNetworkLoggerTreeView::setShowSuccessful ); connect( mActionShowSuccessful, &QAction::toggled, mTreeView, &QgsNetworkLoggerTreeView::setShowSuccessful );
connect( mActionShowCached, &QAction::toggled, mTreeView, &QgsNetworkLoggerTreeView::setShowCached ); connect( mActionShowCached, &QAction::toggled, mTreeView, &QgsNetworkLoggerTreeView::setShowCached );
connect( mActionClear, &QAction::triggered, mLogger, &QgsNetworkLogger::clear ); connect( mActionClear, &QAction::triggered, mLogger, &QgsNetworkLogger::clear );
connect( mActionRecord, &QAction::toggled, this, [=]( bool enabled ) { connect( mActionRecord, &QAction::toggled, this, [this]( bool enabled ) {
QgsSettings().setValue( QStringLiteral( "logNetworkRequests" ), enabled, QgsSettings::App ); QgsSettings().setValue( QStringLiteral( "logNetworkRequests" ), enabled, QgsSettings::App );
mLogger->enableLogging( enabled ); mLogger->enableLogging( enabled );
} ); } );
connect( mActionSaveLog, &QAction::triggered, this, [=]() { connect( mActionSaveLog, &QAction::triggered, this, [this]() {
if ( QMessageBox::warning( this, tr( "Save Network Log" ), tr( "Security warning: network logs may contain sensitive data including usernames or passwords. Treat this log as confidential and be careful who you share it with. Continue?" ), QMessageBox::Yes | QMessageBox::No ) == QMessageBox::No ) if ( QMessageBox::warning( this, tr( "Save Network Log" ), tr( "Security warning: network logs may contain sensitive data including usernames or passwords. Treat this log as confidential and be careful who you share it with. Continue?" ), QMessageBox::Yes | QMessageBox::No ) == QMessageBox::No )
return; return;
@ -228,7 +228,7 @@ QgsNetworkLoggerPanelWidget::QgsNetworkLoggerPanelWidget( QgsNetworkLogger *logg
mToolbar->addSeparator(); mToolbar->addSeparator();
QCheckBox *disableCacheCheck = new QCheckBox( tr( "Disable cache" ) ); QCheckBox *disableCacheCheck = new QCheckBox( tr( "Disable cache" ) );
connect( disableCacheCheck, &QCheckBox::toggled, this, [=]( bool checked ) { connect( disableCacheCheck, &QCheckBox::toggled, this, []( bool checked ) {
// note -- we deliberately do NOT store this as a permanent setting in QSettings // note -- we deliberately do NOT store this as a permanent setting in QSettings
// as it is designed to be a temporary debugging tool only and we don't want // as it is designed to be a temporary debugging tool only and we don't want
// users to accidentally leave this enabled and cause unnecessary server load... // users to accidentally leave this enabled and cause unnecessary server load...

View File

@ -41,7 +41,7 @@ QgsProfilerPanelWidget::QgsProfilerPanelWidget( QgsRuntimeProfiler *profiler, QW
mTreeView->setItemDelegateForColumn( 1, new CostDelegate( static_cast<int>( QgsRuntimeProfilerNode::CustomRole::Elapsed ), static_cast<int>( QgsRuntimeProfilerNode::CustomRole::ParentElapsed ), mTreeView ) ); mTreeView->setItemDelegateForColumn( 1, new CostDelegate( static_cast<int>( QgsRuntimeProfilerNode::CustomRole::Elapsed ), static_cast<int>( QgsRuntimeProfilerNode::CustomRole::ParentElapsed ), mTreeView ) );
connect( mProfiler, &QgsRuntimeProfiler::groupAdded, this, [=]( const QString &group ) { connect( mProfiler, &QgsRuntimeProfiler::groupAdded, this, [this]( const QString &group ) {
mCategoryComboBox->addItem( QgsRuntimeProfiler::translateGroupName( group ).isEmpty() ? group : QgsRuntimeProfiler::translateGroupName( group ), group ); mCategoryComboBox->addItem( QgsRuntimeProfiler::translateGroupName( group ).isEmpty() ? group : QgsRuntimeProfiler::translateGroupName( group ), group );
if ( mCategoryComboBox->count() == 1 ) if ( mCategoryComboBox->count() == 1 )
{ {
@ -50,7 +50,7 @@ QgsProfilerPanelWidget::QgsProfilerPanelWidget( QgsRuntimeProfiler *profiler, QW
} }
} ); } );
connect( mCategoryComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, [=]( int ) { connect( mCategoryComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, [this]( int ) {
mProxyModel->setGroup( mCategoryComboBox->currentData().toString() ); mProxyModel->setGroup( mCategoryComboBox->currentData().toString() );
} ); } );

View File

@ -149,7 +149,7 @@ QList<QAction *> QgsDevToolsModelValueNode::actions( QObject *parent )
QList<QAction *> res; QList<QAction *> res;
QAction *copyAction = new QAction( QObject::tr( "Copy" ), parent ); QAction *copyAction = new QAction( QObject::tr( "Copy" ), parent );
QObject::connect( copyAction, &QAction::triggered, copyAction, [=] { QObject::connect( copyAction, &QAction::triggered, copyAction, [this] {
QApplication::clipboard()->setText( QStringLiteral( "%1: %2" ).arg( mKey, mValue ) ); QApplication::clipboard()->setText( QStringLiteral( "%1: %2" ).arg( mKey, mValue ) );
} ); } );

View File

@ -166,13 +166,13 @@ QList<QAction *> QgsDatabaseQueryLoggerQueryGroup::actions( QObject *parent )
QList<QAction *> res; QList<QAction *> res;
QAction *copyUrlAction = new QAction( QObject::tr( "Copy SQL" ), parent ); QAction *copyUrlAction = new QAction( QObject::tr( "Copy SQL" ), parent );
QObject::connect( copyUrlAction, &QAction::triggered, copyUrlAction, [=] { QObject::connect( copyUrlAction, &QAction::triggered, copyUrlAction, [this] {
QApplication::clipboard()->setText( mSql ); QApplication::clipboard()->setText( mSql );
} ); } );
res << copyUrlAction; res << copyUrlAction;
QAction *copyJsonAction = new QAction( QObject::tr( "Copy as JSON" ), parent ); QAction *copyJsonAction = new QAction( QObject::tr( "Copy as JSON" ), parent );
QObject::connect( copyJsonAction, &QAction::triggered, copyJsonAction, [=] { QObject::connect( copyJsonAction, &QAction::triggered, copyJsonAction, [this] {
const QVariant value = toVariant(); const QVariant value = toVariant();
const QString json = QString::fromStdString( QgsJsonUtils::jsonFromVariant( value ).dump( 2 ) ); const QString json = QString::fromStdString( QgsJsonUtils::jsonFromVariant( value ).dump( 2 ) );
QApplication::clipboard()->setText( json ); QApplication::clipboard()->setText( json );

View File

@ -75,7 +75,7 @@ QgsDatabaseQueryLoggerTreeView::QgsDatabaseQueryLoggerTreeView( QgsAppQueryLogge
mAutoScroll = false; mAutoScroll = false;
} ); } );
connect( mLogger, &QAbstractItemModel::rowsInserted, this, [=] { connect( mLogger, &QAbstractItemModel::rowsInserted, this, [this] {
if ( mLogger->rowCount() > ( QgsAppQueryLogger::MAX_LOGGED_REQUESTS * 1.2 ) ) // 20 % more as buffer if ( mLogger->rowCount() > ( QgsAppQueryLogger::MAX_LOGGED_REQUESTS * 1.2 ) ) // 20 % more as buffer
{ {
// never trim expanded nodes // never trim expanded nodes
@ -183,11 +183,11 @@ QgsDatabaseQueryLoggerPanelWidget::QgsDatabaseQueryLoggerPanelWidget( QgsAppQuer
connect( mFilterLineEdit, &QgsFilterLineEdit::textChanged, mTreeView, &QgsDatabaseQueryLoggerTreeView::setFilterString ); connect( mFilterLineEdit, &QgsFilterLineEdit::textChanged, mTreeView, &QgsDatabaseQueryLoggerTreeView::setFilterString );
connect( mActionClear, &QAction::triggered, mLogger, &QgsAppQueryLogger::clear ); connect( mActionClear, &QAction::triggered, mLogger, &QgsAppQueryLogger::clear );
connect( mActionRecord, &QAction::toggled, this, [=]( bool enabled ) { connect( mActionRecord, &QAction::toggled, this, []( bool enabled ) {
QgsSettings().setValue( QStringLiteral( "logDatabaseQueries" ), enabled, QgsSettings::App ); QgsSettings().setValue( QStringLiteral( "logDatabaseQueries" ), enabled, QgsSettings::App );
QgsApplication::databaseQueryLog()->setEnabled( enabled ); QgsApplication::databaseQueryLog()->setEnabled( enabled );
} ); } );
connect( mActionSaveLog, &QAction::triggered, this, [=]() { connect( mActionSaveLog, &QAction::triggered, this, [this]() {
if ( QMessageBox::warning( this, tr( "Save Database Query Log" ), tr( "Security warning: query logs may contain sensitive data including usernames or passwords. Treat this log as confidential and be careful who you share it with. Continue?" ), QMessageBox::Yes | QMessageBox::No ) == QMessageBox::No ) if ( QMessageBox::warning( this, tr( "Save Database Query Log" ), tr( "Security warning: query logs may contain sensitive data including usernames or passwords. Treat this log as confidential and be careful who you share it with. Continue?" ), QMessageBox::Yes | QMessageBox::No ) == QMessageBox::No )
return; return;

View File

@ -227,7 +227,7 @@ QgsDwgImporter::QgsDwgImporter( const QString &database, const QgsCoordinateRefe
// setup custom debug printer for libdxfrw // setup custom debug printer for libdxfrw
static std::once_flag initialized; static std::once_flag initialized;
std::call_once( initialized, [=]() { std::call_once( initialized, []() {
DRW::setCustomDebugPrinter( new QgsDrwDebugPrinter( 4 ) ); DRW::setCustomDebugPrinter( new QgsDrwDebugPrinter( 4 ) );
} ); } );

View File

@ -145,12 +145,12 @@ QgsElevationProfileToolMeasure::QgsElevationProfileToolMeasure( QgsElevationProf
mDialog = new QgsProfileMeasureResultsDialog(); mDialog = new QgsProfileMeasureResultsDialog();
connect( this, &QgsElevationProfileToolMeasure::cleared, mDialog, &QDialog::hide ); connect( this, &QgsElevationProfileToolMeasure::cleared, mDialog, &QDialog::hide );
connect( this, &QgsElevationProfileToolMeasure::measureChanged, mDialog, [=]( double totalDistance, double deltaCurve, double deltaElevation ) { connect( this, &QgsElevationProfileToolMeasure::measureChanged, mDialog, [this]( double totalDistance, double deltaCurve, double deltaElevation ) {
mDialog->setCrs( mElevationCanvas->crs() ); mDialog->setCrs( mElevationCanvas->crs() );
mDialog->setMeasures( totalDistance, deltaCurve, deltaElevation ); mDialog->setMeasures( totalDistance, deltaCurve, deltaElevation );
mDialog->show(); mDialog->show();
} ); } );
connect( mDialog, &QgsProfileMeasureResultsDialog::closed, this, [=] { connect( mDialog, &QgsProfileMeasureResultsDialog::closed, this, [this] {
clear(); clear();
} ); } );
} }

View File

@ -168,7 +168,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
mCanvas->setLockAxisScales( settingLockAxis->value() ); mCanvas->setLockAxisScales( settingLockAxis->value() );
mCanvas->setBackgroundColor( settingBackgroundColor->value() ); mCanvas->setBackgroundColor( settingBackgroundColor->value() );
connect( QgsGui::instance(), &QgsGui::optionsChanged, this, [=] { connect( QgsGui::instance(), &QgsGui::optionsChanged, this, [this] {
mCanvas->setBackgroundColor( settingBackgroundColor->value() ); mCanvas->setBackgroundColor( settingBackgroundColor->value() );
} ); } );
@ -177,7 +177,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
mLayerTreeView = new QgsAppElevationProfileLayerTreeView( mLayerTree.get() ); mLayerTreeView = new QgsAppElevationProfileLayerTreeView( mLayerTree.get() );
connect( mLayerTreeView, &QgsAppElevationProfileLayerTreeView::addLayers, this, &QgsElevationProfileWidget::addLayersInternal ); connect( mLayerTreeView, &QgsAppElevationProfileLayerTreeView::addLayers, this, &QgsElevationProfileWidget::addLayersInternal );
connect( mLayerTreeView, &QAbstractItemView::doubleClicked, this, [=]( const QModelIndex &index ) { connect( mLayerTreeView, &QAbstractItemView::doubleClicked, this, [this]( const QModelIndex &index ) {
if ( QgsMapLayer *layer = mLayerTreeView->indexToLayer( index ) ) if ( QgsMapLayer *layer = mLayerTreeView->indexToLayer( index ) )
{ {
QgisApp::instance()->showLayerProperties( layer, QStringLiteral( "mOptsPage_Elevation" ) ); QgisApp::instance()->showLayerProperties( layer, QStringLiteral( "mOptsPage_Elevation" ) );
@ -198,7 +198,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
QAction *showLayerTree = new QAction( tr( "Show Layer Tree" ), this ); QAction *showLayerTree = new QAction( tr( "Show Layer Tree" ), this );
showLayerTree->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mIconLayerTree.svg" ) ) ); showLayerTree->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mIconLayerTree.svg" ) ) );
showLayerTree->setCheckable( true ); showLayerTree->setCheckable( true );
connect( showLayerTree, &QAction::toggled, this, [=]( bool checked ) { connect( showLayerTree, &QAction::toggled, this, [this]( bool checked ) {
settingShowLayerTree->setValue( checked ); settingShowLayerTree->setValue( checked );
mLayerTreeView->setVisible( checked ); mLayerTreeView->setVisible( checked );
} ); } );
@ -210,7 +210,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
mCaptureCurveAction = new QAction( tr( "Capture Curve" ), this ); mCaptureCurveAction = new QAction( tr( "Capture Curve" ), this );
mCaptureCurveAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionCaptureLine.svg" ) ) ); mCaptureCurveAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionCaptureLine.svg" ) ) );
mCaptureCurveAction->setCheckable( true ); mCaptureCurveAction->setCheckable( true );
connect( mCaptureCurveAction, &QAction::triggered, this, [=] { connect( mCaptureCurveAction, &QAction::triggered, this, [this] {
if ( mCaptureCurveMapTool && mMainCanvas ) if ( mCaptureCurveMapTool && mMainCanvas )
{ {
mMainCanvas->setMapTool( mCaptureCurveMapTool.get() ); mMainCanvas->setMapTool( mCaptureCurveMapTool.get() );
@ -221,7 +221,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
mCaptureCurveFromFeatureAction = new QAction( tr( "Capture Curve From Feature" ), this ); mCaptureCurveFromFeatureAction = new QAction( tr( "Capture Curve From Feature" ), this );
mCaptureCurveFromFeatureAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionCaptureCurveFromFeature.svg" ) ) ); mCaptureCurveFromFeatureAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionCaptureCurveFromFeature.svg" ) ) );
mCaptureCurveFromFeatureAction->setCheckable( true ); mCaptureCurveFromFeatureAction->setCheckable( true );
connect( mCaptureCurveFromFeatureAction, &QAction::triggered, this, [=] { connect( mCaptureCurveFromFeatureAction, &QAction::triggered, this, [this] {
if ( mCaptureCurveFromFeatureMapTool && mMainCanvas ) if ( mCaptureCurveFromFeatureMapTool && mMainCanvas )
{ {
mMainCanvas->setMapTool( mCaptureCurveFromFeatureMapTool.get() ); mMainCanvas->setMapTool( mCaptureCurveFromFeatureMapTool.get() );
@ -241,7 +241,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
mNudgeRightAction->setEnabled( false ); mNudgeRightAction->setEnabled( false );
toolBar->addAction( mNudgeRightAction ); toolBar->addAction( mNudgeRightAction );
auto createShortcuts = [=]( const QString &objectName, void ( QgsElevationProfileWidget::*slot )() ) { auto createShortcuts = [this]( const QString &objectName, void ( QgsElevationProfileWidget::*slot )() ) {
if ( QShortcut *sc = QgsGui::shortcutsManager()->shortcutByName( objectName ) ) if ( QShortcut *sc = QgsGui::shortcutsManager()->shortcutByName( objectName ) )
connect( sc, &QShortcut::activated, this, slot ); connect( sc, &QShortcut::activated, this, slot );
}; };
@ -260,7 +260,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
identifyToolAction->setCheckable( true ); identifyToolAction->setCheckable( true );
identifyToolAction->setChecked( true ); identifyToolAction->setChecked( true );
mIdentifyTool->setAction( identifyToolAction ); mIdentifyTool->setAction( identifyToolAction );
connect( identifyToolAction, &QAction::triggered, mPanTool, [=] { mCanvas->setTool( mIdentifyTool ); } ); connect( identifyToolAction, &QAction::triggered, mPanTool, [this] { mCanvas->setTool( mIdentifyTool ); } );
toolBar->addAction( identifyToolAction ); toolBar->addAction( identifyToolAction );
QAction *panToolAction = new QAction( tr( "Pan" ), this ); QAction *panToolAction = new QAction( tr( "Pan" ), this );
@ -268,21 +268,21 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
panToolAction->setCheckable( true ); panToolAction->setCheckable( true );
panToolAction->setChecked( false ); panToolAction->setChecked( false );
mPanTool->setAction( panToolAction ); mPanTool->setAction( panToolAction );
connect( panToolAction, &QAction::triggered, mPanTool, [=] { mCanvas->setTool( mPanTool ); } ); connect( panToolAction, &QAction::triggered, mPanTool, [this] { mCanvas->setTool( mPanTool ); } );
toolBar->addAction( panToolAction ); toolBar->addAction( panToolAction );
QAction *zoomXAxisToolAction = new QAction( tr( "Zoom X Axis" ), this ); QAction *zoomXAxisToolAction = new QAction( tr( "Zoom X Axis" ), this );
zoomXAxisToolAction->setCheckable( true ); zoomXAxisToolAction->setCheckable( true );
zoomXAxisToolAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionZoomInXAxis.svg" ) ) ); zoomXAxisToolAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionZoomInXAxis.svg" ) ) );
mXAxisZoomTool->setAction( zoomXAxisToolAction ); mXAxisZoomTool->setAction( zoomXAxisToolAction );
connect( zoomXAxisToolAction, &QAction::triggered, mXAxisZoomTool, [=] { mCanvas->setTool( mXAxisZoomTool ); } ); connect( zoomXAxisToolAction, &QAction::triggered, mXAxisZoomTool, [this] { mCanvas->setTool( mXAxisZoomTool ); } );
toolBar->addAction( zoomXAxisToolAction ); toolBar->addAction( zoomXAxisToolAction );
QAction *zoomToolAction = new QAction( tr( "Zoom" ), this ); QAction *zoomToolAction = new QAction( tr( "Zoom" ), this );
zoomToolAction->setCheckable( true ); zoomToolAction->setCheckable( true );
zoomToolAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionZoomIn.svg" ) ) ); zoomToolAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionZoomIn.svg" ) ) );
mZoomTool->setAction( zoomToolAction ); mZoomTool->setAction( zoomToolAction );
connect( zoomToolAction, &QAction::triggered, mZoomTool, [=] { mCanvas->setTool( mZoomTool ); } ); connect( zoomToolAction, &QAction::triggered, mZoomTool, [this] { mCanvas->setTool( mZoomTool ); } );
toolBar->addAction( zoomToolAction ); toolBar->addAction( zoomToolAction );
QAction *resetViewAction = new QAction( tr( "Zoom Full" ), this ); QAction *resetViewAction = new QAction( tr( "Zoom Full" ), this );
@ -303,7 +303,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
measureToolAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionMeasure.svg" ) ) ); measureToolAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionMeasure.svg" ) ) );
measureToolAction->setCheckable( true ); measureToolAction->setCheckable( true );
mMeasureTool->setAction( measureToolAction ); mMeasureTool->setAction( measureToolAction );
connect( measureToolAction, &QAction::triggered, this, [=] { connect( measureToolAction, &QAction::triggered, this, [this] {
mCanvas->setTool( mMeasureTool.get() ); mCanvas->setTool( mMeasureTool.get() );
} ); } );
toolBar->addAction( measureToolAction ); toolBar->addAction( measureToolAction );
@ -383,7 +383,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
action->setData( QVariant::fromValue( unit ) ); action->setData( QVariant::fromValue( unit ) );
action->setCheckable( true ); action->setCheckable( true );
action->setActionGroup( unitGroup ); action->setActionGroup( unitGroup );
connect( action, &QAction::toggled, this, [=]( bool active ) { connect( action, &QAction::toggled, this, [this, unit]( bool active ) {
if ( active ) if ( active )
{ {
mCanvas->setDistanceUnit( unit ); mCanvas->setDistanceUnit( unit );
@ -391,7 +391,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
} ); } );
mDistanceUnitMenu->addAction( action ); mDistanceUnitMenu->addAction( action );
} }
connect( mDistanceUnitMenu, &QMenu::aboutToShow, this, [=] { connect( mDistanceUnitMenu, &QMenu::aboutToShow, this, [this] {
for ( QAction *action : mDistanceUnitMenu->actions() ) for ( QAction *action : mDistanceUnitMenu->actions() )
{ {
if ( action->data().value<Qgis::DistanceUnit>() == mCanvas->distanceUnit() && !action->isChecked() ) if ( action->data().value<Qgis::DistanceUnit>() == mCanvas->distanceUnit() && !action->isChecked() )
@ -405,7 +405,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
mSettingsAction = new QgsElevationProfileWidgetSettingsAction( mOptionsMenu ); mSettingsAction = new QgsElevationProfileWidgetSettingsAction( mOptionsMenu );
mSettingsAction->toleranceSpinBox()->setValue( settingTolerance->value() ); mSettingsAction->toleranceSpinBox()->setValue( settingTolerance->value() );
connect( mSettingsAction->toleranceSpinBox(), qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [=]( double value ) { connect( mSettingsAction->toleranceSpinBox(), qOverload<double>( &QDoubleSpinBox::valueChanged ), this, [this]( double value ) {
settingTolerance->setValue( value ); settingTolerance->setValue( value );
createOrUpdateRubberBands(); createOrUpdateRubberBands();
scheduleUpdate(); scheduleUpdate();
@ -483,7 +483,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
QToolButton *toggleButton = mDockableWidgetHelper->createDockUndockToolButton(); QToolButton *toggleButton = mDockableWidgetHelper->createDockUndockToolButton();
toggleButton->setToolTip( tr( "Dock Elevation Profile View" ) ); toggleButton->setToolTip( tr( "Dock Elevation Profile View" ) );
toolBar->addWidget( toggleButton ); toolBar->addWidget( toggleButton );
connect( mDockableWidgetHelper, &QgsDockableWidgetHelper::closed, this, [=]() { connect( mDockableWidgetHelper, &QgsDockableWidgetHelper::closed, this, [this]() {
close(); close();
} ); } );
@ -527,8 +527,8 @@ void QgsElevationProfileWidget::setMainCanvas( QgsMapCanvas *canvas )
mCaptureCurveMapTool = std::make_unique<QgsMapToolProfileCurve>( canvas, QgisApp::instance()->cadDockWidget() ); mCaptureCurveMapTool = std::make_unique<QgsMapToolProfileCurve>( canvas, QgisApp::instance()->cadDockWidget() );
mCaptureCurveMapTool->setAction( mCaptureCurveAction ); mCaptureCurveMapTool->setAction( mCaptureCurveAction );
connect( mCaptureCurveMapTool.get(), &QgsMapToolProfileCurve::curveCaptured, this, [=]( const QgsGeometry &curve ) { setProfileCurve( curve, true ); } ); connect( mCaptureCurveMapTool.get(), &QgsMapToolProfileCurve::curveCaptured, this, [this]( const QgsGeometry &curve ) { setProfileCurve( curve, true ); } );
connect( mCaptureCurveMapTool.get(), &QgsMapToolProfileCurve::captureStarted, this, [=] { connect( mCaptureCurveMapTool.get(), &QgsMapToolProfileCurve::captureStarted, this, [this] {
// if capturing a new curve, we just hide the existing rubber band -- if the user cancels the new curve digitizing then we'll // if capturing a new curve, we just hide the existing rubber band -- if the user cancels the new curve digitizing then we'll
// re-show the old curve rubber band // re-show the old curve rubber band
if ( mRubberBand ) if ( mRubberBand )
@ -538,7 +538,7 @@ void QgsElevationProfileWidget::setMainCanvas( QgsMapCanvas *canvas )
if ( mMapPointRubberBand ) if ( mMapPointRubberBand )
mMapPointRubberBand->hide(); mMapPointRubberBand->hide();
} ); } );
connect( mCaptureCurveMapTool.get(), &QgsMapToolProfileCurve::captureCanceled, this, [=] { connect( mCaptureCurveMapTool.get(), &QgsMapToolProfileCurve::captureCanceled, this, [this] {
if ( mRubberBand ) if ( mRubberBand )
mRubberBand->show(); mRubberBand->show();
if ( mToleranceRubberBand ) if ( mToleranceRubberBand )
@ -549,7 +549,7 @@ void QgsElevationProfileWidget::setMainCanvas( QgsMapCanvas *canvas )
mCaptureCurveFromFeatureMapTool = std::make_unique<QgsMapToolProfileCurveFromFeature>( canvas ); mCaptureCurveFromFeatureMapTool = std::make_unique<QgsMapToolProfileCurveFromFeature>( canvas );
mCaptureCurveFromFeatureMapTool->setAction( mCaptureCurveFromFeatureAction ); mCaptureCurveFromFeatureMapTool->setAction( mCaptureCurveFromFeatureAction );
connect( mCaptureCurveFromFeatureMapTool.get(), &QgsMapToolProfileCurveFromFeature::curveCaptured, this, [=]( const QgsGeometry &curve ) { setProfileCurve( curve, true ); } ); connect( mCaptureCurveFromFeatureMapTool.get(), &QgsMapToolProfileCurveFromFeature::curveCaptured, this, [this]( const QgsGeometry &curve ) { setProfileCurve( curve, true ); } );
mMapPointRubberBand.reset( new QgsRubberBand( canvas, Qgis::GeometryType::Point ) ); mMapPointRubberBand.reset( new QgsRubberBand( canvas, Qgis::GeometryType::Point ) );
mMapPointRubberBand->setZValue( 1000 ); mMapPointRubberBand->setZValue( 1000 );
@ -561,7 +561,7 @@ void QgsElevationProfileWidget::setMainCanvas( QgsMapCanvas *canvas )
mMapPointRubberBand->hide(); mMapPointRubberBand->hide();
mCanvas->setDistanceUnit( mMainCanvas->mapSettings().destinationCrs().mapUnits() ); mCanvas->setDistanceUnit( mMainCanvas->mapSettings().destinationCrs().mapUnits() );
connect( mMainCanvas, &QgsMapCanvas::destinationCrsChanged, this, [=] { connect( mMainCanvas, &QgsMapCanvas::destinationCrsChanged, this, [this] {
mCanvas->setDistanceUnit( mMainCanvas->mapSettings().destinationCrs().mapUnits() ); mCanvas->setDistanceUnit( mMainCanvas->mapSettings().destinationCrs().mapUnits() );
} ); } );
} }
@ -655,7 +655,7 @@ void QgsElevationProfileWidget::onTotalPendingJobsCountChanged( int count )
mJobProgressBarTimer.setSingleShot( true ); mJobProgressBarTimer.setSingleShot( true );
mJobProgressBarTimer.setInterval( 500 ); mJobProgressBarTimer.setInterval( 500 );
disconnect( mJobProgressBarTimerConnection ); disconnect( mJobProgressBarTimerConnection );
mJobProgressBarTimerConnection = connect( &mJobProgressBarTimer, &QTimer::timeout, this, [=]() { mJobProgressBarTimerConnection = connect( &mJobProgressBarTimer, &QTimer::timeout, this, [this]() {
mProgressPendingJobs->setVisible( true ); mProgressPendingJobs->setVisible( true );
} ); } );
mJobProgressBarTimer.start(); mJobProgressBarTimer.start();

View File

@ -23,7 +23,7 @@
QgsMapToolProfileCurve::QgsMapToolProfileCurve( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget ) QgsMapToolProfileCurve::QgsMapToolProfileCurve( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
: QgsMapToolCapture( canvas, cadDockWidget, CaptureMode::CaptureLine ) : QgsMapToolCapture( canvas, cadDockWidget, CaptureMode::CaptureLine )
{ {
connect( canvas, &QgsMapCanvas::mapToolSet, this, [=]( QgsMapTool *tool, QgsMapTool * ) { connect( canvas, &QgsMapCanvas::mapToolSet, this, [this]( QgsMapTool *tool, QgsMapTool * ) {
if ( tool != this ) if ( tool != this )
mPreviousTool = tool; mPreviousTool = tool;
} ); } );

View File

@ -57,7 +57,7 @@ QgsGCPListWidget::QgsGCPListWidget( QWidget *parent )
connect( this, &QAbstractItemView::clicked, this, &QgsGCPListWidget::itemClicked ); connect( this, &QAbstractItemView::clicked, this, &QgsGCPListWidget::itemClicked );
connect( this, &QWidget::customContextMenuRequested, this, &QgsGCPListWidget::showContextMenu ); connect( this, &QWidget::customContextMenuRequested, this, &QgsGCPListWidget::showContextMenu );
connect( mGCPListModel, &QgsGCPListModel::pointEnabled, this, [=]( QgsGeorefDataPoint *point, int row ) { connect( mGCPListModel, &QgsGCPListModel::pointEnabled, this, [this]( QgsGeorefDataPoint *point, int row ) {
emit pointEnabled( point, row ); emit pointEnabled( point, row );
adjustTableContent(); adjustTableContent();
return; return;
@ -181,7 +181,7 @@ void QgsGCPListWidget::showContextMenu( QPoint p )
setCurrentIndex( index ); setCurrentIndex( index );
QAction *jumpToPointAction = new QAction( tr( "Recenter" ), this ); QAction *jumpToPointAction = new QAction( tr( "Recenter" ), this );
connect( jumpToPointAction, &QAction::triggered, this, [=] { connect( jumpToPointAction, &QAction::triggered, this, [this] {
const QModelIndex sourceIndex = static_cast<const QSortFilterProxyModel *>( model() )->mapToSource( currentIndex() ); const QModelIndex sourceIndex = static_cast<const QSortFilterProxyModel *>( model() )->mapToSource( currentIndex() );
mPrevRow = sourceIndex.row(); mPrevRow = sourceIndex.row();
mPrevColumn = sourceIndex.column(); mPrevColumn = sourceIndex.column();

View File

@ -874,10 +874,10 @@ void QgsGeoreferencerMainWindow::showCoordDialog( const QgsPointXY &sourceCoordi
{ {
mNewlyAddedPoint = new QgsGeorefDataPoint( mCanvas, QgisApp::instance()->mapCanvas(), sourceCoordinates, QgsPointXY(), QgsCoordinateReferenceSystem(), true ); mNewlyAddedPoint = new QgsGeorefDataPoint( mCanvas, QgisApp::instance()->mapCanvas(), sourceCoordinates, QgsPointXY(), QgsCoordinateReferenceSystem(), true );
mMapCoordsDialog = new QgsMapCoordsDialog( QgisApp::instance()->mapCanvas(), mNewlyAddedPoint, lastProjection, this ); mMapCoordsDialog = new QgsMapCoordsDialog( QgisApp::instance()->mapCanvas(), mNewlyAddedPoint, lastProjection, this );
connect( mMapCoordsDialog, &QgsMapCoordsDialog::pointAdded, this, [=]( const QgsPointXY &sourceLayerCoordinate, const QgsPointXY &destinationCoordinate, const QgsCoordinateReferenceSystem &destinationCrs ) { connect( mMapCoordsDialog, &QgsMapCoordsDialog::pointAdded, this, [this]( const QgsPointXY &sourceLayerCoordinate, const QgsPointXY &destinationCoordinate, const QgsCoordinateReferenceSystem &destinationCrs ) {
addPoint( sourceLayerCoordinate, destinationCoordinate, destinationCrs ); addPoint( sourceLayerCoordinate, destinationCoordinate, destinationCrs );
} ); } );
connect( mMapCoordsDialog, &QObject::destroyed, this, [=] { connect( mMapCoordsDialog, &QObject::destroyed, this, [this] {
delete mNewlyAddedPoint; delete mNewlyAddedPoint;
mNewlyAddedPoint = nullptr; mNewlyAddedPoint = nullptr;
} ); } );
@ -1102,9 +1102,9 @@ void QgsGeoreferencerMainWindow::createActions()
connect( mActionReset, &QAction::triggered, this, &QgsGeoreferencerMainWindow::reset ); connect( mActionReset, &QAction::triggered, this, &QgsGeoreferencerMainWindow::reset );
mActionOpenRaster->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddRasterLayer.svg" ) ) ); mActionOpenRaster->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddRasterLayer.svg" ) ) );
connect( mActionOpenRaster, &QAction::triggered, this, [=] { openLayer( Qgis::LayerType::Raster ); } ); connect( mActionOpenRaster, &QAction::triggered, this, [this] { openLayer( Qgis::LayerType::Raster ); } );
connect( mActionOpenVector, &QAction::triggered, this, [=] { openLayer( Qgis::LayerType::Vector ); } ); connect( mActionOpenVector, &QAction::triggered, this, [this] { openLayer( Qgis::LayerType::Vector ); } );
mActionStartGeoref->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionStart.svg" ) ) ); mActionStartGeoref->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionStart.svg" ) ) );
connect( mActionStartGeoref, &QAction::triggered, this, &QgsGeoreferencerMainWindow::georeference ); connect( mActionStartGeoref, &QAction::triggered, this, &QgsGeoreferencerMainWindow::georeference );
@ -1211,7 +1211,7 @@ void QgsGeoreferencerMainWindow::createMapCanvas()
mAdvancedDigitizingDockWidget = new QgsAdvancedDigitizingDockWidget( mCanvas ); mAdvancedDigitizingDockWidget = new QgsAdvancedDigitizingDockWidget( mCanvas );
addDockWidget( Qt::LeftDockWidgetArea, mAdvancedDigitizingDockWidget ); addDockWidget( Qt::LeftDockWidgetArea, mAdvancedDigitizingDockWidget );
mAdvancedDigitizingDockWidget->hide(); mAdvancedDigitizingDockWidget->hide();
connect( mActionAdvancedDigitizingDock, &QAction::triggered, mAdvancedDigitizingDockWidget, [=]( bool checked ) { mAdvancedDigitizingDockWidget->setVisible( checked ); } ); connect( mActionAdvancedDigitizingDock, &QAction::triggered, mAdvancedDigitizingDockWidget, [this]( bool checked ) { mAdvancedDigitizingDockWidget->setVisible( checked ); } );
QgsSnappingConfig snappingConfig; QgsSnappingConfig snappingConfig;
snappingConfig.setMode( Qgis::SnappingMode::AllLayers ); snappingConfig.setMode( Qgis::SnappingMode::AllLayers );
@ -1247,7 +1247,7 @@ void QgsGeoreferencerMainWindow::createMapCanvas()
mSnappingTypeButton->setMenu( typeMenu ); mSnappingTypeButton->setMenu( typeMenu );
mSnappingTypeButton->setObjectName( QStringLiteral( "SnappingTypeButton" ) ); mSnappingTypeButton->setObjectName( QStringLiteral( "SnappingTypeButton" ) );
connect( mSnappingTypeButton, &QToolButton::triggered, this, [=]( QAction *action ) { connect( mSnappingTypeButton, &QToolButton::triggered, this, [this]( QAction *action ) {
QgsSnappingConfig snappingConfig = mSnappingUtils->config(); QgsSnappingConfig snappingConfig = mSnappingUtils->config();
unsigned int type = static_cast<int>( snappingConfig.typeFlag() ); unsigned int type = static_cast<int>( snappingConfig.typeFlag() );
const Qgis::SnappingTypes actionFlag = static_cast<Qgis::SnappingTypes>( action->data().toInt() ); const Qgis::SnappingTypes actionFlag = static_cast<Qgis::SnappingTypes>( action->data().toInt() );
@ -1256,7 +1256,7 @@ void QgsGeoreferencerMainWindow::createMapCanvas()
mSnappingUtils->setConfig( snappingConfig ); mSnappingUtils->setConfig( snappingConfig );
} ); } );
connect( mSnappingTypeButton, &QToolButton::clicked, this, [=]( bool checked ) { connect( mSnappingTypeButton, &QToolButton::clicked, this, [this]( bool checked ) {
QgsSnappingConfig snappingConfig = mSnappingUtils->config(); QgsSnappingConfig snappingConfig = mSnappingUtils->config();
snappingConfig.setEnabled( checked ); snappingConfig.setEnabled( checked );
mSnappingUtils->setConfig( snappingConfig ); mSnappingUtils->setConfig( snappingConfig );
@ -1285,7 +1285,7 @@ void QgsGeoreferencerMainWindow::createMapCanvas()
mToolDeletePoint->setAction( mActionDeletePoint ); mToolDeletePoint->setAction( mActionDeletePoint );
connect( mToolDeletePoint, &QgsGeorefToolDeletePoint::hoverPoint, this, &QgsGeoreferencerMainWindow::hoverPoint ); connect( mToolDeletePoint, &QgsGeorefToolDeletePoint::hoverPoint, this, &QgsGeoreferencerMainWindow::hoverPoint );
connect( mToolDeletePoint, &QgsGeorefToolDeletePoint::deletePoint, this, &QgsGeoreferencerMainWindow::deletePoint ); connect( mToolDeletePoint, &QgsGeorefToolDeletePoint::deletePoint, this, &QgsGeoreferencerMainWindow::deletePoint );
connect( mToolDeletePoint, &QgsMapTool::deactivated, this, [=] { connect( mToolDeletePoint, &QgsMapTool::deactivated, this, [this] {
if ( mHoveredPoint ) if ( mHoveredPoint )
{ {
mHoveredPoint->setHovered( false ); mHoveredPoint->setHovered( false );
@ -1299,7 +1299,7 @@ void QgsGeoreferencerMainWindow::createMapCanvas()
connect( mToolMovePoint, &QgsGeorefToolMovePoint::pointMoving, this, &QgsGeoreferencerMainWindow::movePoint ); connect( mToolMovePoint, &QgsGeorefToolMovePoint::pointMoving, this, &QgsGeoreferencerMainWindow::movePoint );
connect( mToolMovePoint, &QgsGeorefToolMovePoint::pointEndMove, this, &QgsGeoreferencerMainWindow::releasePoint ); connect( mToolMovePoint, &QgsGeorefToolMovePoint::pointEndMove, this, &QgsGeoreferencerMainWindow::releasePoint );
connect( mToolMovePoint, &QgsGeorefToolMovePoint::pointCancelMove, this, &QgsGeoreferencerMainWindow::cancelPoint ); connect( mToolMovePoint, &QgsGeorefToolMovePoint::pointCancelMove, this, &QgsGeoreferencerMainWindow::cancelPoint );
connect( mToolMovePoint, &QgsMapTool::deactivated, this, [=] { connect( mToolMovePoint, &QgsMapTool::deactivated, this, [this] {
mMovingPoint = nullptr; mMovingPoint = nullptr;
if ( mHoveredPoint ) if ( mHoveredPoint )
{ {
@ -1315,7 +1315,7 @@ void QgsGeoreferencerMainWindow::createMapCanvas()
connect( mToolMovePointQgis, &QgsGeorefToolMovePoint::pointMoving, this, &QgsGeoreferencerMainWindow::movePoint ); connect( mToolMovePointQgis, &QgsGeorefToolMovePoint::pointMoving, this, &QgsGeoreferencerMainWindow::movePoint );
connect( mToolMovePointQgis, &QgsGeorefToolMovePoint::pointEndMove, this, &QgsGeoreferencerMainWindow::releasePoint ); connect( mToolMovePointQgis, &QgsGeorefToolMovePoint::pointEndMove, this, &QgsGeoreferencerMainWindow::releasePoint );
connect( mToolMovePointQgis, &QgsGeorefToolMovePoint::pointCancelMove, this, &QgsGeoreferencerMainWindow::cancelPoint ); connect( mToolMovePointQgis, &QgsGeorefToolMovePoint::pointCancelMove, this, &QgsGeoreferencerMainWindow::cancelPoint );
connect( mToolMovePointQgis, &QgsMapTool::deactivated, this, [=] { connect( mToolMovePointQgis, &QgsMapTool::deactivated, this, [this] {
mMovingPointQgis = nullptr; mMovingPointQgis = nullptr;
if ( mHoveredPoint ) if ( mHoveredPoint )
{ {

View File

@ -76,7 +76,7 @@ QgsTransformSettingsDialog::QgsTransformSettingsDialog( Qgis::LayerType type, co
outputFile->setDialogTitle( tr( "Destination File" ) ); outputFile->setDialogTitle( tr( "Destination File" ) );
const QString lastDestinationFolder = settingLastDestinationFolder->value(); const QString lastDestinationFolder = settingLastDestinationFolder->value();
outputFile->setDefaultRoot( lastDestinationFolder.isEmpty() ? QDir::homePath() : lastDestinationFolder ); outputFile->setDefaultRoot( lastDestinationFolder.isEmpty() ? QDir::homePath() : lastDestinationFolder );
connect( outputFile, &QgsFileWidget::fileChanged, this, [=] { connect( outputFile, &QgsFileWidget::fileChanged, this, [outputFile] {
settingLastDestinationFolder->setValue( QFileInfo( outputFile->filePath() ).absolutePath() ); settingLastDestinationFolder->setValue( QFileInfo( outputFile->filePath() ).absolutePath() );
} ); } );
@ -85,7 +85,7 @@ QgsTransformSettingsDialog::QgsTransformSettingsDialog( Qgis::LayerType type, co
mPdfMap->setDialogTitle( tr( "Save Map File As" ) ); mPdfMap->setDialogTitle( tr( "Save Map File As" ) );
const QString lastPdfFolder = settingLastPdfFolder->value(); const QString lastPdfFolder = settingLastPdfFolder->value();
mPdfMap->setDefaultRoot( lastPdfFolder.isEmpty() ? QDir::homePath() : lastPdfFolder ); mPdfMap->setDefaultRoot( lastPdfFolder.isEmpty() ? QDir::homePath() : lastPdfFolder );
connect( mPdfMap, &QgsFileWidget::fileChanged, this, [=] { connect( mPdfMap, &QgsFileWidget::fileChanged, this, [this] {
settingLastPdfFolder->setValue( QFileInfo( mPdfMap->filePath() ).absolutePath() ); settingLastPdfFolder->setValue( QFileInfo( mPdfMap->filePath() ).absolutePath() );
} ); } );
@ -93,7 +93,7 @@ QgsTransformSettingsDialog::QgsTransformSettingsDialog( Qgis::LayerType type, co
mPdfReport->setFilter( tr( "PDF files" ) + " (*.pdf *.PDF)" ); mPdfReport->setFilter( tr( "PDF files" ) + " (*.pdf *.PDF)" );
mPdfReport->setDialogTitle( tr( "Save Report File As" ) ); mPdfReport->setDialogTitle( tr( "Save Report File As" ) );
mPdfReport->setDefaultRoot( lastPdfFolder.isEmpty() ? QDir::homePath() : lastPdfFolder ); mPdfReport->setDefaultRoot( lastPdfFolder.isEmpty() ? QDir::homePath() : lastPdfFolder );
connect( mPdfReport, &QgsFileWidget::fileChanged, this, [=] { connect( mPdfReport, &QgsFileWidget::fileChanged, this, [this] {
settingLastPdfFolder->setValue( QFileInfo( mPdfMap->filePath() ).absolutePath() ); settingLastPdfFolder->setValue( QFileInfo( mPdfMap->filePath() ).absolutePath() );
} ); } );

View File

@ -241,7 +241,7 @@ void QgsAppGpsConnection::showGpsConnectFailureWarning( const QString &message )
QgisApp::instance()->statusBarIface()->clearMessage(); QgisApp::instance()->statusBarIface()->clearMessage();
mConnectionMessageItem = QgisApp::instance()->messageBar()->createMessage( QString(), message ); mConnectionMessageItem = QgisApp::instance()->messageBar()->createMessage( QString(), message );
QPushButton *configureButton = new QPushButton( tr( "Configure Device…" ) ); QPushButton *configureButton = new QPushButton( tr( "Configure Device…" ) );
connect( configureButton, &QPushButton::clicked, configureButton, [=] { connect( configureButton, &QPushButton::clicked, configureButton, [] {
QgisApp::instance()->showOptionsDialog( QgisApp::instance(), QStringLiteral( "mGpsOptions" ) ); QgisApp::instance()->showOptionsDialog( QgisApp::instance(), QStringLiteral( "mGpsOptions" ) );
} ); } );
mConnectionMessageItem->layout()->addWidget( configureButton ); mConnectionMessageItem->layout()->addWidget( configureButton );

View File

@ -125,10 +125,10 @@ QgsAppGpsDigitizing::QgsAppGpsDigitizing( QgsAppGpsConnection *connection, QgsMa
QgsGui::mapLayerActionRegistry()->addMapLayerAction( mUpdateGpsDetailsAction ); QgsGui::mapLayerActionRegistry()->addMapLayerAction( mUpdateGpsDetailsAction );
mCanvasToWgs84Transform = QgsCoordinateTransform( mCanvas->mapSettings().destinationCrs(), mWgs84CRS, QgsProject::instance() ); mCanvasToWgs84Transform = QgsCoordinateTransform( mCanvas->mapSettings().destinationCrs(), mWgs84CRS, QgsProject::instance() );
connect( mCanvas, &QgsMapCanvas::destinationCrsChanged, this, [=] { connect( mCanvas, &QgsMapCanvas::destinationCrsChanged, this, [this] {
mCanvasToWgs84Transform = QgsCoordinateTransform( mCanvas->mapSettings().destinationCrs(), mWgs84CRS, QgsProject::instance() ); mCanvasToWgs84Transform = QgsCoordinateTransform( mCanvas->mapSettings().destinationCrs(), mWgs84CRS, QgsProject::instance() );
} ); } );
connect( QgsProject::instance(), &QgsProject::transformContextChanged, this, [=] { connect( QgsProject::instance(), &QgsProject::transformContextChanged, this, [this] {
setTransformContext( QgsProject::instance()->transformContext() ); setTransformContext( QgsProject::instance()->transformContext() );
mCanvasToWgs84Transform = QgsCoordinateTransform( mCanvas->mapSettings().destinationCrs(), mWgs84CRS, transformContext() ); mCanvasToWgs84Transform = QgsCoordinateTransform( mCanvas->mapSettings().destinationCrs(), mWgs84CRS, transformContext() );
} ); } );
@ -136,7 +136,7 @@ QgsAppGpsDigitizing::QgsAppGpsDigitizing( QgsAppGpsConnection *connection, QgsMa
setEllipsoid( QgsProject::instance()->ellipsoid() ); setEllipsoid( QgsProject::instance()->ellipsoid() );
connect( QgsProject::instance(), &QgsProject::ellipsoidChanged, this, [=] { connect( QgsProject::instance(), &QgsProject::ellipsoidChanged, this, [this] {
setEllipsoid( QgsProject::instance()->ellipsoid() ); setEllipsoid( QgsProject::instance()->ellipsoid() );
} ); } );
@ -146,13 +146,13 @@ QgsAppGpsDigitizing::QgsAppGpsDigitizing( QgsAppGpsConnection *connection, QgsMa
connect( QgsGui::instance(), &QgsGui::optionsChanged, this, &QgsAppGpsDigitizing::gpsSettingsChanged ); connect( QgsGui::instance(), &QgsGui::optionsChanged, this, &QgsAppGpsDigitizing::gpsSettingsChanged );
gpsSettingsChanged(); gpsSettingsChanged();
connect( QgisApp::instance(), &QgisApp::activeLayerChanged, this, [=]( QgsMapLayer *layer ) { connect( QgisApp::instance(), &QgisApp::activeLayerChanged, this, []( QgsMapLayer *layer ) {
if ( QgsProject::instance()->gpsSettings()->destinationFollowsActiveLayer() ) if ( QgsProject::instance()->gpsSettings()->destinationFollowsActiveLayer() )
{ {
QgsProject::instance()->gpsSettings()->setDestinationLayer( qobject_cast<QgsVectorLayer *>( layer ) ); QgsProject::instance()->gpsSettings()->setDestinationLayer( qobject_cast<QgsVectorLayer *>( layer ) );
} }
} ); } );
connect( QgsProject::instance()->gpsSettings(), &QgsProjectGpsSettings::destinationFollowsActiveLayerChanged, this, [=]( bool enabled ) { connect( QgsProject::instance()->gpsSettings(), &QgsProjectGpsSettings::destinationFollowsActiveLayerChanged, this, []( bool enabled ) {
if ( enabled ) if ( enabled )
{ {
QgsProject::instance()->gpsSettings()->setDestinationLayer( qobject_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() ) ); QgsProject::instance()->gpsSettings()->setDestinationLayer( qobject_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() ) );
@ -164,7 +164,7 @@ QgsAppGpsDigitizing::QgsAppGpsDigitizing( QgsAppGpsConnection *connection, QgsMa
} }
setAutomaticallyAddTrackVertices( QgsProject::instance()->gpsSettings()->automaticallyAddTrackVertices() ); setAutomaticallyAddTrackVertices( QgsProject::instance()->gpsSettings()->automaticallyAddTrackVertices() );
connect( QgsProject::instance()->gpsSettings(), &QgsProjectGpsSettings::automaticallyAddTrackVerticesChanged, this, [=]( bool enabled ) { connect( QgsProject::instance()->gpsSettings(), &QgsProjectGpsSettings::automaticallyAddTrackVerticesChanged, this, [this]( bool enabled ) {
setAutomaticallyAddTrackVertices( enabled ); setAutomaticallyAddTrackVertices( enabled );
} ); } );

View File

@ -60,11 +60,11 @@ QgsAppGpsLogging::QgsAppGpsLogging( QgsAppGpsConnection *connection, QObject *pa
: QObject( parent ) : QObject( parent )
, mConnection( connection ) , mConnection( connection )
{ {
connect( QgsProject::instance(), &QgsProject::transformContextChanged, this, [=] { connect( QgsProject::instance(), &QgsProject::transformContextChanged, this, [this] {
if ( mGpkgLogger ) if ( mGpkgLogger )
mGpkgLogger->setTransformContext( QgsProject::instance()->transformContext() ); mGpkgLogger->setTransformContext( QgsProject::instance()->transformContext() );
} ); } );
connect( QgsProject::instance(), &QgsProject::ellipsoidChanged, this, [=] { connect( QgsProject::instance(), &QgsProject::ellipsoidChanged, this, [this] {
if ( mGpkgLogger ) if ( mGpkgLogger )
mGpkgLogger->setEllipsoid( QgsProject::instance()->ellipsoid() ); mGpkgLogger->setEllipsoid( QgsProject::instance()->ellipsoid() );
} ); } );
@ -72,7 +72,7 @@ QgsAppGpsLogging::QgsAppGpsLogging( QgsAppGpsConnection *connection, QObject *pa
connect( mConnection, &QgsAppGpsConnection::connected, this, &QgsAppGpsLogging::gpsConnected ); connect( mConnection, &QgsAppGpsConnection::connected, this, &QgsAppGpsLogging::gpsConnected );
connect( mConnection, &QgsAppGpsConnection::disconnected, this, &QgsAppGpsLogging::gpsDisconnected ); connect( mConnection, &QgsAppGpsConnection::disconnected, this, &QgsAppGpsLogging::gpsDisconnected );
connect( QgsGui::instance(), &QgsGui::optionsChanged, this, [=] { connect( QgsGui::instance(), &QgsGui::optionsChanged, this, [this] {
if ( mGpkgLogger ) if ( mGpkgLogger )
mGpkgLogger->updateGpsSettings(); mGpkgLogger->updateGpsSettings();
} ); } );

View File

@ -101,7 +101,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mShowLocationMarkerAction = new QAction( tr( "Show Location Marker" ), this ); mShowLocationMarkerAction = new QAction( tr( "Show Location Marker" ), this );
mShowLocationMarkerAction->setCheckable( true ); mShowLocationMarkerAction->setCheckable( true );
mShowLocationMarkerAction->setChecked( showLocationMarker ); mShowLocationMarkerAction->setChecked( showLocationMarker );
connect( mShowLocationMarkerAction, &QAction::toggled, this, [=]( bool checked ) { connect( mShowLocationMarkerAction, &QAction::toggled, this, [this]( bool checked ) {
emit locationMarkerToggled( checked ); emit locationMarkerToggled( checked );
QgsGpsMarker::settingShowLocationMarker->setValue( checked ); QgsGpsMarker::settingShowLocationMarker->setValue( checked );
} ); } );
@ -111,7 +111,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mShowBearingLineAction = new QAction( tr( "Show Bearing Line" ), this ); mShowBearingLineAction = new QAction( tr( "Show Bearing Line" ), this );
mShowBearingLineAction->setCheckable( true ); mShowBearingLineAction->setCheckable( true );
mShowBearingLineAction->setChecked( showBearingLine ); mShowBearingLineAction->setChecked( showBearingLine );
connect( mShowBearingLineAction, &QAction::toggled, this, [=]( bool checked ) { connect( mShowBearingLineAction, &QAction::toggled, this, [this]( bool checked ) {
emit bearingLineToggled( checked ); emit bearingLineToggled( checked );
QgsGpsCanvasBridge::settingShowBearingLine->setValue( checked ); QgsGpsCanvasBridge::settingShowBearingLine->setValue( checked );
} ); } );
@ -122,7 +122,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mRotateMapAction = new QAction( tr( "Rotate Map to Match GPS Direction" ), this ); mRotateMapAction = new QAction( tr( "Rotate Map to Match GPS Direction" ), this );
mRotateMapAction->setCheckable( true ); mRotateMapAction->setCheckable( true );
mRotateMapAction->setChecked( rotateMap ); mRotateMapAction->setChecked( rotateMap );
connect( mRotateMapAction, &QAction::toggled, this, [=]( bool checked ) { connect( mRotateMapAction, &QAction::toggled, this, [this]( bool checked ) {
QgsGpsCanvasBridge::settingRotateMap->setValue( checked ); QgsGpsCanvasBridge::settingRotateMap->setValue( checked );
emit rotateMapToggled( checked ); emit rotateMapToggled( checked );
} ); } );
@ -148,7 +148,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
break; break;
} }
connect( mRadioAlwaysRecenter, &QRadioButton::toggled, this, [=]( bool checked ) { connect( mRadioAlwaysRecenter, &QRadioButton::toggled, this, [this]( bool checked ) {
if ( checked ) if ( checked )
{ {
QgsGpsCanvasBridge::settingMapCenteringMode->setValue( Qgis::MapRecenteringMode::Always ); QgsGpsCanvasBridge::settingMapCenteringMode->setValue( Qgis::MapRecenteringMode::Always );
@ -156,7 +156,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
} }
} ); } );
connect( mRadioRecenterWhenOutside, &QRadioButton::toggled, this, [=]( bool checked ) { connect( mRadioRecenterWhenOutside, &QRadioButton::toggled, this, [this]( bool checked ) {
if ( checked ) if ( checked )
{ {
QgsGpsCanvasBridge::settingMapCenteringMode->setValue( Qgis::MapRecenteringMode::WhenOutsideVisibleExtent ); QgsGpsCanvasBridge::settingMapCenteringMode->setValue( Qgis::MapRecenteringMode::WhenOutsideVisibleExtent );
@ -164,7 +164,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
} }
} ); } );
connect( mRadioNeverRecenter, &QRadioButton::toggled, this, [=]( bool checked ) { connect( mRadioNeverRecenter, &QRadioButton::toggled, this, [this]( bool checked ) {
if ( checked ) if ( checked )
{ {
QgsGpsCanvasBridge::settingMapCenteringMode->setValue( Qgis::MapRecenteringMode::Never ); QgsGpsCanvasBridge::settingMapCenteringMode->setValue( Qgis::MapRecenteringMode::Never );
@ -180,7 +180,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mAutoAddTrackVerticesAction = new QAction( tr( "Automatically Add Track Vertices" ), this ); mAutoAddTrackVerticesAction = new QAction( tr( "Automatically Add Track Vertices" ), this );
mAutoAddTrackVerticesAction->setCheckable( true ); mAutoAddTrackVerticesAction->setCheckable( true );
mAutoAddTrackVerticesAction->setChecked( QgsProject::instance()->gpsSettings()->automaticallyAddTrackVertices() ); mAutoAddTrackVerticesAction->setChecked( QgsProject::instance()->gpsSettings()->automaticallyAddTrackVertices() );
connect( mAutoAddTrackVerticesAction, &QAction::toggled, this, [=]( bool checked ) { connect( mAutoAddTrackVerticesAction, &QAction::toggled, this, []( bool checked ) {
if ( checked != QgsProject::instance()->gpsSettings()->automaticallyAddTrackVertices() ) if ( checked != QgsProject::instance()->gpsSettings()->automaticallyAddTrackVertices() )
{ {
QgsProject::instance()->gpsSettings()->setAutomaticallyAddTrackVertices( checked ); QgsProject::instance()->gpsSettings()->setAutomaticallyAddTrackVertices( checked );
@ -194,7 +194,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mAutoSaveAddedFeatureAction = new QAction( tr( "Automatically Save Added Feature" ), this ); mAutoSaveAddedFeatureAction = new QAction( tr( "Automatically Save Added Feature" ), this );
mAutoSaveAddedFeatureAction->setCheckable( true ); mAutoSaveAddedFeatureAction->setCheckable( true );
mAutoSaveAddedFeatureAction->setChecked( QgsProject::instance()->gpsSettings()->automaticallyCommitFeatures() ); mAutoSaveAddedFeatureAction->setChecked( QgsProject::instance()->gpsSettings()->automaticallyCommitFeatures() );
connect( mAutoSaveAddedFeatureAction, &QAction::toggled, this, [=]( bool checked ) { connect( mAutoSaveAddedFeatureAction, &QAction::toggled, this, []( bool checked ) {
if ( checked != QgsProject::instance()->gpsSettings()->automaticallyCommitFeatures() ) if ( checked != QgsProject::instance()->gpsSettings()->automaticallyCommitFeatures() )
{ {
QgsProject::instance()->gpsSettings()->setAutomaticallyCommitFeatures( checked ); QgsProject::instance()->gpsSettings()->setAutomaticallyCommitFeatures( checked );
@ -217,7 +217,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mActionGpkgLog = new QAction( tr( "Log to GeoPackage/Spatialite…" ), this ); mActionGpkgLog = new QAction( tr( "Log to GeoPackage/Spatialite…" ), this );
mActionGpkgLog->setCheckable( true ); mActionGpkgLog->setCheckable( true );
connect( mActionGpkgLog, &QAction::toggled, this, [=]( bool checked ) { connect( mActionGpkgLog, &QAction::toggled, this, [this]( bool checked ) {
if ( checked ) if ( checked )
{ {
const QString lastGpkgLog = QgsAppGpsLogging::settingLastGpkgLog->value(); const QString lastGpkgLog = QgsAppGpsLogging::settingLastGpkgLog->value();
@ -246,7 +246,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
mActionNmeaLog = new QAction( tr( "Log NMEA Sentences…" ), this ); mActionNmeaLog = new QAction( tr( "Log NMEA Sentences…" ), this );
mActionNmeaLog->setCheckable( true ); mActionNmeaLog->setCheckable( true );
connect( mActionNmeaLog, &QAction::toggled, this, [=]( bool checked ) { connect( mActionNmeaLog, &QAction::toggled, this, [this]( bool checked ) {
if ( checked ) if ( checked )
{ {
const QString lastLogFolder = QgsAppGpsLogging::settingLastLogFolder->value(); const QString lastLogFolder = QgsAppGpsLogging::settingLastLogFolder->value();
@ -277,7 +277,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
QAction *settingsAction = new QAction( tr( "GPS Settings…" ), this ); QAction *settingsAction = new QAction( tr( "GPS Settings…" ), this );
settingsAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionOptions.svg" ) ) ); settingsAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionOptions.svg" ) ) );
connect( settingsAction, &QAction::triggered, this, [=] { connect( settingsAction, &QAction::triggered, this, [] {
QgisApp::instance()->showOptionsDialog( QgisApp::instance(), QStringLiteral( "mGpsOptions" ) ); QgisApp::instance()->showOptionsDialog( QgisApp::instance(), QStringLiteral( "mGpsOptions" ) );
} ); } );
@ -344,7 +344,7 @@ void QgsAppGpsSettingsMenu::timeStampMenuAboutToShow()
foundPreviousField = true; foundPreviousField = true;
fieldAction->setChecked( currentTimeStampField == fieldName ); fieldAction->setChecked( currentTimeStampField == fieldName );
} }
connect( fieldAction, &QAction::triggered, this, [=]() { connect( fieldAction, &QAction::triggered, this, [fieldName]() {
if ( QgsProject::instance()->gpsSettings()->destinationTimeStampField() != fieldName ) if ( QgsProject::instance()->gpsSettings()->destinationTimeStampField() != fieldName )
{ {
QgsProject::instance()->gpsSettings()->setDestinationTimeStampField( QgsProject::instance()->gpsSettings()->destinationLayer(), fieldName ); QgsProject::instance()->gpsSettings()->setDestinationTimeStampField( QgsProject::instance()->gpsSettings()->destinationLayer(), fieldName );

Some files were not shown because too many files have changed in this diff Show More