changeset 429:2d553ea71852 pitch-align

Add External Program selection feature, + some aligner fixes
author Chris Cannam
date Thu, 28 May 2020 17:05:23 +0100
parents 213fb6c6a426
children 3f0c55210f50
files main/MainWindow.cpp repoint-lock.json
diffstat 2 files changed, 47 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/main/MainWindow.cpp	Fri May 22 17:18:15 2020 +0100
+++ b/main/MainWindow.cpp	Thu May 28 17:05:23 2020 +0100
@@ -115,6 +115,7 @@
 #include <QCloseEvent>
 #include <QDialogButtonBox>
 #include <QTextEdit>
+#include <QFileDialog>
 
 #include <iostream>
 #include <cstdio>
@@ -791,7 +792,8 @@
         { Align::TrimmedLinearAlignment, tr("Linear Trimmed") },
         { Align::MATCHAlignment, tr("Online DTW (MATCH)") },
         { Align::MATCHAlignmentWithPitchCompare, tr("Online DTW with Pitch Compensation") },
-        { Align::SungPitchContourAlignment, tr("Sung Pitch Contour") }
+        { Align::SungPitchContourAlignment, tr("Sung Pitch Contour") },
+        { Align::ExternalProgramAlignment, tr("External Alignment Program...") }
     };
 
     QAction *action = nullptr;
@@ -800,6 +802,9 @@
         Align::getAlignmentPreference(additionalData);
     
     for (auto al: alignmentLabels) {
+        if (al.first == Align::ExternalProgramAlignment) {
+            menu->addSeparator();
+        }
         action = menu->addAction(al.second);
         action->setObjectName(Align::getAlignmentTypeTag(al.first));
         action->setActionGroup(alignmentGroup);
@@ -2346,16 +2351,54 @@
 
     Align::AlignmentType alignmentType =
         Align::getAlignmentTypeForTag(action->objectName());
-
-    Align::setAlignmentPreference(alignmentType);
     
     if (alignmentType == Align::NoAlignment) {
 
+        Align::setAlignmentPreference(alignmentType);
         m_viewManager->setAlignMode(false);
         m_document->setAutoAlignment(false);
 
+    } else if (alignmentType == Align::ExternalProgramAlignment) {
+
+        QSettings settings;
+        settings.beginGroup("Alignment");
+        QString formerProgram =
+            settings.value("alignment-program", "").toString();
+        bool ok = true;
+        QString newProgram =
+            QFileDialog::getOpenFileName(this,
+                                         tr("External Alignment Program"),
+                                         formerProgram);
+        if (newProgram != "") {
+/*
+            QInputDialog::getText(this,
+                                  tr("External Alignment Program"),
+                                  tr("External Alignment Program:"),
+                                  QLineEdit::Normal,
+                                  formerProgram,
+                                  &ok);
+        if (ok) {
+*/
+            Align::setAlignmentPreference(alignmentType, newProgram);
+        } else {
+            Align::setAlignmentPreference(alignmentType, formerProgram);
+        }
+
+        m_viewManager->setAlignMode(true);
+        
+        if (alignmentType == m_previousActiveAlignmentType) {
+            m_document->alignModels();
+        } else {
+            m_document->realignModels();
+        }
+
+        m_document->setAutoAlignment(true);
+        m_previousActiveAlignmentType = alignmentType;
+
     } else {
 
+        Align::setAlignmentPreference(alignmentType);
+
         m_viewManager->setAlignMode(true);
         
         if (alignmentType == m_previousActiveAlignmentType) {
--- a/repoint-lock.json	Fri May 22 17:18:15 2020 +0100
+++ b/repoint-lock.json	Thu May 28 17:05:23 2020 +0100
@@ -10,7 +10,7 @@
       "pin": "bd1a7c84da8c"
     },
     "svapp": {
-      "pin": "1b1960009be6"
+      "pin": "a316cb6fed81"
     },
     "checker": {
       "pin": "e839338d3869"