Mercurial > hg > tony
comparison src/Analyser.cpp @ 242:3cb56556db72
Discard layer pointers when their layers are deleted; package up some more actions into compound commands
author | Chris Cannam |
---|---|
date | Tue, 01 Apr 2014 13:17:53 +0100 |
parents | d40c6cdb30a4 |
children | 3ff0f36c8fc1 |
comparison
equal
deleted
inserted
replaced
241:322287c4ed1f | 242:3cb56556db72 |
---|---|
73 m_document = doc; | 73 m_document = doc; |
74 m_fileModel = model; | 74 m_fileModel = model; |
75 m_paneStack = paneStack; | 75 m_paneStack = paneStack; |
76 m_pane = pane; | 76 m_pane = pane; |
77 | 77 |
78 connect(doc, SIGNAL(layerAboutToBeDeleted(Layer *)), | |
79 this, SLOT(layerAboutToBeDeleted(Layer *))); | |
80 | |
78 m_reAnalysingSelection = Selection(); | 81 m_reAnalysingSelection = Selection(); |
79 m_reAnalysisCandidates.clear(); | 82 m_reAnalysisCandidates.clear(); |
80 m_currentCandidate = -1; | 83 m_currentCandidate = -1; |
81 m_candidatesVisible = false; | 84 m_candidatesVisible = false; |
82 | 85 |
126 bool | 129 bool |
127 Analyser::setDisplayFrequencyExtents(float min, float max) | 130 Analyser::setDisplayFrequencyExtents(float min, float max) |
128 { | 131 { |
129 if (!m_layers[Spectrogram]) return false; | 132 if (!m_layers[Spectrogram]) return false; |
130 m_layers[Spectrogram]->setDisplayExtents(min, max); | 133 m_layers[Spectrogram]->setDisplayExtents(min, max); |
134 return true; | |
131 } | 135 } |
132 | 136 |
133 QString | 137 QString |
134 Analyser::addVisualisations() | 138 Analyser::addVisualisations() |
135 { | 139 { |
532 } | 536 } |
533 | 537 |
534 void | 538 void |
535 Analyser::discardPitchCandidates() | 539 Analyser::discardPitchCandidates() |
536 { | 540 { |
537 foreach (Layer *layer, m_reAnalysisCandidates) { | 541 if (!m_reAnalysisCandidates.empty()) { |
538 // This will cause the layer to be deleted later (ownership is | 542 |
539 // transferred to the remove command) | 543 CommandHistory::getInstance()->startCompoundOperation |
540 m_document->removeLayerFromView(m_pane, layer); | 544 (tr("Discard Previous Candidates"), true); |
545 | |
546 foreach (Layer *layer, m_reAnalysisCandidates) { | |
547 // This will cause the layer to be deleted later (ownership is | |
548 // transferred to the remove command) | |
549 m_document->removeLayerFromView(m_pane, layer); | |
550 } | |
551 | |
552 CommandHistory::getInstance()->endCompoundOperation(); | |
541 } | 553 } |
542 | 554 |
543 m_reAnalysisCandidates.clear(); | 555 m_reAnalysisCandidates.clear(); |
544 m_currentCandidate = -1; | 556 m_currentCandidate = -1; |
545 m_reAnalysingSelection = Selection(); | 557 m_reAnalysingSelection = Selection(); |
546 m_candidatesVisible = false; | 558 m_candidatesVisible = false; |
559 } | |
560 | |
561 void | |
562 Analyser::layerAboutToBeDeleted(Layer *doomed) | |
563 { | |
564 cerr << "Analyser::layerAboutToBeDeleted(" << doomed << ")" << endl; | |
565 | |
566 vector<Layer *> notDoomed; | |
567 | |
568 foreach (Layer *layer, m_reAnalysisCandidates) { | |
569 if (layer != doomed) { | |
570 notDoomed.push_back(layer); | |
571 } | |
572 } | |
573 | |
574 m_reAnalysisCandidates = notDoomed; | |
547 } | 575 } |
548 | 576 |
549 void | 577 void |
550 Analyser::takePitchTrackFrom(Layer *otherLayer) | 578 Analyser::takePitchTrackFrom(Layer *otherLayer) |
551 { | 579 { |