# HG changeset patch # User Chris Cannam # Date 1416498425 0 # Node ID 216c4a06a4628e8fe34ff91b094a979e6c0ff976 # Parent 13f53ecc8bb598a2218d45f332e45341035dfa09# Parent 30afdc7c7b897d69479281f9ac63b6218163ca3d Merge diff -r 30afdc7c7b89 -r 216c4a06a462 data/model/AlignmentModel.cpp --- a/data/model/AlignmentModel.cpp Thu Nov 20 12:30:16 2014 +0000 +++ b/data/model/AlignmentModel.cpp Thu Nov 20 15:47:05 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(); diff -r 30afdc7c7b89 -r 216c4a06a462 data/model/AlignmentModel.h --- a/data/model/AlignmentModel.h Thu Nov 20 12:30:16 2014 +0000 +++ b/data/model/AlignmentModel.h Thu Nov 20 15:47:05 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,