Audio: reformat to make pycharm happy
it also spotted 2 real bug, so good work pycharm
This commit is contained in:
parent
3641ce6480
commit
146d656a1e
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue