/* Copyright 2006-2023 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 . */ #ifndef GROUPTERMINALSCOMMAND_H #define GROUPTERMINALSCOMMAND_H #include #include #include #include "../terminalstrip.h" /** * @brief The GroupTerminalsCommand class * Class used to group (make level terminal) together */ class GroupTerminalsCommand : public QUndoCommand { public: GroupTerminalsCommand(TerminalStrip *strip, const QSharedPointer &receiver_, const QVector> &to_group, QUndoCommand *parent = nullptr); void undo() override; void redo() override; private: QPointer m_terminal_strip; QSharedPointer m_receiver; QVector> m_to_group; }; /** * @brief The UnGroupTerminalsCommand class * This class is used to ungroup terminal (remove level of multi level terminal) */ class UnGroupTerminalsCommand : public QUndoCommand { public: UnGroupTerminalsCommand(TerminalStrip *strip, const QVector> &to_ungroup, QUndoCommand *parent = nullptr); void undo() override; void redo() override; private: void setUp(const QVector> &to_ungroup); private: QPointer m_terminal_strip; QHash , QVector>> m_physical_real_H; QVector, int>> m_real_t_level; }; #endif // GROUPTERMINALSCOMMAND_H