1 /* 2 * SPDX-FileCopyrightText: 2012 Sebastian Gottfried <sebastiangottfried@web.de> 3 * 4 * SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #include "abstracteditor.h" 8 9 #include <QMap> 10 #include <QUndoStack> 11 #include <QUndoGroup> 12 AbstractEditor(QWidget * parent)13AbstractEditor::AbstractEditor(QWidget* parent): 14 QWidget(parent), 15 m_undoGroup(0), 16 m_undoStacks(new QMap<QString,QUndoStack*>), 17 m_currentUndoStack(0) 18 { 19 } 20 ~AbstractEditor()21AbstractEditor::~AbstractEditor() 22 { 23 delete m_undoStacks; 24 } 25 undoGroup() const26QUndoGroup* AbstractEditor::undoGroup() const 27 { 28 return m_undoGroup; 29 } 30 setUndoGroup(QUndoGroup * undoGroup)31void AbstractEditor::setUndoGroup(QUndoGroup* undoGroup) 32 { 33 m_undoGroup = undoGroup; 34 } 35 initUndoStack(const QString & undoStackId)36void AbstractEditor::initUndoStack(const QString& undoStackId) 37 { 38 if (m_undoStacks->contains(undoStackId)) 39 { 40 m_currentUndoStack = m_undoStacks->value(undoStackId); 41 } 42 else 43 { 44 m_currentUndoStack = new QUndoStack(this); 45 m_undoStacks->insert(undoStackId, m_currentUndoStack); 46 undoGroup()->addStack(m_currentUndoStack); 47 } 48 49 undoGroup()->setActiveStack(m_currentUndoStack); 50 } 51 clearUndoStack(const QString & undoStackId)52void AbstractEditor::clearUndoStack(const QString& undoStackId) 53 { 54 if (m_undoStacks->contains(undoStackId)) 55 { 56 m_undoStacks->value(undoStackId)->clear(); 57 } 58 } 59 currentUndoStack() const60QUndoStack* AbstractEditor::currentUndoStack() const 61 { 62 return m_currentUndoStack; 63 } 64