From: Levi B. <don...@sb...> - 2003-03-04 20:37:33
|
On Tuesday 04 March 2003 12:59 pm, Levi Burton wrote: > It seems more natural to be able to paste into whatever track is currently > selected, or am I doing something wrong here? > > Thanks! This code does what I suggested, although it ignores the start time and just pastes it into the current track at time 0. void PasteSegmentsCommand::execute() { if (m_clipboard->isEmpty()) return; if (m_addedSegments.size() > 0) { // been here before for (unsigned int i = 0; i < m_addedSegments.size(); ++i) { m_addedSegments[i]->setTrack(m_composition->getSelectedTrack()); m_composition->addSegment(m_addedSegments[i]); } return; } // We want to paste such that the earliest Segment starts at // m_pasteTime and the others start at the same times relative // to that as they did before timeT earliestStartTime = 0; for (Rosegarden::Clipboard::iterator i = m_clipboard->begin(); i != m_clipboard->end(); ++i) { if (i == m_clipboard->begin() || (*i)->getStartTime() < earliestStartTime) { earliestStartTime = (*i)->getStartTime(); } } timeT offset = m_pasteTime - earliestStartTime; for (Rosegarden::Clipboard::iterator i = m_clipboard->begin(); i != m_clipboard->end(); ++i) { Segment *segment = new Segment(**i); segment->setStartTime(segment->getStartTime() + offset); segment->setTrack(m_composition->getSelectedTrack()); // HERE m_composition->addSegment(segment); m_addedSegments.push_back(segment); } } -- Levi Burton http://www.puresimplicity.net/~ldb/ |