lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #include "Command.h" lbajardsilogic@0: lbajardsilogic@0: MacroCommand::MacroCommand(QString name) : lbajardsilogic@0: m_name(name) lbajardsilogic@0: { lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: MacroCommand::~MacroCommand() lbajardsilogic@0: { lbajardsilogic@0: for (size_t i = 0; i < m_commands.size(); ++i) { lbajardsilogic@0: delete m_commands[i]; lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: MacroCommand::addCommand(Command *command) lbajardsilogic@0: { lbajardsilogic@0: m_commands.push_back(command); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: MacroCommand::deleteCommand(Command *command) lbajardsilogic@0: { lbajardsilogic@0: for (std::vector::iterator i = m_commands.begin(); lbajardsilogic@0: i != m_commands.end(); ++i) { lbajardsilogic@0: lbajardsilogic@0: if (*i == command) { lbajardsilogic@0: m_commands.erase(i); lbajardsilogic@0: delete command; lbajardsilogic@0: return; lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: bool lbajardsilogic@0: MacroCommand::haveCommands() const lbajardsilogic@0: { lbajardsilogic@0: return !m_commands.empty(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: MacroCommand::execute() lbajardsilogic@0: { lbajardsilogic@0: for (size_t i = 0; i < m_commands.size(); ++i) { lbajardsilogic@0: m_commands[i]->execute(); lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: MacroCommand::unexecute() lbajardsilogic@0: { lbajardsilogic@0: for (size_t i = 0; i < m_commands.size(); ++i) { lbajardsilogic@0: m_commands[m_commands.size() - i - 1]->unexecute(); lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QString lbajardsilogic@0: MacroCommand::getName() const lbajardsilogic@0: { lbajardsilogic@0: return m_name; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: MacroCommand::setName(QString name) lbajardsilogic@0: { lbajardsilogic@0: m_name = name; lbajardsilogic@0: } lbajardsilogic@0: