mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
Add atlas expression context scope to layouts
This commit is contained in:
parent
3318bfbb4d
commit
5d1d25b36b
@ -38,6 +38,8 @@ Constructor for new QgsLayoutAtlas.
|
|||||||
|
|
||||||
virtual QgsLayout *layout();
|
virtual QgsLayout *layout();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual bool writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context ) const;
|
virtual bool writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context ) const;
|
||||||
|
|
||||||
virtual bool readXml( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context );
|
virtual bool readXml( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context );
|
||||||
|
@ -35,6 +35,8 @@ Returns the print layout's atlas.
|
|||||||
|
|
||||||
virtual bool readXml( const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context );
|
virtual bool readXml( const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context );
|
||||||
|
|
||||||
|
virtual QgsExpressionContext createExpressionContext() const;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1045,11 +1045,19 @@ with the variables specified.
|
|||||||
.. versionadded:: 3.0
|
.. versionadded:: 3.0
|
||||||
%End
|
%End
|
||||||
|
|
||||||
static QgsExpressionContextScope *atlasScope( const QgsAtlasComposition *atlas ) /Factory/;
|
static QgsExpressionContextScope *compositionAtlasScope( const QgsAtlasComposition *atlas ) /Factory/;
|
||||||
%Docstring
|
%Docstring
|
||||||
Creates a new scope which contains variables and functions relating to a :py:class:`QgsAtlasComposition`.
|
Creates a new scope which contains variables and functions relating to a :py:class:`QgsAtlasComposition`.
|
||||||
For instance, current page name and number.
|
For instance, current page name and number.
|
||||||
|
|
||||||
|
:param atlas: source atlas. If null, a set of default atlas variables will be added to the scope.
|
||||||
|
%End
|
||||||
|
|
||||||
|
static QgsExpressionContextScope *atlasScope( const QgsLayoutAtlas *atlas ) /Factory/;
|
||||||
|
%Docstring
|
||||||
|
Creates a new scope which contains variables and functions relating to a QgsLayoutAtlas.
|
||||||
|
For instance, current page name and number.
|
||||||
|
|
||||||
:param atlas: source atlas. If null, a set of default atlas variables will be added to the scope.
|
:param atlas: source atlas. If null, a set of default atlas variables will be added to the scope.
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ QgsExpressionContext QgsDiagramProperties::createExpressionContext() const
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr )
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr )
|
||||||
<< QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
<< QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
||||||
<< QgsExpressionContextUtils::layerScope( mLayer );
|
<< QgsExpressionContextUtils::layerScope( mLayer );
|
||||||
|
|
||||||
@ -931,7 +931,7 @@ QString QgsDiagramProperties::showExpressionBuilder( const QString &initialExpre
|
|||||||
QgsExpressionContext context;
|
QgsExpressionContext context;
|
||||||
context << QgsExpressionContextUtils::globalScope()
|
context << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr )
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr )
|
||||||
<< QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
<< QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
||||||
<< QgsExpressionContextUtils::layerScope( mLayer );
|
<< QgsExpressionContextUtils::layerScope( mLayer );
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ QgsExpressionContext QgsLabelingGui::createExpressionContext() const
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr )
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr )
|
||||||
<< QgsExpressionContextUtils::mapSettingsScope( QgisApp::instance()->mapCanvas()->mapSettings() );
|
<< QgsExpressionContextUtils::mapSettingsScope( QgisApp::instance()->mapCanvas()->mapSettings() );
|
||||||
|
|
||||||
if ( mLayer )
|
if ( mLayer )
|
||||||
|
@ -255,7 +255,7 @@ void QgsLabelPropertyDialog::setDataDefinedValues( QgsVectorLayer *vlayer )
|
|||||||
QgsExpressionContext context;
|
QgsExpressionContext context;
|
||||||
context << QgsExpressionContextUtils::globalScope()
|
context << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr )
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr )
|
||||||
<< QgsExpressionContextUtils::mapSettingsScope( QgisApp::instance()->mapCanvas()->mapSettings() )
|
<< QgsExpressionContextUtils::mapSettingsScope( QgisApp::instance()->mapCanvas()->mapSettings() )
|
||||||
<< QgsExpressionContextUtils::layerScope( vlayer );
|
<< QgsExpressionContextUtils::layerScope( vlayer );
|
||||||
context.setFeature( mCurLabelFeat );
|
context.setFeature( mCurLabelFeat );
|
||||||
|
@ -33,7 +33,7 @@ QgsRenderContext QgsPointMarkerItem::renderContext( QPainter *painter )
|
|||||||
QgsExpressionContext context;
|
QgsExpressionContext context;
|
||||||
context << QgsExpressionContextUtils::globalScope()
|
context << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
if ( mMapCanvas )
|
if ( mMapCanvas )
|
||||||
{
|
{
|
||||||
context << QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
context << QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
||||||
|
@ -35,7 +35,7 @@ static QList<QgsExpressionContextScope *> _globalProjectAtlasMapLayerScopes( Qgs
|
|||||||
QList<QgsExpressionContextScope *> scopes;
|
QList<QgsExpressionContextScope *> scopes;
|
||||||
scopes << QgsExpressionContextUtils::globalScope()
|
scopes << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
if ( mapCanvas )
|
if ( mapCanvas )
|
||||||
{
|
{
|
||||||
scopes << QgsExpressionContextUtils::mapSettingsScope( mapCanvas->mapSettings() )
|
scopes << QgsExpressionContextUtils::mapSettingsScope( mapCanvas->mapSettings() )
|
||||||
|
@ -130,7 +130,7 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
|
|||||||
|
|
||||||
mContext << QgsExpressionContextUtils::globalScope()
|
mContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr )
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr )
|
||||||
<< QgsExpressionContextUtils::mapSettingsScope( QgisApp::instance()->mapCanvas()->mapSettings() )
|
<< QgsExpressionContextUtils::mapSettingsScope( QgisApp::instance()->mapCanvas()->mapSettings() )
|
||||||
<< QgsExpressionContextUtils::layerScope( mLayer );
|
<< QgsExpressionContextUtils::layerScope( mLayer );
|
||||||
|
|
||||||
|
@ -723,7 +723,7 @@ QgsExpressionContext QgsAtlasComposition::createExpressionContext()
|
|||||||
expressionContext << QgsExpressionContextUtils::projectScope( mComposition->project() )
|
expressionContext << QgsExpressionContextUtils::projectScope( mComposition->project() )
|
||||||
<< QgsExpressionContextUtils::compositionScope( mComposition );
|
<< QgsExpressionContextUtils::compositionScope( mComposition );
|
||||||
|
|
||||||
expressionContext.appendScope( QgsExpressionContextUtils::atlasScope( this ) );
|
expressionContext.appendScope( QgsExpressionContextUtils::compositionAtlasScope( this ) );
|
||||||
if ( mCoverageLayer )
|
if ( mCoverageLayer )
|
||||||
expressionContext.lastScope()->setFields( mCoverageLayer->fields() );
|
expressionContext.lastScope()->setFields( mCoverageLayer->fields() );
|
||||||
if ( mComposition && mComposition->atlasMode() != QgsComposition::AtlasOff )
|
if ( mComposition && mComposition->atlasMode() != QgsComposition::AtlasOff )
|
||||||
|
@ -3284,7 +3284,7 @@ QgsExpressionContext QgsComposition::createExpressionContext() const
|
|||||||
context.appendScope( QgsExpressionContextUtils::compositionScope( this ) );
|
context.appendScope( QgsExpressionContextUtils::compositionScope( this ) );
|
||||||
if ( mAtlasComposition.enabled() )
|
if ( mAtlasComposition.enabled() )
|
||||||
{
|
{
|
||||||
context.appendScope( QgsExpressionContextUtils::atlasScope( &mAtlasComposition ) );
|
context.appendScope( QgsExpressionContextUtils::compositionAtlasScope( &mAtlasComposition ) );
|
||||||
}
|
}
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
@ -325,12 +325,6 @@ QgsExpressionContext QgsLayout::createExpressionContext() const
|
|||||||
context.appendScope( QgsExpressionContextUtils::globalScope() );
|
context.appendScope( QgsExpressionContextUtils::globalScope() );
|
||||||
context.appendScope( QgsExpressionContextUtils::projectScope( mProject ) );
|
context.appendScope( QgsExpressionContextUtils::projectScope( mProject ) );
|
||||||
context.appendScope( QgsExpressionContextUtils::layoutScope( this ) );
|
context.appendScope( QgsExpressionContextUtils::layoutScope( this ) );
|
||||||
#if 0 //TODO
|
|
||||||
if ( mAtlasComposition.enabled() )
|
|
||||||
{
|
|
||||||
context.appendScope( QgsExpressionContextUtils::atlasScope( &mAtlasComposition ) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +42,11 @@ QgsLayout *QgsLayoutAtlas::layout()
|
|||||||
return mLayout;
|
return mLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QgsLayout *QgsLayoutAtlas::layout() const
|
||||||
|
{
|
||||||
|
return mLayout.data();
|
||||||
|
}
|
||||||
|
|
||||||
bool QgsLayoutAtlas::writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext & ) const
|
bool QgsLayoutAtlas::writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext & ) const
|
||||||
{
|
{
|
||||||
QDomElement atlasElem = document.createElement( QStringLiteral( "Atlas" ) );
|
QDomElement atlasElem = document.createElement( QStringLiteral( "Atlas" ) );
|
||||||
|
@ -46,6 +46,13 @@ class CORE_EXPORT QgsLayoutAtlas : public QObject, public QgsAbstractLayoutItera
|
|||||||
|
|
||||||
QString stringType() const override;
|
QString stringType() const override;
|
||||||
QgsLayout *layout() override;
|
QgsLayout *layout() override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the atlas' layout.
|
||||||
|
* \note Not available in Python bindings.
|
||||||
|
*/
|
||||||
|
const QgsLayout *layout() const SIP_SKIP;
|
||||||
|
|
||||||
bool writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context ) const override;
|
bool writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context ) const override;
|
||||||
bool readXml( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
|
bool readXml( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include "qgsfontutils.h"
|
#include "qgsfontutils.h"
|
||||||
#include "qgsexpressioncontext.h"
|
#include "qgsexpressioncontext.h"
|
||||||
#include "qgsmapsettings.h"
|
#include "qgsmapsettings.h"
|
||||||
#include "qgscomposermap.h"
|
#include "qgslayoutitemmap.h"
|
||||||
#include "qgssettings.h"
|
#include "qgssettings.h"
|
||||||
|
|
||||||
#include "qgswebview.h"
|
#include "qgswebview.h"
|
||||||
@ -69,11 +69,9 @@ QgsLayoutItemLabel::QgsLayoutItemLabel( QgsLayout *layout )
|
|||||||
|
|
||||||
if ( mLayout )
|
if ( mLayout )
|
||||||
{
|
{
|
||||||
#if 0 //TODO
|
//connect to context feature changes
|
||||||
//connect to atlas feature changes
|
|
||||||
//to update the expression context
|
//to update the expression context
|
||||||
connect( &mLayout->atlasComposition(), &QgsAtlasComposition::featureChanged, this, &QgsLayoutItemLabel::refreshExpressionContext );
|
connect( &mLayout->context(), &QgsLayoutContext::changed, this, &QgsLayoutItemLabel::refreshExpressionContext );
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mWebPage.reset( new QgsWebPage( this ) );
|
mWebPage.reset( new QgsWebPage( this ) );
|
||||||
@ -244,14 +242,7 @@ void QgsLayoutItemLabel::refreshExpressionContext()
|
|||||||
if ( !mLayout )
|
if ( !mLayout )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QgsVectorLayer *layer = nullptr;
|
QgsVectorLayer *layer = mLayout->context().layer();
|
||||||
#if 0 //TODO
|
|
||||||
if ( mComposition->atlasComposition().enabled() )
|
|
||||||
{
|
|
||||||
layer = mComposition->atlasComposition().coverageLayer();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//setup distance area conversion
|
//setup distance area conversion
|
||||||
if ( layer )
|
if ( layer )
|
||||||
{
|
{
|
||||||
@ -259,12 +250,10 @@ void QgsLayoutItemLabel::refreshExpressionContext()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if 0 //TODO
|
|
||||||
//set to composition's reference map's crs
|
//set to composition's reference map's crs
|
||||||
QgsLayoutItemMap *referenceMap = mComposition->referenceMap();
|
QgsLayoutItemMap *referenceMap = mLayout->referenceMap();
|
||||||
if ( referenceMap )
|
if ( referenceMap )
|
||||||
mDistanceArea->setSourceCrs( referenceMap->crs() );
|
mDistanceArea->setSourceCrs( referenceMap->crs() );
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
mDistanceArea->setEllipsoid( mLayout->project()->ellipsoid() );
|
mDistanceArea->setEllipsoid( mLayout->project()->ellipsoid() );
|
||||||
contentChanged();
|
contentChanged();
|
||||||
|
@ -44,3 +44,15 @@ bool QgsPrintLayout::readXml( const QDomElement &layoutElement, const QDomDocume
|
|||||||
mAtlas->readXml( atlasElem, document, context );
|
mAtlas->readXml( atlasElem, document, context );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QgsExpressionContext QgsPrintLayout::createExpressionContext() const
|
||||||
|
{
|
||||||
|
QgsExpressionContext context = QgsLayout::createExpressionContext();
|
||||||
|
|
||||||
|
if ( mAtlas->enabled() )
|
||||||
|
{
|
||||||
|
context.appendScope( QgsExpressionContextUtils::atlasScope( mAtlas ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
@ -45,6 +45,7 @@ class CORE_EXPORT QgsPrintLayout : public QgsLayout
|
|||||||
|
|
||||||
QDomElement writeXml( QDomDocument &document, const QgsReadWriteContext &context ) const override;
|
QDomElement writeXml( QDomDocument &document, const QgsReadWriteContext &context ) const override;
|
||||||
bool readXml( const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context ) override;
|
bool readXml( const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context ) override;
|
||||||
|
QgsExpressionContext createExpressionContext() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "qgsmaplayerlistutils.h"
|
#include "qgsmaplayerlistutils.h"
|
||||||
#include "qgsprocessingcontext.h"
|
#include "qgsprocessingcontext.h"
|
||||||
#include "qgsprocessingalgorithm.h"
|
#include "qgsprocessingalgorithm.h"
|
||||||
|
#include "qgslayoutatlas.h"
|
||||||
#include "qgslayout.h"
|
#include "qgslayout.h"
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
@ -1127,7 +1128,7 @@ void QgsExpressionContextUtils::setLayoutVariables( QgsLayout *layout, const QVa
|
|||||||
layout->setCustomProperty( QStringLiteral( "variableValues" ), variableValues );
|
layout->setCustomProperty( QStringLiteral( "variableValues" ), variableValues );
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsExpressionContextScope *QgsExpressionContextUtils::atlasScope( const QgsAtlasComposition *atlas )
|
QgsExpressionContextScope *QgsExpressionContextUtils::compositionAtlasScope( const QgsAtlasComposition *atlas )
|
||||||
{
|
{
|
||||||
QgsExpressionContextScope *scope = new QgsExpressionContextScope( QObject::tr( "Atlas" ) );
|
QgsExpressionContextScope *scope = new QgsExpressionContextScope( QObject::tr( "Atlas" ) );
|
||||||
if ( !atlas )
|
if ( !atlas )
|
||||||
@ -1166,6 +1167,45 @@ QgsExpressionContextScope *QgsExpressionContextUtils::atlasScope( const QgsAtlas
|
|||||||
return scope;
|
return scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QgsExpressionContextScope *QgsExpressionContextUtils::atlasScope( const QgsLayoutAtlas *atlas )
|
||||||
|
{
|
||||||
|
QgsExpressionContextScope *scope = new QgsExpressionContextScope( QObject::tr( "Atlas" ) );
|
||||||
|
if ( !atlas )
|
||||||
|
{
|
||||||
|
//add some dummy atlas variables. This is done so that as in certain contexts we want to show
|
||||||
|
//users that these variables are available even if they have no current value
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_pagename" ), QString(), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_feature" ), QVariant::fromValue( QgsFeature() ), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_featureid" ), 0, true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_geometry" ), QVariant::fromValue( QgsGeometry() ), true ) );
|
||||||
|
return scope;
|
||||||
|
}
|
||||||
|
|
||||||
|
//add known atlas variables
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_totalfeatures" ), atlas->count(), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_featurenumber" ), atlas->currentFeatureNumber() + 1, true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_filename" ), atlas->currentFilename(), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_pagename" ), atlas->nameForPage( atlas->currentFeatureNumber() ), true ) );
|
||||||
|
|
||||||
|
if ( atlas->enabled() && atlas->coverageLayer() )
|
||||||
|
{
|
||||||
|
scope->setFields( atlas->coverageLayer()->fields() );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_layerid" ), atlas->coverageLayer()->id(), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_layername" ), atlas->coverageLayer()->name(), true ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( atlas->enabled() )
|
||||||
|
{
|
||||||
|
QgsFeature atlasFeature = atlas->layout()->context().feature();
|
||||||
|
scope->setFeature( atlasFeature );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_feature" ), QVariant::fromValue( atlasFeature ), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_featureid" ), atlasFeature.id(), true ) );
|
||||||
|
scope->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "atlas_geometry" ), QVariant::fromValue( atlasFeature.geometry() ), true ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return scope;
|
||||||
|
}
|
||||||
|
|
||||||
QgsExpressionContextScope *QgsExpressionContextUtils::composerItemScope( const QgsComposerItem *composerItem )
|
QgsExpressionContextScope *QgsExpressionContextUtils::composerItemScope( const QgsComposerItem *composerItem )
|
||||||
{
|
{
|
||||||
QgsExpressionContextScope *scope = new QgsExpressionContextScope( QObject::tr( "Composer Item" ) );
|
QgsExpressionContextScope *scope = new QgsExpressionContextScope( QObject::tr( "Composer Item" ) );
|
||||||
|
@ -40,6 +40,7 @@ class QgsProject;
|
|||||||
class QgsSymbol;
|
class QgsSymbol;
|
||||||
class QgsProcessingAlgorithm;
|
class QgsProcessingAlgorithm;
|
||||||
class QgsProcessingContext;
|
class QgsProcessingContext;
|
||||||
|
class QgsLayoutAtlas;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \ingroup core
|
* \ingroup core
|
||||||
@ -926,7 +927,14 @@ class CORE_EXPORT QgsExpressionContextUtils
|
|||||||
* For instance, current page name and number.
|
* For instance, current page name and number.
|
||||||
* \param atlas source atlas. If null, a set of default atlas variables will be added to the scope.
|
* \param atlas source atlas. If null, a set of default atlas variables will be added to the scope.
|
||||||
*/
|
*/
|
||||||
static QgsExpressionContextScope *atlasScope( const QgsAtlasComposition *atlas ) SIP_FACTORY;
|
static QgsExpressionContextScope *compositionAtlasScope( const QgsAtlasComposition *atlas ) SIP_FACTORY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new scope which contains variables and functions relating to a QgsLayoutAtlas.
|
||||||
|
* For instance, current page name and number.
|
||||||
|
* \param atlas source atlas. If null, a set of default atlas variables will be added to the scope.
|
||||||
|
*/
|
||||||
|
static QgsExpressionContextScope *atlasScope( const QgsLayoutAtlas *atlas ) SIP_FACTORY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new scope which contains variables and functions relating to a QgsComposerItem.
|
* Creates a new scope which contains variables and functions relating to a QgsComposerItem.
|
||||||
|
@ -635,7 +635,7 @@ void QgsCategorizedSymbolRendererWidget::addCategories()
|
|||||||
QgsExpressionContext context;
|
QgsExpressionContext context;
|
||||||
context << QgsExpressionContextUtils::globalScope()
|
context << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr )
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr )
|
||||||
<< QgsExpressionContextUtils::layerScope( mLayer );
|
<< QgsExpressionContextUtils::layerScope( mLayer );
|
||||||
|
|
||||||
expression->prepare( &context );
|
expression->prepare( &context );
|
||||||
@ -1014,7 +1014,7 @@ QgsExpressionContext QgsCategorizedSymbolRendererWidget::createExpressionContext
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
|
|
||||||
if ( mContext.mapCanvas() )
|
if ( mContext.mapCanvas() )
|
||||||
{
|
{
|
||||||
|
@ -178,7 +178,7 @@ void QgsDataDefinedSizeLegendWidget::changeSymbol()
|
|||||||
QgsExpressionContext ec;
|
QgsExpressionContext ec;
|
||||||
ec << QgsExpressionContextUtils::globalScope()
|
ec << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
if ( mMapCanvas )
|
if ( mMapCanvas )
|
||||||
ec << QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() );
|
ec << QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() );
|
||||||
context.setExpressionContext( &ec );
|
context.setExpressionContext( &ec );
|
||||||
|
@ -396,7 +396,7 @@ QgsExpressionContext QgsGraduatedSymbolRendererWidget::createExpressionContext()
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
|
|
||||||
if ( mContext.mapCanvas() )
|
if ( mContext.mapCanvas() )
|
||||||
{
|
{
|
||||||
|
@ -38,7 +38,7 @@ QgsExpressionContext QgsHeatmapRendererWidget::createExpressionContext() const
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
|
|
||||||
if ( mContext.mapCanvas() )
|
if ( mContext.mapCanvas() )
|
||||||
{
|
{
|
||||||
|
@ -217,7 +217,7 @@ QgsExpressionContext QgsLayerPropertiesWidget::createExpressionContext() const
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
|
|
||||||
if ( mContext.mapCanvas() )
|
if ( mContext.mapCanvas() )
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,7 @@ QgsExpressionContext QgsDataDefinedValueDialog::createExpressionContext() const
|
|||||||
QgsExpressionContext expContext;
|
QgsExpressionContext expContext;
|
||||||
expContext << QgsExpressionContextUtils::globalScope()
|
expContext << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
if ( mContext.mapCanvas() )
|
if ( mContext.mapCanvas() )
|
||||||
{
|
{
|
||||||
expContext << QgsExpressionContextUtils::mapSettingsScope( mContext.mapCanvas()->mapSettings() )
|
expContext << QgsExpressionContextUtils::mapSettingsScope( mContext.mapCanvas()->mapSettings() )
|
||||||
|
@ -79,7 +79,7 @@ QList<QgsExpressionContextScope *> QgsSymbolWidgetContext::globalProjectAtlasMap
|
|||||||
QList<QgsExpressionContextScope *> scopes;
|
QList<QgsExpressionContextScope *> scopes;
|
||||||
scopes << QgsExpressionContextUtils::globalScope()
|
scopes << QgsExpressionContextUtils::globalScope()
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
<< QgsExpressionContextUtils::atlasScope( nullptr );
|
<< QgsExpressionContextUtils::compositionAtlasScope( nullptr );
|
||||||
if ( mMapCanvas )
|
if ( mMapCanvas )
|
||||||
{
|
{
|
||||||
scopes << QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
scopes << QgsExpressionContextUtils::mapSettingsScope( mMapCanvas->mapSettings() )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user