changeset 1020:9c00e7944bf2

Merge
author Chris Cannam
date Thu, 27 Nov 2014 17:51:21 +0000
parents a73c44ae5acb (current diff) 4a2c150ecd67 (diff)
children 1888ca033a84
files
diffstat 3 files changed, 40 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/data/model/AlignmentModel.cpp	Thu Nov 27 17:50:34 2014 +0000
+++ b/data/model/AlignmentModel.cpp	Thu Nov 27 17:51:21 2014 +0000
@@ -112,10 +112,17 @@
         if (completion) *completion = 0;
         return false;
     }
-    if (m_pathComplete || !m_rawPath) {
+    if (m_pathComplete) {
         if (completion) *completion = 100;
         return true;
     }
+    if (!m_rawPath) {
+        // lack of raw path could mean path is complete (in which case
+        // m_pathComplete true above) or else no alignment has been
+        // set at all yet (this case)
+        if (completion) *completion = 0;
+        return false;
+    }
     return m_rawPath->isReady(completion);
 }
 
@@ -347,6 +354,31 @@
 }
 
 void
+AlignmentModel::setPathFrom(SparseTimeValueModel *rawpath)
+{
+    if (m_rawPath) m_rawPath->aboutToDelete();
+    delete m_rawPath;
+
+    m_rawPath = rawpath;
+
+    connect(m_rawPath, SIGNAL(modelChanged()),
+            this, SLOT(pathChanged()));
+
+    connect(m_rawPath, SIGNAL(modelChangedWithin(int, int)),
+            this, SLOT(pathChangedWithin(int, int)));
+        
+    connect(m_rawPath, SIGNAL(completionChanged()),
+            this, SLOT(pathCompletionChanged()));
+    
+    constructPath();
+    constructReversePath();
+
+    if (m_rawPath->isReady()) {
+        pathCompletionChanged();
+    }        
+}
+
+void
 AlignmentModel::setPath(PathModel *path)
 {
     if (m_path) m_path->aboutToDelete();
--- a/data/model/AlignmentModel.h	Thu Nov 27 17:50:34 2014 +0000
+++ b/data/model/AlignmentModel.h	Thu Nov 27 17:51:21 2014 +0000
@@ -52,6 +52,7 @@
     int toReference(int frame) const;
     int fromReference(int frame) const;
 
+    void setPathFrom(SparseTimeValueModel *rawpath);
     void setPath(PathModel *path);
 
     virtual void toXml(QTextStream &stream,
--- a/data/model/Model.cpp	Thu Nov 27 17:50:34 2014 +0000
+++ b/data/model/Model.cpp	Thu Nov 27 17:51:21 2014 +0000
@@ -85,9 +85,13 @@
         m_alignment->aboutToDelete();
         delete m_alignment;
     }
+    
     m_alignment = alignment;
-    connect(m_alignment, SIGNAL(completionChanged()),
-            this, SIGNAL(alignmentCompletionChanged()));
+
+    if (m_alignment) {
+        connect(m_alignment, SIGNAL(completionChanged()),
+                this, SIGNAL(alignmentCompletionChanged()));
+    }
 }
 
 const AlignmentModel *