Mercurial > hg > svapp
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 |