93 lines
2.3 KiB
C++

/*
Copyright 2006-2024 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "addterminalstripcommand.h"
#include "../../qetproject.h"
#include "../terminalstrip.h"
#include "../qetgraphicsitem/element.h"
#include "../realterminal.h"
#include <QObject>
/**
* @brief AddTerminalStripCommand::AddTerminalStripCommand
* @param strip
* @param parent
*/
AddTerminalStripCommand::AddTerminalStripCommand(TerminalStrip *strip,
QETProject *project,
QUndoCommand *parent) :
QUndoCommand(parent),
m_strip(strip),
m_project(project)
{
setText(QObject::tr("Ajouter un groupe de bornes"));
}
AddTerminalStripCommand::~AddTerminalStripCommand()
{}
void AddTerminalStripCommand::undo() {
if (m_project && m_strip) {
m_project->removeTerminalStrip(m_strip);
}
}
void AddTerminalStripCommand::redo() {
if (m_project && m_strip) {
m_project->addTerminalStrip(m_strip);
}
}
RemoveTerminalStripCommand::RemoveTerminalStripCommand(TerminalStrip *strip,
QETProject *project,
QUndoCommand *parent) :
QUndoCommand(parent),
m_strip(strip),
m_project(project)
{
for (const auto &real_t : strip->realTerminals())
{
if (real_t->element())
m_elements.append(real_t->element());
}
setText(QObject::tr("Supprimer un groupe de bornes"));
}
RemoveTerminalStripCommand::~RemoveTerminalStripCommand()
{}
void RemoveTerminalStripCommand::undo()
{
if (m_project && m_strip) {
for (auto elmt : m_elements) {
m_strip->addTerminal(elmt);
}
m_project->addTerminalStrip(m_strip);
}
}
void RemoveTerminalStripCommand::redo()
{
if (m_project && m_strip) {
for (auto elmt : m_elements) {
m_strip->removeTerminal(elmt);
}
m_project->removeTerminalStrip(m_strip);
}
}