Mercurial > hg > tony
changeset 325:ef75afbe4c67
Wire up "analyse now"
author | Chris Cannam |
---|---|
date | Fri, 13 Jun 2014 14:36:30 +0100 |
parents | ac662fca8058 |
children | b176ea403ee8 |
files | src/Analyser.cpp src/Analyser.h src/MainWindow.cpp |
diffstat | 3 files changed, 46 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Analyser.cpp Fri Jun 13 14:21:53 2014 +0100 +++ b/src/Analyser.cpp Fri Jun 13 14:36:30 2014 +0100 @@ -78,6 +78,31 @@ connect(doc, SIGNAL(layerAboutToBeDeleted(Layer *)), this, SLOT(layerAboutToBeDeleted(Layer *))); + return doAllAnalyses(); +} + +QString +Analyser::analyseExistingFile() +{ + if (!m_document) return "Internal error: Analyser::analyseExistingFile() called with no document present"; + + if (!m_pane) return "Internal error: Analyser::analyseExistingFile() called with no pane present"; + + if (m_layers[PitchTrack]) { + m_document->removeLayerFromView(m_pane, m_layers[PitchTrack]); + m_layers[PitchTrack] = 0; + } + if (m_layers[Notes]) { + m_document->removeLayerFromView(m_pane, m_layers[Notes]); + m_layers[Notes] = 0; + } + + return doAllAnalyses(); +} + +QString +Analyser::doAllAnalyses() +{ m_reAnalysingSelection = Selection(); m_reAnalysisCandidates.clear(); m_currentCandidate = -1;
--- a/src/Analyser.h Fri Jun 13 14:21:53 2014 +0100 +++ b/src/Analyser.h Fri Jun 13 14:36:30 2014 +0100 @@ -46,6 +46,9 @@ QString newFileLoaded(Document *newDocument, WaveFileModel *model, PaneStack *paneStack, Pane *pane); + // Remove any derived layers, process the main model, add derived layers; return "" on success or error string on failure + QString analyseExistingFile(); + // Discard any layers etc associated with the current document void fileClosed(); @@ -226,6 +229,8 @@ int m_currentCandidate; bool m_candidatesVisible; + QString doAllAnalyses(); + QString addVisualisations(); QString addWaveform(); QString addAnalyses();
--- a/src/MainWindow.cpp Fri Jun 13 14:21:53 2014 +0100 +++ b/src/MainWindow.cpp Fri Jun 13 14:36:30 2014 +0100 @@ -2986,8 +2986,23 @@ void MainWindow::analyseNow() { - //!!! cerr << "analyseNow called" << endl; + if (!m_analyser) return; + + CommandHistory::getInstance()->startCompoundOperation + (tr("Analyse Audio"), true); + + QString error = m_analyser->analyseExistingFile(); + + CommandHistory::getInstance()->endCompoundOperation(); + + if (error != "") { + QMessageBox::warning + (this, + tr("Failed to analyse audio"), + tr("<b>Analysis failed</b><p>%1</p>").arg(error), + QMessageBox::Ok); + } } void