comparison align/Align.cpp @ 776:32e66fcc4cb7 pitch-align

Make querying and setting the external alignment program or transform separate from selecting the alignment type - we need it to work that way for a clearer UI
author Chris Cannam
date Thu, 25 Jun 2020 09:32:01 +0100
parents 699b5b130ea2
children 87d33e79855b
comparison
equal deleted inserted replaced
773:699b5b130ea2 776:32e66fcc4cb7
95 bool 95 bool
96 Align::addAligner(Document *doc, 96 Align::addAligner(Document *doc,
97 ModelId reference, 97 ModelId reference,
98 ModelId toAlign) 98 ModelId toAlign)
99 { 99 {
100 QString additionalData; 100 AlignmentType type = getAlignmentPreference();
101 AlignmentType type = getAlignmentPreference(additionalData);
102 101
103 std::shared_ptr<Aligner> aligner; 102 std::shared_ptr<Aligner> aligner;
104 103
105 if (m_aligners.find(toAlign) != m_aligners.end()) { 104 if (m_aligners.find(toAlign) != m_aligners.end()) {
106 // We don't want a callback on removeAligner to happen during 105 // We don't want a callback on removeAligner to happen during
181 180
182 case TransformDrivenDTWAlignment: 181 case TransformDrivenDTWAlignment:
183 throw std::logic_error("Not yet implemented"); //!!! 182 throw std::logic_error("Not yet implemented"); //!!!
184 183
185 case ExternalProgramAlignment: { 184 case ExternalProgramAlignment: {
186 aligner = make_shared<ExternalProgramAligner>(doc, 185 aligner = make_shared<ExternalProgramAligner>
187 reference, 186 (doc,
188 toAlign, 187 reference,
189 additionalData); 188 toAlign,
189 getPreferredAlignmentProgram());
190 } 190 }
191 } 191 }
192 192
193 m_aligners[toAlign] = aligner; 193 m_aligners[toAlign] = aligner;
194 } 194 }
201 201
202 return true; 202 return true;
203 } 203 }
204 204
205 Align::AlignmentType 205 Align::AlignmentType
206 Align::getAlignmentPreference(QString &additionalData) 206 Align::getAlignmentPreference()
207 { 207 {
208 QSettings settings; 208 QSettings settings;
209 settings.beginGroup("Alignment"); 209 settings.beginGroup("Alignment");
210
211 QString tag = settings.value 210 QString tag = settings.value
212 ("alignment-type", getAlignmentTypeTag(MATCHAlignment)).toString(); 211 ("alignment-type", getAlignmentTypeTag(MATCHAlignment)).toString();
213 212 return getAlignmentTypeForTag(tag);
214 AlignmentType type = getAlignmentTypeForTag(tag); 213 }
215 214
216 if (type == TransformDrivenDTWAlignment) { 215 QString
217 additionalData = settings.value("alignment-transform", "").toString(); 216 Align::getPreferredAlignmentProgram()
218 } else if (type == ExternalProgramAlignment) { 217 {
219 additionalData = settings.value("alignment-program", "").toString(); 218 QSettings settings;
220 } 219 settings.beginGroup("Alignment");
221 220 return settings.value("alignment-program", "").toString();
222 settings.endGroup(); 221 }
223 return type; 222
224 } 223 Transform
225 224 Align::getPreferredAlignmentTransform()
226 void 225 {
227 Align::setAlignmentPreference(AlignmentType type, QString additionalData) 226 QSettings settings;
228 { 227 settings.beginGroup("Alignment");
229 QSettings settings; 228 QString xml = settings.value("alignment-transform", "").toString();
230 settings.beginGroup("Alignment"); 229 return Transform(xml);
231 230 }
231
232 void
233 Align::setAlignmentPreference(AlignmentType type)
234 {
235 QSettings settings;
236 settings.beginGroup("Alignment");
232 QString tag = getAlignmentTypeTag(type); 237 QString tag = getAlignmentTypeTag(type);
233 settings.setValue("alignment-type", tag); 238 settings.setValue("alignment-type", tag);
234 239 settings.endGroup();
235 if (type == TransformDrivenDTWAlignment) { 240 }
236 settings.setValue("alignment-transform", additionalData); 241
237 } else if (type == ExternalProgramAlignment) { 242 void
238 settings.setValue("alignment-program", additionalData); 243 Align::setPreferredAlignmentProgram(QString program)
239 } 244 {
240 245 QSettings settings;
246 settings.beginGroup("Alignment");
247 settings.setValue("alignment-program", program);
248 settings.endGroup();
249 }
250
251 void
252 Align::setPreferredAlignmentTransform(Transform transform)
253 {
254 QSettings settings;
255 settings.beginGroup("Alignment");
256 settings.setValue("alignment-transform", transform.toXmlString());
241 settings.endGroup(); 257 settings.endGroup();
242 } 258 }
243 259
244 bool 260 bool
245 Align::canAlign() 261 Align::canAlign()
246 { 262 {
247 QString additionalData; 263 AlignmentType type = getAlignmentPreference();
248 AlignmentType type = getAlignmentPreference(additionalData);
249 264
250 if (type == ExternalProgramAlignment) { 265 if (type == ExternalProgramAlignment) {
251 return ExternalProgramAligner::isAvailable(additionalData); 266 return ExternalProgramAligner::isAvailable
267 (getPreferredAlignmentProgram());
252 } else { 268 } else {
253 return TransformAligner::isAvailable(); 269 return TransformAligner::isAvailable();
254 } 270 }
255 } 271 }
256 272