From 280910fd5390c0e304d7aa9906ac4d705a88e243 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 22 Dec 2014 19:47:06 -0500 Subject: new file, derived from old libs/ardour/configuration.cc --- libs/pbd/configuration_variable.cc | 109 +++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 libs/pbd/configuration_variable.cc (limited to 'libs/pbd') diff --git a/libs/pbd/configuration_variable.cc b/libs/pbd/configuration_variable.cc new file mode 100644 index 0000000000..cacad87d9a --- /dev/null +++ b/libs/pbd/configuration_variable.cc @@ -0,0 +1,109 @@ +/* + Copyright (C) 1999-2009 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include + +#include "pbd/compose.h" +#include "pbd/configuration_variable.h" +#include "pbd/debug.h" + +using namespace std; +using namespace PBD; + +void +ConfigVariableBase::add_to_node (XMLNode& node) +{ + const std::string v = get_as_string (); + DEBUG_TRACE (DEBUG::Configuration, string_compose ("Config variable %1 stored as [%2]\n", _name, v)); + XMLNode* child = new XMLNode ("Option"); + child->add_property ("name", _name); + child->add_property ("value", v); + node.add_child_nocopy (*child); +} + +bool +ConfigVariableBase::set_from_node (XMLNode const & node) +{ + if (node.name() == "Config" || node.name() == "Canvas" || node.name() == "UI") { + + /* ardour.rc */ + + const XMLProperty* prop; + XMLNodeList nlist; + XMLNodeConstIterator niter; + XMLNode* child; + + nlist = node.children(); + + for (niter = nlist.begin(); niter != nlist.end(); ++niter) { + + child = *niter; + + if (child->name() == "Option") { + if ((prop = child->property ("name")) != 0) { + if (prop->value() == _name) { + if ((prop = child->property ("value")) != 0) { + set_from_string (prop->value()); + return true; + } + } + } + } + } + + } else if (node.name() == "Options") { + + /* session file */ + + XMLNodeList olist; + XMLNodeConstIterator oiter; + XMLNode* option; + const XMLProperty* opt_prop; + + olist = node.children(); + + for (oiter = olist.begin(); oiter != olist.end(); ++oiter) { + + option = *oiter; + + if (option->name() == _name) { + if ((opt_prop = option->property ("val")) != 0) { + set_from_string (opt_prop->value()); + return true; + } + } + } + } + + return false; +} + +void +ConfigVariableBase::notify () +{ + // placeholder for any debugging desired when a config variable is modified +} + +void +ConfigVariableBase::miss () +{ + // placeholder for any debugging desired when a config variable + // is set but to the same value as it already has +} + -- cgit v1.2.3