diff options
Diffstat (limited to 'muse2/muse/widgets/routepopup.cpp')
-rw-r--r-- | muse2/muse/widgets/routepopup.cpp | 538 |
1 files changed, 370 insertions, 168 deletions
diff --git a/muse2/muse/widgets/routepopup.cpp b/muse2/muse/widgets/routepopup.cpp index 0f1f8264..3e2ad008 100644 --- a/muse2/muse/widgets/routepopup.cpp +++ b/muse2/muse/widgets/routepopup.cpp @@ -34,6 +34,10 @@ #include "menutitleitem.h" #include "popupmenu.h" +#include "custom_widget_actions.h" +#include "globaldefs.h" +#define _USE_CUSTOM_WIDGET_ACTIONS_ + namespace MusEGui { //--------------------------------------------------------- @@ -617,7 +621,22 @@ int RoutePopupMenu::nonSyntiTrackAddSyntis(MusECore::AudioTrack* t, PopupMenu* l int RoutePopupMenu::addMidiPorts(MusECore::AudioTrack* t, PopupMenu* pup, int id, bool isOutput) { + +#ifndef _USE_CUSTOM_WIDGET_ACTIONS_ + QAction* act; + +#endif + +#ifdef _USE_CUSTOM_WIDGET_ACTIONS_ + + PixmapButtonsHeaderWidgetAction* wa_hdr = new PixmapButtonsHeaderWidgetAction("Output port/device", darkRedLedIcon, MIDI_CHANNELS, pup); + pup->addAction(wa_hdr); + ++id; +#else + pup->addAction(new MenuTitleItem("Output port/device", pup)); +#endif + for(int i = 0; i < MIDI_PORTS; ++i) { MusECore::MidiPort* mp = &MusEGlobal::midiPorts[i]; @@ -626,19 +645,16 @@ int RoutePopupMenu::addMidiPorts(MusECore::AudioTrack* t, PopupMenu* pup, int id // This is desirable, but could lead to 'hidden' routes unless we add more support // such as removing the existing routes when user changes flags. // So for now, just list all valid ports whether read or write. - if(!md) - continue; - //if(!(md->rwFlags() & (isOutput ? 1 : 2))) + //if(!md) // continue; + if(!md || !(md->rwFlags() & (isOutput ? 2 : 1))) // If this is an input click we are looking for midi outputs here. + continue; // Do not list synth devices! if(md->isSynti()) continue; - MusECore::RouteList* rl = isOutput ? t->outRoutes() : t->inRoutes(); - - PopupMenu* subp = new PopupMenu(pup, true); - subp->setTitle(md->name()); + MusECore::RouteList* rl = isOutput ? t->outRoutes() : t->inRoutes(); int chanmask = 0; // To reduce number of routes required, from one per channel to just one containing a channel mask. @@ -653,6 +669,21 @@ int RoutePopupMenu::addMidiPorts(MusECore::AudioTrack* t, PopupMenu* pup, int id } } +#ifdef _USE_CUSTOM_WIDGET_ACTIONS_ + + PixmapButtonsWidgetAction* wa = new PixmapButtonsWidgetAction(QString::number(i + 1) + ":" + md->name(), + redLedIcon, darkRedLedIcon,MIDI_CHANNELS, chanmask, pup); + MusECore::Route srcRoute(i, 0); // Ignore the routing channels - our action holds the channels. + //wa->setData(id++); + wa->setData(qVariantFromValue(srcRoute)); + pup->addAction(wa); + ++id; + +#else + + PopupMenu* subp = new PopupMenu(pup, true); + subp->setTitle(md->name()); + for(int ch = 0; ch < MIDI_CHANNELS; ++ch) { act = subp->addAction(QString("Channel %1").arg(ch+1)); @@ -677,6 +708,9 @@ int RoutePopupMenu::addMidiPorts(MusECore::AudioTrack* t, PopupMenu* pup, int id ++id; pup->addMenu(subp); + +#endif // _USE_CUSTOM_WIDGET_ACTIONS_ + } return id; } @@ -687,29 +721,22 @@ int RoutePopupMenu::addMidiPorts(MusECore::AudioTrack* t, PopupMenu* pup, int id //====================== RoutePopupMenu::RoutePopupMenu(QWidget* parent, MusECore::Track* track, bool isOutput) - : _track(track), _isOutMenu(isOutput) + //: _track(track), _isOutMenu(isOutput) + : PopupMenu(parent, true), _track(track), _isOutMenu(isOutput) { - _pup = new PopupMenu(parent, true); init(); } RoutePopupMenu::RoutePopupMenu(const QString& title, QWidget* parent, MusECore::Track* track, bool isOutput) - : _track(track), _isOutMenu(isOutput) + //: _track(track), _isOutMenu(isOutput) + : PopupMenu(title, parent, true), _track(track), _isOutMenu(isOutput) { - _pup = new PopupMenu(title, parent, true); init(); } -RoutePopupMenu::~RoutePopupMenu() -{ - //printf("RoutePopupMenu::~RoutePopupMenu\n"); - // Make sure to clear which clears and deletes any sub popups. - _pup->clear(); - delete _pup; -} - void RoutePopupMenu::init() { + //printf("RoutePopupMenu::init this:%p\n", this); connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); } @@ -726,15 +753,19 @@ void RoutePopupMenu::updateRouteMenus() // In case for some reason a route could not be added (or removed). // Then the item will be properly un-checked (or checked) here. + // TODO Fix this up a bit. It doesn't quite respond to complete removal, and other situations are a bit odd. + // Best to ignore it for now since it only half-works. p4.0.42 + +/* //printf("RoutePopupMenu::updateRouteMenus\n"); - if(!_track || !_pup || _pup->actions().isEmpty() || !_pup->isVisible()) + if(!_track || actions().isEmpty() || !isVisible()) return; MusECore::RouteList* rl = _isOutMenu ? _track->outRoutes() : _track->inRoutes(); // Clear all the action check marks. - _pup->clearAllChecks(); + clearAllChecks(); // Take care of Midi Port to Audio Input routes first... if(_isOutMenu && _track->isMidiTrack()) @@ -754,10 +785,13 @@ void RoutePopupMenu::updateRouteMenus() if(ir->channel & chbits) { MusECore::Route r(ir->track, chbits); - //printf("RoutePopupMenu::updateRouteMenus MusECore::MidiPort to AudioInput chbits:%d\n", chbits); - QAction* act = _pup->findActionFromData(qVariantFromValue(r)); + //printf("RoutePopupMenu::updateRouteMenus MusECore::MidiPort to AudioInput chbits:%d\n", chbits); // + QAction* act = findActionFromData(qVariantFromValue(r)); if(act) + { + //printf(" ... Found\n"); // act->setChecked(true); + } } } } @@ -771,6 +805,25 @@ void RoutePopupMenu::updateRouteMenus() // Do MidiTrack to MidiPort routes... if(irl->type == MusECore::Route::MIDI_PORT_ROUTE) { + +#ifdef _USE_CUSTOM_WIDGET_ACTIONS_ + + // Widget action handles channels. Look for route with channels ignored and set to zero. + MusECore::Route r(irl->midiPort, 0); + QAction* act = findActionFromData(qVariantFromValue(r)); + if(act) + { + //printf("RoutePopupMenu::updateRouteMenus found MidiTrack to MidiPort irl type:%d\n", irl->type); // + // Check for custom widget actions first. + PixmapButtonsWidgetAction* mc_wa = dynamic_cast<PixmapButtonsWidgetAction*>(act); + if(mc_wa) + { + //printf(" ... Found custom, setting current state\n"); // + mc_wa->setCurrentState(irl->channel); // Set all channels at once. + } + } + +#else //printf("RoutePopupMenu::updateRouteMenus MIDI_PORT_ROUTE\n"); for(int ch = 0; ch < MIDI_CHANNELS; ++ch) { @@ -778,33 +831,67 @@ void RoutePopupMenu::updateRouteMenus() if(irl->channel & chbits) { MusECore::Route r(irl->midiPort, chbits); - QAction* act = _pup->findActionFromData(qVariantFromValue(r)); + //printf("RoutePopupMenu::updateRouteMenus MidiTrack to MidiPort irl type:%d\n", irl->type); // + // If act is a PixmapButtonsWidgetAction, route channel is ignored and is zero. + QAction* act = findActionFromData(qVariantFromValue(r)); if(act) + { + //printf(" ... Found\n"); // act->setChecked(true); + } } } +#endif // _USE_CUSTOM_WIDGET_ACTIONS_ + } else // Do all other routes... { - //printf("RoutePopupMenu::updateRouteMenus other irl type:%d\n", irl->type); - QAction* act = _pup->findActionFromData(qVariantFromValue(*irl)); + +#ifdef _USE_CUSTOM_WIDGET_ACTIONS_ + + // Do MidiPort to MidiTrack routes... + if(irl->type == MusECore::Route::TRACK_ROUTE && irl->track && irl->track->type() == MusECore::Track::AUDIO_INPUT) + { + // Widget action handles channels. Look for route with channels ignored and set to zero. + MusECore::Route r(irl->track, 0); + QAction* act = findActionFromData(qVariantFromValue(r)); + if(act) + { + // Check for custom widget actions first. + PixmapButtonsWidgetAction* mc_wa = dynamic_cast<PixmapButtonsWidgetAction*>(act); + if(mc_wa) + { + //printf("RoutePopupMenu::updateRouteMenus found custom irl type:%d\n", irl->type); // + mc_wa->setCurrentState(irl->channel); // Set all channels at once. + continue; + } + } + } + +#endif // _USE_CUSTOM_WIDGET_ACTIONS_ + + printf("RoutePopupMenu::updateRouteMenus other irl type:%d\n", irl->type); // REMOVE TIm. if(act) + { + //printf("RoutePopupMenu::updateRouteMenus found other irl type:%d\n", irl->type); // act->setChecked(true); + } } } +*/ } void RoutePopupMenu::popupActivated(QAction* action) { - if(!action || !_track || !_pup || _pup->actions().isEmpty()) + if(!action || !_track || actions().isEmpty()) return; if(_track->isMidiTrack()) { MusECore::RouteList* rl = _isOutMenu ? _track->outRoutes() : _track->inRoutes(); - // Take care of Route data items first... + // Take care of Route data items first... if(qVariantCanConvert<MusECore::Route>(action->data())) { MusECore::Route aRoute = action->data().value<MusECore::Route>(); @@ -836,13 +923,10 @@ void RoutePopupMenu::popupActivated(QAction* action) MusECore::RouteList* mprl = _isOutMenu ? mp->outRoutes() : mp->inRoutes(); MusECore::ciRoute ir = mprl->begin(); for (; ir != mprl->end(); ++ir) - { - if(ir->type == MusECore::Route::TRACK_ROUTE && ir->track == aRoute.track) // Is there already a route to this port? - { - chmask = ir->channel; // Grab the channel mask. - break; + if(ir->type == MusECore::Route::TRACK_ROUTE && ir->track == aRoute.track) { // Is there already a route to this port? + chmask = ir->channel; // Grab the channel mask. + break; } - } if ((chmask & chbit) == chbit) // Is the channel's bit(s) set? { // disconnect @@ -866,56 +950,113 @@ void RoutePopupMenu::popupActivated(QAction* action) } return; } + // Support Audio Input track to Midi Port routes. else if(aRoute.type == MusECore::Route::MIDI_PORT_ROUTE) { - int chbit = aRoute.channel; - MusECore::Route bRoute(_track, chbit); - int mdidx = aRoute.midiPort; - - MusECore::MidiPort* mp = &MusEGlobal::midiPorts[mdidx]; - MusECore::MidiDevice* md = mp->device(); - //if(!md) // Rem. Allow connections to ports with no device. - // return; - - //if(!(md->rwFlags() & 2)) - //if(!(md->rwFlags() & (gIsOutRoutingPopupMenu ? 1 : 2))) - if(md && !(md->rwFlags() & (_isOutMenu ? 1 : 2))) - return; - - int chmask = 0; - MusECore::ciRoute iir = rl->begin(); - for (; iir != rl->end(); ++iir) + // Check for custom midi channel select action. + PixmapButtonsWidgetAction* cs_wa = dynamic_cast<PixmapButtonsWidgetAction*>(action); + if(cs_wa) { - if(iir->type == MusECore::Route::MIDI_PORT_ROUTE && iir->midiPort == mdidx) // Is there already a route to this port? + MusECore::Route aRoute = action->data().value<MusECore::Route>(); + int chbits = cs_wa->currentState(); + aRoute.channel = chbits; // Restore the desired route channels from the custom widget action state. + + int mdidx = aRoute.midiPort; + MusECore::MidiPort* mp = &MusEGlobal::midiPorts[mdidx]; + + MusECore::MidiDevice* md = mp->device(); + //if(!md) // Rem. Allow connections to ports with no device. + // return; + + //if(!(md->rwFlags() & 2)) + //if(!(md->rwFlags() & (gIsOutRoutingPopupMenu ? 1 : 2))) + if(md && !(md->rwFlags() & (_isOutMenu ? 1 : 2))) + return; + + int chmask = 0; + MusECore::ciRoute iir = rl->begin(); + for (; iir != rl->end(); ++iir) + if(iir->type == MusECore::Route::MIDI_PORT_ROUTE && iir->midiPort == mdidx) { // Is there already a route to this port? + chmask = iir->channel; // Grab the channel mask. + break; + } + + // Only if something changed... + if(chmask != chbits) { - chmask = iir->channel; // Grab the channel mask. - break; - } - } - if ((chmask & chbit) == chbit) // Is the channel's bit(s) set? - { - // disconnect - if(_isOutMenu) - MusEGlobal::audio->msgRemoveRoute(bRoute, aRoute); - else - MusEGlobal::audio->msgRemoveRoute(aRoute, bRoute); + if(chmask != 0) + { + MusECore::Route bRoute(_track, chmask); + // Disconnect all existing channels. + if(_isOutMenu) + MusEGlobal::audio->msgRemoveRoute(bRoute, *iir); + else + MusEGlobal::audio->msgRemoveRoute(*iir, bRoute); + } + if(chbits != 0) + { + // Connect desired channels. + MusECore::Route bRoute(_track, chbits); + if(_isOutMenu) + MusEGlobal::audio->msgAddRoute(bRoute, aRoute); + else + MusEGlobal::audio->msgAddRoute(aRoute, bRoute); + } + MusEGlobal::audio->msgUpdateSoloStates(); + MusEGlobal::song->update(SC_ROUTE); + } + //return; } - else + else { - // connect - if(_isOutMenu) - MusEGlobal::audio->msgAddRoute(bRoute, aRoute); - else - MusEGlobal::audio->msgAddRoute(aRoute, bRoute); + int chbit = aRoute.channel; + MusECore::Route bRoute(_track, chbit); + int mdidx = aRoute.midiPort; + + MusECore::MidiPort* mp = &MusEGlobal::midiPorts[mdidx]; + MusECore::MidiDevice* md = mp->device(); + //if(!md) // Rem. Allow connections to ports with no device. + // return; + + //if(!(md->rwFlags() & 2)) + //if(!(md->rwFlags() & (gIsOutRoutingPopupMenu ? 1 : 2))) + if(md && !(md->rwFlags() & (_isOutMenu ? 1 : 2))) + return; + + int chmask = 0; + MusECore::ciRoute iir = rl->begin(); + for (; iir != rl->end(); ++iir) + { + if(iir->type == MusECore::Route::MIDI_PORT_ROUTE && iir->midiPort == mdidx) // Is there already a route to this port? + { + chmask = iir->channel; // Grab the channel mask. + break; + } + } + if ((chmask & chbit) == chbit) // Is the channel's bit(s) set? + { + // disconnect + if(_isOutMenu) + MusEGlobal::audio->msgRemoveRoute(bRoute, aRoute); + else + MusEGlobal::audio->msgRemoveRoute(aRoute, bRoute); + } + else + { + // connect + if(_isOutMenu) + MusEGlobal::audio->msgAddRoute(bRoute, aRoute); + else + MusEGlobal::audio->msgAddRoute(aRoute, bRoute); + } + + MusEGlobal::audio->msgUpdateSoloStates(); + MusEGlobal::song->update(SC_ROUTE); } - - MusEGlobal::audio->msgUpdateSoloStates(); - MusEGlobal::song->update(SC_ROUTE); } } - else // ... now take care of integer data items. - if(qVariantCanConvert<int>(action->data())) + else if(qVariantCanConvert<int>(action->data())) { int n = action->data().value<int>(); if(!_isOutMenu && n == 0) @@ -961,34 +1102,73 @@ void RoutePopupMenu::popupActivated(QAction* action) // Support Midi Port to Audio Input routes. if(_track->type() == MusECore::Track::AUDIO_INPUT && srcRoute.type == MusECore::Route::MIDI_PORT_ROUTE) { - int chbit = srcRoute.channel; - MusECore::Route dstRoute(t, chbit); - int mdidx = srcRoute.midiPort; - int chmask = 0; - MusECore::ciRoute iir = rl->begin(); - for (; iir != rl->end(); ++iir) + // Check for custom midi channel select action. + PixmapButtonsWidgetAction* cs_wa = dynamic_cast<PixmapButtonsWidgetAction*>(action); + if(cs_wa) { - if(iir->type == MusECore::Route::MIDI_PORT_ROUTE && iir->midiPort == mdidx) // Is there already a route to this port? + int chbits = cs_wa->currentState(); + srcRoute.channel = chbits; // Restore the desired route channels from the custom widget action state. + int mdidx = srcRoute.midiPort; + + int chmask = 0; + MusECore::ciRoute iir = rl->begin(); + for (; iir != rl->end(); ++iir) + if(iir->type == MusECore::Route::MIDI_PORT_ROUTE && iir->midiPort == mdidx) { // Is there already a route to this port? + chmask = iir->channel; // Grab the channel mask. + break; + } + + // Only if something changed... + if(chmask != chbits) { - chmask = iir->channel; // Grab the channel mask. - break; - } - } - - if ((chmask & chbit) == chbit) // Is the channel's bit(s) set? - { - //printf("routingPopupMenuActivated: removing src route ch:%d dst route ch:%d\n", srcRoute.channel, dstRoute.channel); - MusEGlobal::audio->msgRemoveRoute(srcRoute, dstRoute); + if(chmask != 0) + { + // Disconnect all existing channels. + MusECore::Route dstRoute(t, chmask); + MusEGlobal::audio->msgRemoveRoute(*iir, dstRoute); + } + if(chbits != 0) + { + // Connect desired channels. + MusECore::Route dstRoute(t, chbits); + MusEGlobal::audio->msgAddRoute(srcRoute, dstRoute); + } + MusEGlobal::audio->msgUpdateSoloStates(); + MusEGlobal::song->update(SC_ROUTE); + } + return; } - else + else { - //printf("routingPopupMenuActivated: adding src route ch:%d dst route ch:%d\n", srcRoute.channel, dstRoute.channel); - MusEGlobal::audio->msgAddRoute(srcRoute, dstRoute); - } - - MusEGlobal::audio->msgUpdateSoloStates(); - MusEGlobal::song->update(SC_ROUTE); - return; + int chbit = srcRoute.channel; + MusECore::Route dstRoute(t, chbit); + int mdidx = srcRoute.midiPort; + int chmask = 0; + MusECore::ciRoute iir = rl->begin(); + for (; iir != rl->end(); ++iir) + { + if(iir->type == MusECore::Route::MIDI_PORT_ROUTE && iir->midiPort == mdidx) // Is there already a route to this port? + { + chmask = iir->channel; // Grab the channel mask. + break; + } + } + + if ((chmask & chbit) == chbit) // Is the channel's bit(s) set? + { + //printf("routingPopupMenuActivated: removing src route ch:%d dst route ch:%d\n", srcRoute.channel, dstRoute.channel); + MusEGlobal::audio->msgRemoveRoute(srcRoute, dstRoute); + } + else + { + //printf("routingPopupMenuActivated: adding src route ch:%d dst route ch:%d\n", srcRoute.channel, dstRoute.channel); + MusEGlobal::audio->msgAddRoute(srcRoute, dstRoute); + } + + MusEGlobal::audio->msgUpdateSoloStates(); + MusEGlobal::song->update(SC_ROUTE); + return; + } } MusECore::Route dstRoute(t, srcRoute.channel, srcRoute.channels); @@ -1020,13 +1200,13 @@ void RoutePopupMenu::popupActivated(QAction* action) void RoutePopupMenu::prepare() { - _pup->disconnect(); - _pup->clear(); + ///disconnect(); + ///clear(); if(!_track) return; - connect(_pup, SIGNAL(triggered(QAction*)), SLOT(popupActivated(QAction*))); + connect(this, SIGNAL(triggered(QAction*)), SLOT(popupActivated(QAction*))); if(_track->isMidiTrack()) { @@ -1055,11 +1235,11 @@ void RoutePopupMenu::prepare() //if(!md) // continue; - _pup->addSeparator(); - _pup->addAction(new MenuTitleItem(tr("Soloing chain"), _pup)); - PopupMenu* subp = new PopupMenu(_pup, true); + addSeparator(); + addAction(new MenuTitleItem(tr("Soloing chain"), this)); + PopupMenu* subp = new PopupMenu(this, true); subp->setTitle(tr("Audio returns")); - _pup->addMenu(subp); + addMenu(subp); MusECore::InputList* al = MusEGlobal::song->inputs(); for (MusECore::ciAudioInput i = al->begin(); i != al->end(); ++i) @@ -1096,19 +1276,26 @@ void RoutePopupMenu::prepare() } if(pi == MIDI_PORTS) { - act = _pup->addAction(tr("Warning: No input devices!")); + act = addAction(tr("Warning: No input devices!")); act->setCheckable(false); act->setData(-1); - _pup->addSeparator(); + addSeparator(); } - act = _pup->addAction(QIcon(*settings_midiport_softsynthsIcon), tr("Open midi config...")); + act = addAction(QIcon(*settings_midiport_softsynthsIcon), tr("Open midi config...")); act->setCheckable(false); act->setData(gid); - _pup->addSeparator(); + addSeparator(); ++gid; - _pup->addAction(new MenuTitleItem("Input port/device", _pup)); - +#ifdef _USE_CUSTOM_WIDGET_ACTIONS_ + + PixmapButtonsHeaderWidgetAction* wa_hdr = new PixmapButtonsHeaderWidgetAction("Input port/device", darkRedLedIcon, MIDI_CHANNELS, this); + addAction(wa_hdr); + ++gid; +#else + addAction(new MenuTitleItem("Input port/device", this)); +#endif + for(int i = 0; i < MIDI_PORTS; ++i) { // NOTE: Could possibly list all devices, bypassing ports, but no, let's stick with ports. @@ -1142,7 +1329,19 @@ void RoutePopupMenu::prepare() if(!md && ir == rl->end()) continue; - PopupMenu* subp = new PopupMenu(_pup, true); +#ifdef _USE_CUSTOM_WIDGET_ACTIONS_ + + PixmapButtonsWidgetAction* wa = new PixmapButtonsWidgetAction(QString::number(i + 1) + ":" + md->name(), + redLedIcon, darkRedLedIcon, MIDI_CHANNELS, chanmask, this); + MusECore::Route srcRoute(i, 0); // Ignore the routing channels - our action holds the channels. + //wa->setData(id++); + wa->setData(qVariantFromValue(srcRoute)); + addAction(wa); + ++gid; + +#else + + PopupMenu* subp = new PopupMenu(this, true); subp->setTitle(QString("%1:").arg(i+1) + (md ? md->name() : tr("<none>"))); for(int ch = 0; ch < MIDI_CHANNELS; ++ch) @@ -1162,7 +1361,10 @@ void RoutePopupMenu::prepare() MusECore::Route togRoute(i, (1 << MIDI_CHANNELS) - 1); // Set all channel bits. act->setData(qVariantFromValue(togRoute)); ++gid; - _pup->addMenu(subp); + addMenu(subp); + +#endif // _USE_CUSTOM_WIDGET_ACTIONS_ + } #if 0 @@ -1242,18 +1444,18 @@ void RoutePopupMenu::prepare() { char buffer[128]; snprintf(buffer, 128, "%s %d", tr("Channel").toLatin1().constData(), i+1); - MenuTitleItem* titel = new MenuTitleItem(QString(buffer), _pup); - _pup->addAction(titel); + MenuTitleItem* titel = new MenuTitleItem(QString(buffer), this); + addAction(titel); if(!MusEGlobal::checkAudioDevice()) { - _pup->clear(); + clear(); return; } std::list<QString> ol = MusEGlobal::audioDevice->inputPorts(); for(std::list<QString>::iterator ip = ol.begin(); ip != ol.end(); ++ip) { - act = _pup->addAction(*ip); + act = addAction(*ip); act->setCheckable(true); MusECore::Route dst(*ip, true, i, MusECore::Route::JACK_ROUTE); @@ -1269,42 +1471,42 @@ void RoutePopupMenu::prepare() } } if(i+1 != channel) - _pup->addSeparator(); + addSeparator(); } // // Display using separate menu for audio inputs: // - _pup->addSeparator(); - _pup->addAction(new MenuTitleItem(tr("Soloing chain"), _pup)); - PopupMenu* subp = new PopupMenu(_pup, true); + addSeparator(); + addAction(new MenuTitleItem(tr("Soloing chain"), this)); + PopupMenu* subp = new PopupMenu(this, true); subp->setTitle(tr("Audio returns")); - _pup->addMenu(subp); + addMenu(subp); gid = addInPorts(t, subp, gid, -1, -1, true); // // Display all in the same menu: // - //_pup->addSeparator(); - //MenuTitleItem* title = new MenuTitleItem(tr("Audio returns"), _pup); - //_pup->addAction(title); - //gid = addInPorts(t, _pup, gid, -1, -1, true); + //addSeparator(); + //MenuTitleItem* title = new MenuTitleItem(tr("Audio returns"), this); + //addAction(title); + //gid = addInPorts(t, this, gid, -1, -1, true); } break; case MusECore::Track::AUDIO_SOFTSYNTH: - gid = addMultiChannelPorts(t, _pup, gid, true); + gid = addMultiChannelPorts(t, this, gid, true); break; case MusECore::Track::AUDIO_INPUT: case MusECore::Track::WAVE: case MusECore::Track::AUDIO_GROUP: case MusECore::Track::AUDIO_AUX: - gid = addWavePorts( t, _pup, gid, -1, -1, true); - gid = addOutPorts( t, _pup, gid, -1, -1, true); - gid = addGroupPorts( t, _pup, gid, -1, -1, true); - gid = nonSyntiTrackAddSyntis(t, _pup, gid, true); + gid = addWavePorts( t, this, gid, -1, -1, true); + gid = addOutPorts( t, this, gid, -1, -1, true); + gid = addGroupPorts( t, this, gid, -1, -1, true); + gid = nonSyntiTrackAddSyntis(t, this, gid, true); break; default: - _pup->clear(); + clear(); return; } } @@ -1327,18 +1529,18 @@ void RoutePopupMenu::prepare() { char buffer[128]; snprintf(buffer, 128, "%s %d", tr("Channel").toLatin1().constData(), i+1); - MenuTitleItem* titel = new MenuTitleItem(QString(buffer), _pup); - _pup->addAction(titel); + MenuTitleItem* titel = new MenuTitleItem(QString(buffer), this); + addAction(titel); if(!MusEGlobal::checkAudioDevice()) { - _pup->clear(); + clear(); return; } std::list<QString> ol = MusEGlobal::audioDevice->outputPorts(); for(std::list<QString>::iterator ip = ol.begin(); ip != ol.end(); ++ip) { - act = _pup->addAction(*ip); + act = addAction(*ip); act->setCheckable(true); MusECore::Route dst(*ip, true, i, MusECore::Route::JACK_ROUTE); @@ -1354,59 +1556,59 @@ void RoutePopupMenu::prepare() } } if(i+1 != channel) - _pup->addSeparator(); + addSeparator(); } // // Display using separate menus for midi ports and audio outputs: // - _pup->addSeparator(); - _pup->addAction(new MenuTitleItem(tr("Soloing chain"), _pup)); - PopupMenu* subp = new PopupMenu(_pup, true); + addSeparator(); + addAction(new MenuTitleItem(tr("Soloing chain"), this)); + PopupMenu* subp = new PopupMenu(this, true); subp->setTitle(tr("Audio sends")); - _pup->addMenu(subp); + addMenu(subp); gid = addOutPorts(t, subp, gid, -1, -1, false); - subp = new PopupMenu(_pup, true); + subp = new PopupMenu(this, true); subp->setTitle(tr("Midi port sends")); - _pup->addMenu(subp); + addMenu(subp); addMidiPorts(t, subp, gid, false); // // Display all in the same menu: // - //_pup->addAction(new MenuTitleItem(tr("Audio sends"), _pup)); - //gid = addOutPorts(t, _pup, gid, -1, -1, false); - //_pup->addSeparator(); - //_pup->addAction(new MenuTitleItem(tr("Midi sends"), _pup)); - //addMidiPorts(t, _pup, gid, false); + //addAction(new MenuTitleItem(tr("Audio sends"), this)); + //gid = addOutPorts(t, this, gid, -1, -1, false); + //addSeparator(); + //addAction(new MenuTitleItem(tr("Midi sends"), this)); + //addMidiPorts(t, this, gid, false); } break; case MusECore::Track::AUDIO_OUTPUT: - gid = addWavePorts( t, _pup, gid, -1, -1, false); - gid = addInPorts( t, _pup, gid, -1, -1, false); - gid = addGroupPorts(t, _pup, gid, -1, -1, false); - gid = addAuxPorts( t, _pup, gid, -1, -1, false); - gid = nonSyntiTrackAddSyntis(t, _pup, gid, false); + gid = addWavePorts( t, this, gid, -1, -1, false); + gid = addInPorts( t, this, gid, -1, -1, false); + gid = addGroupPorts(t, this, gid, -1, -1, false); + gid = addAuxPorts( t, this, gid, -1, -1, false); + gid = nonSyntiTrackAddSyntis(t, this, gid, false); break; case MusECore::Track::WAVE: - gid = addWavePorts( t, _pup, gid, -1, -1, false); - gid = addInPorts( t, _pup, gid, -1, -1, false); - gid = addGroupPorts(t, _pup, gid, -1, -1, false); - gid = addAuxPorts( t, _pup, gid, -1, -1, false); - gid = nonSyntiTrackAddSyntis(t, _pup, gid, false); + gid = addWavePorts( t, this, gid, -1, -1, false); + gid = addInPorts( t, this, gid, -1, -1, false); + gid = addGroupPorts(t, this, gid, -1, -1, false); + gid = addAuxPorts( t, this, gid, -1, -1, false); + gid = nonSyntiTrackAddSyntis(t, this, gid, false); break; case MusECore::Track::AUDIO_GROUP: - gid = addWavePorts( t, _pup, gid, -1, -1, false); - gid = addInPorts( t, _pup, gid, -1, -1, false); - gid = addGroupPorts(t, _pup, gid, -1, -1, false); - gid = addAuxPorts( t, _pup, gid, -1, -1, false); - gid = nonSyntiTrackAddSyntis(t, _pup, gid, false); + gid = addWavePorts( t, this, gid, -1, -1, false); + gid = addInPorts( t, this, gid, -1, -1, false); + gid = addGroupPorts(t, this, gid, -1, -1, false); + gid = addAuxPorts( t, this, gid, -1, -1, false); + gid = nonSyntiTrackAddSyntis(t, this, gid, false); break; case MusECore::Track::AUDIO_SOFTSYNTH: - gid = addMultiChannelPorts(t, _pup, gid, false); + gid = addMultiChannelPorts(t, this, gid, false); break; default: - _pup->clear(); + clear(); return; } } @@ -1421,7 +1623,7 @@ void RoutePopupMenu::exec(MusECore::Track* track, bool isOutput) _isOutMenu = isOutput; } prepare(); - _pup->exec(); + PopupMenu::exec(); } void RoutePopupMenu::exec(const QPoint& p, MusECore::Track* track, bool isOutput) @@ -1432,7 +1634,7 @@ void RoutePopupMenu::exec(const QPoint& p, MusECore::Track* track, bool isOutput _isOutMenu = isOutput; } prepare(); - _pup->exec(p); + PopupMenu::exec(p); } void RoutePopupMenu::popup(const QPoint& p, MusECore::Track* track, bool isOutput) @@ -1443,7 +1645,7 @@ void RoutePopupMenu::popup(const QPoint& p, MusECore::Track* track, bool isOutpu _isOutMenu = isOutput; } prepare(); - _pup->popup(p); + PopupMenu::popup(p); } } // namespace MusEGui |