Mercurial > hg > svapp
diff framework/Document.cpp @ 137:e2aec1708a2c
* Save/load of region models
author | Chris Cannam |
---|---|
date | Thu, 09 Oct 2008 12:04:22 +0000 |
parents | 6d2e49c59b3b |
children | c0b176d86be7 |
line wrap: on
line diff
--- a/framework/Document.cpp Thu Sep 18 16:08:14 2008 +0000 +++ b/framework/Document.cpp Thu Oct 09 12:04:22 2008 +0000 @@ -37,7 +37,7 @@ #include "data/model/SparseTimeValueModel.h" #include "data/model/AlignmentModel.h" -//#define DEBUG_DOCUMENT 1 +#define DEBUG_DOCUMENT 1 //!!! still need to handle command history, documentRestored/documentModified @@ -278,6 +278,11 @@ #ifdef DEBUG_DOCUMENT std::cerr << "Document::setMainModel: Have " << m_layers.size() << " layers" << std::endl; + std::cerr << "Models now: "; + for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { + std::cerr << i->first << " "; + } + std::cerr << std::endl; #endif for (LayerSet::iterator i = m_layers.begin(); i != m_layers.end(); ++i) { @@ -299,10 +304,18 @@ continue; } - if (model && (m_models.find(model) == m_models.end())) { + if (!model) { + std::cerr << "WARNING: Document::setMainModel: Null model in layer " + << layer << std::endl; + // get rid of this hideous degenerate + obsoleteLayers.push_back(layer); + continue; + } + + if (m_models.find(model) == m_models.end()) { std::cerr << "WARNING: Document::setMainModel: Unknown model " << model << " in layer " << layer << std::endl; - // get rid of this hideous degenerate + // and this one obsoleteLayers.push_back(layer); continue; } @@ -361,7 +374,7 @@ if (rm) { std::cerr << "new model has " << rm->getChannelCount() << " channels " << std::endl; } else { - std::cerr << "new model is not a RangeSummarisableTimeValueModel!" << std::endl; + std::cerr << "new model " << replacementModel << " is not a RangeSummarisableTimeValueModel!" << std::endl; } #endif setModel(layer, replacementModel); @@ -375,14 +388,21 @@ for (ModelMap::iterator i = m_models.begin(); i != m_models.end(); ++i) { + Model *m = i->first; + +#ifdef DEBUG_DOCUMENT + std::cerr << "considering alignment for model " << m << " (name \"" + << m->objectName().toStdString() << "\")" << std::endl; +#endif + if (m_autoAlignment) { - alignModel(i->first); + alignModel(m); } else if (oldMainModel && - (i->first->getAlignmentReference() == oldMainModel)) { + (m->getAlignmentReference() == oldMainModel)) { - alignModel(i->first); + alignModel(m); } } @@ -425,6 +445,15 @@ m_models[outputModelToAdd] = rec; +#ifdef DEBUG_DOCUMENT + std::cerr << "Document::addDerivedModel: Added model " << outputModelToAdd << std::endl; + std::cerr << "Models now: "; + for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { + std::cerr << i->first << " "; + } + std::cerr << std::endl; +#endif + emit modelAdded(outputModelToAdd); } @@ -444,6 +473,15 @@ m_models[model] = rec; +#ifdef DEBUG_DOCUMENT + std::cerr << "Document::addImportedModel: Added model " << model << std::endl; + std::cerr << "Models now: "; + for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { + std::cerr << i->first << " "; + } + std::cerr << std::endl; +#endif + if (m_autoAlignment) alignModel(model); emit modelAdded(model); @@ -540,6 +578,16 @@ model->aboutToDelete(); emit modelAboutToBeDeleted(model); m_models.erase(model); + +#ifdef DEBUG_DOCUMENT + std::cerr << "Document::releaseModel: Deleted model " << model << std::endl; + std::cerr << "Models now: "; + for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { + std::cerr << i->first << " "; + } + std::cerr << std::endl; +#endif + delete model; } }