Fix the horrible mess that was anything related to sources and paths.
[ardour.git] / libs / ardour / ardour / configuration.h
index 0b933cc5ac4169aafcaf46e07352c255f8cdbcc8..7b890500d8fc375f84db7fd9f5bb90f5a089c995 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __ardour_configuration_h__
@@ -37,32 +36,27 @@ class XMLNode;
 
 namespace ARDOUR {
 
-class Configuration : public Stateful
+class Configuration : public PBD::Stateful
 {
   public:
        Configuration();
        virtual ~Configuration();
 
-       struct MidiPortDescriptor {
-           std::string tag;
-           std::string device;
-           std::string type;
-           std::string mode;
-
-           MidiPortDescriptor (const XMLNode&);
-           XMLNode& get_state();
-       };
-
-       std::map<std::string,MidiPortDescriptor *> midi_ports;
+       std::map<std::string,XMLNode> midi_ports;
 
        void map_parameters (sigc::slot<void,const char*> theSlot);
 
        int load_state ();
        int save_state ();
 
+       /// calls Stateful::*instant_xml methods using 
+       /// ARDOUR::user_config_directory for the directory argument
+       void add_instant_xml (XMLNode&);
+       XMLNode * instant_xml (const std::string& str);
+
        int set_state (const XMLNode&);
        XMLNode& get_state (void);
-       XMLNode& get_partial_state (ConfigVariableBase::Owner);
+       XMLNode& get_variables (sigc::slot<bool,ConfigVariableBase::Owner>, std::string which_node = "Config");
        void set_variables (const XMLNode&, ConfigVariableBase::Owner owner);
 
        void set_current_owner (ConfigVariableBase::Owner);
@@ -71,7 +65,7 @@ class Configuration : public Stateful
 
        sigc::signal<void,const char*> ParameterChanged;
 
-        /* define accessor methods */
+       /* define accessor methods */
 
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL
@@ -84,10 +78,10 @@ class Configuration : public Stateful
 #include "ardour/configuration_vars.h"
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL
-       
+
   private:
 
-        /* declare variables */
+       /* declare variables */
 
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL        
@@ -100,7 +94,8 @@ class Configuration : public Stateful
        ConfigVariableBase::Owner current_owner;
        XMLNode* _control_protocol_state;
 
-       XMLNode& state (ConfigVariableBase::Owner);
+       XMLNode& state (sigc::slot<bool,ConfigVariableBase::Owner>);
+       bool     save_config_options_predicate (ConfigVariableBase::Owner owner);
 };
 
 extern Configuration *Config;