mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-13 17:06:31 +01:00
mixer snapshots can now be loaded form session and route templates
This commit is contained in:
parent
4a3c4ce9d7
commit
a3d5757032
2 changed files with 36 additions and 6 deletions
|
|
@ -120,6 +120,7 @@ class LIBARDOUR_API MixerSnapshot
|
|||
void reassign_masters(boost::shared_ptr<ARDOUR::Slavable>, XMLNode);
|
||||
void load_from_session(std::string);
|
||||
void load_from_session(XMLNode&);
|
||||
void load_from_route_template(XMLNode&);
|
||||
bool set_flag(bool, RecallFlags);
|
||||
|
||||
unsigned int id;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,11 @@ MixerSnapshot::MixerSnapshot(Session* s, string file_path)
|
|||
return;
|
||||
}
|
||||
|
||||
if(suffix == template_suffix) {
|
||||
load_from_session(file_path);
|
||||
return;
|
||||
}
|
||||
|
||||
if(suffix == ".xml") {
|
||||
load(file_path);
|
||||
return;
|
||||
|
|
@ -488,8 +493,11 @@ void MixerSnapshot::load_from_session(string path)
|
|||
}
|
||||
|
||||
//final sanity check
|
||||
if(!("." + get_suffix(path) == statefile_suffix)) {
|
||||
return;
|
||||
const string suffix = "." + get_suffix(path);
|
||||
if(!(suffix == statefile_suffix)) {
|
||||
if(!(suffix == template_suffix)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
XMLTree tree;
|
||||
|
|
@ -500,17 +508,38 @@ void MixerSnapshot::load_from_session(string path)
|
|||
return;
|
||||
}
|
||||
|
||||
if(root->name() == "Route") {
|
||||
//must be a route template
|
||||
load_from_route_template(*(root));
|
||||
return;
|
||||
}
|
||||
|
||||
load_from_session(*(root));
|
||||
}
|
||||
|
||||
void MixerSnapshot::load_from_route_template(XMLNode& node)
|
||||
{
|
||||
string name, id, group_name;
|
||||
node.get_property(X_("name"), name);
|
||||
node.get_property(X_("id"), id);
|
||||
node.get_property(X_("route-group"), group_name);
|
||||
|
||||
XMLNode* group = node.add_child(X_("Group"));
|
||||
if(group) {
|
||||
group->set_property(X_("name"), group_name);
|
||||
}
|
||||
State state {id, name, node};
|
||||
route_states.push_back(state);
|
||||
}
|
||||
|
||||
void MixerSnapshot::load_from_session(XMLNode& node)
|
||||
{
|
||||
clear();
|
||||
|
||||
XMLNode* version_node = find_named_node(node, "ProgramVersion");
|
||||
XMLNode* route_node = find_named_node(node, "Routes");
|
||||
XMLNode* group_node = find_named_node(node, "RouteGroups");
|
||||
XMLNode* vca_node = find_named_node(node, "VCAManager");
|
||||
XMLNode* version_node = find_named_node(node, X_("ProgramVersion"));
|
||||
XMLNode* route_node = find_named_node(node, X_("Routes"));
|
||||
XMLNode* group_node = find_named_node(node, X_("RouteGroups"));
|
||||
XMLNode* vca_node = find_named_node(node, X_("VCAManager"));
|
||||
|
||||
if(version_node) {
|
||||
string version;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue