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());