Mercurial > hg > tony
changeset 139:995478fbbe17
Double-click in selection strip selects the region associated with the simultaneous note (if there is one)
author | Chris Cannam |
---|---|
date | Fri, 10 Jan 2014 14:18:37 +0000 |
parents | a19c3d0aa4e7 |
children | e7f2da26c9ac |
files | .hgsubstate src/Analyser.cpp src/Analyser.h src/MainWindow.cpp src/MainWindow.h |
diffstat | 5 files changed, 50 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsubstate Fri Jan 10 09:34:15 2014 +0000 +++ b/.hgsubstate Fri Jan 10 14:18:37 2014 +0000 @@ -2,4 +2,4 @@ 27d4e7152c954bf3c4387319db088fb3cd02436b sv-dependency-builds ccd3c927638be6c68aaa396fce24b6974d073447 svapp 0b15c9328003255e8afff5a1d9276860105a1bc6 svcore -833cd1b8014f45ec8250961d6707a056915e27d1 svgui +67b167bb60abdd16d3db843197fc99d38c1e8404 svgui
--- a/src/Analyser.cpp Fri Jan 10 09:34:15 2014 +0000 +++ b/src/Analyser.cpp Fri Jan 10 14:18:37 2014 +0000 @@ -167,6 +167,27 @@ } void +Analyser::getEnclosingSelectionScope(size_t f, size_t &f0, size_t &f1) +{ + FlexiNoteLayer *flexiNoteLayer = + qobject_cast<FlexiNoteLayer *>(m_layers[Notes]); + + int f0i = f, f1i = f; + size_t res = 1; + + if (!flexiNoteLayer) { + f0 = f1 = f; + return; + } + + flexiNoteLayer->snapToFeatureFrame(m_pane, f0i, res, Layer::SnapLeft); + flexiNoteLayer->snapToFeatureFrame(m_pane, f1i, res, Layer::SnapRight); + + f0 = (f0i < 0 ? 0 : f0i); + f1 = (f1i < 0 ? 0 : f1i); +} + +void Analyser::saveState(Component c) const { bool v = isVisible(c);
--- a/src/Analyser.h Fri Jan 10 09:34:15 2014 +0000 +++ b/src/Analyser.h Fri Jan 10 14:18:37 2014 +0000 @@ -67,6 +67,8 @@ } } + void getEnclosingSelectionScope(size_t f, size_t &f0, size_t &f1); + signals: void layersChanged();
--- a/src/MainWindow.cpp Fri Jan 10 09:34:15 2014 +0000 +++ b/src/MainWindow.cpp Fri Jan 10 14:18:37 2014 +0000 @@ -45,6 +45,7 @@ #include "base/Profiler.h" #include "base/UnitDatabase.h" #include "layer/ColourDatabase.h" +#include "base/Selection.h" #include "data/fileio/CSVFileWriter.h" #include "data/fileio/MIDIFileWriter.h" @@ -161,6 +162,8 @@ // variable m_paneStack->setLayoutStyle(PaneStack::NoPropertyStacks); m_paneStack->setShowPaneAccessories(false); + connect(m_paneStack, SIGNAL(doubleClickSelectInvoked(size_t)), + this, SLOT(doubleClickSelectInvoked(size_t))); scroll->setWidget(m_paneStack); m_overview = new Overview(frame); @@ -1353,18 +1356,29 @@ { Pane *pane = m_paneStack->getCurrentPane(); if (pane) { - Layer *layer = pane->getSelectedLayer(); - if (layer) { - bool ok = false; - QString newName = QInputDialog::getText - (this, tr("Rename Layer"), - tr("New name for this layer:"), - QLineEdit::Normal, layer->objectName(), &ok); - if (ok) { - layer->setObjectName(newName); + Layer *layer = pane->getSelectedLayer(); + if (layer) { + bool ok = false; + QString newName = QInputDialog::getText + (this, tr("Rename Layer"), + tr("New name for this layer:"), + QLineEdit::Normal, layer->objectName(), &ok); + if (ok) { + layer->setObjectName(newName); + } } } - } +} + +void +MainWindow::doubleClickSelectInvoked(size_t frame) +{ + size_t f0, f1; + m_analyser->getEnclosingSelectionScope(frame, f0, f1); + + cerr << "MainWindow::doubleClickSelectInvoked(" << frame << "): [" << f0 << "," << f1 << "]" << endl; + + m_viewManager->setSelection(Selection(f0, f1)); } void
--- a/src/MainWindow.h Fri Jan 10 09:34:15 2014 +0000 +++ b/src/MainWindow.h Fri Jan 10 14:18:37 2014 +0000 @@ -55,6 +55,8 @@ virtual void cycleNotes(); virtual void updateLayerStatuses(); + virtual void doubleClickSelectInvoked(size_t); + virtual void paneAdded(Pane *); virtual void paneHidden(Pane *); virtual void paneAboutToBeDeleted(Pane *);