summaryrefslogtreecommitdiff
path: root/libs/ardour/configuration.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/configuration.cc')
-rw-r--r--libs/ardour/configuration.cc52
1 files changed, 42 insertions, 10 deletions
diff --git a/libs/ardour/configuration.cc b/libs/ardour/configuration.cc
index c8d71c5155..58d702e3d9 100644
--- a/libs/ardour/configuration.cc
+++ b/libs/ardour/configuration.cc
@@ -51,7 +51,12 @@ Configuration::Configuration ()
#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) var (name,value,mutator),
#include "ardour/configuration_vars.h"
#undef CONFIG_VARIABLE
-#undef CONFIG_VARIABLE_SPECIAL
+#undef CONFIG_VARIABLE_SPECIAL
+
+#undef CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) var (name,value), // <-- is this really so bad?
+#include "ardour/canvas_vars.h"
+#undef CANVAS_VARIABLE
current_owner (ConfigVariableBase::Default)
{
@@ -120,6 +125,7 @@ Configuration::load_state ()
}
}
+ pack_canvasvars();
return 0;
}
@@ -162,7 +168,8 @@ Configuration::get_state ()
root->add_child_nocopy(m->second->get_state());
}
- root->add_child_nocopy (get_variables (sigc::mem_fun (*this, &Configuration::save_config_options_predicate)));
+ root->add_child_nocopy (get_variables (sigc::mem_fun (*this, &Configuration::save_config_options_predicate), "Config"));
+ root->add_child_nocopy (get_variables (sigc::mem_fun (*this, &Configuration::save_config_options_predicate), "Canvas"));
if (_extra_xml) {
root->add_child_copy (*_extra_xml);
@@ -174,23 +181,28 @@ Configuration::get_state ()
}
XMLNode&
-Configuration::get_variables (sigc::slot<bool,ConfigVariableBase::Owner> predicate)
+Configuration::get_variables (sigc::slot<bool,ConfigVariableBase::Owner> predicate, std::string which_node)
{
XMLNode* node;
LocaleGuard lg (X_("POSIX"));
- node = new XMLNode("Config");
+ node = new XMLNode(which_node);
#undef CONFIG_VARIABLE
#undef CONFIG_VARIABLE_SPECIAL
-#define CONFIG_VARIABLE(type,var,name,value) \
- if (predicate (var.owner())) { var.add_to_node (*node); }
-#define CONFIG_VARIABLE_SPECIAL(type,var,name,value,mutator) \
- if (predicate (var.owner())) { var.add_to_node (*node); }
+#define CONFIG_VARIABLE(type,var,Name,value) \
+ if (node->name() == "Config") { if (predicate (var.owner())) { var.add_to_node (*node); }}
+#define CONFIG_VARIABLE_SPECIAL(type,var,Name,value,mutator) \
+ if (node->name() == "Config") { if (predicate (var.owner())) { var.add_to_node (*node); }}
#include "ardour/configuration_vars.h"
#undef CONFIG_VARIABLE
#undef CONFIG_VARIABLE_SPECIAL
-
+
+#undef CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,Name,value) if (node->name() == "Canvas") { if (predicate (ConfigVariableBase::Config)) { var.add_to_node (*node); }}
+#include "ardour/canvas_vars.h"
+#undef CANVAS_VARIABLE
+
return *node;
}
@@ -222,7 +234,7 @@ Configuration::set_state (const XMLNode& root)
warning << _("ill-formed MIDI port specification in ardour rcfile (ignored)") << endmsg;
}
- } else if (node->name() == "Config") {
+ } else if (node->name() == "Config" || node->name() == "Canvas" ) {
set_variables (*node, ConfigVariableBase::Config);
@@ -252,10 +264,30 @@ Configuration::set_variables (const XMLNode& node, ConfigVariableBase::Owner own
if (var.set_from_node (node, owner)) { \
ParameterChanged (name); \
}
+
#include "ardour/configuration_vars.h"
#undef CONFIG_VARIABLE
#undef CONFIG_VARIABLE_SPECIAL
+#undef CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) \
+ if (var.set_from_node (node, owner)) { \
+ ParameterChanged (name); \
+ }
+#include "ardour/canvas_vars.h"
+#undef CANVAS_VARIABLE
+
+}
+
+void
+Configuration::pack_canvasvars ()
+{
+#undef CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) canvas_colors.push_back(&var);
+#include "ardour/canvas_vars.h"
+#undef CANVAS_VARIABLE
+ cerr << "Configuration::pack_canvasvars () called, canvas_colors.size() = " << canvas_colors.size() << endl;
+
}
Configuration::MidiPortDescriptor::MidiPortDescriptor (const XMLNode& node)