svcore  1.9
Command.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006 Chris Cannam.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef _COMMAND_H_
17 #define _COMMAND_H_
18 
19 #include <QObject>
20 #include <QString>
21 #include <vector>
22 
23 #include "Debug.h"
24 
25 class Command
26 {
27 public:
28  virtual ~Command() { }
29 
30  virtual void execute() = 0;
31  virtual void unexecute() = 0;
32  virtual QString getName() const = 0;
33 };
34 
35 class MacroCommand : public Command
36 {
37 public:
38  MacroCommand(QString name);
39  virtual ~MacroCommand();
40 
41  virtual void addCommand(Command *command);
42  virtual void deleteCommand(Command *command);
43  virtual bool haveCommands() const;
44 
45  virtual void execute();
46  virtual void unexecute();
47 
48  virtual QString getName() const;
49  virtual void setName(QString name);
50 
51 protected:
52  QString m_name;
53  std::vector<Command *> m_commands;
54 };
55 
61 class BundleCommand : public QObject, public MacroCommand
62 {
63  Q_OBJECT
64 
65 public:
66  BundleCommand(QString name);
67  virtual ~BundleCommand();
68 
69  virtual QString getName() const;
70 };
71 
72 #endif
73 
std::vector< Command * > m_commands
Definition: Command.h:53
virtual ~Command()
Definition: Command.h:28
virtual ~BundleCommand()
Definition: Command.cpp:90
virtual QString getName() const
Definition: Command.cpp:95
virtual QString getName() const
Definition: Command.cpp:74
virtual void unexecute()=0
virtual void setName(QString name)
Definition: Command.cpp:80
BundleCommand is a MacroCommand whose name includes a note of how many commands it contains.
Definition: Command.h:61
virtual void unexecute()
Definition: Command.cpp:66
virtual ~MacroCommand()
Definition: Command.cpp:24
virtual void deleteCommand(Command *command)
Definition: Command.cpp:38
virtual QString getName() const =0
MacroCommand(QString name)
Definition: Command.cpp:19
QString m_name
Definition: Command.h:52
virtual void addCommand(Command *command)
Definition: Command.cpp:32
virtual bool haveCommands() const
Definition: Command.cpp:52
BundleCommand(QString name)
Definition: Command.cpp:85
virtual void execute()=0
virtual void execute()
Definition: Command.cpp:58