diff options
Diffstat (limited to 'muse2/muse/confmport.cpp')
-rw-r--r-- | muse2/muse/confmport.cpp | 178 |
1 files changed, 138 insertions, 40 deletions
diff --git a/muse2/muse/confmport.cpp b/muse2/muse/confmport.cpp index bea2e714..422de8cd 100644 --- a/muse2/muse/confmport.cpp +++ b/muse2/muse/confmport.cpp @@ -57,7 +57,8 @@ extern std::vector<Synth*> synthis; enum { DEVCOL_NO = 0, DEVCOL_GUI, DEVCOL_REC, DEVCOL_PLAY, DEVCOL_INSTR, DEVCOL_NAME, //DEVCOL_STATE }; - DEVCOL_ROUTES, DEVCOL_STATE }; + //DEVCOL_ROUTES, DEVCOL_STATE }; + DEVCOL_INROUTES, DEVCOL_OUTROUTES, DEVCOL_STATE }; // p3.3.55 //--------------------------------------------------------- // mdevViewItemRenamed @@ -156,6 +157,22 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) dev->setOpenFlags(openFlags); midiSeq->msgSetMidiDevice(port, dev); // reopen device item->setPixmap(DEVCOL_REC, openFlags & 2 ? *dotIcon : *dothIcon); + + // p3.3.55 + if(dev->deviceType() == MidiDevice::JACK_MIDI) + { + if(dev->openFlags() & 2) + { + //item->setPixmap(DEVCOL_INROUTES, *buttondownIcon); + item->setText(DEVCOL_INROUTES, tr("in")); + } + else + { + //item->setPixmap(DEVCOL_INROUTES, *buttondownIcon); + item->setText(DEVCOL_INROUTES, ""); + } + } + //break; return; @@ -167,10 +184,28 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) dev->setOpenFlags(openFlags); midiSeq->msgSetMidiDevice(port, dev); // reopen device item->setPixmap(DEVCOL_PLAY, openFlags & 1 ? *dotIcon : *dothIcon); + + // p3.3.55 + if(dev->deviceType() == MidiDevice::JACK_MIDI) + { + if(dev->openFlags() & 1) + { + //item->setPixmap(DEVCOL_OUTROUTES, *buttondownIcon); + item->setText(DEVCOL_OUTROUTES, tr("out")); + } + else + { + //item->setPixmap(DEVCOL_OUTROUTES, *buttondownIcon); + item->setText(DEVCOL_OUTROUTES, ""); + } + } + //break; return; - case DEVCOL_ROUTES: + //case DEVCOL_ROUTES: + case DEVCOL_INROUTES: // p3.3.55 + case DEVCOL_OUTROUTES: { if(!checkAudioDevice()) return; @@ -187,10 +222,13 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) if(dev->deviceType() != MidiDevice::JACK_MIDI) return; - if(!dev->rwFlags() & 3) + //if(!(dev->rwFlags() & 3)) + //if(!(dev->rwFlags() & ((col == DEVCOL_OUTROUTES) ? 1 : 2))) // p3.3.55 + if(!(dev->openFlags() & ((col == DEVCOL_OUTROUTES) ? 1 : 2))) return; - RouteList* rl = (dev->rwFlags() & 1) ? dev->outRoutes() : dev->inRoutes(); + //RouteList* rl = (dev->rwFlags() & 1) ? dev->outRoutes() : dev->inRoutes(); + RouteList* rl = (col == DEVCOL_OUTROUTES) ? dev->outRoutes() : dev->inRoutes(); // p3.3.55 Q3PopupMenu* pup = 0; int gid = 0; @@ -204,7 +242,9 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) gid = 0; // Jack input ports if device is writable, and jack output ports if device is readable. - sl = (dev->rwFlags() & 1) ? audioDevice->inputPorts(true, _showAliases) : audioDevice->outputPorts(true, _showAliases); + //sl = (dev->rwFlags() & 1) ? audioDevice->inputPorts(true, _showAliases) : audioDevice->outputPorts(true, _showAliases); + // p3.3.55 + sl = (col == DEVCOL_OUTROUTES) ? audioDevice->inputPorts(true, _showAliases) : audioDevice->outputPorts(true, _showAliases); //for (int i = 0; i < channel; ++i) //{ @@ -226,7 +266,8 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) //int id = pup->insertItem(*ip, gid); pup->insertItem(*ip, gid); //Route dst(*ip, true, i); - Route rt(*ip, (dev->rwFlags() & 1), -1, Route::JACK_ROUTE); + //Route rt(*ip, (dev->rwFlags() & 1), -1, Route::JACK_ROUTE); + Route rt(*ip, (col == DEVCOL_OUTROUTES), -1, Route::JACK_ROUTE); // p3.3.55 for(iRoute ir = rl->begin(); ir != rl->end(); ++ir) { if (*ir == rt) @@ -267,7 +308,8 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) QString s(pup->text(n)); - if(dev->rwFlags() & 1) // Writable + //if(dev->rwFlags() & 1) // Writable + if(col == DEVCOL_OUTROUTES) // Writable p3.3.55 { Route srcRoute(dev, -1); Route dstRoute(s, true, -1, Route::JACK_ROUTE); @@ -286,7 +328,8 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) audio->msgAddRoute(srcRoute, dstRoute); } else - if(dev->rwFlags() & 2) // Readable + //if(dev->rwFlags() & 2) // Readable + //if(col == DEVCOL_INROUTES) // Readable p3.3.55 { Route srcRoute(s, false, -1, Route::JACK_ROUTE); Route dstRoute(dev, -1); @@ -344,8 +387,12 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) pup->setCheckable(true); - pup->insertItem(tr("Create") + QT_TR_NOOP(" Jack") + tr(" input"), 0); - pup->insertItem(tr("Create") + QT_TR_NOOP(" Jack") + tr(" output"), 1); + // Could do it this way... + //pup->insertItem(tr("Create") + QT_TR_NOOP(" Jack") + tr(" input"), 1); + //pup->insertItem(tr("Create") + QT_TR_NOOP(" Jack") + tr(" output"), 2); + //pup->insertItem(tr("Create") + QT_TR_NOOP(" Jack") + tr(" combo"), 0); // p3.3.55 + // ... or keep it simple and let the user click on the green lights instead. + pup->insertItem(tr("Create") + QT_TR_NOOP(" Jack") + tr(" device"), 0); // typedef std::map<std::string, int > asmap; typedef std::map<std::string, int >::iterator imap; @@ -354,9 +401,9 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) asmap mapJACK; asmap mapSYNTH; - int aix = 2; - int jix = 0x10000000; - int six = 0x20000000; + int aix = 0x10000000; + int jix = 0x20000000; + int six = 0x30000000; for(iMidiDevice i = midiDevices.begin(); i != midiDevices.end(); ++i) { //devALSA = dynamic_cast<MidiAlsaDevice*>(*i); @@ -387,7 +434,7 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) } //int sz = midiDevices.size(); - if(!mapALSA.empty()) + //if(!mapALSA.empty()) { pup->insertSeparator(); // pup->insertItem(new MenuTitleItem(QT_TR_NOOP("ALSA:"))); ddskrjo @@ -424,22 +471,22 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) } } - if(!mapJACK.empty()) + if(!mapSYNTH.empty()) { pup->insertSeparator(); - //pup->insertItem(new MenuTitleItem(QT_TR_NOOP("JACK:"))); ddskrjo + //pup->insertItem(new MenuTitleItem(QT_TR_NOOP("SYNTH:"))); ddskrjo - for(imap i = mapJACK.begin(); i != mapJACK.end(); ++i) + for(imap i = mapSYNTH.begin(); i != mapSYNTH.end(); ++i) { int idx = i->second; //if(idx > sz) // continue; QString s(i->first.c_str()); - MidiDevice* md = midiDevices.find(s, MidiDevice::JACK_MIDI); + MidiDevice* md = midiDevices.find(s, MidiDevice::SYNTH_MIDI); if(md) { //if(!dynamic_cast<MidiJackDevice*>(md)) - if(md->deviceType() != MidiDevice::JACK_MIDI) + if(md->deviceType() != MidiDevice::SYNTH_MIDI) continue; //pup->insertItem(QT_TR_NOOP(md->name()), idx + 3); @@ -461,22 +508,27 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) } } - if(!mapSYNTH.empty()) + //if(!mapJACK.empty()) { pup->insertSeparator(); - //pup->insertItem(new MenuTitleItem(QT_TR_NOOP("SYNTH:"))); ddskrjo + //pup->insertItem(new MenuTitleItem(QT_TR_NOOP("JACK:"))); ddskrjo - for(imap i = mapSYNTH.begin(); i != mapSYNTH.end(); ++i) + //pup->insertItem(tr("<Create input>"), 1); + //pup->insertItem(tr("<Create output>"), 2); + //pup->insertItem(tr("<Create combo>"), 0); // p3.3.55 + //pup->insertSeparator(); + + for(imap i = mapJACK.begin(); i != mapJACK.end(); ++i) { int idx = i->second; //if(idx > sz) // continue; QString s(i->first.c_str()); - MidiDevice* md = midiDevices.find(s, MidiDevice::SYNTH_MIDI); + MidiDevice* md = midiDevices.find(s, MidiDevice::JACK_MIDI); if(md) { //if(!dynamic_cast<MidiJackDevice*>(md)) - if(md->deviceType() != MidiDevice::SYNTH_MIDI) + if(md->deviceType() != MidiDevice::JACK_MIDI) continue; //pup->insertItem(QT_TR_NOOP(md->name()), idx + 3); @@ -496,7 +548,7 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) //} } } - } + } n = pup->exec(ppt, 0); if(n == -1) @@ -509,21 +561,43 @@ void MPConfig::rbClicked(Q3ListViewItem* item, const QPoint& cpt, int col) //printf("MPConfig::rbClicked n:%d\n", n); MidiDevice* sdev = 0; - if(n < 2) + if(n < 0x10000000) { delete pup; - if(n == 0) - sdev = MidiJackDevice::createJackMidiDevice(QString(), 2); // 2: Readable. - else - if(n == 1) - sdev = MidiJackDevice::createJackMidiDevice(QString(), 1); // 1:Writable. + //if(n == 0) // p3.3.55 + // sdev = MidiJackDevice::createJackMidiDevice(QString(), 3); // 3:Readable/Writable. + //else + //if(n == 1) + // sdev = MidiJackDevice::createJackMidiDevice(QString(), 2); // 2: Readable. + //else + //if(n == 2) + // sdev = MidiJackDevice::createJackMidiDevice(QString(), 1); // 1:Writable. + if(n <= 2) // p3.3.55 + { + sdev = MidiJackDevice::createJackMidiDevice(); + if(sdev) + { + int of = 3; + switch(n) + { + case 0: of = 3; break; + case 1: of = 2; break; + case 2: of = 1; break; + } + sdev->setOpenFlags(of); + } + } } else { - int typ = MidiDevice::ALSA_MIDI; - if(n >= 0x10000000) + int typ; + if(n < 0x20000000) + typ = MidiDevice::ALSA_MIDI; + else + if(n < 0x30000000) typ = MidiDevice::JACK_MIDI; - if(n >= 0x20000000) + else + //if(n < 0x40000000) typ = MidiDevice::SYNTH_MIDI; sdev = midiDevices.find(pup->text(n), typ); @@ -603,7 +677,9 @@ void MPHeaderTip::maybeTip(const QPoint &pos) case DEVCOL_PLAY: p = Q3Header::tr("Enable writing"); break; case DEVCOL_INSTR: p = Q3Header::tr("Port instrument"); break; case DEVCOL_NAME: p = Q3Header::tr("Midi device name. Click to edit (Jack)"); break; - case DEVCOL_ROUTES: p = Q3Header::tr("Jack midi ports"); break; + //case DEVCOL_ROUTES: p = Q3Header::tr("Jack midi ports"); break; + case DEVCOL_INROUTES: p = Q3Header::tr("Connections from Jack Midi outputs"); break; + case DEVCOL_OUTROUTES: p = Q3Header::tr("Connections to Jack Midi inputs"); break; case DEVCOL_STATE: p = Q3Header::tr("Device state"); break; default: return; } @@ -634,8 +710,12 @@ QString MPWhatsThis::text(const QPoint& pos) " this port number. Click to edit Jack midi name."); case DEVCOL_INSTR: return Q3Header::tr("Instrument connected to port"); - case DEVCOL_ROUTES: - return Q3Header::tr("Jack midi ports"); + //case DEVCOL_ROUTES: + // return Q3Header::tr("Jack midi ports"); + case DEVCOL_INROUTES: + return Q3Header::tr("Connections from Jack Midi output ports"); + case DEVCOL_OUTROUTES: + return Q3Header::tr("Connections to Jack Midi input ports"); case DEVCOL_STATE: return Q3Header::tr("State: result of opening the device"); default: @@ -665,7 +745,9 @@ MPConfig::MPConfig(QWidget* parent, char* name) mdevView->addColumn(tr("O")); mdevView->addColumn(tr("Instrument"), 120); mdevView->addColumn(tr("Device Name"), 120); - mdevView->addColumn(tr("Routing"), 80); + //mdevView->addColumn(tr("Routing"), 80); + mdevView->addColumn(tr("In routes"), 80); + mdevView->addColumn(tr("Out routes"), 80); mdevView->addColumn(tr("State")); mdevView->setFocusPolicy(Qt::NoFocus); @@ -784,8 +866,24 @@ void MPConfig::songChanged(int flags) //if(dev && dynamic_cast<MidiJackDevice*>(dev)) if(dev && dev->deviceType() == MidiDevice::JACK_MIDI) { - item->setPixmap(DEVCOL_ROUTES, *buttondownIcon); - item->setText(DEVCOL_ROUTES, tr("routes")); + //item->setPixmap(DEVCOL_ROUTES, *buttondownIcon); + //item->setText(DEVCOL_ROUTES, tr("routes")); + + // p3.3.55 + if(dev->rwFlags() & 1) + //if(dev->openFlags() & 1) + { + item->setPixmap(DEVCOL_OUTROUTES, *buttondownIcon); + if(dev->openFlags() & 1) + item->setText(DEVCOL_OUTROUTES, tr("out")); + } + if(dev->rwFlags() & 2) + //if(dev->openFlags() & 2) + { + item->setPixmap(DEVCOL_INROUTES, *buttondownIcon); + if(dev->openFlags() & 2) + item->setText(DEVCOL_INROUTES, tr("in")); + } } mdevView->insertItem(item); |