}
}
}
+
+XMLNode &AutomationLine::get_state(void)
+{
+ // TODO
+ return alist.get_state();
+}
+
+int AutomationLine::set_state(const XMLNode &node)
+{
+ // TODO
+ alist.set_state(node);
+}
/* ctrl-shift-click applies change to all routes */
_session.begin_reversible_command (_("mute change"));
- Session::GlobalMuteStateCommand *cmd = new Session::GlobalMuteStateCommand(this);
+ Session::GlobalMuteStateCommand *cmd = new Session::GlobalMuteStateCommand(_session, this);
_session.set_all_mute (!_route.muted());
cmd->mark();
_session.add_command(cmd);
/* ctrl-shift-click applies change to all routes */
_session.begin_reversible_command (_("solo change"));
- Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand(this);
+ Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand(_session, this);
_session.set_all_solo (!_route.soloed());
cmd->mark();
_session.add_command (cmd);
// ctrl-alt-click: exclusively solo this track, not a toggle */
_session.begin_reversible_command (_("solo change"));
- Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand (this);
+ Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand (_session, this);
_session.set_all_solo (false);
_route.set_solo (true, this);
cmd->mark();
else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::Control|Keyboard::Shift))) {
_session.begin_reversible_command (_("rec-enable change"));
- Session::GlobalRecordEnableStateCommand *cmd = new Session::GlobalRecordEnableStateCommand(this);
+ Session::GlobalRecordEnableStateCommand *cmd = new Session::GlobalRecordEnableStateCommand(_session, this);
if (rec_enable_button->get_active()) {
_session.record_disenable_all ();
if((mix_group = route.mix_group()) != 0){
_session.begin_reversible_command (_("mix group solo change"));
- Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand(this);
+ Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand(_session, this);
mix_group->apply(&Route::set_solo, yn, this);
cmd->mark();
_session.add_command (cmd);
if((mix_group = route.mix_group()) != 0){
_session.begin_reversible_command (_("mix group mute change"));
- Session::GlobalMuteStateCommand *cmd = new Session::GlobalMuteStateCommand (this);
+ Session::GlobalMuteStateCommand *cmd = new Session::GlobalMuteStateCommand (_session, this);
mix_group->apply(&Route::set_mute, yn, this);
cmd->mark();
_session.add_command(cmd);
if((mix_group = route.mix_group()) != 0){
_session.begin_reversible_command (_("mix group rec-enable change"));
- Session::GlobalRecordEnableStateCommand *cmd = new Session::GlobalRecordEnableStateCommand(this);
+ Session::GlobalRecordEnableStateCommand *cmd = new Session::GlobalRecordEnableStateCommand(_session, this);
mix_group->apply (&Route::set_record_enable, yn, this);
cmd->mark();
_session.add_command(cmd);
session.cc
session_butler.cc
session_click.cc
+session_command.cc
session_events.cc
session_export.cc
session_midi.cc
virtual void load_state (const XMLNode&);
XMLNode &get_state(void);
- int set_state (const XMLNode &s) {
- load_state(s);
- return 1; /*XXX*/
- }
+ int set_state (const XMLNode &s);
void set_max_xval (double);
double get_max_xval() const { return max_xval; }
{
GlobalRouteBooleanState before, after;
void *src;
+ Session &sess;
public:
- GlobalSoloStateCommand(void *src);
+ GlobalSoloStateCommand(Session &, void *src);
void operator()();
void undo();
XMLNode &serialize();
{
GlobalRouteBooleanState before, after;
void *src;
+ Session &sess;
public:
- GlobalMuteStateCommand(void *src);
+ GlobalMuteStateCommand(Session &, void *src);
void operator()();
void undo();
XMLNode &serialize();
{
GlobalRouteBooleanState before, after;
void *src;
+ Session &sess;
public:
- GlobalRecordEnableStateCommand(void *src);
+ GlobalRecordEnableStateCommand(Session &, void *src);
void operator()();
void undo();
XMLNode &serialize();
{
GlobalRouteMeterState before, after;
void *src;
+ Session &sess;
public:
- GlobalMeteringStateCommand(void *src);
+ GlobalMeteringStateCommand(Session &, void *src);
void operator()();
void undo();
XMLNode &serialize();
add (x, y);
}
}
+
+XMLNode &AutomationList::get_state ()
+{
+ XMLNode *node = new XMLNode("AutomationList");
+ store_state(*node);
+ return *node;
+}
+
+int AutomationList::set_state(const XMLNode &s)
+{
+ load_state(s);
+ return 0;
+}
+
#include <ardour/session.h>
+#include <ardour/route.h>
namespace ARDOUR {
// solo
-Session::GlobalSoloStateCommand::GlobalSoloStateCommand(void *src) : src(src)
+Session::GlobalSoloStateCommand::GlobalSoloStateCommand(Session &sess, void *src)
+ : sess(sess), src(src)
{
- after = before = get_global_route_boolean(&Route::soloed);
+ after = before = sess.get_global_route_boolean(&Route::soloed);
}
void Session::GlobalSoloStateCommand::mark()
{
- after = get_global_route_boolean(&Route::soloed);
+ after = sess.get_global_route_boolean(&Route::soloed);
}
-void operator()()
+void Session::GlobalSoloStateCommand::operator()()
{
- set_global_solo(after, src);
+ sess.set_global_solo(after, src);
}
-void undo()
+void Session::GlobalSoloStateCommand::undo()
{
- set_global_solo(before, src);
+ sess.set_global_solo(before, src);
}
-XMLNode &serialize()
+XMLNode &Session::GlobalSoloStateCommand::serialize()
{
}
// mute
-Session::GlobalMuteStateCommand::GlobalMuteStateCommand(void *src) : src(src)
+Session::GlobalMuteStateCommand::GlobalMuteStateCommand(Session &sess, void *src)
+ : sess(sess), src(src)
{
- after = before = get_global_route_boolean(&Route::muted);
+ after = before = sess.get_global_route_boolean(&Route::muted);
}
void Session::GlobalMuteStateCommand::mark()
{
- after = get_global_route_boolean(&Route::muted);
+ after = sess.get_global_route_boolean(&Route::muted);
}
-void operator()()
+void Session::GlobalMuteStateCommand::operator()()
{
- set_global_mute(after, src);
+ sess.set_global_mute(after, src);
}
-void undo()
+void Session::GlobalMuteStateCommand::undo()
{
- set_global_mute(before, src);
+ sess.set_global_mute(before, src);
}
-XMLNode &serialize()
+XMLNode &Session::GlobalMuteStateCommand::serialize()
{
}
// record enable
-Session::GlobalRecordEnableStateCommand::GlobalRecordEnableStateCommand(void *src) : src(src)
+Session::GlobalRecordEnableStateCommand::GlobalRecordEnableStateCommand(Session &sess, void *src)
+ : sess(sess), src(src)
{
- after = before = get_global_route_boolean(&Route::record_enabled);
+ after = before = sess.get_global_route_boolean(&Route::record_enabled);
}
void Session::GlobalRecordEnableStateCommand::mark()
{
- after = get_global_route_boolean(&Route::record_enabled);
+ after = sess.get_global_route_boolean(&Route::record_enabled);
}
-void operator()()
+void Session::GlobalRecordEnableStateCommand::operator()()
{
- set_global_record_enable(after, src);
+ sess.set_global_record_enable(after, src);
}
-void undo()
+void Session::GlobalRecordEnableStateCommand::undo()
{
- set_global_record_enable(before, src);
+ sess.set_global_record_enable(before, src);
}
-XMLNode &serialize()
+XMLNode &Session::GlobalRecordEnableStateCommand::serialize()
{
}
// metering
-Session::GlobalMeteringStateCommand::GlobalMeteringStateCommand(void *src) : src(src)
+Session::GlobalMeteringStateCommand::GlobalMeteringStateCommand(Session &sess, void *src)
+ : sess(sess), src(src)
{
- after = before = get_global_route_metering();
+ after = before = sess.get_global_route_metering();
}
void Session::GlobalMeteringStateCommand::mark()
{
- after = get_global_route_metering();
+ after = sess.get_global_route_metering();
}
-void operator()()
+void Session::GlobalMeteringStateCommand::operator()()
{
- set_global_route_metering(after, src);
+ sess.set_global_route_metering(after, src);
}
-void undo()
+void Session::GlobalMeteringStateCommand::undo()
{
- set_global_route_metering(before, src);
+ sess.set_global_route_metering(before, src);
}
-XMLNode &serialize()
+XMLNode &Session::GlobalMeteringStateCommand::serialize()
{
}
basename.cc
base_ui.cc
convert.cc
+command.cc
dmalloc.cc
error.cc
mountpoint.cc
--- /dev/null
+#include <pbd/command.h>
+
+class XMLNode;
+
+XMLNode &Command::serialize()
+{
+ XMLNode *node = new XMLNode ("Command");
+ // TODO
+ return *node;
+}
class Command : public Serializable
{
public:
- virtual ~Command();
+ virtual ~Command() {}
virtual void operator() () = 0;
virtual void undo() = 0;
virtual void redo() { (*this)(); }
- protected:
- Command();
+ virtual XMLNode &serialize();
};
#endif // __lib_pbd_command_h_
: obj(obj), before(before), after(after) {}
void operator() () { obj.set_state(after); }
void undo() { obj.set_state(before); }
- virtual XMLNode &serialize() ;
+ virtual XMLNode &serialize() {}
//{
// obj.id
// key is "MementoCommand" or something
: obj(obj), before(before) {}
void operator() () { /* noop */ }
void undo() { obj.set_state(before); }
- virtual XMLNode &serialize() ;
+ virtual XMLNode &serialize() {}
//{
// obj.id
// key is "MementoCommand" or something
: obj(obj), after(after) {}
void operator() () { obj.set_state(after); }
void undo() { /* noop */ }
- virtual XMLNode &serialize();
+ virtual XMLNode &serialize() {}
//{
// obj.id
// key is "MementoCommand" or something
{
public:
virtual XMLNode &serialize() = 0;
- virtual ~Serializable();
+ virtual ~Serializable() {}
};
#endif // __lib_pbd_serializable_h__
(*this)();
}
+XMLNode &UndoTransaction::serialize()
+{
+ XMLNode *node = new XMLNode ("UndoTransaction");
+ // TODO
+ return *node;
+}
+
void
UndoHistory::add (UndoTransaction ut)
{