1 /* 2 * LibrePCB - Professional EDA for everyone! 3 * Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors. 4 * https://librepcb.org/ 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 /******************************************************************************* 21 * Includes 22 ******************************************************************************/ 23 #include "cmdfootprintedit.h" 24 25 #include "../footprint.h" 26 27 #include <QtCore> 28 29 /******************************************************************************* 30 * Namespace 31 ******************************************************************************/ 32 namespace librepcb { 33 namespace library { 34 35 /******************************************************************************* 36 * Constructors / Destructor 37 ******************************************************************************/ 38 CmdFootprintEdit(Footprint & fpt)39CmdFootprintEdit::CmdFootprintEdit(Footprint& fpt) noexcept 40 : UndoCommand(tr("Edit footprint")), 41 mFootprint(fpt), 42 mOldName(fpt.getNames().getDefaultValue()), 43 mNewName(mOldName) { 44 } 45 ~CmdFootprintEdit()46CmdFootprintEdit::~CmdFootprintEdit() noexcept { 47 } 48 49 /******************************************************************************* 50 * Setters 51 ******************************************************************************/ 52 setName(const ElementName & name)53void CmdFootprintEdit::setName(const ElementName& name) noexcept { 54 Q_ASSERT(!wasEverExecuted()); 55 mNewName = name; 56 } 57 58 /******************************************************************************* 59 * Inherited from UndoCommand 60 ******************************************************************************/ 61 performExecute()62bool CmdFootprintEdit::performExecute() { 63 performRedo(); // can throw 64 65 if (mNewName != mOldName) return true; 66 return false; 67 } 68 performUndo()69void CmdFootprintEdit::performUndo() { 70 mFootprint.getNames().setDefaultValue(mOldName); 71 } 72 performRedo()73void CmdFootprintEdit::performRedo() { 74 mFootprint.getNames().setDefaultValue(mNewName); 75 } 76 77 /******************************************************************************* 78 * End of File 79 ******************************************************************************/ 80 81 } // namespace library 82 } // namespace librepcb 83