2 Copyright (C) 1999-2009 Paul Davis
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 #include "pbd/compose.h"
24 #include "ardour/configuration.h"
25 #include "ardour/debug.h"
27 using namespace ARDOUR
;
31 Configuration::Configuration ()
35 Configuration::~Configuration ()
40 ConfigVariableBase::add_to_node (XMLNode
& node
)
42 const std::string v
= get_as_string ();
43 DEBUG_TRACE (DEBUG::Configuration
, string_compose ("Config variable %1 stored as [%2]\n", _name
, v
));
44 XMLNode
* child
= new XMLNode ("Option");
45 child
->add_property ("name", _name
);
46 child
->add_property ("value", v
);
47 node
.add_child_nocopy (*child
);
51 ConfigVariableBase::set_from_node (XMLNode
const & node
)
53 if (node
.name() == "Config" || node
.name() == "Canvas" || node
.name() == "UI") {
57 const XMLProperty
* prop
;
59 XMLNodeConstIterator niter
;
62 nlist
= node
.children();
64 for (niter
= nlist
.begin(); niter
!= nlist
.end(); ++niter
) {
68 if (child
->name() == "Option") {
69 if ((prop
= child
->property ("name")) != 0) {
70 if (prop
->value() == _name
) {
71 if ((prop
= child
->property ("value")) != 0) {
72 set_from_string (prop
->value());
80 } else if (node
.name() == "Options") {
85 XMLNodeConstIterator oiter
;
87 const XMLProperty
* opt_prop
;
89 olist
= node
.children();
91 for (oiter
= olist
.begin(); oiter
!= olist
.end(); ++oiter
) {
95 if (option
->name() == _name
) {
96 if ((opt_prop
= option
->property ("val")) != 0) {
97 set_from_string (opt_prop
->value());
108 ConfigVariableBase::notify ()
110 // placeholder for any debugging desired when a config variable is modified
114 ConfigVariableBase::miss ()
116 // placeholder for any debugging desired when a config variable
117 // is set but to the same value as it already has