major, substantive reworking of how we store GUI information (visibility, height) for automation data. old design stored (insufficient) identifying information plus actual data in a GUI-only XML node; new scheme adds GUI data via extra_xml node to each AutomationControl object. reworked public/private methods for showing/hiding TimeAxisView objects; changed labelling of automation tracks to just show the name of the controlled parameter - more info can be viewed in the tooltip for the track headers. NOTE: Session file format ALTERED. No data loss but track visibility may be different than previous ardour3 versions

git-svn-id: svn://localhost/ardour2/branches/3.0@9703 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-06-11 15:35:34 +00:00
parent 7468fdb9ca
commit 1060243302
30 changed files with 284 additions and 499 deletions

View file

@ -68,22 +68,37 @@ Stateful::add_extra_xml (XMLNode& node)
}
XMLNode *
Stateful::extra_xml (const string& str)
Stateful::extra_xml (const string& str, bool add_if_missing)
{
if (_extra_xml == 0) {
return 0;
XMLNode* node = 0;
if (_extra_xml) {
node = _extra_xml->child (str.c_str());
}
const XMLNodeList& nlist = _extra_xml->children();
XMLNodeConstIterator i;
if (!node && add_if_missing) {
node = new XMLNode (str);
add_extra_xml (*node);
}
for (i = nlist.begin(); i != nlist.end(); ++i) {
if ((*i)->name() == str) {
return (*i);
}
return node;
}
void
Stateful::save_extra_xml (const XMLNode& node)
{
/* Looks for the child node called "Extra" and makes _extra_xml
point to a copy of it. Will delete any existing node pointed
to by _extra_xml if a new Extra node is found, but not
otherwise.
*/
const XMLNode* xtra = node.child ("Extra");
if (xtra) {
delete _extra_xml;
_extra_xml = new XMLNode (*xtra);
}
return 0;
}
void