diff framework/Align.cpp @ 664:06db8f3ceb95 single-point

Update so Document owns the alignment model's input aggregate model, just as any other model
author Chris Cannam
date Thu, 04 Apr 2019 11:16:29 +0100
parents 8ad6327b01cc
children 21673429dba5
line wrap: on
line diff
--- a/framework/Align.cpp	Tue Apr 02 14:45:57 2019 +0100
+++ b/framework/Align.cpp	Thu Apr 04 11:16:29 2019 +0100
@@ -14,6 +14,7 @@
 */
 
 #include "Align.h"
+#include "Document.h"
 
 #include "data/model/WaveFileModel.h"
 #include "data/model/ReadOnlyWaveFileModel.h"
@@ -33,7 +34,7 @@
 #include <QApplication>
 
 bool
-Align::alignModel(Model *ref, Model *other)
+Align::alignModel(Document *doc, Model *ref, Model *other)
 {
     QSettings settings;
     settings.beginGroup("Preferences");
@@ -42,9 +43,9 @@
     settings.endGroup();
 
     if (useProgram && (program != "")) {
-        return alignModelViaProgram(ref, other, program);
+        return alignModelViaProgram(doc, ref, other, program);
     } else {
-        return alignModelViaTransform(ref, other);
+        return alignModelViaTransform(doc, ref, other);
     }
 }
 
@@ -69,7 +70,7 @@
 }
 
 bool
-Align::alignModelViaTransform(Model *ref, Model *other)
+Align::alignModelViaTransform(Document *doc, Model *ref, Model *other)
 {
     RangeSummarisableTimeValueModel *reference = qobject_cast
         <RangeSummarisableTimeValueModel *>(ref);
@@ -106,7 +107,9 @@
     components.push_back(AggregateWaveModel::ModelChannelSpec
                          (rm, -1));
 
-    Model *aggregateModel = new AggregateWaveModel(components);
+    AggregateWaveModel *aggregateModel = new AggregateWaveModel(components);
+    doc->addAggregateModel(aggregateModel);
+    
     ModelTransformer::Input aggregate(aggregateModel);
 
     TransformId id = getAlignmentTransformName();
@@ -146,7 +149,7 @@
     path->setCompletion(0);
 
     AlignmentModel *alignmentModel = new AlignmentModel
-        (reference, other, aggregateModel, path);
+        (reference, other, path);
 
     connect(alignmentModel, SIGNAL(completionChanged()),
             this, SLOT(alignmentCompletionChanged()));
@@ -169,7 +172,7 @@
 }
 
 bool
-Align::alignModelViaProgram(Model *ref, Model *other, QString program)
+Align::alignModelViaProgram(Document *, Model *ref, Model *other, QString program)
 {
     WaveFileModel *reference = qobject_cast<WaveFileModel *>(ref);
     WaveFileModel *rm = qobject_cast<WaveFileModel *>(other);
@@ -204,7 +207,7 @@
     m_error = "";
     
     AlignmentModel *alignmentModel =
-        new AlignmentModel(reference, other, nullptr, nullptr);
+        new AlignmentModel(reference, other, nullptr);
     rm->setAlignment(alignmentModel);
 
     QProcess *process = new QProcess;