Mercurial > hg > sonic-lineup
changeset 435:e0be1fed50dd pitch-align
Separate out choosing alignment program from choosing to use the alignment program
| author | Chris Cannam |
|---|---|
| date | Thu, 25 Jun 2020 09:32:38 +0100 |
| parents | c65fbb5b8707 |
| children | 7f2cf45157c8 |
| files | main/MainWindow.cpp main/MainWindow.h repoint-lock.json |
| diffstat | 3 files changed, 53 insertions(+), 75 deletions(-) [+] |
line wrap: on
line diff
--- a/main/MainWindow.cpp Wed Jun 24 10:26:35 2020 +0100 +++ b/main/MainWindow.cpp Thu Jun 25 09:32:38 2020 +0100 @@ -757,31 +757,6 @@ QMenu *menu = menuBar()->addMenu(tr("&Alignment")); menu->setTearOffEnabled(false); -/*!!! update: - - QToolBar *toolbar = nullptr; - if (m_playbackToolBar) { - toolbar = m_playbackToolBar; - } else { - toolbar = m_playbackToolBar = addToolBar(tr("Playback Toolbar")); - } - - QAction *alAction = 0; - alAction = toolbar->addAction(il.load("align"), - tr("Align File Timelines")); - alAction->setCheckable(true); - alAction->setChecked(m_viewManager->getAlignMode()); - alAction->setStatusTip(tr("Treat multiple audio files as versions of the same work, and align their timelines")); - connect(m_viewManager, SIGNAL(alignModeChanged(bool)), - alAction, SLOT(setChecked(bool))); - connect(alAction, SIGNAL(triggered()), this, SLOT(alignToggled())); - - menu->addAction(alAction); -*/ -// MenuTitle::addSection(menu, tr("Alignment Method")); - - QSettings settings; - QActionGroup *alignmentGroup = new QActionGroup(this); //!!! + explanatory status bar texts @@ -793,18 +768,12 @@ { Align::MATCHAlignment, tr("Online DTW (MATCH)") }, { Align::MATCHAlignmentWithPitchCompare, tr("Online DTW with Pitch Compensation") }, { Align::SungNoteContourAlignment, tr("Sung Note Contour") }, - { Align::ExternalProgramAlignment, tr("External Alignment Program...") } }; QAction *action = nullptr; - QString additionalData; - Align::AlignmentType preference = - Align::getAlignmentPreference(additionalData); - + Align::AlignmentType preference = Align::getAlignmentPreference(); + for (auto al: alignmentLabels) { - if (al.first == Align::ExternalProgramAlignment) { - menu->addSeparator(); - } action = menu->addAction(al.second); action->setObjectName(Align::getAlignmentTypeTag(al.first)); action->setActionGroup(alignmentGroup); @@ -815,6 +784,29 @@ menu->addSeparator(); } } + + QString program = Align::getPreferredAlignmentProgram(); + if (program == "") { + action = menu->addAction(tr("External Alignment Program")); + action->setEnabled(false); + } else { + QString filename = QFileInfo(program).fileName(); + action = menu->addAction(tr("External Program (%1)").arg(filename)); + } + + m_externalAlignmentAction = action; + + action->setObjectName + (Align::getAlignmentTypeTag(Align::ExternalProgramAlignment)); + action->setActionGroup(alignmentGroup); + action->setCheckable(true); + action->setChecked(preference == Align::ExternalProgramAlignment); + connect(action, SIGNAL(triggered()), this, SLOT(alignmentTypeChanged())); + + menu->addSeparator(); + + action = menu->addAction(tr("Choose External Alignment Program...")); + connect(action, SIGNAL(triggered()), this, SLOT(chooseAlignmentProgram())); } void @@ -2358,31 +2350,9 @@ m_viewManager->setAlignMode(false); m_document->setAutoAlignment(false); - } else if (alignmentType == Align::ExternalProgramAlignment) { - - QSettings settings; - settings.beginGroup("Alignment"); - QString formerProgram = - settings.value("alignment-program", "").toString(); - bool ok = true; - QString newProgram = - QFileDialog::getOpenFileName(this, - tr("External Alignment Program"), - formerProgram); - if (newProgram != "") { -/* - QInputDialog::getText(this, - tr("External Alignment Program"), - tr("External Alignment Program:"), - QLineEdit::Normal, - formerProgram, - &ok); - if (ok) { -*/ - Align::setAlignmentPreference(alignmentType, newProgram); - } else { - Align::setAlignmentPreference(alignmentType, formerProgram); - } + } else { + + Align::setAlignmentPreference(alignmentType); m_viewManager->setAlignMode(true); @@ -2394,21 +2364,6 @@ m_document->setAutoAlignment(true); m_previousActiveAlignmentType = alignmentType; - - } else { - - Align::setAlignmentPreference(alignmentType); - - m_viewManager->setAlignMode(true); - - if (alignmentType == m_previousActiveAlignmentType) { - m_document->alignModels(); - } else { - m_document->realignModels(); - } - - m_document->setAutoAlignment(true); - m_previousActiveAlignmentType = alignmentType; } for (int i = 0; i < m_paneStack->getPaneCount(); ++i) { @@ -2417,6 +2372,27 @@ pane->update(); } } + +void +MainWindow::chooseAlignmentProgram() +{ + QString formerProgram = Align::getPreferredAlignmentProgram(); + QString newProgram = + QFileDialog::getOpenFileName(this, + tr("External Alignment Program"), + formerProgram); + if (newProgram != "") { + SVCERR << "Setting alignment preference to ExternalProgramAlignment " + << "with program " << newProgram << endl; + Align::setAlignmentPreference(Align::ExternalProgramAlignment); + Align::setPreferredAlignmentProgram(newProgram); + QString filename = QFileInfo(newProgram).fileName(); + m_externalAlignmentAction->setText + (tr("External Program: %1").arg(filename)); + m_externalAlignmentAction->setEnabled(true); + m_externalAlignmentAction->activate(QAction::Trigger); + } +} void MainWindow::playSpeedChanged(int position)
--- a/main/MainWindow.h Wed Jun 24 10:26:35 2020 +0100 +++ b/main/MainWindow.h Thu Jun 25 09:32:38 2020 +0100 @@ -125,6 +125,7 @@ void record() override; void alignmentTypeChanged(); + void chooseAlignmentProgram(); void playSpeedChanged(int); void speedUpPlayback(); @@ -211,6 +212,7 @@ QAction *m_selectPreviousDisplayModeAction; QAction *m_selectNextDisplayModeAction; + QAction *m_externalAlignmentAction; Align::AlignmentType m_previousActiveAlignmentType; RecentFiles m_recentSessions;
--- a/repoint-lock.json Wed Jun 24 10:26:35 2020 +0100 +++ b/repoint-lock.json Thu Jun 25 09:32:38 2020 +0100 @@ -4,13 +4,13 @@ "pin": "0e32c328b02a" }, "svcore": { - "pin": "258e356b1a7b" + "pin": "231c6bcf0fa2" }, "svgui": { "pin": "fe9a643b83bf" }, "svapp": { - "pin": "699b5b130ea2" + "pin": "32e66fcc4cb7" }, "checker": { "pin": "e839338d3869"
