changeset 427:46003a5a8736

Wire up reset-analysis-options
author Chris Cannam
date Mon, 30 Mar 2015 17:27:56 +0100
parents 835ce4c21362
children 2bbec2dfe9f6
files .hgsubstate src/MainWindow.cpp src/MainWindow.h
diffstat 3 files changed, 81 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsubstate	Mon Mar 30 14:28:37 2015 +0100
+++ b/.hgsubstate	Mon Mar 30 17:27:56 2015 +0100
@@ -3,5 +3,5 @@
 1629209f5bf21fc926bb6abd5ab786e78c5d7677 pyin
 55ece8862b6d3a54aad271a53f9c1615e5d3bcf8 sv-dependency-builds
 345d41a3567f44ff4febf5ef4c4022e79d31eba4 svapp
-c49d52386cde0844cef30d8904a4fe409cec3d5c svcore
-5a978d540d556e37625bbf332aef8cdcf45e09c8 svgui
+57633d605547924f16c02162f6e7f211fdcea783 svcore
+2564d0865febbedaef98be605aa1db241c34e794 svgui
--- a/src/MainWindow.cpp	Mon Mar 30 14:28:37 2015 +0100
+++ b/src/MainWindow.cpp	Mon Mar 30 17:27:56 2015 +0100
@@ -745,6 +745,72 @@
     QMenu *menu = menuBar()->addMenu(tr("&Analysis"));
     menu->setTearOffEnabled(true);
 
