changeset 466:8acfe027a033

Show alignment error only once per session/alignment-type
author Chris Cannam
date Thu, 23 Jul 2020 16:11:56 +0100
parents 1ca067c414ad
children 6ac890a4e4cf
files main/MainWindow.cpp main/MainWindow.h
diffstat 2 files changed, 20 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/main/MainWindow.cpp	Thu Jul 23 14:39:28 2020 +0100
+++ b/main/MainWindow.cpp	Thu Jul 23 16:11:56 2020 +0100
@@ -155,7 +155,8 @@
     m_displayMode(OutlineWaveformMode),
     m_salientCalculating(false),
     m_salientColour(0),
-    m_sessionState(NoSession)
+    m_sessionState(NoSession),
+    m_shownAlignmentError(false)
 {
     setWindowTitle(QApplication::applicationName());
 
@@ -791,7 +792,8 @@
     action->setChecked(Align::getUseSubsequenceAlignment());
     action->setEnabled(preference != Align::NoAlignment &&
                        preference != Align::LinearAlignment &&
-                       preference != Align::TrimmedLinearAlignment);
+                       preference != Align::TrimmedLinearAlignment &&
+                       preference != Align::ExternalProgramAlignment);
     connect(action, SIGNAL(triggered()), this, SLOT(alignmentSubsequenceChanged()));
 
     m_subsequenceAlignmentAction = action;
@@ -1134,6 +1136,8 @@
     CommandHistory::getInstance()->clear();
     CommandHistory::getInstance()->documentSaved();
     documentRestored();
+
+    m_shownAlignmentError = false;
 }
 
 void
@@ -2366,7 +2370,8 @@
     m_subsequenceAlignmentAction->setEnabled
         (alignmentType != Align::NoAlignment &&
          alignmentType != Align::LinearAlignment &&
-         alignmentType != Align::TrimmedLinearAlignment);
+         alignmentType != Align::TrimmedLinearAlignment &&
+         alignmentType != Align::ExternalProgramAlignment);
 
     updateAlignmentPreferences(alignmentType,
                                Align::getUseSubsequenceAlignment());
@@ -2387,6 +2392,8 @@
 MainWindow::updateAlignmentPreferences(Align::AlignmentType alignmentType,
                                        bool subsequence)
 {
+    m_shownAlignmentError = false;
+    
     Align::setAlignmentPreference(alignmentType);
     Align::setUseSubsequenceAlignment(subsequence);
     
@@ -3094,12 +3101,20 @@
 void
 MainWindow::alignmentFailed(ModelId, QString message)
 {
+    if (m_shownAlignmentError) {
+        return;
+    }
+    
     QMessageBox::warning
         (this,
          tr("Failed to calculate alignment"),
          tr("<b>Alignment calculation failed</b><p>Failed to calculate an audio alignment:<p>%1")
          .arg(message),
          QMessageBox::Ok);
+
+    m_shownAlignmentError = true; // (will be reset when
+                                  // e.g. alignment type changes or
+                                  // new session started)
 }
 
 void
--- a/main/MainWindow.h	Thu Jul 23 14:39:28 2020 +0100
+++ b/main/MainWindow.h	Thu Jul 23 16:11:56 2020 +0100
@@ -218,7 +218,6 @@
     QAction                 *m_selectPreviousDisplayModeAction;
     QAction                 *m_selectNextDisplayModeAction;
 
-//    QAction                 *m_externalAlignmentAction;
     QAction                 *m_subsequenceAlignmentAction;
     Align::AlignmentType     m_previousActiveAlignmentType;
     bool                     m_previousSubsequence;
@@ -323,6 +322,8 @@
     };
     SessionState m_sessionState;
 
+    bool m_shownAlignmentError;
+
     void loadStyle();
 };