Skip to content

Commit

Permalink
Add export layer settings to QgsLayoutContext
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 7, 2017
1 parent 9d04e67 commit 71c41d4
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 0 deletions.
23 changes: 23 additions & 0 deletions python/core/layout/qgslayoutcontext.sip
Expand Up @@ -176,6 +176,29 @@ class QgsLayoutContext : QObject
:rtype: bool
%End

void setCurrentExportLayer( int layer = -1 );
%Docstring
Sets the current item ``layer`` to draw while exporting. QgsLayoutItem subclasses
which support multi-layer SVG exports must check the currentExportLayer()
and customise their rendering based on the layer.

If ``layer`` is -1, all item layers will be rendered.

.. seealso:: currentExportLayer()
%End

int currentExportLayer() const;
%Docstring
Returns the current item layer to draw while exporting. QgsLayoutItem subclasses
which support multi-layer SVG exports must check this
and customise their rendering based on the layer.

If ``layer`` is -1, all item layers should be rendered.

.. seealso:: setCurrentExportLayer()
:rtype: int
%End

signals:

void flagsChanged( QgsLayoutContext::Flags flags );
Expand Down
24 changes: 24 additions & 0 deletions src/core/layout/qgslayoutcontext.h
Expand Up @@ -188,6 +188,28 @@ class CORE_EXPORT QgsLayoutContext : public QObject
*/
bool pagesVisible() const { return mPagesVisible; }

/**
* Sets the current item \a layer to draw while exporting. QgsLayoutItem subclasses
* which support multi-layer SVG exports must check the currentExportLayer()
* and customise their rendering based on the layer.
*
* If \a layer is -1, all item layers will be rendered.
*
* \see currentExportLayer()
*/
void setCurrentExportLayer( int layer = -1 ) { mCurrentExportLayer = layer; }

/**
* Returns the current item layer to draw while exporting. QgsLayoutItem subclasses
* which support multi-layer SVG exports must check this
* and customise their rendering based on the layer.
*
* If \a layer is -1, all item layers should be rendered.
*
* \see setCurrentExportLayer()
*/
int currentExportLayer() const { return mCurrentExportLayer; }

signals:

/**
Expand All @@ -200,6 +222,8 @@ class CORE_EXPORT QgsLayoutContext : public QObject

Flags mFlags = 0;

int mCurrentExportLayer = -1;

QgsFeature mFeature;
QPointer< QgsVectorLayer > mLayer;

Expand Down
10 changes: 10 additions & 0 deletions tests/src/core/testqgslayoutcontext.cpp
Expand Up @@ -39,6 +39,7 @@ class TestQgsLayoutContext: public QObject
void dpi();
void renderContextFlags();
void boundingBoxes();
void exportLayer();

private:
QString mReport;
Expand Down Expand Up @@ -180,5 +181,14 @@ void TestQgsLayoutContext::boundingBoxes()
QVERIFY( context.boundingBoxesVisible() );
}

void TestQgsLayoutContext::exportLayer()
{
QgsLayoutContext context;
// must default to -1
QCOMPARE( context.currentExportLayer(), -1 );
context.setCurrentExportLayer( 1 );
QCOMPARE( context.currentExportLayer(), 1 );
}

QGSTEST_MAIN( TestQgsLayoutContext )
#include "testqgslayoutcontext.moc"

0 comments on commit 71c41d4

Please sign in to comment.