+    m_autoAnalyse = new QAction(tr("Auto-Analyse &New Audio"), this);
+    m_autoAnalyse->setStatusTip(tr("Automatically trigger analysis upon opening of a new audio file."));
+    m_autoAnalyse->setCheckable(true);
+    connect(m_autoAnalyse, SIGNAL(triggered()), this, SLOT(autoAnalysisToggled()));
+    menu->addAction(m_autoAnalyse);
+
+    action = new QAction(tr("&Analyse Now!"), this);
+    action->setStatusTip(tr("Trigger analysis of pitches and notes. (This will delete all existing pitches and notes.)"));
+    connect(action, SIGNAL(triggered()), this, SLOT(analyseNow()));
+    menu->addAction(action);
+    m_keyReference->registerShortcut(action);
+
+    menu->addSeparator();
+
+    m_precise = new QAction(tr("&Unbiased Timing (slow)"), this);
+    m_precise->setStatusTip(tr("Use a symmetric window in YIN to remove frequency-dependent timing bias. (This is slow!)"));
+    m_precise->setCheckable(true);
+    connect(m_precise, SIGNAL(triggered()), this, SLOT(precisionAnalysisToggled()));
+    menu->addAction(m_precise);
+
+    m_lowamp = new QAction(tr("&Penalise Soft Pitches"), this);
+    m_lowamp->setStatusTip(tr("Reduce the likelihood of detecting a pitch when the signal has low amplitude."));
+    m_lowamp->setCheckable(true);
+    connect(m_lowamp, SIGNAL(triggered()), this, SLOT(lowampAnalysisToggled()));
+    menu->addAction(m_lowamp);
+
+    m_onset = new QAction(tr("&High Onset Sensitivity"), this);
+    m_onset->setStatusTip(tr("Increase likelihood of separating notes, especially consecutive notes at the same pitch."));
+    m_onset->setCheckable(true);
+    connect(m_onset, SIGNAL(triggered()), this, SLOT(onsetAnalysisToggled()));
+    menu->addAction(m_onset);
+
+    m_prune = new QAction(tr("&Drop Short Notes"), this);
+    m_prune->setStatusTip(tr("Duration-based pruning: automatic note estimator will not output notes of less than 100ms duration."));
+    m_prune->setCheckable(true);
+    connect(m_prune, SIGNAL(triggered()), this, SLOT(pruneAnalysisToggled()));
+    menu->addAction(m_prune);
+
+    menu->addSeparator();
+
+    action = new QAction(tr("Reset Options to Defaults"), this);
+    action->setStatusTip(tr("Reset all of the Analyse menu options to their default settings."));
+    connect(action, SIGNAL(triggered()), this, SLOT(resetAnalyseOptions()));
+    menu->addAction(action);
+
+    updateAnalyseStates();
+}
+
+void
+MainWindow::resetAnalyseOptions()
+{
+    //!!! oh no, we need to update the menu states as well...
+    QSettings settings;
+    settings.beginGroup("Analyser");
+    settings.setValue("auto-analysis", true);
+    settings.setValue("precision-analysis", false);
+    settings.setValue("lowamp-analysis", true);
+    settings.setValue("onset-analysis", true);
+    settings.setValue("prune-analysis", true);
+    settings.endGroup();
+    updateAnalyseStates();
+}
+
+void
+MainWindow::updateAnalyseStates()
+{
     QSettings settings;
     settings.beginGroup("Analyser");
     bool autoAnalyse = settings.value("auto-analysis", true).toBool();
@@ -754,55 +820,11 @@
     bool prune = settings.value("prune-analysis", true).toBool();
     settings.endGroup();
 
-    action = new QAction(tr("Auto-Analyse &New Audio"), this);
-    action->setStatusTip(tr("Automatically trigger analysis upon opening of a new audio file."));
-    action->setCheckable(true);
-    action->setChecked(autoAnalyse);
-    connect(action, SIGNAL(triggered()), this, SLOT(autoAnalysisToggled()));
-    menu->addAction(action);
-
-    action = new QAction(tr("&Analyse Now!"), this);
-    action->setStatusTip(tr("Trigger analysis of pitches and notes. (This will delete all existing pitches and notes.)"));
-    connect(action, SIGNAL(triggered()), this, SLOT(analyseNow()));
-    menu->addAction(action);
-    m_keyReference->registerShortcut(action);
-
-    menu->addSeparator();
-
-    action = new QAction(tr("&Unbiased Timing (slow)"), this);
-    action->setStatusTip(tr("Use a symmetric window in YIN to remove frequency-dependent timing bias. (This is slow!)"));
-    action->setCheckable(true);
-    action->setChecked(precise);
-    connect(action, SIGNAL(triggered()), this, SLOT(precisionAnalysisToggled()));
-    menu->addAction(action);
-
-    action = new QAction(tr("&Penalise Soft Pitches"), this);
-    action->setStatusTip(tr("Reduce the likelihood of detecting a pitch when the signal has low amplitude."));
-    action->setCheckable(true);
-    action->setChecked(lowamp);
-    connect(action, SIGNAL(triggered()), this, SLOT(lowampAnalysisToggled()));
-    menu->addAction(action);
-
-    action = new QAction(tr("&High Onset Sensitivity"), this);
-    action->setStatusTip(tr("Increase likelihood of separating notes, especially consecutive notes at the same pitch."));
-    action->setCheckable(true);
-    action->setChecked(onset);
-    connect(action, SIGNAL(triggered()), this, SLOT(onsetAnalysisToggled()));
-    menu->addAction(action);
-
-    action = new QAction(tr("&Drop Short Notes"), this);
-    action->setStatusTip(tr("Duration-based pruning: automatic note estimator will not output notes of less than 100ms duration."));
-    action->setCheckable(true);
-    action->setChecked(prune);
-    connect(action, SIGNAL(triggered()), this, SLOT(pruneAnalysisToggled()));
-    menu->addAction(action);
-
-    menu->addSeparator();
-
-    action = new QAction(tr("Reset Options to Defaults"), this);
-    action->setStatusTip(tr("Reset all of the Analyse menu options to their default settings."));
-    connect(action, SIGNAL(triggered()), this, SLOT(resetAnalyseOptions()));
-    menu->addAction(action);
+    m_autoAnalyse->setChecked(autoAnalyse);
+    m_precise->setChecked(precise);
+    m_lowamp->setChecked(lowamp);
+    m_onset->setChecked(onset);
+    m_prune->setChecked(prune);
 }
 
 void
--- a/src/MainWindow.h	Mon Mar 30 14:28:37 2015 +0100
+++ b/src/MainWindow.h	Mon Mar 30 17:27:56 2015 +0100
@@ -82,11 +82,13 @@
     virtual void editDisplayExtents();
 
     virtual void analyseNow();
+    virtual void resetAnalyseOptions();
     virtual void autoAnalysisToggled();
     virtual void precisionAnalysisToggled();
     virtual void lowampAnalysisToggled();
     virtual void onsetAnalysisToggled();
     virtual void pruneAnalysisToggled();
+    virtual void updateAnalyseStates();
 
     virtual void doubleClickSelectInvoked(sv_frame_t);
     virtual void abandonSelection();
@@ -194,6 +196,12 @@
     QAction       *m_toggleIntelligenceAction;
     bool           m_intelligentActionOn; // GF: !!! temporary
 
+    QAction       *m_autoAnalyse;
+    QAction       *m_precise;
+    QAction       *m_lowamp;
+    QAction       *m_onset;
+    QAction       *m_prune;
+        
     QAction       *m_showAudio;
     QAction       *m_showSpect;
     QAction       *m_showPitch;