diff options
Diffstat (limited to 'src/FbTk')
-rw-r--r-- | src/FbTk/MacroCommand.cc | 18 | ||||
-rw-r--r-- | src/FbTk/MacroCommand.hh | 13 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/FbTk/MacroCommand.cc b/src/FbTk/MacroCommand.cc index adee9cb..491b01e 100644 --- a/src/FbTk/MacroCommand.cc +++ b/src/FbTk/MacroCommand.cc | |||
@@ -38,6 +38,24 @@ void MacroCommand::execute() { | |||
38 | m_commandlist[i]->execute(); | 38 | m_commandlist[i]->execute(); |
39 | } | 39 | } |
40 | 40 | ||
41 | ToggleCommand::ToggleCommand() { | ||
42 | m_state = 0; | ||
43 | } | ||
44 | |||
45 | void ToggleCommand::add(RefCount<Command> &com) { | ||
46 | m_commandlist.push_back(com); | ||
47 | } | ||
48 | |||
49 | size_t ToggleCommand::size() const { | ||
50 | return m_commandlist.size(); | ||
51 | } | ||
52 | |||
53 | void ToggleCommand::execute() { | ||
54 | m_commandlist[m_state]->execute(); | ||
55 | if (++m_state >= m_commandlist.size()) | ||
56 | m_state = 0; | ||
57 | } | ||
58 | |||
41 | }; // end namespace FbTk | 59 | }; // end namespace FbTk |
42 | 60 | ||
43 | 61 | ||
diff --git a/src/FbTk/MacroCommand.hh b/src/FbTk/MacroCommand.hh index f29e05c..7aa9d66 100644 --- a/src/FbTk/MacroCommand.hh +++ b/src/FbTk/MacroCommand.hh | |||
@@ -42,6 +42,19 @@ private: | |||
42 | std::vector<RefCount<Command> > m_commandlist; | 42 | std::vector<RefCount<Command> > m_commandlist; |
43 | }; | 43 | }; |
44 | 44 | ||
45 | /// executes one command at a time | ||
46 | class ToggleCommand:public Command { | ||
47 | public: | ||
48 | ToggleCommand(); | ||
49 | void add(RefCount<Command> &com); | ||
50 | size_t size() const; | ||
51 | virtual void execute(); | ||
52 | |||
53 | private: | ||
54 | std::vector<RefCount<Command> > m_commandlist; | ||
55 | size_t m_state; | ||
56 | }; | ||
57 | |||
45 | } // end namespace FbTk | 58 | } // end namespace FbTk |
46 | 59 | ||
47 | #endif // FBTK_MACROCOMMAND_HH | 60 | #endif // FBTK_MACROCOMMAND_HH |