Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutitemundocommand.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 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSLAYOUTITEMUNDOCOMMAND_H 19 : : #define QGSLAYOUTITEMUNDOCOMMAND_H 20 : : 21 : : #include "qgslayoutundocommand.h" 22 : : #include "qgis_core.h" 23 : : 24 : : class QgsLayout; 25 : : class QgsLayoutItem; 26 : : 27 : : SIP_NO_FILE 28 : : 29 : : ///@cond PRIVATE 30 : : 31 : : /** 32 : : * \ingroup core 33 : : * \brief An undo command subclass for layout item undo commands. 34 : : * 35 : : * QgsLayoutItemUndoCommand is a specific layout undo command which is 36 : : * designed for use with QgsLayoutItems. It automatically handles 37 : : * recreating a deleted item when the undo stack rolls back past 38 : : * the item deletion command. 39 : : * 40 : : * \since QGIS 3.0 41 : : */ 42 : 0 : class CORE_EXPORT QgsLayoutItemUndoCommand: public QgsAbstractLayoutUndoCommand 43 : : { 44 : : public: 45 : : 46 : : /** 47 : : * Constructor for QgsLayoutItemUndoCommand. 48 : : * \param item associated layout item 49 : : * \param text undo command descriptive text 50 : : * \param id optional undo command id, used for automatic command merging 51 : : * \param parent command 52 : : */ 53 : : QgsLayoutItemUndoCommand( QgsLayoutItem *item, const QString &text, int id = 0, QUndoCommand *parent SIP_TRANSFERTHIS = nullptr ); 54 : : 55 : : bool mergeWith( const QUndoCommand *command ) override; 56 : : 57 : : /** 58 : : * Returns the layout associated with this command. 59 : : */ 60 : : QgsLayout *layout() const; 61 : : 62 : : /** 63 : : * Returns the associated item's UUID, which uniquely identifies the item 64 : : * within the layout. 65 : : */ 66 : : QString itemUuid() const; 67 : : 68 : : protected: 69 : : 70 : : void saveState( QDomDocument &stateDoc ) const override; 71 : : void restoreState( QDomDocument &stateDoc ) override; 72 : : 73 : : virtual QgsLayoutItem *recreateItem( int itemType, QgsLayout *layout ); 74 : : 75 : : private: 76 : : 77 : : QString mItemUuid; 78 : : QgsLayout *mLayout = nullptr; 79 : : int mItemType = 0; 80 : : 81 : : }; 82 : : 83 : : /** 84 : : * \ingroup core 85 : : * \brief An undo command subclass for layout item deletion undo commands. 86 : : * 87 : : * QgsLayoutItemDeleteUndoCommand is a specific layout undo command which handles 88 : : * layout item deletion. When applied (e.g. as a result of a 'redo' action), 89 : : * the associated layout item is deleted and removed from the layout. 90 : : * 91 : : * \since QGIS 3.0 92 : : */ 93 : 0 : class CORE_EXPORT QgsLayoutItemDeleteUndoCommand: public QgsLayoutItemUndoCommand 94 : : { 95 : : public: 96 : : 97 : : /** 98 : : * Constructor for QgsLayoutItemDeleteUndoCommand. 99 : : * \param item associated layout item 100 : : * \param text undo command descriptive text 101 : : * \param id optional undo command id, used for automatic command merging 102 : : * \param parent command 103 : : */ 104 : : QgsLayoutItemDeleteUndoCommand( QgsLayoutItem *item, const QString &text, int id = 0, QUndoCommand *parent SIP_TRANSFERTHIS = nullptr ); 105 : : bool mergeWith( const QUndoCommand *command ) override; 106 : : void redo() override; 107 : : 108 : : }; 109 : : 110 : : 111 : : /** 112 : : * \ingroup core 113 : : * \brief An undo command subclass for layout item addition undo commands. 114 : : * 115 : : * QgsLayoutItemAddItemCommand is a specific layout undo command which handles 116 : : * layout item creation. When applied (e.g. as a result of a 'redo' action), 117 : : * the associated layout item is recreated and added to the layout. 118 : : * 119 : : * \since QGIS 3.0 120 : : */ 121 : 0 : class CORE_EXPORT QgsLayoutItemAddItemCommand: public QgsLayoutItemUndoCommand 122 : : { 123 : : public: 124 : : 125 : : /** 126 : : * Constructor for QgsLayoutItemAddItemCommand. 127 : : * \param item associated layout item 128 : : * \param text undo command descriptive text 129 : : * \param id optional undo command id, used for automatic command merging 130 : : * \param parent command 131 : : */ 132 : : QgsLayoutItemAddItemCommand( QgsLayoutItem *item, const QString &text, int id = 0, QUndoCommand *parent SIP_TRANSFERTHIS = nullptr ); 133 : : bool containsChange() const override; 134 : : bool mergeWith( const QUndoCommand *command ) override; 135 : : void undo() override; 136 : : 137 : : }; 138 : : 139 : : ///@endcond 140 : : 141 : : #endif