Mercurial > hg > svapp
diff 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 |
line wrap: on
line diff
--- a/align/Align.cpp Mon Jun 01 17:13:09 2020 +0100 +++ b/align/Align.cpp Thu Jun 25 09:32:01 2020 +0100 @@ -97,8 +97,7 @@ ModelId reference, ModelId toAlign) { - QString additionalData; - AlignmentType type = getAlignmentPreference(additionalData); + AlignmentType type = getAlignmentPreference(); std::shared_ptr<Aligner> aligner; @@ -183,10 +182,11 @@ throw std::logic_error("Not yet implemented"); //!!! case ExternalProgramAlignment: { - aligner = make_shared<ExternalProgramAligner>(doc, - reference, - toAlign, - additionalData); + aligner = make_shared<ExternalProgramAligner> + (doc, + reference, + toAlign, + getPreferredAlignmentProgram()); } } @@ -203,52 +203,68 @@ } Align::AlignmentType -Align::getAlignmentPreference(QString &additionalData) +Align::getAlignmentPreference() { QSettings settings; settings.beginGroup("Alignment"); - QString tag = settings.value ("alignment-type", getAlignmentTypeTag(MATCHAlignment)).toString(); + return getAlignmentTypeForTag(tag); +} - AlignmentType type = getAlignmentTypeForTag(tag); +QString +Align::getPreferredAlignmentProgram() +{ + QSettings settings; + settings.beginGroup("Alignment"); + return settings.value("alignment-program", "").toString(); +} - if (type == TransformDrivenDTWAlignment) { - additionalData = settings.value("alignment-transform", "").toString(); - } else if (type == ExternalProgramAlignment) { - additionalData = settings.value("alignment-program", "").toString(); - } - - settings.endGroup(); - return type; +Transform +Align::getPreferredAlignmentTransform() +{ + QSettings settings; + settings.beginGroup("Alignment"); + QString xml = settings.value("alignment-transform", "").toString(); + return Transform(xml); } void -Align::setAlignmentPreference(AlignmentType type, QString additionalData) +Align::setAlignmentPreference(AlignmentType type) { QSettings settings; settings.beginGroup("Alignment"); - QString tag = getAlignmentTypeTag(type); settings.setValue("alignment-type", tag); + settings.endGroup(); +} - if (type == TransformDrivenDTWAlignment) { - settings.setValue("alignment-transform", additionalData); - } else if (type == ExternalProgramAlignment) { - settings.setValue("alignment-program", additionalData); - } +void +Align::setPreferredAlignmentProgram(QString program) +{ + QSettings settings; + settings.beginGroup("Alignment"); + settings.setValue("alignment-program", program); + settings.endGroup(); +} +void +Align::setPreferredAlignmentTransform(Transform transform) +{ + QSettings settings; + settings.beginGroup("Alignment"); + settings.setValue("alignment-transform", transform.toXmlString()); settings.endGroup(); } bool Align::canAlign() { - QString additionalData; - AlignmentType type = getAlignmentPreference(additionalData); + AlignmentType type = getAlignmentPreference(); if (type == ExternalProgramAlignment) { - return ExternalProgramAligner::isAvailable(additionalData); + return ExternalProgramAligner::isAvailable + (getPreferredAlignmentProgram()); } else { return TransformAligner::isAvailable(); }