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)