MCP: make v-pot press work; work ongoing on general keybindings
[ardour.git] / libs / ardour / ardour / crossfade_binder.h
1 /* 
2     Copyright (C) 2011 Paul Davis
3     Author: Carl Hetherington <cth@carlh.net>
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
19 */
20
21 #include "pbd/id.h"
22 #include "pbd/memento_command.h"
23
24 class XMLNode;
25
26 namespace ARDOUR {
27
28 class Crossfade;
29 class Playlist;
30 class SessionPlaylists; 
31
32 /** A MementoCommandBinder for Crossfades; required because the undo record
33  *  may contain details of crossfades that have subsequently been deleted.
34  *  This class allows recovery of a crossfade from an ID once it has been
35  *  recreated by a previous undo step.
36  */
37 class CrossfadeBinder : public MementoCommandBinder<ARDOUR::Crossfade>
38 {
39 public:
40         CrossfadeBinder (boost::shared_ptr<ARDOUR::SessionPlaylists>, PBD::ID);
41         CrossfadeBinder (XMLNode *, boost::shared_ptr<SessionPlaylists>);
42
43         ARDOUR::Crossfade* get () const;
44         std::string type_name () const;
45         void add_state (XMLNode *);
46
47 private:
48         boost::shared_ptr<ARDOUR::SessionPlaylists> _playlists;
49         PBD::ID _id;
50 };
51
52 }