Mercurial > hg > tony
comparison src/MainWindow.cpp @ 293:9400e63ec5d7
form note from selection now makes new note if none exist in selection
author | matthiasm |
---|---|
date | Wed, 11 Jun 2014 15:33:28 +0100 |
parents | 2895ca89b024 |
children | 59dff7e51db0 |
comparison
equal
deleted
inserted
replaced
292:2895ca89b024 | 293:9400e63ec5d7 |
---|---|
2318 | 2318 |
2319 | 2319 |
2320 void | 2320 void |
2321 MainWindow::formNoteFromSelection() | 2321 MainWindow::formNoteFromSelection() |
2322 { | 2322 { |
2323 Layer *layer0 = m_analyser->getLayer(Analyser::Notes); | |
2324 FlexiNoteModel *model = qobject_cast<FlexiNoteModel *>(layer0->getModel()); | |
2325 | |
2323 FlexiNoteLayer *layer = | 2326 FlexiNoteLayer *layer = |
2324 qobject_cast<FlexiNoteLayer *>(m_analyser->getLayer(Analyser::Notes)); | 2327 qobject_cast<FlexiNoteLayer *>(m_analyser->getLayer(Analyser::Notes)); |
2325 if (!layer) return; | 2328 if (!layer) return; |
2326 | 2329 |
2327 MultiSelection::SelectionList selections = m_viewManager->getSelections(); | 2330 MultiSelection::SelectionList selections = m_viewManager->getSelections(); |
2328 | 2331 |
2329 if (!selections.empty()) { | 2332 if (!selections.empty()) { |
2330 | 2333 |
2331 CommandHistory::getInstance()->startCompoundOperation | 2334 CommandHistory::getInstance()->startCompoundOperation |
2332 (tr("Form Note from Selection"), true); | 2335 (tr("Form Note from Selection"), true); |
2333 | |
2334 for (MultiSelection::SelectionList::iterator k = selections.begin(); | 2336 for (MultiSelection::SelectionList::iterator k = selections.begin(); |
2335 k != selections.end(); ++k) { | 2337 k != selections.end(); ++k) { |
2336 layer->splitNotesAt(m_analyser->getPane(), k->getStartFrame()); | 2338 if (!model->getNotes(k->getStartFrame(), k->getEndFrame()).empty()) { |
2337 layer->splitNotesAt(m_analyser->getPane(), k->getEndFrame()); | 2339 layer->splitNotesAt(m_analyser->getPane(), k->getStartFrame()); |
2338 layer->mergeNotes(m_analyser->getPane(), *k, false); | 2340 layer->splitNotesAt(m_analyser->getPane(), k->getEndFrame()); |
2341 layer->mergeNotes(m_analyser->getPane(), *k, false); | |
2342 } else { | |
2343 layer->addNoteOn(k->getStartFrame(), 100, 100); | |
2344 layer->addNoteOff(k->getEndFrame(), 100); | |
2345 layer->mergeNotes(m_analyser->getPane(), *k, false); // only so the note adapts in case of exisitng pitch track | |
2346 } | |
2339 } | 2347 } |
2340 | 2348 |
2341 CommandHistory::getInstance()->endCompoundOperation(); | 2349 CommandHistory::getInstance()->endCompoundOperation(); |
2342 } | 2350 } |
2343 } | 2351 } |
2344 | 2352 |
2345 void | 2353 void |
2346 MainWindow::playSpeedChanged(int position) | 2354 MainWindow::playSpeedChanged(int position) |