1 /* 2 SPDX-License-Identifier: GPL-2.0-or-later 3 SPDX-FileCopyrightText: 2012-2014 Umbrello UML Modeller Authors <umbrello-devel@kde.org> 4 */ 5 6 #include "cmdcreatediagram.h" 7 8 #include "model_utils.h" 9 #include "umldoc.h" 10 #include "umlscene.h" 11 #include "umlview.h" 12 13 #include <KLocalizedString> 14 15 namespace Uml 16 { 17 CmdCreateDiagram(UMLDoc * doc,Uml::DiagramType::Enum type,const QString & name,UMLFolder * parent)18 CmdCreateDiagram::CmdCreateDiagram(UMLDoc* doc, Uml::DiagramType::Enum type, const QString& name, UMLFolder *parent) 19 : QUndoCommand(), 20 m_name(name), 21 m_type(type), 22 m_pUMLDoc(doc), 23 m_pUMLView(0), 24 m_parent(parent) 25 { 26 QString msg = i18n("Create diagram %1: %2", DiagramType::toString(type), name); 27 setText(msg); 28 29 m_sceneId = Uml::ID::None; 30 } 31 ~CmdCreateDiagram()32 CmdCreateDiagram::~CmdCreateDiagram() 33 { 34 } 35 redo()36 void CmdCreateDiagram::redo() 37 { 38 if (!m_pUMLDoc->findView(m_type, m_name, true)) { 39 Uml::ModelType::Enum modelType = Model_Utils::convert_DT_MT(m_type); 40 UMLFolder* folder = m_parent ? m_parent : m_pUMLDoc->rootFolder(modelType); 41 m_pUMLView = m_pUMLDoc->createDiagram(folder, m_type, m_name, m_sceneId); 42 } 43 44 // Remember the scene-ID, it might be auto generated. The ID must 45 // not change after undo/redo because other commands may try to 46 // lookup the diagram later. 47 m_sceneId = m_pUMLView->umlScene()->ID(); 48 } 49 undo()50 void CmdCreateDiagram::undo() 51 { 52 if (m_pUMLView) { 53 m_pUMLDoc->removeDiagramCmd(m_sceneId); 54 } 55 } 56 57 } 58