1 /* 2 * changetileobjectgroup.h 3 * Copyright 2013, Thorbjørn Lindeijer <bjorn@lindeijer.nl> 4 * 5 * This file is part of Tiled. 6 * 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the Free 9 * Software Foundation; either version 2 of the License, or (at your option) 10 * any later version. 11 * 12 * This program is distributed in the hope that it will be useful, but WITHOUT 13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15 * more details. 16 * 17 * You should have received a copy of the GNU General Public License along with 18 * this program. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #pragma once 22 23 #include <QUndoCommand> 24 25 #include <memory> 26 27 namespace Tiled { 28 29 class ObjectGroup; 30 class Tile; 31 32 class TilesetDocument; 33 34 class ChangeTileObjectGroup : public QUndoCommand 35 { 36 public: 37 /** 38 * Creates a command that changes the ObjectGroup of the given \a tile. The 39 * command takes ownership of the \a objectGroup. 40 */ 41 ChangeTileObjectGroup(TilesetDocument *tilesetDocument, 42 Tile *tile, 43 std::unique_ptr<ObjectGroup> objectGroup, 44 QUndoCommand *parent = nullptr); 45 undo()46 void undo() override { swap(); } redo()47 void redo() override { swap(); } 48 49 private: 50 void swap(); 51 52 TilesetDocument *mTilesetDocument; 53 Tile *mTile; 54 std::unique_ptr<ObjectGroup> mObjectGroup; 55 }; 56 57 } // namespace Tiled 58