1 #include <ardour/session.h>
2 #include <ardour/route.h>
3 #include <pbd/memento_command.h>
4 #include <ardour/diskstream.h>
8 Command *Session::memento_command_factory(XMLNode *n)
11 XMLNode *before, *after;
15 /* get before and/or after */
17 /* get an object by id by trial and error, and use it to construct an
18 * appropriate memento command */
20 if (Diskstream *obj = diskstream_by_id(id))
21 return new MementoCommand<Diskstream>(*obj, *before, *after);
28 Session::GlobalSoloStateCommand::GlobalSoloStateCommand(Session &sess, void *src)
29 : sess(sess), src(src)
31 after = before = sess.get_global_route_boolean(&Route::soloed);
33 void Session::GlobalSoloStateCommand::mark()
35 after = sess.get_global_route_boolean(&Route::soloed);
37 void Session::GlobalSoloStateCommand::operator()()
39 sess.set_global_solo(after, src);
41 void Session::GlobalSoloStateCommand::undo()
43 sess.set_global_solo(before, src);
45 XMLNode &Session::GlobalSoloStateCommand::get_state()
47 XMLNode *node = new XMLNode("GlobalSoloStateCommand");
52 Session::GlobalMuteStateCommand::GlobalMuteStateCommand(Session &sess, void *src)
53 : sess(sess), src(src)
55 after = before = sess.get_global_route_boolean(&Route::muted);
57 void Session::GlobalMuteStateCommand::mark()
59 after = sess.get_global_route_boolean(&Route::muted);
61 void Session::GlobalMuteStateCommand::operator()()
63 sess.set_global_mute(after, src);
65 void Session::GlobalMuteStateCommand::undo()
67 sess.set_global_mute(before, src);
69 XMLNode &Session::GlobalMuteStateCommand::get_state()
71 XMLNode *node = new XMLNode("GlobalMuteStateCommand");
76 Session::GlobalRecordEnableStateCommand::GlobalRecordEnableStateCommand(Session &sess, void *src)
77 : sess(sess), src(src)
79 after = before = sess.get_global_route_boolean(&Route::record_enabled);
81 void Session::GlobalRecordEnableStateCommand::mark()
83 after = sess.get_global_route_boolean(&Route::record_enabled);
85 void Session::GlobalRecordEnableStateCommand::operator()()
87 sess.set_global_record_enable(after, src);
89 void Session::GlobalRecordEnableStateCommand::undo()
91 sess.set_global_record_enable(before, src);
93 XMLNode &Session::GlobalRecordEnableStateCommand::get_state()
95 XMLNode *node = new XMLNode("GlobalRecordEnableStateCommand");
100 Session::GlobalMeteringStateCommand::GlobalMeteringStateCommand(Session &sess, void *src)
101 : sess(sess), src(src)
103 after = before = sess.get_global_route_metering();
105 void Session::GlobalMeteringStateCommand::mark()
107 after = sess.get_global_route_metering();
109 void Session::GlobalMeteringStateCommand::operator()()
111 sess.set_global_route_metering(after, src);
113 void Session::GlobalMeteringStateCommand::undo()
115 sess.set_global_route_metering(before, src);
117 XMLNode &Session::GlobalMeteringStateCommand::get_state()
119 XMLNode *node = new XMLNode("GlobalMeteringStateCommand");
123 } // namespace ARDOUR