Seamly2D
Code documentation
add_draftblock.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  ** @file add_draftblock.cpp
3  ** @author Douglas S Caskey
4  ** @date Dec 27, 2022
5  **
6  ** @copyright
7  ** Copyright (C) 2017 - 2022 Seamly, LLC
8  ** https://github.com/fashionfreedom/seamly2d
9  **
10  ** @brief
11  ** Seamly2D 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 3 of the License, or
14  ** (at your option) any later version.
15  **
16  ** Seamly2D is distributed in the hope that it will be useful,
17  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
18  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  ** GNU General Public License for more details.
20  **
21  ** You should have received a copy of the GNU General Public License
22  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
23  **************************************************************************/
24 
25  /************************************************************************
26  **
27  ** @file addpatternpiece.cpp
28  ** @author Roman Telezhynskyi <dismine(at)gmail.com>
29  ** @date 9 6, 2014
30  **
31  ** @brief
32  ** @copyright
33  ** This source code is part of the Valentina project, a pattern making
34  ** program, whose allow create and modeling patterns of clothing.
35  ** Copyright (C) 2013-2015 Valentina project
36  ** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
37  **
38  ** Valentina is free software: you can redistribute it and/or modify
39  ** it under the terms of the GNU General Public License as published by
40  ** the Free Software Foundation, either version 3 of the License, or
41  ** (at your option) any later version.
42  **
43  ** Valentina is distributed in the hope that it will be useful,
44  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
45  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
46  ** GNU General Public License for more details.
47  **
48  ** You should have received a copy of the GNU General Public License
49  ** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
50  **
51  *************************************************************************/
52 
53 #include "add_draftblock.h"
54 
55 #include "../vmisc/def.h"
56 #include "../vmisc/logging.h"
57 #include "../ifc/xml/vabstractpattern.h"
58 #include "vundocommand.h"
59 
60 //---------------------------------------------------------------------------------------------------------------------
61 AddDraftBlock::AddDraftBlock(const QDomElement &xml, VAbstractPattern *doc, const QString &draftBlockName,
62  QUndoCommand *parent)
63  : VUndoCommand(xml, doc, parent)
64  , draftBlockName(draftBlockName)
65 {
66  SCASSERT(draftBlockName.isEmpty() == false)
67  setText(tr("add draft block %1").arg(draftBlockName));
68 }
69 
70 //---------------------------------------------------------------------------------------------------------------------
72 {}
73 
74 //---------------------------------------------------------------------------------------------------------------------
76 {
77  qCDebug(vUndo, "Undo.");
78 
79  if (doc->draftBlockCount() <= 1)
80  {
81  emit ClearScene();
82  }
83  else
84  {
85  QDomElement rootElement = doc->documentElement();
86  QDomElement draftBlock = doc->getDraftBlockElement(draftBlockName);
87  rootElement.removeChild(draftBlock);
88  emit NeedFullParsing();
89  }
90 }
91 
92 //---------------------------------------------------------------------------------------------------------------------
94 {
95  qCDebug(vUndo, "Redo.");
96 
97  if (doc->draftBlockCount() == 0)
98  {
100  }
101 
102  QDomElement rootElement = doc->documentElement();
103 
104  rootElement.appendChild(xml);
105 
106  RedoFullParsing();
107 }
virtual void redo() Q_DECL_OVERRIDE
AddDraftBlock(const QDomElement &xml, VAbstractPattern *doc, const QString &draftBlockName, QUndoCommand *parent=nullptr)
virtual ~AddDraftBlock() Q_DECL_OVERRIDE
virtual void undo() Q_DECL_OVERRIDE
QString draftBlockName
int draftBlockCount() const
QDomElement getDraftBlockElement(const QString &name)
virtual void CreateEmptyFile()=0
void NeedFullParsing()
virtual void RedoFullParsing()
void ClearScene()
QDomElement xml
Definition: vundocommand.h:105
VAbstractPattern * doc
Definition: vundocommand.h:106
#define SCASSERT(cond)
Definition: def.h:317