diff options
-rw-r--r-- | muse2/muse/arranger/pcanvas.cpp | 559 | ||||
-rw-r--r-- | muse2/muse/arranger/pcanvas.h | 4 | ||||
-rw-r--r-- | muse2/muse/midiedit/scoreedit.cpp | 5 |
3 files changed, 7 insertions, 561 deletions
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp index 7b63d9e9..54f431cc 100644 --- a/muse2/muse/arranger/pcanvas.cpp +++ b/muse2/muse/arranger/pcanvas.cpp @@ -21,7 +21,6 @@ #include <QPainter> #include <QUrl> #include <QPoint> -//#include <QLinearGradient> #include "fastlog.h" #include "widgets/tools.h" @@ -44,55 +43,6 @@ #include "midictrl.h" #include "utils.h" -// Moved into global config by Tim. -/* -const char* partColorNames[] = { - "Default", - "Refrain", - "Bridge", - "Intro", - "Coda", - "Chorus", - "Solo", - "Brass", - "Percussion", - "Drums", - "Guitar", - "Bass", - "Flute", - "Strings", - "Keyboard", - "Piano", - "Saxophon", - }; -*/ - -/* -//--------------------------------------------------------- -// ColorListItem -//--------------------------------------------------------- - -class ColorListItem { //: public QCustomMenuItem { ddskrjo - QColor color; - int h; - int fontheight; - QString label; - virtual QSize sizeHint() { return QSize(80, h); } - virtual void paint(QPainter* p, const QColorGroup&, bool act, bool enabled, int x, int y, int w, int h) - { - p->fillRect(x+5, y+2, h-4, h-4, QBrush(color)); - p->drawText(x+5 + h - 4 + 3, y+(fontheight * 3) / 4, label); - } - - public: - ColorListItem(const QColor& c, int _h, int _fh, const char* txt) - : color(c), h(_h), fontheight(_fh), label(txt) { - } - QString text() const { return QString("PartColor"); } - }; -*/ -// ORCAN : colorRect does the same job as the above class. -// Shall we get rid of the class? //--------------------------------------------------------- // colorRect @@ -119,7 +69,6 @@ NPart::NPart(Part* e) : CItem(Event(), e) { int th = track()->height(); int y = track()->y(); - //printf("NPart::NPart track name:%s, y:%d h:%d\n", track()->name().toLatin1().constData(), y, th); ///setPos(QPoint(e->tick(), y + 1)); setPos(QPoint(e->tick(), y)); @@ -378,8 +327,6 @@ bool PartCanvas::moveItem(CItem* item, const QPoint& newpos, DragType t) } Part* dpart; - //bool clone = (t == MOVE_CLONE) || (spart->events()->arefCount() > 1); - //bool clone = (t == MOVE_CLONE); bool clone = (t == MOVE_CLONE || (t == MOVE_COPY && spart->events()->arefCount() > 1)); if(t == MOVE_MOVE) @@ -397,11 +344,8 @@ bool PartCanvas::moveItem(CItem* item, const QPoint& newpos, DragType t) dpart->setTick(dtick); - //printf("PartCanvas::moveItem before add/changePart clone:%d spart:%p events:%p refs:%d Arefs:%d sn:%d dpart:%p events:%p refs:%d Arefs:%d sn:%d\n", clone, spart, spart->events(), spart->events()->refCount(), spart->events()->arefCount(), spart->sn(), dpart, dpart->events(), dpart->events()->refCount(), dpart->events()->arefCount(), dpart->sn()); - if(t == MOVE_MOVE) item->setPart(dpart); - //if (!clone) { if (t == MOVE_COPY && !clone) { // // Copy Events @@ -436,11 +380,10 @@ bool PartCanvas::moveItem(CItem* item, const QPoint& newpos, DragType t) spart->setSelected(false); } - //printf("PartCanvas::moveItem after add/changePart spart:%p events:%p refs:%d Arefs:%d dpart:%p events:%p refs:%d Arefs:%d\n", spart, spart->events(), spart->events()->refCount(), spart->events()->arefCount(), dpart, dpart->events(), dpart->events()->refCount(), dpart->events()->arefCount()); if (song->len() < (dpart->lenTick() + dpart->tick())) song->setLen(dpart->lenTick() + dpart->tick()); - //endUndo(t); + return true; //FINDMICH //TODO FINDMICH returns nothing... should be fixed (flo93) } @@ -654,11 +597,7 @@ QMenu* PartCanvas::genItemPopup(CItem* item) QMenu* colorPopup = partPopup->addMenu(tr("color")); // part color selection - //const QFontMetrics& fm = colorPopup->fontMetrics(); - //int h = fm.lineSpacing(); - for (int i = 0; i < NUM_PARTCOLORS; ++i) { - //ColorListItem* item = new ColorListItem(config.partColors[i], h, fontMetrics().height(), partColorNames[i]); //ddskrjo QAction *act_color = colorPopup->addAction(colorRect(config.partColors[i], 80, 80), config.partColorNames[i]); act_color->setData(20+i); } @@ -758,28 +697,13 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt) break; case 14: // wave edit - { - // Changed to allow multiple selected parts to be shown. By T356 - // Slightly inefficient to add (above), then clear here. - // Should really only add npart->part() to pl only if NOT here. - // Removed. Added wave editor menu item instead. - //pl->clear(); - //PartList* ptl = npart->track()->parts(); - //for(ciPart pi = ptl->begin(); pi != ptl->end(); pi++) - //{ - // if(pi->second->selected()) - // pl->add(pi->second); - //} emit startEditor(pl, 4); - } return; case 15: // declone { Part* spart = npart->part(); Track* track = npart->track(); Part* dpart = track->newPart(spart, false); - //printf("PartCanvas::itemPopup: #1 spart %s %p next:%s %p prev:%s %p\n", spart->name().toLatin1().constData(), spart, spart->nextClone()->name().toLatin1().constData(), spart->nextClone(), spart->prevClone()->name().toLatin1().constData(), spart->prevClone()); - //printf("PartCanvas::itemPopup: #1 dpart %s %p next:%s %p prev:%s %p\n", dpart->name().toLatin1().constData(), dpart, dpart->nextClone()->name().toLatin1().constData(), dpart->nextClone(), dpart->prevClone()->name().toLatin1().constData(), dpart->prevClone()); EventList* se = spart->events(); EventList* de = dpart->events(); @@ -799,13 +723,11 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt) { const Part* part = item->part(); bool popenFlag = false; - //QString fn = getSaveFileName(QString(""), part_file_pattern, this, tr("MusE: save part")); QString fn = getSaveFileName(QString(""), part_file_save_pattern, this, tr("MusE: save part")); if (!fn.isEmpty()) { FILE* fp = fileOpen(this, fn, ".mpt", "w", popenFlag, false, false); if (fp) { Xml tmpXml = Xml(fp); - //part->write(0, tmpXml); // Write the part. Indicate that it's a copy operation - to add special markers, // and force full wave paths. part->write(0, tmpXml, true, true); @@ -826,7 +748,6 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt) SndFileR f = event.sndFile(); if (f.isNull()) continue; - //str.append("\n" + f.path()); str.append(QString("\n@") + QString().setNum(event.tick()) + QString(" len:") + QString().setNum(event.lenTick()) + QString(" ") + f.path()); } @@ -845,14 +766,11 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt) { for(int i = 0; i < j; ++i) { - //printf("PartCanvas::itemPopup i:%d %s %p events %p refs:%d arefs:%d\n", i, p->name().toLatin1().constData(), p, part->cevents(), part->cevents()->refCount(), j); - p->setSelected(true); p = p->nextClone(); if(p == part) break; } - //song->update(); song->update(SC_SELECTION); } @@ -1380,13 +1298,6 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) QRect r = item->bbox(); - //printf("PartCanvas::drawItem %s evRefs:%d pTick:%d pLen:%d\nbb.x:%d bb.y:%d bb.w:%d bb.h:%d\n" - // "rect.x:%d rect.y:%d rect.w:%d rect.h:%d\nr.x:%d r.y:%d r.w:%d r.h:%d\n", - // part->name().toLatin1().constData(), part->events()->arefCount(), pTick, part->lenTick(), - // bb.x(), bb.y(), bb.width(), bb.height(), - // rect.x(), rect.y(), rect.width(), rect.height(), - // r.x(), r.y(), r.width(), r.height()); - int i = part->colorIndex(); p.setPen(Qt::black); if (part->mute()) { @@ -1400,7 +1311,6 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) // NOTE: For one-pixel border use first line For two-pixel border use second. p.drawRect(QRect(r.x(), r.y()-1, r.width(), r.height())); - //p.drawRect(r); return; } @@ -1415,11 +1325,7 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) // NOTE: For one-pixel border use first line. For two-pixel border use second. p.drawRect(QRect(r.x(), r.y()-1, r.width(), r.height())); - //p.drawRect(r); - } - //else if (part->mute()) - // return; else if (part->selected()) { bool clone = part->events()->arefCount() > 1; @@ -1528,8 +1434,6 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) void PartCanvas::drawMoving(QPainter& p, const CItem* item, const QRect&) { - //if(!item->isMoving()) - // return; p.setPen( Qt::black); //p.setBrush( Qt::NoBrush); @@ -1556,7 +1460,6 @@ void PartCanvas::drawMoving(QPainter& p, const CItem* item, const QRect&) void PartCanvas::drawMidiPart(QPainter& p, const QRect&, EventList* events, MidiTrack *mt, MidiPart *pt, const QRect& r, int pTick, int from, int to) { - //printf("x=%d y=%d h=%d w=%d\n",r.x(),r.y(),r.height(),r.width()); int color_brightness; if(pt) @@ -1781,9 +1684,6 @@ void PartCanvas::drawMidiPart(QPainter& p, const QRect&, EventList* events, Midi void PartCanvas::drawWavePart(QPainter& p, const QRect& bb, WavePart* wp, const QRect& _pr) { - //printf("PartCanvas::drawWavePart bb.x:%d bb.y:%d bb.w:%d bb.h:%d pr.x:%d pr.y:%d pr.w:%d pr.h:%d\n", - // bb.x(), bb.y(), bb.width(), bb.height(), _pr.x(), _pr.y(), _pr.width(), _pr.height()); - QRect rr = p.worldMatrix().mapRect(bb); QRect pr = p.worldMatrix().mapRect(_pr); @@ -1962,11 +1862,8 @@ void PartCanvas::cmd(int cmd) void PartCanvas::copy(PartList* pl) { - //printf("void PartCanvas::copy(PartList* pl)\n"); if (pl->empty()) return; - // Changed by T356. Support mixed .mpt files. - //bool isWave = pl->begin()->second->track()->type() == Track::WAVE; bool wave = false; bool midi = false; for(ciPart p = pl->begin(); p != pl->end(); ++p) @@ -1996,13 +1893,11 @@ void PartCanvas::copy(PartList* pl) // Clear the copy clone list. cloneList.clear(); - //copyCloneList.clear(); int level = 0; int tick = 0; for (ciPart p = pl->begin(); p != pl->end(); ++p) { // Indicate this is a copy operation. Also force full wave paths. - //p->second->write(level, xml); p->second->write(level, xml, true, true); int endTick = p->second->endTick(); @@ -2054,13 +1949,11 @@ void PartCanvas::copy(PartList* pl) int PartCanvas::pasteAt(const QString& pt, Track* track, unsigned int pos, bool clone, bool toTrack) { - //printf("int PartCanvas::pasteAt(const QString& pt, Track* track, int pos)\n"); QByteArray ba = pt.toLatin1(); const char* ptxt = ba.constData(); Xml xml(ptxt); bool firstPart=true; int posOffset=0; - //int finalPos=0; unsigned int finalPos = pos; int notDone = 0; int done = 0; @@ -2076,26 +1969,7 @@ int PartCanvas::pasteAt(const QString& pt, Track* track, unsigned int pos, bool end = true; break; case Xml::TagStart: - if (tag == "part") { - /* - Part* p = 0; - if(clone) - { - if(!(p = readClone(xml, track, toTrack))) - break; - } - else - { - if (track->type() == Track::MIDI || track->type() == Track::DRUM) - p = new MidiPart((MidiTrack*)track); - else if (track->type() == Track::WAVE) - p = new WavePart((WaveTrack*)track); - else - break; - p->read(xml, 0, toTrack); - } - */ - + if (tag == "part") { // Read the part. Part* p = 0; p = readXmlPart(xml, track, clone, toTrack); @@ -2149,403 +2023,12 @@ int PartCanvas::pasteAt(const QString& pt, Track* track, unsigned int pos, bool return finalPos; } -/* -//--------------------------------------------------------- -// PartCanvas::readPart -//--------------------------------------------------------- - -Part* PartCanvas::readPart(Xml& xml, Track* track, bool doClone, bool toTrack) - { - int id = -1; - Part* npart = 0; - uuid_t uuid; - uuid_clear(uuid); - bool uuidvalid = false; - bool clone = true; - - for (;;) { - Xml::Token token = xml.parse(); - const QString& tag = xml.s1(); - switch (token) { - case Xml::Error: - case Xml::End: - return npart; - case Xml::TagStart: - // If the part has not been created yet... - if(!npart) - { - // Attribute section did not create a clone from any matching part. Create a non-clone part now. - if(!track) - { - xml.skip("part"); - return 0; - } - if (track->type() == Track::MIDI || track->type() == Track::DRUM) - npart = new MidiPart((MidiTrack*)track); - else if (track->type() == Track::WAVE) - npart = new WavePart((WaveTrack*)track); - else - { - xml.skip("part"); - return 0; - } - - // Signify a new non-clone part was created. - // Even if the original part was itself a clone, clear this because the - // attribute section did not create a clone from any matching part. - clone = false; - - // If an id or uuid was found, add the part to the clone list - // so that subsequent parts can look it up and clone from it... - if(id != -1) - { - ClonePart ncp(npart, id); - cloneList.push_back(ncp); - } - else - if(uuidvalid) - { - ClonePart ncp(npart); - // New ClonePart creates its own uuid, but we need to replace it. - uuid_copy(ncp.uuid, uuid); - cloneList.push_back(ncp); - } - } - - if (tag == "name") - npart->setName(xml.parse1()); - else if (tag == "poslen") { - ((PosLen*)npart)->read(xml, "poslen"); - } - else if (tag == "pos") { - Pos pos; - pos.read(xml, "pos"); // obsolete - npart->setTick(pos.tick()); - } - else if (tag == "len") { - Pos len; - len.read(xml, "len"); // obsolete - npart->setLenTick(len.tick()); - } - else if (tag == "selected") - npart->setSelected(xml.parseInt()); - else if (tag == "color") - npart->setColorIndex(xml.parseInt()); - else if (tag == "mute") - npart->setMute(xml.parseInt()); - else if (tag == "event") - { - // If a new non-clone part was created, accept the events... - if(!clone) - { - EventType type = Wave; - if(track->isMidiTrack()) - type = Note; - Event e(type); - e.read(xml); - // stored tickpos for event has absolute value. However internally - // tickpos is relative to start of part, we substract tick(). - // TODO: better handling for wave event - e.move( -npart->tick() ); - int tick = e.tick(); - - // Do not discard events belonging to clone parts, - // at least not yet. A later clone might have a longer, - // fully accommodating part length! - //if ((tick < 0) || (tick >= (int) lenTick())) { - //if ((tick < 0) || ( id == -1 && !clone && (tick >= (int)lenTick()) )) - // No way to tell at the moment whether there will be clones referencing this... - // No choice but to accept all events past 0. - if(tick < 0) - { - //printf("readClone: warning: event not in part: %d - %d -%d, discarded\n", - printf("readClone: warning: event at tick:%d not in part:%s, discarded\n", - tick, npart->name().toLatin1().constData()); - } - else - { - npart->events()->add(e); - } - } - else - // ...Otherwise a clone was created, so we don't need the events. - xml.skip(tag); - } - else - xml.unknown("PartCanvas::readClone"); - break; - case Xml::Attribut: - if (tag == "cloneId") - { - id = xml.s2().toInt(); - if(id != -1) - { - for(iClone i = cloneList.begin(); i != cloneList.end(); ++i) - { - // Is a matching part found in the clone list? - if(i->id == id) - { - // If it's a regular paste (not paste clone), and the original part is - // not a clone, defer so that a new copy is created in TagStart above. - if(!doClone && i->cp->cevents()->arefCount() <= 1) - break; - - // This makes a clone, chains the part, and increases ref counts. - npart = track->newPart((Part*)i->cp, true); - break; - } - } - } - } - else if (tag == "uuid") - { - uuid_parse(xml.s2().toLatin1().constData(), uuid); - if(!uuid_is_null(uuid)) - { - uuidvalid = true; - for(iClone i = cloneList.begin(); i != cloneList.end(); ++i) - { - // Is a matching part found in the clone list? - if(uuid_compare(uuid, i->uuid) == 0) - { - Track* cpt = i->cp->track(); - // If we want to paste to the given track... - if(toTrack) - { - // If the given track type is not the same as the part's - // original track type, we can't continue. Just return. - if(!track || cpt->type() != track->type()) - { - xml.skip("part"); - return 0; - } - } - else - // ...else we want to paste to the part's original track. - { - // Make sure the track exists (has not been deleted). - if((cpt->isMidiTrack() && song->midis()->find(cpt) != song->midis()->end()) || - (cpt->type() == Track::WAVE && song->waves()->find(cpt) != song->waves()->end())) - track = cpt; - else - // Track was not found. Try pasting to the given track, as above... - { - if(!track || cpt->type() != track->type()) - { - // No luck. Just return. - xml.skip("part"); - return 0; - } - } - } - - // If it's a regular paste (not paste clone), and the original part is - // not a clone, defer so that a new copy is created in TagStart above. - if(!doClone && i->cp->cevents()->arefCount() <= 1) - break; - - // This makes a clone, chains the part, and increases ref counts. - npart = track->newPart((Part*)i->cp, true); - break; - } - } - } - } - //else if(tag == "isclone") // Ignore - // clone = xml.s2().toInt(); - break; - case Xml::TagEnd: - if (tag == "part") - return npart; - default: - break; - } - } - return npart; -} -*/ - -/* -//--------------------------------------------------------- -// PartCanvas::readClone -//--------------------------------------------------------- - -Part* PartCanvas::readClone(Xml& xml, Track* track, bool toTrack) - { - int id = -1; - Part* npart = 0; - uuid_t uuid; - uuid_clear(uuid); - bool uuidvalid = false; - bool clone = true; - - for (;;) { - Xml::Token token = xml.parse(); - const QString& tag = xml.s1(); - switch (token) { - case Xml::Error: - case Xml::End: - return npart; - case Xml::TagStart: - // If the part has not been created yet... - if(!npart) - { - // Attribute section did not create a clone from any matching part. Create a non-clone part now. - if (track->type() == Track::MIDI || track->type() == Track::DRUM) - npart = new MidiPart((MidiTrack*)track); - else if (track->type() == Track::WAVE) - npart = new WavePart((WaveTrack*)track); - else - return 0; - - // Signify a new non-clone part was created. - // Even if the original part was itself a clone, clear this because the - // attribute section did not create a clone from any matching part. - clone = false; - - // If an id or uuid was found, add the part to the clone list - // so that subsequent parts can look it up and clone from it... - if(id != -1) - { - ClonePart ncp(npart, id); - cloneList.push_back(ncp); - } - else - if(uuidvalid) - { - ClonePart ncp(npart); - // New ClonePart creates its own uuid, but we need to replace it. - uuid_copy(ncp.uuid, uuid); - cloneList.push_back(ncp); - } - } - - if (tag == "name") - npart->setName(xml.parse1()); - else if (tag == "poslen") { - ((PosLen*)npart)->read(xml, "poslen"); - } - else if (tag == "pos") { - Pos pos; - pos.read(xml, "pos"); // obsolete - npart->setTick(pos.tick()); - } - else if (tag == "len") { - Pos len; - len.read(xml, "len"); // obsolete - npart->setLenTick(len.tick()); - } - else if (tag == "selected") - npart->setSelected(xml.parseInt()); - else if (tag == "color") - npart->setColorIndex(xml.parseInt()); - else if (tag == "mute") - npart->setMute(xml.parseInt()); - else if (tag == "event") - { - // If a new non-clone part was created, accept the events... - if(!clone) - { - EventType type = Wave; - if(track->isMidiTrack()) - type = Note; - Event e(type); - e.read(xml); - // stored tickpos for event has absolute value. However internally - // tickpos is relative to start of part, we substract tick(). - // TODO: better handling for wave event - e.move( -npart->tick() ); - int tick = e.tick(); - - // Do not discard events belonging to clone parts, - // at least not yet. A later clone might have a longer, - // fully accommodating part length! - //if ((tick < 0) || (tick >= (int) lenTick())) { - //if ((tick < 0) || ( id == -1 && !clone && (tick >= (int)lenTick()) )) - // No way to tell at the moment whether there will be clones referencing this... - // No choice but to accept all events past 0. - if(tick < 0) - { - //printf("readClone: warning: event not in part: %d - %d -%d, discarded\n", - printf("readClone: warning: event at tick:%d not in part:%s, discarded\n", - tick, npart->name().toLatin1().constData()); - } - else - { - npart->events()->add(e); - } - } - else - // ...Otherwise a clone was created, so we don't need the events. - xml.skip(tag); - } - else - xml.unknown("PartCanvas::readClone"); - break; - case Xml::Attribut: - if (tag == "cloneId") - { - id = xml.s2().toInt(); - if(id != -1) - { - for(iClone i = cloneList.begin(); i != cloneList.end(); ++i) - { - // Is a matching part found in the clone list? - if(i->id == id) - { - // This makes a clone, chains the part, and increases ref counts. - npart = track->newPart((Part*)i->cp, true); - break; - } - } - } - } - else if (tag == "uuid") - { - uuid_parse(xml.s2().toLatin1().constData(), uuid); - if(!uuid_is_null(uuid)) - { - uuidvalid = true; - for(iClone i = cloneList.begin(); i != cloneList.end(); ++i) - { - // Is a matching part found in the clone list? - if(uuid_compare(uuid, i->uuid) == 0) - { - // If we want to paste to the part's original track... - if(!toTrack) - { - // Make sure the track exists (has not been deleted). - if((i->cp->track()->isMidiTrack() && song->midis()->find(i->cp->track()) != song->midis()->end()) || - (i->cp->track()->type() == Track::WAVE && song->waves()->find(i->cp->track()) != song->waves()->end())) - track = i->cp->track(); - } - // This makes a clone, chains the part, and increases ref counts. - npart = track->newPart((Part*)i->cp, true); - break; - } - } - } - } - //else if(tag == "isclone") // Ignore - // clone = xml.s2().toInt(); - break; - case Xml::TagEnd: - if (tag == "part") - return npart; - default: - break; - } - } - return npart; -} -*/ //--------------------------------------------------------- // paste // paste part to current selected track at cpos //--------------------------------------------------------- -//void PartCanvas::paste() void PartCanvas::paste(bool clone, bool toTrack, bool doInsert) { Track* track = 0; @@ -2656,7 +2139,6 @@ void PartCanvas::movePartsTotheRight(unsigned int startTicks, int length) if (!i->second->isSelected()) { Part* part = i->second->part(); if (part->tick() >= startTicks) { - //void Audio::msgChangePart(Part* oldPart, Part* newPart, bool doUndoFlag, bool doCtrls, bool doClones) Part *newPart = part->clone(); newPart->setTick(newPart->tick()+length); if (part->track()->type() == Track::WAVE) { @@ -2687,7 +2169,6 @@ void PartCanvas::movePartsTotheRight(unsigned int startTicks, int length) void PartCanvas::startDrag(CItem* item, DragType t) { - //printf("PartCanvas::startDrag(CItem* item, DragType t)\n"); NPart* p = (NPart*)(item); Part* part = p->part(); @@ -2748,7 +2229,6 @@ void PartCanvas::startDrag(CItem* item, DragType t) void PartCanvas::dragEnterEvent(QDragEnterEvent* event) { - ///event->accept(Q3TextDrag::canDecode(event)); event->acceptProposedAction(); // TODO CHECK Tim. } @@ -2756,22 +2236,6 @@ void PartCanvas::dragEnterEvent(QDragEnterEvent* event) // dragvent //--------------------------------------------------------- -void PartCanvas::dragMoveEvent(QDragMoveEvent*) - { -// printf("drag move %x\n", this); - //event->acceptProposedAction(); - } - -//--------------------------------------------------------- -// dragLeaveEvent -//--------------------------------------------------------- - -void PartCanvas::dragLeaveEvent(QDragLeaveEvent*) - { -// printf("drag leave\n"); - //event->acceptProposedAction(); - } - //--------------------------------------------------------- // dropEvent //--------------------------------------------------------- @@ -2791,7 +2255,6 @@ void PartCanvas::viewDropEvent(QDropEvent* event) if(event->mimeData()->hasFormat("text/partlist")) type = 1; else - //if(event->mimeData()->hasFormat("text/uri-list")) if(event->mimeData()->hasUrls()) type = 2; else @@ -2833,7 +2296,7 @@ void PartCanvas::viewDropEvent(QDropEvent* event) Track* track = 0; if (trackNo < tracks->size()) track = tracks->index(trackNo); - //printf("trackNo=%d\n, trackNo track=%d\n", trackNo, track); + int x = AL::sigmap.raster(event->pos().x(), *_raster); if (x < 0) x = 0; @@ -2911,7 +2374,6 @@ void PartCanvas::drawCanvas(QPainter& p, const QRect& rect) //-------------------------------- // vertical lines //------------------------------- - //printf("raster=%d\n", *_raster); if (config.canvasShowGrid) { int bar, beat; unsigned tick; @@ -2970,12 +2432,9 @@ void PartCanvas::drawCanvas(QPainter& p, const QRect& rect) th = track->height(); if (!th) continue; - ///if (/*config.canvasShowGrid ||*/ !track->isMidiTrack()) { if (config.canvasShowGrid && (track->isMidiTrack() || track->type() == Track::WAVE)) // Tim. { - //printf("PartCanvas::drawCanvas track name:%s, y:%d h:%d\n", track->name().toLatin1().constData(), yy, th); p.setPen(baseColor.dark(130)); - ///p.drawLine(x, yy, x + w, yy); p.drawLine(x, yy + th, x + w, yy + th); // Tim. p.setPen(baseColor); } @@ -3082,7 +2541,6 @@ void PartCanvas::drawTopItem(QPainter& p, const QRect& rect) MPEventList *el = mt->mpevents(); if (el->size()) { - //printf("num events %d\n", mt->mpevents()->size()); for (iMPEvent i = el->begin(); i != el->end(); ++i) { MidiPlayEvent pe = *i; @@ -3100,7 +2558,6 @@ void PartCanvas::drawTopItem(QPainter& p, const QRect& rect) if (e.pitch() == pe.dataA() && e.dataC() == 1) { e.setLenTick(pe.time() - e.tick()- startPos); e.setC(0); // reset the variable we borrowed for state handling - //printf("editing event tick=%d startPos=%d\n",e.tick(), startPos); continue; } } @@ -3182,7 +2639,6 @@ void PartCanvas::drawAutomation(QPainter& p, const QRect& r, AudioTrack *t) // prepare prevVal if (cl->valueType() == VAL_LOG ) { // use db scale for volume - //printf("volume cvval=%f\n", cvFirst.val); prevVal = dbToVal(cvFirst.val); // represent volume between 0 and 1 if (prevVal < 0) prevVal = 0.0; } @@ -3221,13 +2677,11 @@ void PartCanvas::drawAutomation(QPainter& p, const QRect& r, AudioTrack *t) (rr.bottom()-2)-prevVal*height, currentPixel, (rr.bottom()-2)-nextVal*height); - ///(rr.bottom()-2)- (discrete?prevVal:nextVal)*height); // Tim ///if(discrete) /// p.drawLine( currentPixel, (rr.bottom()-2)-prevVal*height, currentPixel, (rr.bottom()-2)-nextVal*height ); // Tim firstRun=false; - //printf("draw line: %d %f %d %f\n",tempomap.frame2tick(lastPos),rr.bottom()-lastVal*height,tempomap.frame2tick(cv.frame),rr.bottom()-curVal*height); prevPosFrame=cv.frame; prevVal=nextVal; if (currentPixel > rr.x()+ rr.width()) @@ -3237,12 +2691,10 @@ void PartCanvas::drawAutomation(QPainter& p, const QRect& r, AudioTrack *t) p.drawRect(mapx(tempomap.frame2tick(prevPosFrame))-2, (rr.bottom()-2)-prevVal*height-2, 5, 5); p.drawRect(mapx(tempomap.frame2tick(prevPosFrame))-1, (rr.bottom()-1)-prevVal*height-2, 3, 3); } - //printf("outer draw %f\n", cvFirst.val ); p.drawLine(mapx(tempomap.frame2tick(prevPosFrame)), (rr.bottom()-2)-prevVal*height, rr.x()+rr.width(), (rr.bottom()-2)-prevVal*height); - //printf("draw last line: %d %f %d %f\n",tempomap.frame2tick(prevPosFrame),(rr.bottom()-2)-prevVal*height,tempomap.frame2tick(prevPosFrame)+rr.width(),(rr.bottom()-2)-prevVal*height); } } quitDrawing: @@ -3335,7 +2787,6 @@ void PartCanvas::checkAutomation(Track * t, const QPoint &pointer, bool addNewCt continue; // not the right region } - //printf("firstX=%f lastX=%f firstY=%f lastY=%f proportion=%f currX=%d\n", firstX,lastX,firstY,lastY,proportion, currX); // 10 X(15) 20 // proportion = 0.5 @@ -3360,7 +2811,6 @@ void PartCanvas::checkAutomation(Track * t, const QPoint &pointer, bool addNewCt } } - //printf("point at x=%d xdiff=%d y=%d ydiff=%d\n", mapx(tempomap.frame2tick(cv.frame)), x1, mapx(ypixel), y1); oldX = xpixel; oldY = ypixel; @@ -3414,7 +2864,6 @@ void PartCanvas::controllerChanged(Track* /* t */) void PartCanvas::processAutomationMovements(QPoint pos, bool addPoint) { - //printf("processAutomationMovements %d %d %d %d %d %d\n", pos.x(), pos.y(),mapx(pos.x()), mapy(pos.y()), xpos, ypos); if (_tool == AutomationTool) { if (!automation.moveController) { // currently nothing going lets's check for some action. @@ -3493,9 +2942,7 @@ void PartCanvas::processAutomationMovements(QPoint pos, bool addPoint) if (cvval< min) cvval=min; if (cvval>max) cvval=max; automation.currentCtrl->val = cvval; - //printf("calc cvval=%f yfraction=%f ", cvval, yfraction); } - //printf("mouseY=%d\n", mouseY); controllerChanged(automation.currentTrack); } diff --git a/muse2/muse/arranger/pcanvas.h b/muse2/muse/arranger/pcanvas.h index 18e47426..daa244b2 100644 --- a/muse2/muse/arranger/pcanvas.h +++ b/muse2/muse/arranger/pcanvas.h @@ -12,9 +12,7 @@ #include "canvas.h" #include "trackautomationview.h" -class QDragMoveEvent; class QDropEvent; -class QDragLeaveEvent; class QMouseEvent; class QKeyEvent; class QEvent; @@ -94,8 +92,6 @@ class PartCanvas : public Canvas { virtual void updateSong(DragType, int); virtual void startDrag(CItem*, DragType); virtual void dragEnterEvent(QDragEnterEvent*); - virtual void dragMoveEvent(QDragMoveEvent*); - virtual void dragLeaveEvent(QDragLeaveEvent*); virtual void viewDropEvent(QDropEvent*); virtual QMenu* genItemPopup(CItem*); diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp index e2b17dd3..0ec300cf 100644 --- a/muse2/muse/midiedit/scoreedit.cpp +++ b/muse2/muse/midiedit/scoreedit.cpp @@ -4456,6 +4456,9 @@ void staff_t::update_part_indices() * between, for example, when a cis is tied to a des * * CURRENT TODO + * o speed up list editor + * o speed up arranger + * * o rename stuff: UndoOp -> Operation, Undo -> OpList, * UndoType -> OpType, iUndoOp, riUndoOp -> iOperation, * undo.cpp/.h -> operations.cpp/.h @@ -4464,7 +4467,6 @@ void staff_t::update_part_indices() * o controller view in score editor * o deal with expanding parts * o fix sigedit boxes - * o drum list: scroll while dragging * o remove functions for disabling key/sigmap * o mastertrack editor: key-combobox is buggy * o drum editor: channel-stuff @@ -4492,6 +4494,7 @@ void staff_t::update_part_indices() * keeping its own pos_add variable (which is only an optimisation) * o support edge-scrolling when opening a lasso * o save more configuration stuff (quant, color) + * o drum list: scroll while dragging (not important due to "reorder list") * * really unimportant nice-to-haves * o support in-song clef-changes |