Mercurial > hg > easaier-soundaccess
changeset 175:9c2400251179
add reset() function to Document to be able in the same session to load different track keeping the same filters enabled
author | lbajardsilogic |
---|---|
date | Wed, 21 Nov 2007 10:55:26 +0000 |
parents | 61c2aa83e940 |
children | 59a64b19565a |
files | sv/document/Document.cpp sv/document/Document.h sv/main/MainWindow.cpp |
diffstat | 3 files changed, 21 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/sv/document/Document.cpp Wed Nov 21 09:00:39 2007 +0000 +++ b/sv/document/Document.cpp Wed Nov 21 10:55:26 2007 +0000 @@ -50,16 +50,21 @@ Document::~Document() { - //!!! Document should really own the command history. atm we - //still refer to it in various places that don't have access to - //the document, be nice to fix that + reset(); -// std::cerr << "\n\nDocument::~Document: about to clear command history" << std::endl; + if (m_filterStack) + { + delete m_filterStack; + m_filterStack = 0; + } +} + +void Document::reset() +{ CommandHistory::getInstance()->clear(); -// std::cerr << "Document::~Document: about to delete layers" << std::endl; while (!m_layers.empty()) { - deleteLayer(*m_layers.begin(), true); + deleteLayer(*m_layers.begin(), true); } if (!m_models.empty()) { @@ -86,13 +91,10 @@ m_audioSourceInfoModel = 0; } -// std::cerr << "Document::~Document: About to get rid of main model" -// << std::endl; emit modelAboutToBeDeleted(m_mainModel); emit mainModelChanged(0); delete m_mainModel; - - delete m_filterStack; + m_mainModel = 0; } Layer * @@ -158,6 +160,7 @@ Layer *newLayer = createLayer(type); if (!newLayer) { delete newModel; + newModel = 0; return 0; } @@ -201,6 +204,7 @@ if (types.empty()) { std::cerr << "WARNING: Document::createLayerForTransform: no valid display layer for output of transform " << transform.toStdString() << std::endl; delete newModel; + newModel = 0; return 0; } @@ -327,6 +331,7 @@ // we already emitted modelAboutToBeDeleted for this delete oldMainModel; + oldMainModel = 0; } void Document::setAudioSourceInfoModel(AudioSourceInfoModel *infoModel) @@ -461,6 +466,7 @@ emit modelAboutToBeDeleted(model); m_models.erase(model); delete model; + model=0; } } @@ -506,6 +512,7 @@ emit layerRemoved(layer); emit layerAboutToBeDeleted(layer); delete layer; + layer = 0; } void
--- a/sv/document/Document.h Wed Nov 21 09:00:39 2007 +0000 +++ b/sv/document/Document.h Wed Nov 21 10:55:26 2007 +0000 @@ -74,6 +74,8 @@ Document(); virtual ~Document(); + void reset(); + /** * Create and return a new layer of the given type, associated * with no model. The caller may set any model on this layer, but
--- a/sv/main/MainWindow.cpp Wed Nov 21 09:00:39 2007 +0000 +++ b/sv/main/MainWindow.cpp Wed Nov 21 10:55:26 2007 +0000 @@ -5401,9 +5401,9 @@ i--; } - delete m_document; + m_document->reset(); - createDocument(); + //createDocument(); Pane *pane = m_paneStack->getCurrentPane(); if (!m_timeRulerLayer) {