Audio: reformat to make pycharm happy

it also spotted 2 real bug, so good work pycharm
This commit is contained in:
Davide Andreoli 2020-04-24 17:11:42 +02:00
parent 3641ce6480
commit 146d656a1e
1 changed files with 52 additions and 44 deletions

View File

@ -21,12 +21,12 @@ __gadget_auth__ = 'DaveMDS'
__gadget_mail__ = 'dave@gurumeditation.it'
__gadget_desc__ = 'The complete audio gadget.'
__gadget_vapi__ = 2
__gadget_opts__ = { 'popup_on_desktop': True }
__gadget_opts__ = {'popup_on_desktop': True}
# def DBG(msg):
# print("AUDIO: %s" % msg)
# sys.stdout.flush()
# print("AUDIO: %s" % msg)
# sys.stdout.flush()
_instance = None
@ -41,7 +41,7 @@ class Gadget(e.Gadget):
super().__init__()
self.player_objs = {} # key: Player instance val: (list of edje objs)
self.channel_objs = {} # key: Channel instance val: (list of elm Slider)
self.channel_objs = {} # key: Channel instance val: (list of elm Slider)
self.mpris = Mpris2_Client()
self.pulse = PulseAudio_Client()
@ -52,7 +52,7 @@ class Gadget(e.Gadget):
obj.signal_callback_add('mouse,down,2', 'over', self.speaker_click_cb)
obj.signal_callback_add('mouse,wheel,*', 'over', self.speaker_wheel_cb)
obj.size_hint_aspect = evas.EVAS_ASPECT_CONTROL_BOTH , 16, 16
obj.size_hint_aspect = evas.EVAS_ASPECT_CONTROL_BOTH, 16, 16
self.speaker_update(obj)
def instance_destroyed(self, obj):
@ -88,12 +88,12 @@ class Gadget(e.Gadget):
main_box.show()
players_box = elm.Box(main_box, size_hint_expand=EXPAND_HORIZ,
size_hint_fill=FILL_HORIZ)
size_hint_fill=FILL_HORIZ)
main_box.pack_end(players_box)
players_box.show()
volumes_box = elm.Box(main_box, size_hint_expand=EXPAND_HORIZ,
size_hint_fill=FILL_HORIZ)
size_hint_fill=FILL_HORIZ)
main_box.pack_end(volumes_box)
volumes_box.show()
@ -109,7 +109,7 @@ class Gadget(e.Gadget):
for ch in self.pulse.channels:
self.popup_volume_add(main_box, ch)
else:
lb = elm.Label(popup, text='Cannot connect to PulseAudio')
lb = elm.Label(volumes_box, text='Cannot connect to PulseAudio')
volumes_box.pack_start(lb)
lb.show()
@ -132,10 +132,10 @@ class Gadget(e.Gadget):
o = elm.Layout(popup)
e.theme_object_set(o, 'audio', 'player')
o.signal_callback_add('act,play', '', lambda o,sig,src: player.play())
o.signal_callback_add('act,prev', '', lambda o,sig,src: player.prev())
o.signal_callback_add('act,next', '', lambda o,sig,src: player.next())
o.signal_callback_add('act,rais', '', lambda o,sig,src: player.rais())
o.signal_callback_add('act,play', '', lambda obj, sig, src: player.play())
o.signal_callback_add('act,prev', '', lambda obj, sig, src: player.prev())
o.signal_callback_add('act,next', '', lambda obj, sig, src: player.next())
o.signal_callback_add('act,rais', '', lambda obj, sig, src: player.rais())
self.player_update(o, player)
o.show()
@ -144,7 +144,7 @@ class Gadget(e.Gadget):
popup.data['players_box'].pack_end(o)
# keep track of this obj in the player_objs dict
if not player in self.player_objs:
if player not in self.player_objs:
self.player_objs[player] = []
self.player_objs[player].append(o)
@ -164,7 +164,8 @@ class Gadget(e.Gadget):
# remove the player from our list
del self.player_objs[player]
def player_update(self, obj, player):
@staticmethod
def player_update(obj, player):
# player name
obj.part_text_set('player_name', player.label or player.name)
@ -186,7 +187,8 @@ class Gadget(e.Gadget):
# cover image
img = obj.content_unset('cover.swallow')
if img: img.delete()
if img:
img.delete()
if 'mpris:artUrl' in player.metadata:
fname = url_unquote(player.metadata['mpris:artUrl'])
@ -199,9 +201,8 @@ class Gadget(e.Gadget):
def popup_volume_add(self, popup, channel):
sl = elm.Slider(popup, text=channel.name, min_max=(0, 65500),
span_size=150,
size_hint_expand=EXPAND_HORIZ,
size_hint_fill=FILL_HORIZ)
span_size=150, size_hint_expand=EXPAND_HORIZ,
size_hint_fill=FILL_HORIZ)
sl.value = channel.volume
sl.disabled = True if channel.muted else False
sl.callback_changed_add(self.popup_slider_changed_cb, channel)
@ -215,28 +216,32 @@ class Gadget(e.Gadget):
popup.data['volumes_box'].pack_start(sl)
# keep track of this obj in the channel_objs dict
if not channel in self.channel_objs:
if channel not in self.channel_objs:
self.channel_objs[channel] = []
self.channel_objs[channel].append(sl)
def popup_slider_changed_cb(self, slider, channel):
@staticmethod
def popup_slider_changed_cb(slider, channel):
channel.volume_set(slider.value)
def popup_slider_click_cb(self, slider, event, channel):
@staticmethod
def popup_slider_click_cb(slider, event, channel):
if event.button == 2:
channel.mute_toggle()
def popup_slider_drag_start_cb(self, slider):
@staticmethod
def popup_slider_drag_start_cb(slider):
slider.data['dragging'] = True
def popup_slider_drag_stop_cb(self, slider):
@staticmethod
def popup_slider_drag_stop_cb(slider):
del slider.data['dragging']
def volume_changed(self, channel):
# update all the sliders (except the one currently dragged)
if channel in self.channel_objs:
for sl in self.channel_objs[channel]:
if not 'dragging' in sl.data:
if 'dragging' not in sl.data:
sl.value = channel.volume
# update all the speakers
for speaker in self._instances:
@ -265,7 +270,7 @@ class Gadget(e.Gadget):
class Mpris2_Client(object):
BASE_PATH = 'org.mpris.MediaPlayer2.'
def __init__ (self):
def __init__(self):
self.players = []
self.bus = dbus.SessionBus(mainloop=DBusEcoreMainLoop())
@ -306,9 +311,9 @@ class Mpris2_Player(object):
def __init__(self, bus, obj_path):
self.obj_path = obj_path
self.label = None
self.metadata = None # metadata dict as per mpris2 specs
self.playback_status = 'Stopped' # or 'Playing' or 'Paused'
self.volume = 0.0 # range: 0.0 - 1.0
self.metadata = None # metadata dict as per mpris2 specs
self.playback_status = 'Stopped' # or 'Playing' or 'Paused'
self.volume = 0.0 # range: 0.0 - 1.0
self.proxy = bus.get_object(self.obj_path, '/org/mpris/MediaPlayer2')
@ -383,8 +388,8 @@ class PulseAudio_Client(object):
PULSE_IFACE = 'org.PulseAudio.Core1'
STREAM_IFACE = 'org.PulseAudio.Core1.Stream'
DEVICE_IFACE = 'org.PulseAudio.Core1.Device'
def __init__ (self):
def __init__(self):
self.conn = None
self.srv_addr = None
self.channels = []
@ -392,11 +397,13 @@ class PulseAudio_Client(object):
self.try_to_connect()
def address_lookup(self):
@staticmethod
def address_lookup():
""" Search the address of the pulse dbus socket """
# 1. try the environment var
addr = os.environ.get('PULSE_DBUS_SERVER')
if addr: return addr
if addr:
return addr
# 2. well-known system-wide daemon socket
if os.access('/run/pulse/dbus-socket', os.R_OK | os.W_OK):
@ -412,20 +419,20 @@ class PulseAudio_Client(object):
return None
def try_to_connect(self):
print("PULSE: try_to_connect")
# print("PULSE: try_to_connect")
if self.conn is None and self.connect() is False:
ecore.Timer(5.0, self.try_to_connect)
return ecore.ECORE_CALLBACK_CANCEL
def connect(self):
print("PULSE: connect %d", self.exe_count)
# print("PULSE: connect %d", self.exe_count)
self.srv_addr = self.address_lookup()
try:
self.conn = dbus.connection.Connection(self.srv_addr,
mainloop=DBusEcoreMainLoop())
except:
if self.exe_count < 3:
print("PULSE: Exe")
# print("PULSE: Exe")
self.exe_count += 1
x = ecore.Exe('pulseaudio --start')
x.on_del_event_add(lambda *a: self.connect())
@ -468,9 +475,9 @@ class PulseAudio_Client(object):
def channel_signal_cb(self, *args, signal):
obj_path = args[0]
if signal == 'NewSink':
ch = self.sink_add(obj_path)
self.sink_add(obj_path)
elif signal == 'NewPlaybackStream':
ch = self.stream_add(obj_path)
self.stream_add(obj_path)
elif signal in ('SinkRemoved', 'PlaybackStreamRemoved'):
for ch in self.channels:
if ch.obj.object_path == obj_path:
@ -488,8 +495,9 @@ class PulseAudio_Client(object):
ch.mute_changed_signal_cb(*args)
break
def _fuckyoupulse(self, ay):
return ''.join([ chr(byte) for byte in ay ])
@staticmethod
def _fuckyoupulse(ay):
return ''.join([chr(byte) for byte in ay])
def all_channels_add(self):
obj = self.conn.get_object(self.PULSE_IFACE, self.PULSE_OBJ)
@ -511,7 +519,7 @@ class PulseAudio_Client(object):
sinks.insert(0, default_sink)
for obj_path in sinks:
self.sink_add(obj_path)
self.sink_add(obj_path)
for obj_path in streams:
self.stream_add(obj_path)
@ -523,8 +531,8 @@ class PulseAudio_Client(object):
dbus_interface=dbus.PROPERTIES_IFACE)
mute = obj.Get(self.STREAM_IFACE, 'Mute',
dbus_interface=dbus.PROPERTIES_IFACE)
props = obj.Get(self.STREAM_IFACE, 'PropertyList',
dbus_interface=dbus.PROPERTIES_IFACE)
props = obj.Get(self.STREAM_IFACE, 'PropertyList',
dbus_interface=dbus.PROPERTIES_IFACE)
except:
return None
@ -545,8 +553,8 @@ class PulseAudio_Client(object):
dbus_interface=dbus.PROPERTIES_IFACE)
mute = obj.Get(self.DEVICE_IFACE, 'Mute',
dbus_interface=dbus.PROPERTIES_IFACE)
props = obj.Get(self.DEVICE_IFACE, 'PropertyList',
dbus_interface=dbus.PROPERTIES_IFACE)
props = obj.Get(self.DEVICE_IFACE, 'PropertyList',
dbus_interface=dbus.PROPERTIES_IFACE)
except:
return None