# HG changeset patch # User Chris Cannam # Date 1480068532 0 # Node ID 5b639a383e58001b8c425ea0ef628ed54037ccd0 # Parent ae68ebb5fbe83248f9dac9c3f54c14a39aadbe79# Parent 78d2cb5f2cadc27f5ad22789eddcebb1eb200a37 Merge from branch subdivide-instants diff -r ae68ebb5fbe8 -r 5b639a383e58 .hgsubstate --- a/.hgsubstate Thu Nov 24 17:10:40 2016 +0000 +++ b/.hgsubstate Fri Nov 25 10:08:52 2016 +0000 @@ -7,7 +7,7 @@ 68ae618c6b0e442d08a71d39217784a08f2a8de3 icons/scalable 3257ddb6fff110cc88f3ffeaeefa0f29d5eb3b6f piper-cpp e1712f7d74a455337591091a57beba2f0443b9dd sv-dependency-builds -36aa947ec9629108da8abe39b37fb97c1e989514 svapp -fa574c909c3db7dc9ef6f2294e100315553b0498 svcore +630c4a9885cac11c40ee4907f4e7cde612a8e988 svapp +3cde25cbe7f8d04de0b3668463b98f2b796247d1 svcore 958e352919a587f0e9702b0d43f5667b8167e71c svgui 0eebd22a081a824067bf3d5de65326696feab653 vamp-plugin-sdk diff -r ae68ebb5fbe8 -r 5b639a383e58 main/MainWindow.cpp --- a/main/MainWindow.cpp Thu Nov 24 17:10:40 2016 +0000 +++ b/main/MainWindow.cpp Fri Nov 25 10:08:52 2016 +0000 @@ -842,6 +842,20 @@ connect(this, SIGNAL(canRenumberInstants(bool)), action, SLOT(setEnabled(bool))); // m_keyReference->registerShortcut(action); menu->addAction(action); + + menu->addSeparator(); + + action = new QAction(tr("Subdivide Selected Instants..."), this); + action->setStatusTip(tr("Add new instants at regular intervals between the selected instants")); + connect(action, SIGNAL(triggered()), this, SLOT(subdivideInstants())); + connect(this, SIGNAL(canSubdivideInstants(bool)), action, SLOT(setEnabled(bool))); + menu->addAction(action); + + action = new QAction(tr("Winnow Selected Instants..."), this); + action->setStatusTip(tr("Remove subdivisions, leaving only every Nth instant")); + connect(action, SIGNAL(triggered()), this, SLOT(winnowInstants())); + connect(this, SIGNAL(canWinnowInstants(bool)), action, SLOT(setEnabled(bool))); + menu->addAction(action); } void @@ -4392,6 +4406,50 @@ } void +MainWindow::subdivideInstants() +{ + QSettings settings; + settings.beginGroup("MainWindow"); + int n = settings.value("subdivisions", 4).toInt(); + + bool ok; + + n = QInputDialog::getInt(this, + tr("Subdivide instants"), + tr("Number of subdivisions:"), + n, 2, 96, 1, &ok); + + if (ok) { + settings.setValue("subdivisions", n); + subdivideInstantsBy(n); + } + + settings.endGroup(); +} + +void +MainWindow::winnowInstants() +{ + QSettings settings; + settings.beginGroup("MainWindow"); + int n = settings.value("winnow-subdivisions", 4).toInt(); + + bool ok; + + n = QInputDialog::getInt(this, + tr("Winnow instants"), + tr("Remove all instants apart from multiples of:"), + n, 2, 96, 1, &ok); + + if (ok) { + settings.setValue("winnow-subdivisions", n); + winnowInstantsBy(n); + } + + settings.endGroup(); +} + +void MainWindow::modelGenerationFailed(QString transformName, QString message) { emit hideSplash(); diff -r ae68ebb5fbe8 -r 5b639a383e58 main/MainWindow.h --- a/main/MainWindow.h Thu Nov 24 17:10:40 2016 +0000 +++ b/main/MainWindow.h Fri Nov 25 10:08:52 2016 +0000 @@ -90,6 +90,8 @@ virtual void setInstantsCounterCycle(); virtual void setInstantsCounters(); virtual void resetInstantsCounters(); + virtual void subdivideInstants(); + virtual void winnowInstants(); virtual void modelGenerationFailed(QString, QString); virtual void modelGenerationWarning(QString, QString);