diff options
Diffstat (limited to 'muse2/muse/arranger/tlist.cpp')
-rw-r--r-- | muse2/muse/arranger/tlist.cpp | 212 |
1 files changed, 10 insertions, 202 deletions
diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp index 5cea444d..7ebcad4d 100644 --- a/muse2/muse/arranger/tlist.cpp +++ b/muse2/muse/arranger/tlist.cpp @@ -75,6 +75,8 @@ #include "dssihost.h" #endif +using MusECore::UndoOp; + namespace MusEGui { static const int MIN_TRACKHEIGHT = 20; @@ -599,13 +601,10 @@ void TList::returnPressed() } } - MusEGlobal::song->startUndo(); - MusEGlobal::song->addUndo(MusECore::UndoOp(MusECore::UndoOp::ModifyTrackName, + MusEGlobal::song->applyOperation(MusECore::UndoOp(MusECore::UndoOp::ModifyTrackName, editTrack, editTrack->name().toLatin1().constData(), editor->text().toLatin1().constData())); - editTrack->setName(editor->text()); - MusEGlobal::song->endUndo(-1); //uagh, why "-1", why no proper flags? } } @@ -640,16 +639,10 @@ void TList::chanValueFinished() channel = 0; if(channel != mt->outChannel()) { - MusEGlobal::song->startUndo(); - MusEGlobal::song->addUndo(MusECore::UndoOp(MusECore::UndoOp::ModifyTrackChannel, + MusEGlobal::song->applyOperation(MusECore::UndoOp(MusECore::UndoOp::ModifyTrackChannel, editTrack, mt->outChannel(), channel)); - MusEGlobal::audio->msgIdle(true); - mt->setOutChanAndUpdate(channel); - MusEGlobal::audio->msgIdle(false); - MusEGlobal::audio->msgUpdateSoloStates(); - MusEGlobal::song->endUndo(SC_MIDI_TRACK_PROP); } } } @@ -667,13 +660,10 @@ void TList::chanValueFinished() n = 1; if(n != at->channels()) { - MusEGlobal::song->startUndo(); - MusEGlobal::song->addUndo(MusECore::UndoOp(MusECore::UndoOp::ModifyTrackChannel, + MusEGlobal::song->applyOperation(MusECore::UndoOp(MusECore::UndoOp::ModifyTrackChannel, editTrack, at->channels(), n)); - MusEGlobal::audio->msgSetChannels(at, n); - MusEGlobal::song->endUndo(SC_CHANNELS); } } } @@ -723,7 +713,7 @@ void TList::ctrlValueFinished() { if (p->second->tick()==0) { - for (MusECore::iEvent ev=p->second->events()->begin(); ev!=p->second->events()->end(); ev++) + for (MusECore::ciEvent ev=p->second->events().begin(); ev!=p->second->events().end(); ev++) { if (ev->second.tick()!=0) break; else if (ev->second.type()==MusECore::Controller && ev->second.dataA()==ctrl_num) @@ -1962,8 +1952,7 @@ void TList::mousePressEvent(QMouseEvent* ev) { switch (n) { case 1001: // delete track - MusEGlobal::song->removeTrack0(t); - MusEGlobal::audio->msgUpdateSoloStates(); + MusEGlobal::song->applyOperation(UndoOp(UndoOp::DeleteTrack, MusEGlobal::song->tracks()->index(t), t)); break; case 1002: // show track comment @@ -2150,7 +2139,7 @@ void TList::mousePressEvent(QMouseEvent* ev) { if (p->second->tick()==0) { - for (MusECore::iEvent ev=p->second->events()->begin(); ev!=p->second->events()->end(); ev++) + for (MusECore::ciEvent ev=p->second->events().begin(); ev!=p->second->events().end(); ev++) { if (ev->second.tick()!=0) break; else if (ev->second.type()==MusECore::Controller && ev->second.dataA()==ctrl_num) @@ -2510,185 +2499,6 @@ void TList::mouseReleaseEvent(QMouseEvent* ev) void TList::wheelEvent(QWheelEvent* ev) { emit redirectWheelEvent(ev); - -// REMOVE Tim. Hate to just kill all this, so remove later if all tests OK. -// int x = ev->x(); -// int y = ev->y(); -// MusECore::Track* t = y2Track(y + ypos); -// if (t == 0) { -// emit redirectWheelEvent(ev); -// return; -// } -// -// TrackColumn col = TrackColumn(header->logicalIndexAt(x)); -// int delta = ev->delta() / WHEEL_DELTA; -// ev->accept(); -// -// switch (col) { -// case COL_RECORD: -// case COL_NONE: -// case COL_CLASS: -// case COL_NAME: -// case COL_AUTOMATION: -// break; -// case COL_MUTE: -// // p3.3.29 -// if (((QInputEvent*)ev)->modifiers() & Qt::ShiftModifier) -// t->setOff(!t->off()); -// else -// { -// if (t->off()) -// t->setOff(false); -// else -// t->setMute(!t->mute()); -// } -// MusEGlobal::song->update(SC_MUTE); -// break; -// -// case COL_SOLO: -// MusEGlobal::audio->msgSetSolo(t, !t->solo()); -// MusEGlobal::song->update(SC_SOLO); -// break; -// -// case COL_TIMELOCK: -// t->setLocked(!t->locked()); -// break; -// -// case COL_OPORT: -// if (t->isMidiTrack()) { -// MusECore::MidiTrack* mt = (MusECore::MidiTrack*)t; -// int port = mt->outPort() + delta; -// -// if (port >= MIDI_PORTS) -// port = MIDI_PORTS-1; -// else if (port < 0) -// port = 0; -// if (port != ((MusECore::MidiTrack*)t)->outPort()) { -// MusEGlobal::audio->msgIdle(true); -// mt->setOutPortAndUpdate(port); -// MusEGlobal::audio->msgIdle(false); -// -// MusEGlobal::audio->msgUpdateSoloStates(); // p4.0.14 -// MusEGlobal::song->update(SC_MIDI_TRACK_PROP); // p4.0.17 -// } -// } -// break; -// -// case COL_OCHANNEL: -// if (t->isMidiTrack()) { -// MusECore::MidiTrack* mt = (MusECore::MidiTrack*)t; -// if (mt && mt->type() == MusECore::Track::DRUM) -// break; -// -// int channel = mt->outChannel() + delta; -// -// if (channel >= MIDI_CHANNELS) -// channel = MIDI_CHANNELS-1; -// else if (channel < 0) -// channel = 0; -// if (channel != ((MusECore::MidiTrack*)t)->outChannel()) { -// MusEGlobal::audio->msgIdle(true); -// mt->setOutChanAndUpdate(channel); -// MusEGlobal::audio->msgIdle(false); -// -// // may result in adding/removing mixer strip: -// //MusEGlobal::song->update(-1); -// MusEGlobal::audio->msgUpdateSoloStates(); // p4.0.14 -// MusEGlobal::song->update(SC_MIDI_TRACK_PROP); -// } -// } -// else { -// int n = t->channels() + delta; -// if (n > MAX_CHANNELS) -// n = MAX_CHANNELS; -// else if (n < 1) -// n = 1; -// if (n != t->channels()) { -// MusEGlobal::audio->msgSetChannels((MusECore::AudioTrack*)t, n); -// MusEGlobal::song->update(SC_CHANNELS); -// } -// } -// break; -// default: -// if (col>=COL_CUSTOM_MIDICTRL_OFFSET) -// { -// mode = START_DRAG; -// -// if (t->isMidiTrack()) -// { -// MusECore::MidiTrack* mt = dynamic_cast<MusECore::MidiTrack*>(t); -// if (mt == 0) -// break; -// -// int ctrl_num = Arranger::custom_columns[col-COL_CUSTOM_MIDICTRL_OFFSET].ctrl; -// -// MusECore::MidiPort* mp = &MusEGlobal::midiPorts[mt->outPort()]; -// MusECore::MidiController* mctl = mp->midiController(ctrl_num); -// -// int minval=mctl->minVal()+mctl->bias(); -// int maxval=mctl->maxVal()+mctl->bias(); -// -// int val = mt->getControllerChangeAtTick(0,ctrl_num); -// int oldval=val; -// -// if (ctrl_num!=MusECore::CTRL_PROGRAM) -// { -// val += delta; -// if(val > maxval) -// val = maxval; -// if(val < minval-1) // "-1" because of "off" -// val = minval-1; -// } -// else -// { -// MusECore::MidiInstrument* instr = mp->instrument(); -// if (delta>0) val=instr->getNextPatch(mt->outChannel(), val, false); -// else if (delta<0) val=instr->getPrevPatch(mt->outChannel(), val, false); -// } -// -// if (val != oldval) -// { -// if (val!=minval-1) -// { -// int at_tick; -// if (Arranger::custom_columns[col-COL_CUSTOM_MIDICTRL_OFFSET].affected_pos == -// Arranger::custom_col_t::AFFECT_BEGIN) -// at_tick=0; -// else -// at_tick=MusEGlobal::song->cpos(); -// -// record_controller_change_and_maybe_send(at_tick, ctrl_num, val, mt); -// } -// else -// { -// MusECore::Undo operations; -// for (MusECore::iPart p = mt->parts()->begin(); p!=mt->parts()->end(); p++) -// { -// if (p->second->tick()==0) -// { -// for (MusECore::iEvent ev=p->second->events()->begin(); ev!=p->second->events()->end(); ev++) -// { -// if (ev->second.tick()!=0) break; -// else if (ev->second.type()==MusECore::Controller && ev->second.dataA()==ctrl_num) -// { -// using MusECore::UndoOp; -// operations.push_back(UndoOp(UndoOp::DeleteEvent, ev->second, p->second, false, false)); -// break; -// } -// } -// } -// } -// MusEGlobal::song->applyOperationGroup(operations); -// } -// } -// } -// } -// else -// mode = START_DRAG; -// -// break; -// } - } @@ -2729,8 +2539,7 @@ void TList::classesPopupMenu(MusECore::Track* t, int x, int y) MusECore::PartList* pl = t->parts(); MusECore::MidiTrack* m = (MusECore::MidiTrack*) t; for (MusECore::iPart ip = pl->begin(); ip != pl->end(); ++ip) { - MusECore::EventList* el = ip->second->events(); - for (MusECore::iEvent ie = el->begin(); ie != el->end(); ++ie) { + for (MusECore::ciEvent ie = ip->second->events().begin(); ie != ip->second->events().end(); ++ie) { MusECore::Event ev = ie->second; if(ev.type() == MusECore::Note) { @@ -2769,8 +2578,7 @@ void TList::classesPopupMenu(MusECore::Track* t, int x, int y) MusECore::PartList* pl = t->parts(); MusECore::MidiTrack* m = (MusECore::MidiTrack*) t; for (MusECore::iPart ip = pl->begin(); ip != pl->end(); ++ip) { - MusECore::EventList* el = ip->second->events(); - for (MusECore::iEvent ie = el->begin(); ie != el->end(); ++ie) { + for (MusECore::ciEvent ie = ip->second->events().begin(); ie != ip->second->events().end(); ++ie) { MusECore::Event ev = ie->second; if (ev.type() == MusECore::Note) { |