Browse Source

Merge 86edc05b25 into 0351f2a8db

pull/95/merge
Eugene 10 years ago
parent
commit
d7f794b558
1 changed files with 40 additions and 22 deletions
  1. +40
    -22
      src/jacksettings.py

+ 40
- 22
src/jacksettings.py View File

@@ -22,6 +22,7 @@
from PyQt4.QtCore import pyqtSlot, Qt, QSettings, QTimer, SIGNAL, SLOT
from PyQt4.QtGui import QDialog, QDialogButtonBox, QFontMetrics, QMessageBox
from sys import platform, version_info
from pprint import pprint

# ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff)
@@ -691,26 +692,47 @@ class JackSettingsW(QDialog):
# -----------------------------------------------------------------
# Helper functions

def getAlsaDeviceList(self):
alsaDeviceList = []
def getAlsaDeviceListHelper(self, mode):
'''mode can be set to "aplay" or "arecord"'''
output = getoutput("env LANG=C %s -L | grep -A1 ^dmix" % mode).split("\n")

aplay_out = getoutput("env LANG=C aplay -l").split("\n")
for line in aplay_out:
info = {}
for line in output:
line = line.strip()
if line.startswith("card "):
cardInfo = line.split(", ", 1)[0].split(": ")
cardIndex = cardInfo[0].replace("card ", "")
cardName = cardInfo[1].split(" [")[0]
if line == '--': continue
if line.startswith("dmix:"):
info = dict([n.split('=') for n in line.split(':')[1].split(',')])
continue
info['NAME'] = line

if info['CARD'] == 'Loopback': continue

desc = "hw:%(CARD)s,%(DEV)s [%(NAME)s]" % info
yield desc

def getAlsaDeviceList(self, control = None, mode = 'Duplex'):
alsaDeviceList = []

playback = []
capture = []

deviceInfo = line.split(", ", 1)[1].split(": ")
deviceIndex = deviceInfo[0].replace("device ", "")
deviceName = deviceInfo[1].split(" [")[0]
if mode in ['Duplex', 'Playback']:
playback = self.getAlsaDeviceListHelper('aplay')

if cardName != "Loopback":
fullName = "hw:%s,%s [%s]" % (cardName, deviceIndex, deviceName)
alsaDeviceList.append(fullName)
if mode in ['Duplex', 'Capture']:
capture = self.getAlsaDeviceListHelper('arecord')

result = []
if mode == 'Playback':
result = set(playback)
elif mode == 'Capture':
result = set(capture)
else:
result = set(playback).intersection(capture)

return alsaDeviceList
for line in list(result):
if control:
control(line)

def setComboBoxValue(self, box, text, split=False):
for i in range(box.count()):
@@ -760,9 +782,7 @@ class JackSettingsW(QDialog):
self.ui.obj_driver_device.clear()
if driverHasFeature("device"):
if LINUX and self.fDriverName == "alsa":
dev_list = self.getAlsaDeviceList()
for dev in dev_list:
self.ui.obj_driver_device.addItem(dev)
self.getAlsaDeviceList(self.ui.obj_driver_device.addItem)
else:
dev_list = gJackctl.GetParameterConstraint(["driver", "device"])[3]
for i in range(len(dev_list)):
@@ -777,10 +797,8 @@ class JackSettingsW(QDialog):
self.ui.obj_driver_playback.addItem("none")

if LINUX:
dev_list = self.getAlsaDeviceList()
for dev in dev_list:
self.ui.obj_driver_capture.addItem(dev)
self.ui.obj_driver_playback.addItem(dev)
self.getAlsaDeviceList(self.ui.obj_driver_capture.addItem, 'Capture')
self.getAlsaDeviceList(self.ui.obj_driver_playback.addItem, 'Playback')
else:
dev_list = gJackctl.GetParameterConstraint(["driver", "device"])[3]
for i in range(len(dev_list)):


Loading…
Cancel
Save