summaryrefslogtreecommitdiff
path: root/muse2/muse/structure.cpp
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-08-30 17:00:30 +0000
committerFlorian Jung <flo@windfisch.org>2011-08-30 17:00:30 +0000
commita7fba3acdfaa382effcc02633708d7cf5a7ec2a4 (patch)
tree5950956341c8f2cb8f8f7cae59ddefed1d168f01 /muse2/muse/structure.cpp
parent8c37b557d6f865b4320f7b1168030e7d54adacd0 (diff)
improved movePartsToTheRight and merged with globalInsert
Diffstat (limited to 'muse2/muse/structure.cpp')
-rw-r--r--muse2/muse/structure.cpp57
1 files changed, 28 insertions, 29 deletions
diff --git a/muse2/muse/structure.cpp b/muse2/muse/structure.cpp
index 87f37c1c..9cdf68aa 100644
--- a/muse2/muse/structure.cpp
+++ b/muse2/muse/structure.cpp
@@ -16,7 +16,8 @@
#include "keyevent.h"
#include "audio.h"
#include "marker/marker.h"
-#include "arrangerview.h"
+#include "structure.h"
+#include "globals.h"
//---------------------------------------------------------
// adjustGlobalLists
@@ -25,7 +26,7 @@
// 'diff' number of ticks.
//---------------------------------------------------------
-void ArrangerView::adjustGlobalLists(Undo& operations, int startPos, int diff)
+void adjustGlobalLists(Undo& operations, int startPos, int diff)
{
const TempoList* t = &tempomap;
const AL::SigList* s = &AL::sigmap;
@@ -116,7 +117,7 @@ void ArrangerView::adjustGlobalLists(Undo& operations, int startPos, int diff)
// - cut master track
//---------------------------------------------------------
-void ArrangerView::globalCut()
+void globalCut()
{
int lpos = song->lpos();
int rpos = song->rpos();
@@ -218,12 +219,17 @@ void ArrangerView::globalCut()
// - insert in master track
//---------------------------------------------------------
-void ArrangerView::globalInsert()
+void globalInsert()
{
- unsigned lpos = song->lpos();
- unsigned rpos = song->rpos();
- if (lpos >= rpos)
- return;
+ Undo operations=movePartsTotheRight(song->lpos(), song->rpos()-song->lpos());
+ song->applyOperationGroup(operations);
+ }
+
+
+Undo movePartsTotheRight(unsigned int startTicks, int moveTicks)
+ {
+ if (moveTicks<=0)
+ return Undo();
Undo operations;
TrackList* tracks = song->tracks();
@@ -237,36 +243,35 @@ void ArrangerView::globalInsert()
Part* part = p->second;
unsigned t = part->tick();
int l = part->lenTick();
- if (t + l <= lpos)
+ if (t + l <= startTicks)
continue;
- if (lpos >= t && lpos < (t+l)) {
+ if (startTicks >= t && startTicks < (t+l)) {
MidiPart* nPart = new MidiPart(*(MidiPart*)part);
- nPart->setLenTick(l + (rpos-lpos));
+ nPart->setLenTick(l + moveTicks);
EventList* el = nPart->events();
for (riEvent i = el->rbegin(); i!=el->rend(); ++i)
{
- if (i->first < lpos-t)
+ if (i->first < startTicks-t)
break;
Event event = i->second;
Event nEvent = i->second.clone();
- nEvent.setTick(nEvent.tick() + (rpos-lpos));
+ nEvent.setTick(nEvent.tick() + moveTicks);
operations.push_back(UndoOp(UndoOp::ModifyEvent, nEvent, event, nPart, false, false));
}
operations.push_back(UndoOp(UndoOp::ModifyPart, part, nPart, true, true));
}
- else if (t > lpos) {
+ else if (t > startTicks) {
MidiPart* nPart = new MidiPart(*(MidiPart*)part);
- nPart->setTick(t + (rpos -lpos));
+ nPart->setTick(t + moveTicks);
operations.push_back(UndoOp(UndoOp::ModifyPart, part, nPart, true, false));
}
}
}
- int diff = rpos - lpos;
- adjustGlobalLists(operations, lpos, diff);
+ adjustGlobalLists(operations, startTicks, moveTicks);
- song->applyOperationGroup(operations);
+ return operations;
}
@@ -275,7 +280,7 @@ void ArrangerView::globalInsert()
// - split all parts at the song position pointer
//---------------------------------------------------------
-void ArrangerView::globalSplit()
+void globalSplit()
{
int pos = song->cpos();
Undo operations;
@@ -317,12 +322,9 @@ void ArrangerView::globalSplit()
// copied events
//---------------------------------------------------------
-void ArrangerView::copyRange()
+void copyRange()
{
- QMessageBox::critical(this,
- tr("ArrangerView: Copy Range"),
- tr("not implemented")
- );
+ QMessageBox::critical(muse, "Copy Range", "not implemented");
}
//---------------------------------------------------------
@@ -332,10 +334,7 @@ void ArrangerView::copyRange()
// - process only marked parts
//---------------------------------------------------------
-void ArrangerView::cutEvents()
+void cutEvents()
{
- QMessageBox::critical(this,
- tr("ArrangerView: Cut Events"),
- tr("not implemented")
- );
+ QMessageBox::critical(muse, "Cut Events", "not implemented");
}