summaryrefslogtreecommitdiff
path: root/muse2/muse/arranger/tlist.cpp
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2011-10-10 07:09:29 +0000
committerTim E. Real <termtech@rogers.com>2011-10-10 07:09:29 +0000
commitb69df6fa9d648ce8897f19415d39deee0f1b18a3 (patch)
tree3fa6a23c986b3167f9eb3352bb5077131002202e /muse2/muse/arranger/tlist.cpp
parente160c228beaee36519fb210891006f7b40a46b4a (diff)
Followup: Added handy 'open midi config' to tracklist midi outport popup.
Diffstat (limited to 'muse2/muse/arranger/tlist.cpp')
-rw-r--r--muse2/muse/arranger/tlist.cpp126
1 files changed, 70 insertions, 56 deletions
diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp
index 87179575..cca8a086 100644
--- a/muse2/muse/arranger/tlist.cpp
+++ b/muse2/muse/arranger/tlist.cpp
@@ -586,7 +586,7 @@ void TList::portsPopupMenu(MusECore::Track* t, int x, int y)
case MusECore::Track::MIDI:
case MusECore::Track::DRUM:
case MusECore::Track::AUDIO_SOFTSYNTH:
- {
+ {
MusECore::MidiTrack* track = (MusECore::MidiTrack*)t;
//QPopupMenu* p = MusECore::midiPortsPopup(0);
@@ -604,70 +604,84 @@ void TList::portsPopupMenu(MusECore::Track* t, int x, int y)
QMenu* p = MusECore::midiPortsPopup(this, port); // 0, port);
QAction* act = p->exec(mapToGlobal(QPoint(x, y)), 0);
- if (act) {
- int n = act->data().toInt();
- // Changed by T356.
- //track->setOutPort(n);
- //MusEGlobal::audio->msgSetTrackOutPort(track, n);
-
- //MusEGlobal::song->update();
- if (t->type() == MusECore::Track::DRUM) {
- bool change = QMessageBox::question(this, tr("Update drummap?"),
- tr("Do you want to use same port for all instruments in the drummap?"),
- tr("&Yes"), tr("&No"), QString::null, 0, 1);
- MusEGlobal::audio->msgIdle(true);
- if (!change)
- {
- // Delete all port controller events.
- //MusEGlobal::audio->msgChangeAllPortDrumCtrlEvents(false);
- MusEGlobal::song->changeAllPortDrumCtrlEvents(false);
- track->setOutPort(n);
+ if(!act)
+ {
+ delete p;
+ break;
+ }
+
+ int n = act->data().toInt();
+ delete p;
- for (int i=0; i<DRUM_MAPSIZE; i++) //Remap all drum instruments to this port
- MusEGlobal::drumMap[i].port = track->outPort();
- // Add all port controller events.
- //MusEGlobal::audio->msgChangeAllPortDrumCtrlEvents(true);
- MusEGlobal::song->changeAllPortDrumCtrlEvents(true);
- }
- else
- {
- //MusEGlobal::audio->msgSetTrackOutPort(track, n);
- track->setOutPortAndUpdate(n);
- }
- MusEGlobal::audio->msgIdle(false);
- MusEGlobal::audio->msgUpdateSoloStates(); // (p4.0.14) p4.0.17
- MusEGlobal::song->update();
- }
- else
- if (t->type() == MusECore::Track::AUDIO_SOFTSYNTH)
+ if(n < 0) // Invalid item.
+ break;
+
+ if(n >= MIDI_PORTS) // Show port config dialog.
+ {
+ MusEGlobal::muse->configMidiPorts();
+ break;
+ }
+
+ // Changed by T356.
+ //track->setOutPort(n);
+ //MusEGlobal::audio->msgSetTrackOutPort(track, n);
+
+ //MusEGlobal::song->update();
+ if (t->type() == MusECore::Track::DRUM) {
+ bool change = QMessageBox::question(this, tr("Update drummap?"),
+ tr("Do you want to use same port for all instruments in the drummap?"),
+ tr("&Yes"), tr("&No"), QString::null, 0, 1);
+ MusEGlobal::audio->msgIdle(true);
+ if (!change)
{
- if(md != 0)
- {
- // Idling is already handled in msgSetMidiDevice.
- //MusEGlobal::audio->msgIdle(true);
-
- // Compiler complains if simple cast from Track to MusECore::SynthI...
- MusEGlobal::midiSeq->msgSetMidiDevice(&MusEGlobal::midiPorts[n], (MusEGlobal::midiPorts[n].device() == md) ? 0 : md);
- MusEGlobal::muse->changeConfig(true); // save configuration file
-
- //MusEGlobal::audio->msgIdle(false);
- MusEGlobal::song->update();
- }
+ // Delete all port controller events.
+ //MusEGlobal::audio->msgChangeAllPortDrumCtrlEvents(false);
+ MusEGlobal::song->changeAllPortDrumCtrlEvents(false);
+ track->setOutPort(n);
+
+ for (int i=0; i<DRUM_MAPSIZE; i++) //Remap all drum instruments to this port
+ MusEGlobal::drumMap[i].port = track->outPort();
+ // Add all port controller events.
+ //MusEGlobal::audio->msgChangeAllPortDrumCtrlEvents(true);
+ MusEGlobal::song->changeAllPortDrumCtrlEvents(true);
}
else
{
- MusEGlobal::audio->msgIdle(true);
//MusEGlobal::audio->msgSetTrackOutPort(track, n);
track->setOutPortAndUpdate(n);
- MusEGlobal::audio->msgIdle(false);
- //MusEGlobal::song->update();
- MusEGlobal::audio->msgUpdateSoloStates(); // (p4.0.14) p4.0.17
- MusEGlobal::song->update(SC_MIDI_TRACK_PROP); //
}
- }
- delete p;
+ MusEGlobal::audio->msgIdle(false);
+ MusEGlobal::audio->msgUpdateSoloStates(); // (p4.0.14) p4.0.17
+ MusEGlobal::song->update();
}
- break;
+ else
+ if (t->type() == MusECore::Track::AUDIO_SOFTSYNTH)
+ {
+ if(md != 0)
+ {
+ // Idling is already handled in msgSetMidiDevice.
+ //MusEGlobal::audio->msgIdle(true);
+
+ // Compiler complains if simple cast from Track to MusECore::SynthI...
+ MusEGlobal::midiSeq->msgSetMidiDevice(&MusEGlobal::midiPorts[n], (MusEGlobal::midiPorts[n].device() == md) ? 0 : md);
+ MusEGlobal::muse->changeConfig(true); // save configuration file
+
+ //MusEGlobal::audio->msgIdle(false);
+ MusEGlobal::song->update();
+ }
+ }
+ else
+ {
+ MusEGlobal::audio->msgIdle(true);
+ //MusEGlobal::audio->msgSetTrackOutPort(track, n);
+ track->setOutPortAndUpdate(n);
+ MusEGlobal::audio->msgIdle(false);
+ //MusEGlobal::song->update();
+ MusEGlobal::audio->msgUpdateSoloStates(); // (p4.0.14) p4.0.17
+ MusEGlobal::song->update(SC_MIDI_TRACK_PROP); //
+ }
+ }
+ break;
case MusECore::Track::WAVE:
case MusECore::Track::AUDIO_OUTPUT: