Add export layer settings to QgsLayoutContext

This commit is contained in:
Nyall Dawson 2017-10-20 14:08:03 +10:00
parent 9d04e679a2
commit 71c41d49b7
3 changed files with 57 additions and 0 deletions

View File

@ -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 );

View File

@ -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:
/**
@ -200,6 +222,8 @@ class CORE_EXPORT QgsLayoutContext : public QObject
Flags mFlags = 0;
int mCurrentExportLayer = -1;
QgsFeature mFeature;
QPointer< QgsVectorLayer > mLayer;

View File

@ -39,6 +39,7 @@ class TestQgsLayoutContext: public QObject
void dpi();
void renderContextFlags();
void boundingBoxes();
void exportLayer();
private:
QString mReport;
@ -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"