diff options
Diffstat (limited to 'muse2/muse/widgets/mtrackinfo.cpp')
-rw-r--r-- | muse2/muse/widgets/mtrackinfo.cpp | 151 |
1 files changed, 54 insertions, 97 deletions
diff --git a/muse2/muse/widgets/mtrackinfo.cpp b/muse2/muse/widgets/mtrackinfo.cpp index acdfb42f..6dd02931 100644 --- a/muse2/muse/widgets/mtrackinfo.cpp +++ b/muse2/muse/widgets/mtrackinfo.cpp @@ -26,6 +26,7 @@ #include "app.h" #include "route.h" #include "popupmenu.h" +#include "routepopup.h" //--------------------------------------------------------- // setTrack @@ -44,10 +45,13 @@ void MidiTrackInfo::setTrack(Track* t) selected = t; QPalette pal; - if(selected->type() == Track::DRUM) + if(selected->type() == Track::DRUM) { pal.setColor(trackNameLabel->backgroundRole(), config.drumTrackLabelBg); - else - pal.setColor(trackNameLabel->backgroundRole(), config.midiTrackLabelBg); + iOutputChannel->setEnabled(false); + } else { + pal.setColor(trackNameLabel->backgroundRole(), config.midiTrackLabelBg); + iOutputChannel->setEnabled(true); + } trackNameLabel->setPalette(pal); updateTrackInfo(-1); @@ -574,33 +578,6 @@ void MidiTrackInfo::iOutputPortChanged(int index) } //--------------------------------------------------------- -// routingPopupMenuActivated -//--------------------------------------------------------- - -//void MidiTrackInfo::routingPopupMenuActivated(int n) -void MidiTrackInfo::routingPopupMenuActivated(QAction* act) -{ - ///if(!midiTrackInfo || gRoutingPopupMenuMaster != midiTrackInfo || !selected || !selected->isMidiTrack()) - if((gRoutingPopupMenuMaster != this) || !selected || !selected->isMidiTrack()) - return; - muse->routingPopupMenuActivated(selected, act->data().toInt()); -} - -#if 0 -//--------------------------------------------------------- -// routingPopupViewActivated -//--------------------------------------------------------- - -void MidiTrackInfo::routingPopupViewActivated(const QModelIndex& mdi) -{ - ///if(!midiTrackInfo || gRoutingPopupMenuMaster != midiTrackInfo || !selected || !selected->isMidiTrack()) - if(gRoutingPopupMenuMaster != this || !selected || !selected->isMidiTrack()) - return; - muse->routingPopupMenuActivated(selected, mdi.data().toInt()); -} -#endif - -//--------------------------------------------------------- // inRoutesPressed //--------------------------------------------------------- @@ -611,44 +588,9 @@ void MidiTrackInfo::inRoutesPressed() if(!selected->isMidiTrack()) return; - PopupMenu* pup = muse->prepareRoutingPopupMenu(selected, false); - //PopupView* pup = muse->prepareRoutingPopupView(selected, false); - - /* - QPoint ppt = QCursor::pos(); - - int i = 0; - for( ; i < MIDI_PORTS; ++i) - { - if(midiPorts[i].device() && !midiPorts[pi].device()->isSynti()) - break; - } - if(!pup || i == MIDI_PORTS) - { - int ret = QMessageBox::warning(this, tr("No devices"), - tr("There are no midi port devices defined.\n" - "Do you want to open the midi configuration dialog?"), - QMessageBox::Ok | QMessageBox::Cancel, - QMessageBox::Ok); - if (ret == QMessageBox::Ok) { - //printf("open config midi ports\n"); - muse->configMidiPorts(); - } - if(!pup) - return; - } - */ - - ///gRoutingPopupMenuMaster = midiTrackInfo; - gRoutingPopupMenuMaster = this; - connect(pup, SIGNAL(triggered(QAction*)), SLOT(routingPopupMenuActivated(QAction*))); - //connect(pup, SIGNAL(activated(const QModelIndex&)), SLOT(routingPopupViewActivated(const QModelIndex&))); - connect(pup, SIGNAL(aboutToHide()), muse, SLOT(routingPopupMenuAboutToHide())); - //connect(pup, SIGNAL(aboutToHide()), muse, SLOT(routingPopupViewAboutToHide())); - pup->popup(QCursor::pos()); - //pup->setVisible(true); + RoutePopupMenu* pup = muse->getRoutingPopupMenu(); iRButton->setDown(false); - return; + pup->exec(QCursor::pos(), selected, false); } //--------------------------------------------------------- @@ -662,17 +604,9 @@ void MidiTrackInfo::outRoutesPressed() if(!selected->isMidiTrack()) return; - PopupMenu* pup = muse->prepareRoutingPopupMenu(selected, true); - if(!pup) - return; - - ///gRoutingPopupMenuMaster = midiTrackInfo; - gRoutingPopupMenuMaster = this; - connect(pup, SIGNAL(triggered(QAction*)), SLOT(routingPopupMenuActivated(QAction*))); - connect(pup, SIGNAL(aboutToHide()), muse, SLOT(routingPopupMenuAboutToHide())); - pup->popup(QCursor::pos()); + RoutePopupMenu* pup = muse->getRoutingPopupMenu(); oRButton->setDown(false); - return; + pup->exec(QCursor::pos(), selected, true); } //--------------------------------------------------------- @@ -1036,6 +970,29 @@ void MidiTrackInfo::iPanChanged(int val) } //--------------------------------------------------------- +// instrPopupActivated +//--------------------------------------------------------- + +void MidiTrackInfo::instrPopupActivated(QAction* act) +{ + //printf("MidiTrackInfo::instrPopupActivated\n"); + + if(act && selected) + { + int rv = act->data().toInt(); + if(rv != -1) + { + MidiTrack* track = (MidiTrack*)selected; + int channel = track->outChannel(); + int port = track->outPort(); + MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PROGRAM, rv); + audio->msgPlayMidiEvent(&ev); + updateTrackInfo(-1); + } + } +} + +//--------------------------------------------------------- // instrPopup //--------------------------------------------------------- @@ -1047,26 +1004,35 @@ void MidiTrackInfo::instrPopup() int channel = track->outChannel(); int port = track->outPort(); MidiInstrument* instr = midiPorts[port].instrument(); - QMenu* pup = new QMenu; - ///instr->populatePatchPopup(pop, channel, song->mtype(), track->type() == Track::DRUM); + //QMenu* pup = new QMenu; + PopupMenu* pup = new PopupMenu(true); + + //instr->populatePatchPopup(pop, channel, song->mtype(), track->type() == Track::DRUM); instr->populatePatchPopup(pup, channel, song->mtype(), track->type() == Track::DRUM); - ///if(pop->actions().count() == 0) - /// return; + //if(pop->actions().count() == 0) + // return; if(pup->actions().count() == 0) { delete pup; return; } - ///QAction *act = pop->exec(iPatch->mapToGlobal(QPoint(10,5))); + connect(pup, SIGNAL(triggered(QAction*)), SLOT(instrPopupActivated(QAction*))); + //connect(pup, SIGNAL(hovered(QAction*)), SLOT(instrPopupActivated(QAction*))); + + //QAction *act = pop->exec(iPatch->mapToGlobal(QPoint(10,5))); QAction *act = pup->exec(iPatch->mapToGlobal(QPoint(10,5))); - if (act) { - int rv = act->data().toInt(); - MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PROGRAM, rv); - audio->msgPlayMidiEvent(&ev); - updateTrackInfo(-1); - } + if(act) + { + int rv = act->data().toInt(); + if(rv != -1) + { + MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PROGRAM, rv); + audio->msgPlayMidiEvent(&ev); + updateTrackInfo(-1); + } + } delete pup; } @@ -1275,15 +1241,6 @@ void MidiTrackInfo::updateTrackInfo(int flags) return; MidiTrack* track = (MidiTrack*)selected; - // p3.3.47 Update the routing popup menu if anything relevant changes. - //if(gRoutingPopupMenuMaster == midiTrackInfo && selected && (flags & (SC_ROUTE | SC_CHANNELS | SC_CONFIG))) - if(flags & (SC_ROUTE | SC_CHANNELS | SC_CONFIG)) // p3.3.50 - // Use this handy shared routine. - //muse->updateRouteMenus(selected); - ///muse->updateRouteMenus(selected, midiTrackInfo); // p3.3.50 - muse->updateRouteMenus(selected, this); - - // Added by Tim. p3.3.9 setLabelText(); setLabelFont(); |