diff options
author | Robert Jonsson <spamatica@gmail.com> | 2012-09-30 21:53:03 +0000 |
---|---|---|
committer | Robert Jonsson <spamatica@gmail.com> | 2012-09-30 21:53:03 +0000 |
commit | e1a3d5b87883b5faadbd43326326d4c5aadc871d (patch) | |
tree | ecbb1a0aa3d5e05039ac5d08ad57bc1d056f072e /muse2/muse/arranger | |
parent | 6db72b766ea8bf781d0172a62f873104b2e7cab6 (diff) |
various fixes and changes
Diffstat (limited to 'muse2/muse/arranger')
-rw-r--r-- | muse2/muse/arranger/pcanvas.cpp | 41 | ||||
-rw-r--r-- | muse2/muse/arranger/tlist.cpp | 40 |
2 files changed, 46 insertions, 35 deletions
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp index 1afea012..3c3e6116 100644 --- a/muse2/muse/arranger/pcanvas.cpp +++ b/muse2/muse/arranger/pcanvas.cpp @@ -2829,40 +2829,13 @@ void PartCanvas::copy(MusECore::PartList* pl) } MusECore::Pos p(tick, true); MusEGlobal::song->setPos(0, p); - - //--------------------------------------------------- - // read tmp file into QTextDrag Object - //--------------------------------------------------- - - fflush(tmp); - struct stat f_stat; - if (fstat(fileno(tmp), &f_stat) == -1) { - fprintf(stderr, "PartCanvas::copy() fstat failed:<%s>\n", - strerror(errno)); - fclose(tmp); - return; - } - int n = f_stat.st_size; - char* fbuf = (char*)mmap(0, n+1, PROT_READ|PROT_WRITE, - MAP_PRIVATE, fileno(tmp), 0); - fbuf[n] = 0; - - QByteArray data(fbuf); - QMimeData* md = new QMimeData(); - - - if(midi && wave) - md->setData("text/x-muse-mixedpartlist", data); // By T356. Support mixed .mpt files. - else - if(midi) - md->setData("text/x-muse-midipartlist", data); - else - if(wave) - md->setData("text/x-muse-wavepartlist", data); - - QApplication::clipboard()->setMimeData(md, QClipboard::Clipboard); - - munmap(fbuf, n); + QString mimeString = "text/x-muse-mixedpartlist"; + if (!midi) + mimeString = "text/x-muse-wavepartlist"; + else if (!wave) + mimeString = "text/x-muse-midipartlist"; + QMimeData *mimeData = MusECore::file_to_mimedata(tmp, mimeString ); + QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); fclose(tmp); } diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp index 76dd18ff..d16a8d29 100644 --- a/muse2/muse/arranger/tlist.cpp +++ b/muse2/muse/arranger/tlist.cpp @@ -378,7 +378,11 @@ void TList::paint(const QRect& r) } break; case COL_NAME: - p.drawText(r, Qt::AlignVCenter|Qt::AlignLeft, track->name()); + if (track->type() == MusECore::Track::AUDIO_AUX) { + p.drawText(r, Qt::AlignVCenter|Qt::AlignLeft, ((MusECore::AudioAux *)track)->auxName()); + } else { + p.drawText(r, Qt::AlignVCenter|Qt::AlignLeft, track->name()); + } break; case COL_OCHANNEL: { @@ -2435,8 +2439,42 @@ void TList::mouseReleaseEvent(QMouseEvent* ev) if (t) { int dTrack = MusEGlobal::song->tracks()->index(t); MusEGlobal::audio->msgMoveTrack(sTrack, dTrack); + MusECore::TrackList *tracks = MusEGlobal::song->tracks(); + if ( tracks->at(dTrack)->type() == MusECore::Track::AUDIO_AUX) { + + MusECore::AuxList auxCopy; // = *MusEGlobal::song->auxs(); + //MusEGlobal::song->auxs()->clear(); + std::vector<int> oldAuxIndex; + + for (MusECore::iTrack t = tracks->begin(); t != tracks->end(); ++t) { + if ((*t)->type() == MusECore::Track::AUDIO_AUX) { + MusECore::AudioAux *ax = (MusECore::AudioAux*)*t; + auxCopy.push_back(ax); + oldAuxIndex.push_back(MusEGlobal::song->auxs()->index(ax)); // store old index + } + } + // loop through all tracks and set the levels for all tracks + for (MusECore::iTrack t = tracks->begin(); t != tracks->end(); ++t) { + MusECore::AudioTrack *trk = (MusECore::AudioTrack*)*t; + if (trk->hasAuxSend()) + { + std::vector<double> oldAuxValue; + for (unsigned i = 0 ; i < auxCopy.size(); i++) + oldAuxValue.push_back(trk->auxSend(i)); + for (unsigned i = 0 ; i < auxCopy.size(); i++) + trk->setAuxSend(i, oldAuxValue[oldAuxIndex[i]] ); + } + MusEGlobal::song->auxs()->clear(); + for (MusECore::iAudioAux t = auxCopy.begin(); t != auxCopy.end(); ++t) { + MusEGlobal::song->auxs()->push_back(*t); + } + } + + MusEGlobal::song->update(SC_EVERYTHING); + } } + } if (mode != NORMAL) { mode = NORMAL; setCursor(QCursor(Qt::ArrowCursor)); |