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