diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/configuration.h | 49 | ||||
-rw-r--r-- | libs/ardour/ardour/configuration_variable.h | 222 | ||||
-rw-r--r-- | libs/ardour/ardour/debug.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/rc_configuration.h | 9 | ||||
-rw-r--r-- | libs/ardour/ardour/session_configuration.h | 8 | ||||
-rw-r--r-- | libs/ardour/configuration.cc | 119 | ||||
-rw-r--r-- | libs/ardour/debug.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session_configuration.cc | 3 | ||||
-rw-r--r-- | libs/ardour/wscript | 1 |
9 files changed, 12 insertions, 401 deletions
diff --git a/libs/ardour/ardour/configuration.h b/libs/ardour/ardour/configuration.h deleted file mode 100644 index f8e512e458..0000000000 --- a/libs/ardour/ardour/configuration.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (C) 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. - -*/ - -#ifndef __ardour_configuration_h__ -#define __ardour_configuration_h__ - -#include <boost/function.hpp> -#include "pbd/signals.h" -#include "pbd/stateful.h" -#include "ardour/configuration_variable.h" - -class XMLNode; - -namespace ARDOUR { - -class LIBARDOUR_API Configuration : public PBD::Stateful -{ - public: - Configuration(); - virtual ~Configuration(); - - virtual void map_parameters (boost::function<void (std::string)>&) = 0; - virtual int set_state (XMLNode const &, int) = 0; - virtual XMLNode & get_state () = 0; - virtual XMLNode & get_variables () = 0; - virtual void set_variables (XMLNode const &) = 0; - - PBD::Signal1<void,std::string> ParameterChanged; -}; - -} // namespace ARDOUR - -#endif /* __ardour_configuration_h__ */ diff --git a/libs/ardour/ardour/configuration_variable.h b/libs/ardour/ardour/configuration_variable.h deleted file mode 100644 index 7a83c34c3f..0000000000 --- a/libs/ardour/ardour/configuration_variable.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - Copyright (C) 2000-2007 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. - -*/ - -#ifndef __ardour_configuration_variable_h__ -#define __ardour_configuration_variable_h__ - -#include <iostream> -#include <sstream> - -#include "pbd/xml++.h" -#include "pbd/convert.h" -#include "ardour/libardour_visibility.h" -#include "ardour/types.h" -#include "ardour/utils.h" - -namespace ARDOUR { - -class LIBARDOUR_API ConfigVariableBase { - public: - - ConfigVariableBase (std::string str) : _name (str) {} - virtual ~ConfigVariableBase() {} - - std::string name () const { return _name; } - void add_to_node (XMLNode&); - bool set_from_node (XMLNode const &); - - virtual std::string get_as_string () const = 0; - virtual void set_from_string (std::string const &) = 0; - - protected: - std::string _name; - - void notify (); - void miss (); -}; - -template<class T> -class /*LIBARDOUR_API*/ ConfigVariable : public ConfigVariableBase -{ - public: - - ConfigVariable (std::string str) : ConfigVariableBase (str) {} - ConfigVariable (std::string str, T val) : ConfigVariableBase (str), value (val) {} - - T get() const { - return value; - } - - std::string get_as_string () const { - std::ostringstream ss; - ss << value; - return ss.str (); - } - - virtual bool set (T val) { - if (val == value) { - miss (); - return false; - } - value = val; - notify (); - return true; - } - - virtual void set_from_string (std::string const & s) { - std::stringstream ss; - ss << s; - ss >> value; - } - - protected: - virtual T get_for_save() { return value; } - T value; -}; - -/** Specialisation of ConfigVariable for std::string to cope with whitespace properly */ -template<> -class /*LIBARDOUR_API*/ ConfigVariable<std::string> : public ConfigVariableBase -{ - public: - - ConfigVariable (std::string str) : ConfigVariableBase (str) {} - ConfigVariable (std::string str, std::string val) : ConfigVariableBase (str), value (val) {} - - std::string get() const { - return value; - } - - std::string get_as_string () const { - return value; - } - - virtual bool set (std::string val) { - if (val == value) { - miss (); - return false; - } - value = val; - notify (); - return true; - } - - virtual void set_from_string (std::string const & s) { - value = s; - } - - protected: - virtual std::string get_for_save() { return value; } - std::string value; -}; - -template<> -class /*LIBARDOUR_API*/ ConfigVariable<bool> : public ConfigVariableBase -{ - public: - - ConfigVariable (std::string str) : ConfigVariableBase (str), value (false) {} - ConfigVariable (std::string str, bool val) : ConfigVariableBase (str), value (val) {} - - bool get() const { - return value; - } - - std::string get_as_string () const { - std::ostringstream ss; - ss << value; - return ss.str (); - } - - virtual bool set (bool val) { - if (val == value) { - miss (); - return false; - } - value = val; - notify (); - return true; - } - - void set_from_string (std::string const & s) { - value = PBD::string_is_affirmative (s); - } - - protected: - virtual bool get_for_save() { return value; } - bool value; -}; - -template<class T> -class /*LIBARDOUR_API*/ ConfigVariableWithMutation : public ConfigVariable<T> -{ - public: - ConfigVariableWithMutation (std::string name, T val, T (*m)(T)) - : ConfigVariable<T> (name, val), mutator (m) {} - - bool set (T val) { - if (unmutated_value != val) { - unmutated_value = val; - return ConfigVariable<T>::set (mutator (val)); - } - return false; - } - - void set_from_string (std::string const & s) { - T v; - std::stringstream ss; - ss << s; - ss >> v; - set (v); - } - - protected: - virtual T get_for_save() { return unmutated_value; } - T unmutated_value; - T (*mutator)(T); -}; - -template<> -class /*LIBARDOUR_API*/ ConfigVariableWithMutation<std::string> : public ConfigVariable<std::string> -{ - public: - ConfigVariableWithMutation (std::string name, std::string val, std::string (*m)(std::string)) - : ConfigVariable<std::string> (name, val), mutator (m) {} - - bool set (std::string val) { - if (unmutated_value != val) { - unmutated_value = val; - return ConfigVariable<std::string>::set (mutator (val)); - } - return false; - } - - void set_from_string (std::string const & s) { - set (s); - } - - protected: - virtual std::string get_for_save() { return unmutated_value; } - std::string unmutated_value; - std::string (*mutator)(std::string); -}; - -} - -#endif /* __ardour_configuration_variable_h__ */ diff --git a/libs/ardour/ardour/debug.h b/libs/ardour/ardour/debug.h index 74bc6e0d56..8f4b562905 100644 --- a/libs/ardour/ardour/debug.h +++ b/libs/ardour/ardour/debug.h @@ -33,7 +33,6 @@ namespace PBD { LIBARDOUR_API extern uint64_t MidiPlaylistIO; LIBARDOUR_API extern uint64_t MidiDiskstreamIO; LIBARDOUR_API extern uint64_t SnapBBT; - LIBARDOUR_API extern uint64_t Configuration; LIBARDOUR_API extern uint64_t Latency; LIBARDOUR_API extern uint64_t LatencyCompensation; LIBARDOUR_API extern uint64_t Peaks; diff --git a/libs/ardour/ardour/rc_configuration.h b/libs/ardour/ardour/rc_configuration.h index d85c723ff8..413f1699d3 100644 --- a/libs/ardour/ardour/rc_configuration.h +++ b/libs/ardour/ardour/rc_configuration.h @@ -23,16 +23,17 @@ #include <map> #include <string> +#include "pbd/configuration.h" + #include "ardour/libardour_visibility.h" #include "ardour/types.h" #include "ardour/utils.h" -#include "ardour/configuration.h" class XMLNode; namespace ARDOUR { -class LIBARDOUR_API RCConfiguration : public Configuration +class LIBARDOUR_API RCConfiguration : public PBD::Configuration { public: RCConfiguration(); @@ -74,8 +75,8 @@ class LIBARDOUR_API RCConfiguration : public Configuration #undef CONFIG_VARIABLE #undef CONFIG_VARIABLE_SPECIAL -#define CONFIG_VARIABLE(Type,var,name,value) ConfigVariable<Type> var; -#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) ConfigVariableWithMutation<Type> var; +#define CONFIG_VARIABLE(Type,var,name,value) PBD::ConfigVariable<Type> var; +#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) PBD::ConfigVariableWithMutation<Type> var; #include "ardour/rc_configuration_vars.h" #undef CONFIG_VARIABLE #undef CONFIG_VARIABLE_SPECIAL diff --git a/libs/ardour/ardour/session_configuration.h b/libs/ardour/ardour/session_configuration.h index c0af223943..62c12e56ef 100644 --- a/libs/ardour/ardour/session_configuration.h +++ b/libs/ardour/ardour/session_configuration.h @@ -20,11 +20,11 @@ #ifndef __ardour_session_configuration_h__ #define __ardour_session_configuration_h__ -#include "ardour/configuration.h" +#include "pbd/configuration.h" namespace ARDOUR { -class LIBARDOUR_API SessionConfiguration : public Configuration +class LIBARDOUR_API SessionConfiguration : public PBD::Configuration { public: SessionConfiguration (); @@ -58,8 +58,8 @@ public: #undef CONFIG_VARIABLE #undef CONFIG_VARIABLE_SPECIAL -#define CONFIG_VARIABLE(Type,var,name,value) ConfigVariable<Type> var; -#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) ConfigVariableWithMutation<Type> var; +#define CONFIG_VARIABLE(Type,var,name,value) PBD::ConfigVariable<Type> var; +#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) PBD::ConfigVariableWithMutation<Type> var; #include "ardour/session_configuration_vars.h" #undef CONFIG_VARIABLE #undef CONFIG_VARIABLE_SPECIAL diff --git a/libs/ardour/configuration.cc b/libs/ardour/configuration.cc deleted file mode 100644 index d5ca426a74..0000000000 --- a/libs/ardour/configuration.cc +++ /dev/null @@ -1,119 +0,0 @@ -/* - 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 <iostream> - -#include "pbd/compose.h" - -#include "ardour/configuration.h" -#include "ardour/debug.h" - -using namespace ARDOUR; -using namespace std; -using namespace PBD; - -Configuration::Configuration () -{ -} - -Configuration::~Configuration () -{ -} - -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 -} - diff --git a/libs/ardour/debug.cc b/libs/ardour/debug.cc index 4a7453f172..c0993e9da6 100644 --- a/libs/ardour/debug.cc +++ b/libs/ardour/debug.cc @@ -29,7 +29,6 @@ uint64_t PBD::DEBUG::MidiSourceIO = PBD::new_debug_bit ("midisourceio"); uint64_t PBD::DEBUG::MidiPlaylistIO = PBD::new_debug_bit ("midiplaylistio"); uint64_t PBD::DEBUG::MidiDiskstreamIO = PBD::new_debug_bit ("mididiskstreamio"); uint64_t PBD::DEBUG::SnapBBT = PBD::new_debug_bit ("snapbbt"); -uint64_t PBD::DEBUG::Configuration = PBD::new_debug_bit ("configuration"); uint64_t PBD::DEBUG::Latency = PBD::new_debug_bit ("latency"); uint64_t PBD::DEBUG::LatencyCompensation = PBD::new_debug_bit ("latencycompensation"); uint64_t PBD::DEBUG::Peaks = PBD::new_debug_bit ("peaks"); diff --git a/libs/ardour/session_configuration.cc b/libs/ardour/session_configuration.cc index f9f43ba4b2..dc4f9a6bc8 100644 --- a/libs/ardour/session_configuration.cc +++ b/libs/ardour/session_configuration.cc @@ -21,12 +21,15 @@ #include <glib/gstdio.h> /* for g_stat() */ #include <glibmm/miscutils.h> /* for build_filename() */ +#include "pbd/error.h" #include "pbd/file_utils.h" +#include "pbd/locale_guard.h" #include "pbd/pathexpand.h" #include "ardour/types.h" #include "ardour/filesystem_paths.h" #include "ardour/session_configuration.h" +#include "ardour/utils.h" #include "i18n.h" using namespace ARDOUR; diff --git a/libs/ardour/wscript b/libs/ardour/wscript index bce1b127f4..2b4cf45310 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -56,7 +56,6 @@ libardour_sources = [ 'capturing_processor.cc', 'chan_count.cc', 'chan_mapping.cc', - 'configuration.cc', 'config_text.cc', 'control_protocol_manager.cc', 'cycle_timer.cc', |