|
|
|
@ -95,6 +95,17 @@ class VariableOsAudioAvailable(Variable):
|
|
|
|
|
key=lambda x: x[1])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioCardMap(ReadonlyVariable):
|
|
|
|
|
"""
|
|
|
|
|
Соответствие номеров звуковых карт именам
|
|
|
|
|
"""
|
|
|
|
|
type = Variable.Types.Table
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
return [(cardid[17:-3], readFile(cardid).strip())
|
|
|
|
|
for cardid in glob.glob('/proc/asound/card[0-9]*/id')]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioData(ReadonlyTableVariable):
|
|
|
|
|
"""
|
|
|
|
|
Information about audio cards
|
|
|
|
@ -165,12 +176,46 @@ class VariableOsAudioDefaultSet(ReadonlyVariable):
|
|
|
|
|
return 'off'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioCurrent(ReadonlyVariable):
|
|
|
|
|
class VariableOsAudioCardDefault(Variable):
|
|
|
|
|
"""
|
|
|
|
|
Current default audio card
|
|
|
|
|
Идентификатор карты по умолчанию
|
|
|
|
|
"""
|
|
|
|
|
def get(self):
|
|
|
|
|
cardmap = dict(self.Get("os_audio_card_map"))
|
|
|
|
|
cardnum = self.Get('os_audio_default').split(',')[0]
|
|
|
|
|
if cardnum in cardmap:
|
|
|
|
|
return cardmap[cardnum]
|
|
|
|
|
return "0"
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioDeviceDefault(Variable):
|
|
|
|
|
"""
|
|
|
|
|
Номер устройства по умолчанию
|
|
|
|
|
"""
|
|
|
|
|
def get(self):
|
|
|
|
|
return self.Get('os_audio_default').split(',')[1]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioCardNameDefault(Variable):
|
|
|
|
|
"""
|
|
|
|
|
Название карты используемое в настройках KDE
|
|
|
|
|
"""
|
|
|
|
|
def get(self):
|
|
|
|
|
try:
|
|
|
|
|
cardnum = int(self.Get('os_audio_default').split(',')[0])
|
|
|
|
|
audionames = self.Get('os_audio_name')
|
|
|
|
|
if cardnum < len(audionames):
|
|
|
|
|
return audionames[cardnum].split(',')[0]
|
|
|
|
|
except ValueError:
|
|
|
|
|
pass
|
|
|
|
|
return "0"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioHw(Variable):
|
|
|
|
|
"""
|
|
|
|
|
Current default audio card
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def get_deprecated(self):
|
|
|
|
|
asound_data = readFile('/etc/asound.conf')
|
|
|
|
|
default_card_re = re.compile('defaults.ctl.card\s+(\d+)')
|
|
|
|
|
entry = default_card_re.search(asound_data)
|
|
|
|
@ -183,11 +228,18 @@ class VariableOsAudioCurrent(ReadonlyVariable):
|
|
|
|
|
entry = "%s,%s" % entry.groups()
|
|
|
|
|
if entry in self.Get('os_audio_id'):
|
|
|
|
|
return entry
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
res = self.Select('os_audio_id', where='os_audio_name',
|
|
|
|
|
notlike='HDMI', limit=1)
|
|
|
|
|
return res or '0,0'
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
cardmap = dict(self.Get("os_audio_card_map"))
|
|
|
|
|
value = self.get_deprecated()
|
|
|
|
|
if not value:
|
|
|
|
|
value = self.Select('os_audio_id', where='os_audio_name',
|
|
|
|
|
notlike='HDMI', limit=1) or "0,0"
|
|
|
|
|
cardnum, devicenum = value.split(",")
|
|
|
|
|
if cardnum in cardmap:
|
|
|
|
|
return "{},{}".format(cardmap[cardnum], devicenum)
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
class VariableOsAudioDefault(Variable):
|
|
|
|
|
"""
|
|
|
|
@ -202,7 +254,13 @@ class VariableOsAudioDefault(Variable):
|
|
|
|
|
self.help = _("set the default audio")
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
return self.Get('os_audio_current')
|
|
|
|
|
current = self.Get('os_audio_hw')
|
|
|
|
|
if current and "," in current:
|
|
|
|
|
cardmap = {y:x for x, y in self.Get("os_audio_card_map")}
|
|
|
|
|
cardid, devicenum = current.split(",")
|
|
|
|
|
if cardid in cardmap:
|
|
|
|
|
return "{},{}".format(cardmap[cardid], devicenum)
|
|
|
|
|
return "0,0"
|
|
|
|
|
|
|
|
|
|
def choice(self):
|
|
|
|
|
data = self.Get('os_audio_data')
|
|
|
|
|