Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutgridsettings.h 3 : : ----------------------- 4 : : begin : July 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : /*************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #ifndef QGSLAYOUTGRIDSETTINGS_H 17 : : #define QGSLAYOUTGRIDSETTINGS_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgslayoutmeasurement.h" 21 : : #include "qgslayoutpoint.h" 22 : : #include "qgslayoutundocommand.h" 23 : : #include "qgslayoutserializableobject.h" 24 : : #include <QPen> 25 : : 26 : : class QgsLayout; 27 : : class QgsReadWriteContext; 28 : : 29 : : /** 30 : : * \ingroup core 31 : : * \class QgsLayoutGridSettings 32 : : * \brief Contains settings relating to the appearance, spacing and offset for layout grids. 33 : : * \since QGIS 3.0 34 : : */ 35 : 0 : class CORE_EXPORT QgsLayoutGridSettings : public QgsLayoutSerializableObject 36 : : { 37 : : 38 : : public: 39 : : 40 : : //! Style for drawing the page/snapping grid 41 : : enum Style 42 : : { 43 : : StyleLines, //!< Solid lines 44 : : StyleDots, //!< Dots 45 : : StyleCrosses //!< Crosses 46 : : }; 47 : : 48 : : /** 49 : : * Constructor for QgsLayoutGridSettings. 50 : : */ 51 : : QgsLayoutGridSettings( QgsLayout *layout ); 52 : : 53 : 0 : QString stringType() const override { return QStringLiteral( "LayoutGrid" ); } 54 : : QgsLayout *layout() override; 55 : : 56 : : /** 57 : : * Sets the page/snap grid \a resolution. 58 : : * \see resolution() 59 : : * \see setOffset() 60 : : */ 61 : : void setResolution( QgsLayoutMeasurement resolution ); 62 : : 63 : : /** 64 : : * Returns the page/snap grid resolution. 65 : : * \see setResolution() 66 : : * \see offset() 67 : : */ 68 : 0 : QgsLayoutMeasurement resolution() const { return mGridResolution;} 69 : : 70 : : /** 71 : : * Sets the \a offset of the page/snap grid. 72 : : * \see offset() 73 : : * \see setResolution() 74 : : */ 75 : : void setOffset( const QgsLayoutPoint &offset ); 76 : : 77 : : /** 78 : : * Returns the offset of the page/snap grid. 79 : : * \see setOffset() 80 : : * \see resolution() 81 : : */ 82 : 0 : QgsLayoutPoint offset() const { return mGridOffset; } 83 : : 84 : : /** 85 : : * Sets the \a pen used for drawing page/snap grids. 86 : : * \see pen() 87 : : * \see setStyle() 88 : : */ 89 : : void setPen( const QPen &pen ) { mGridPen = pen; } 90 : : 91 : : /** 92 : : * Returns the pen used for drawing page/snap grids. 93 : : * \see setPen() 94 : : * \see style() 95 : : */ 96 : 0 : QPen pen() const { return mGridPen; } 97 : : 98 : : /** 99 : : * Sets the \a style used for drawing the page/snap grids. 100 : : * \see style() 101 : : * \see setPen() 102 : : */ 103 : : void setStyle( const Style style ) { mGridStyle = style; } 104 : : 105 : : /** 106 : : * Returns the style used for drawing the page/snap grids. 107 : : * \see setStyle() 108 : : * \see pen() 109 : : */ 110 : 0 : Style style() const { return mGridStyle; } 111 : : 112 : : /** 113 : : * Loads grid settings from the application layout settings. 114 : : */ 115 : : void loadFromSettings(); 116 : : 117 : : /** 118 : : * Stores the grid's state in a DOM element. The \a parentElement should refer to the parent layout's DOM element. 119 : : * \see readXml() 120 : : */ 121 : : bool writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context ) const override; 122 : : 123 : : /** 124 : : * Sets the grid's state from a DOM element. gridElement is the DOM node corresponding to the grid. 125 : : * \see writeXml() 126 : : */ 127 : : bool readXml( const QDomElement &gridElement, const QDomDocument &document, const QgsReadWriteContext &context ) override; 128 : : 129 : : private: 130 : : 131 : : // Used for 'collapsing' undo commands 132 : : enum UndoCommand 133 : : { 134 : : UndoGridResolution = 1, 135 : : UndoGridOffset, 136 : : }; 137 : : 138 : : QgsLayoutMeasurement mGridResolution; 139 : : QgsLayoutPoint mGridOffset; 140 : : QPen mGridPen; 141 : : Style mGridStyle = StyleLines; 142 : : QgsLayout *mLayout = nullptr; 143 : : 144 : : }; 145 : : 146 : : #endif //QGSLAYOUTGRIDSETTINGS_H