diff options
author | Tim E. Real <termtech@rogers.com> | 2011-10-10 07:09:29 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2011-10-10 07:09:29 +0000 |
commit | b69df6fa9d648ce8897f19415d39deee0f1b18a3 (patch) | |
tree | 3fa6a23c986b3167f9eb3352bb5077131002202e /muse2/muse/midiedit | |
parent | e160c228beaee36519fb210891006f7b40a46b4a (diff) |
Followup: Added handy 'open midi config' to tracklist midi outport popup.
Diffstat (limited to 'muse2/muse/midiedit')
-rw-r--r-- | muse2/muse/midiedit/dlist.cpp | 71 | ||||
-rw-r--r-- | muse2/muse/midiedit/drumedit.cpp | 4 |
2 files changed, 46 insertions, 29 deletions
diff --git a/muse2/muse/midiedit/dlist.cpp b/muse2/muse/midiedit/dlist.cpp index c6cd9b2e..854fe552 100644 --- a/muse2/muse/midiedit/dlist.cpp +++ b/muse2/muse/midiedit/dlist.cpp @@ -29,6 +29,8 @@ #include <stdio.h> +#include "globals.h" +#include "app.h" #include "audio.h" #include "pitchedit.h" #include "midiport.h" @@ -180,37 +182,52 @@ void DList::draw(QPainter& p, const QRect& rect) void DList::devicesPopupMenu(MusECore::DrumMap* t, int x, int y, bool changeAll) { - QMenu* p = MusECore::midiPortsPopup(); + QMenu* p = MusECore::midiPortsPopup(this, t->port); QAction* act = p->exec(mapToGlobal(QPoint(x, y)), 0); bool doemit = false; - if (act) { - int n = act->data().toInt(); - if (!changeAll) - { - if(n != t->port) - { - MusEGlobal::audio->msgIdle(true); - MusEGlobal::song->remapPortDrumCtrlEvents(getSelectedInstrument(), -1, -1, n); - MusEGlobal::audio->msgIdle(false); - t->port = n; - doemit = true; - } - } - else { - MusEGlobal::audio->msgIdle(true); - // Delete all port controller events. - MusEGlobal::song->changeAllPortDrumCtrlEvents(false); - - for (int i = 0; i < DRUM_MAPSIZE; i++) - MusEGlobal::drumMap[i].port = n; - // Add all port controller events. - MusEGlobal::song->changeAllPortDrumCtrlEvents(true); + if(!act) + { + delete p; + return; + } + + int n = act->data().toInt(); + delete p; + + if(n < 0) // Invalid item. + return; + + if(n >= MIDI_PORTS) // Show port config dialog. + { + MusEGlobal::muse->configMidiPorts(); + return; + } - MusEGlobal::audio->msgIdle(false); - doemit = true; - } + if (!changeAll) + { + if(n != t->port) + { + MusEGlobal::audio->msgIdle(true); + MusEGlobal::song->remapPortDrumCtrlEvents(getSelectedInstrument(), -1, -1, n); + MusEGlobal::audio->msgIdle(false); + t->port = n; + doemit = true; + } + } + else { + MusEGlobal::audio->msgIdle(true); + // Delete all port controller events. + MusEGlobal::song->changeAllPortDrumCtrlEvents(false); + + for (int i = 0; i < DRUM_MAPSIZE; i++) + MusEGlobal::drumMap[i].port = n; + // Add all port controller events. + MusEGlobal::song->changeAllPortDrumCtrlEvents(true); + + MusEGlobal::audio->msgIdle(false); + doemit = true; } - delete p; + if(doemit) { int instr = getSelectedInstrument(); diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp index 4a234481..03580142 100644 --- a/muse2/muse/midiedit/drumedit.cpp +++ b/muse2/muse/midiedit/drumedit.cpp @@ -118,7 +118,7 @@ void DrumEdit::setHeaderWhatsThis() header->setWhatsThis(COL_NOTELENGTH, tr("note length")); header->setWhatsThis(COL_NOTE, tr("this is the note which is played")); header->setWhatsThis(COL_OUTCHANNEL, tr("output channel (hold ctl to affect all rows)")); - header->setWhatsThis(COL_OUTPORT, tr("output port")); + header->setWhatsThis(COL_OUTPORT, tr("output port (hold ctl to affect all rows)")); header->setWhatsThis(COL_LEVEL1, tr("shift + control key: draw velocity level 1")); header->setWhatsThis(COL_LEVEL2, tr("control key: draw velocity level 2")); header->setWhatsThis(COL_LEVEL3, tr("shift key: draw velocity level 3")); @@ -139,7 +139,7 @@ void DrumEdit::setHeaderToolTips() header->setToolTip(COL_NOTELENGTH, tr("note length")); header->setToolTip(COL_NOTE, tr("this is the note which is played")); header->setToolTip(COL_OUTCHANNEL, tr("output channel (ctl: affect all rows)")); - header->setToolTip(COL_OUTPORT, tr("output port")); + header->setToolTip(COL_OUTPORT, tr("output port (ctl: affect all rows)")); header->setToolTip(COL_LEVEL1, tr("shift + control key: draw velocity level 1")); header->setToolTip(COL_LEVEL2, tr("control key: draw velocity level 2")); header->setToolTip(COL_LEVEL3, tr("shift key: draw velocity level 3")); |