From 5043dec335ff43074e0cb7ece5d0635d2f430d4e Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Sun, 1 Sep 2013 15:47:38 +0200 Subject: replaced some SEQM_... by OpGroups. Cleanup. --- muse2/muse/functions.cpp | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) (limited to 'muse2/muse/functions.cpp') diff --git a/muse2/muse/functions.cpp b/muse2/muse/functions.cpp index 380d9718..f13736b9 100644 --- a/muse2/muse/functions.cpp +++ b/muse2/muse/functions.cpp @@ -1422,6 +1422,40 @@ void clean_parts() MusEGlobal::song->applyOperationGroup(operations); } + +bool merge_with_next_part(const Part* oPart) +{ + const Track* track = oPart->track(); + + if(track->type() != Track::WAVE && !track->isMidiTrack()) + return false; + + const PartList* pl = track->cparts(); + const Part* nextPart = 0; + + for (ciPart ip = pl->begin(); ip != pl->end(); ++ip) + { + if (ip->second == oPart) + { + ++ip; + if (ip == pl->end()) + return false; + nextPart = ip->second; + break; + } + } + + if (nextPart) + { + set parts; + parts.insert(oPart); + parts.insert(nextPart); + return merge_parts(parts); + } + else + return false; +} + bool merge_selected_parts() { set temp = get_all_selected_parts(); @@ -1494,4 +1528,49 @@ bool merge_parts(const set& parts) return MusEGlobal::song->applyOperationGroup(operations); } +bool split_part(const Part* part, int tick) +{ + int l1 = tick - part->tick(); + int l2 = part->lenTick() - l1; + if (l1 <= 0 || l2 <= 0) + return false; + Part* p1; + Part* p2; + part->splitPart(tick, p1, p2); + + MusEGlobal::song->informAboutNewParts(part, p1); + MusEGlobal::song->informAboutNewParts(part, p2); + + Undo operations; + operations.push_back(UndoOp(UndoOp::DeletePart, part)); + operations.push_back(UndoOp(UndoOp::AddPart, p1)); + operations.push_back(UndoOp(UndoOp::AddPart, p2)); + return MusEGlobal::song->applyOperationGroup(operations); +} + +bool delete_selected_parts() +{ + Undo operations; + bool partSelected = false; + + TrackList* tl = MusEGlobal::song->tracks(); + + for (iTrack it = tl->begin(); it != tl->end(); ++it) + { + PartList* pl = (*it)->parts(); + for (iPart ip = pl->begin(); ip != pl->end(); ++ip) + { + if (ip->second->selected()) + { + operations.push_back(UndoOp(UndoOp::DeletePart,ip->second)); + partSelected = true; + } + } + } + + MusEGlobal::song->applyOperationGroup(operations); + + return partSelected; +} + } // namespace MusECore -- cgit v1.2.3