266
267
//---------------------------------------------------------
268
void PartCanvas::updateSong(DragType t, int flags)
269
void PartCanvas::updateSong(DragType t, MusECore::SongChangedFlags_t flags)
270
271
MusEGlobal::song->update(flags | ((t == MOVE_COPY || t == MOVE_CLONE)
271
272
? SC_PART_INSERTED : SC_PART_MODIFIED));
674
676
partPopup->addSeparator();
675
677
switch(trackType) {
676
678
case MusECore::Track::MIDI: {
677
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin->startPianoEditAction);
678
partPopup->addMenu(MusEGlobal::muse->arranger()->parentWin->scoreSubmenu);
679
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin->startScoreEditAction);
680
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin->startListEditAction);
679
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin()->startPianoEditAction);
680
partPopup->addMenu(MusEGlobal::muse->arranger()->parentWin()->scoreSubmenu);
681
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin()->startScoreEditAction);
682
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin()->startListEditAction);
681
683
QAction *act_mexport = partPopup->addAction(tr("save part to disk"));
682
684
act_mexport->setData(16);
687
case MusECore::Track::NEW_DRUM:
685
688
case MusECore::Track::DRUM: {
686
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin->startDrumEditAction);
687
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin->startListEditAction);
689
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin()->startDrumEditAction);
690
partPopup->addAction(MusEGlobal::muse->arranger()->parentWin()->startListEditAction);
688
691
QAction *act_dexport = partPopup->addAction(tr("save part to disk"));
689
692
act_dexport->setData(16);
2330
2334
for (MusECore::iEvent i = events->lower_bound(from); i != ito; ++i) {
2331
2335
MusECore::EventType type = i->second.type();
2336
int a = i->second.dataA() | 0xff;
2333
2338
((MusEGlobal::config.canvasShowPartEvent & 1) && (type == MusECore::Note))
2334
|| ((MusEGlobal::config.canvasShowPartEvent & 2) && (type == MusECore::PAfter))
2335
|| ((MusEGlobal::config.canvasShowPartEvent & 4) && (type == MusECore::Controller))
2336
|| ((MusEGlobal::config.canvasShowPartEvent &16) && (type == MusECore::CAfter))
2337
|| ((MusEGlobal::config.canvasShowPartEvent &64) && (type == MusECore::Sysex || type == MusECore::Meta))
2339
|| ((MusEGlobal::config.canvasShowPartEvent & (2 | 4)) == (2 | 4) &&
2340
type == MusECore::Controller && a == MusECore::CTRL_POLYAFTER)
2341
|| ((MusEGlobal::config.canvasShowPartEvent & 4) && (type == MusECore::Controller) &&
2342
(a != MusECore::CTRL_POLYAFTER || (MusEGlobal::config.canvasShowPartEvent & 2)) &&
2343
(a != MusECore::CTRL_AFTERTOUCH || (MusEGlobal::config.canvasShowPartEvent & 16)))
2344
|| ((MusEGlobal::config.canvasShowPartEvent & (16 | 4)) == (16 | 4) &&
2345
type == MusECore::Controller && a == MusECore::CTRL_AFTERTOUCH)
2346
|| ((MusEGlobal::config.canvasShowPartEvent & 64) && (type == MusECore::Sysex || type == MusECore::Meta))
2339
2348
int t = i->first + pTick;
2340
2349
int th = mt->height();
2349
2358
using std::pair;
2351
2360
MusECore::iEvent ito(events->lower_bound(to));
2352
bool isdrum = (mt->type() == MusECore::Track::DRUM);
2361
bool isdrum = (mt->type() == MusECore::Track::DRUM || mt->type() == MusECore::Track::NEW_DRUM);
2354
2363
// draw controllers ------------------------------------------
2355
2364
p.setPen(QColor(192,192,color_brightness/2));
2826
2835
MusECore::Pos p(tick, true);
2827
2836
MusEGlobal::song->setPos(0, p);
2829
//---------------------------------------------------
2830
// read tmp file into QTextDrag Object
2831
//---------------------------------------------------
2835
if (fstat(fileno(tmp), &f_stat) == -1) {
2836
fprintf(stderr, "PartCanvas::copy() fstat failed:<%s>\n",
2841
int n = f_stat.st_size;
2842
char* fbuf = (char*)mmap(0, n+1, PROT_READ|PROT_WRITE,
2843
MAP_PRIVATE, fileno(tmp), 0);
2846
QByteArray data(fbuf);
2847
QMimeData* md = new QMimeData();
2851
md->setData("text/x-muse-mixedpartlist", data); // By T356. Support mixed .mpt files.
2854
md->setData("text/x-muse-midipartlist", data);
2857
md->setData("text/x-muse-wavepartlist", data);
2859
QApplication::clipboard()->setMimeData(md, QClipboard::Clipboard);
2837
QString mimeString = "text/x-muse-mixedpartlist";
2839
mimeString = "text/x-muse-wavepartlist";
2841
mimeString = "text/x-muse-midipartlist";
2842
QMimeData *mimeData = MusECore::file_to_mimedata(tmp, mimeString );
2843
QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard);
3205
3187
if (text.endsWith(".wav",Qt::CaseInsensitive) ||
3206
3188
text.endsWith(".ogg",Qt::CaseInsensitive) ||
3189
text.endsWith(".flac",Qt::CaseInsensitive) ||
3207
3190
text.endsWith(".mpt", Qt::CaseInsensitive) )
3221
3204
if (track->type() == MusECore::Track::WAVE &&
3222
3205
(text.endsWith(".wav", Qt::CaseInsensitive) ||
3223
(text.endsWith(".ogg", Qt::CaseInsensitive))))
3206
text.endsWith(".ogg", Qt::CaseInsensitive) ||
3207
(text.endsWith(".flac", Qt::CaseInsensitive)) ))
3225
3209
unsigned tick = x;
3226
3210
MusEGlobal::muse->importWaveToTrack(text, tick, track);