2 Copyright (C) 2008 Paul Davis
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.
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.
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.
21 #include "ardour/export_preset.h"
23 #include "ardour/session.h"
26 using namespace ARDOUR
;
28 ExportPreset::ExportPreset (string filename
, Session
& s
) :
29 session (s
), global (filename
), local (0)
32 if ((root
= global
.root())) {
34 if ((prop
= root
->property ("id"))) {
35 set_id (prop
->value());
37 if ((prop
= root
->property ("name"))) {
38 set_name (prop
->value());
41 XMLNode
* instant_xml
= get_instant_xml ();
43 XMLNode
* instant_copy
= new XMLNode (*instant_xml
);
44 set_local_state (*instant_copy
);
49 ExportPreset::~ExportPreset ()
55 ExportPreset::set_name (string
const & name
)
60 if ((node
= global
.root())) {
61 node
->add_property ("name", name
);
64 local
->add_property ("name", name
);
69 ExportPreset::set_id (string
const & id
)
74 if ((node
= global
.root())) {
75 node
->add_property ("id", id
);
78 local
->add_property ("id", id
);
83 ExportPreset::set_global_state (XMLNode
& state
)
85 delete global
.root ();
86 global
.set_root (&state
);
93 ExportPreset::set_local_state (XMLNode
& state
)
103 ExportPreset::save (std::string
const & filename
)
108 global
.set_filename (filename
);
114 ExportPreset::remove_local () const
116 remove_instant_xml ();
120 ExportPreset::get_instant_xml () const
122 XMLNode
* instant_xml
;
124 if ((instant_xml
= session
.instant_xml ("ExportPresets"))) {
125 XMLNodeList children
= instant_xml
->children ("ExportPreset");
126 for (XMLNodeList::iterator it
= children
.begin(); it
!= children
.end(); ++it
) {
128 if ((prop
= (*it
)->property ("id")) && _id
== PBD::UUID(prop
->value())) {
138 ExportPreset::save_instant_xml () const
140 if (!local
) { return; }
142 /* First remove old, then add new */
144 remove_instant_xml ();
146 XMLNode
* instant_xml
;
147 if ((instant_xml
= session
.instant_xml ("ExportPresets"))) {
148 instant_xml
->add_child_copy (*local
);
150 instant_xml
= new XMLNode ("ExportPresets");
151 instant_xml
->add_child_copy (*local
);
152 session
.add_instant_xml (*instant_xml
, false);
157 ExportPreset::remove_instant_xml () const
159 XMLNode
* instant_xml
;
160 if ((instant_xml
= session
.instant_xml ("ExportPresets"))) {
161 instant_xml
->remove_nodes_and_delete ("id", _id
.to_s());