mirror of
https://github.com/SoongNoonien/mpdevil.git
synced 2023-08-10 21:12:44 +03:00
support single mode oneshot
This commit is contained in:
parent
e644655bf7
commit
eb4b8adfb1
34
bin/mpdevil
34
bin/mpdevil
@ -456,7 +456,7 @@ class MpdEventEmitter(GObject.Object):
|
|||||||
"playlist_changed": (GObject.SignalFlags.RUN_FIRST, None, (int,)),
|
"playlist_changed": (GObject.SignalFlags.RUN_FIRST, None, (int,)),
|
||||||
"repeat": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
"repeat": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
||||||
"random": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
"random": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
||||||
"single": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
"single": (GObject.SignalFlags.RUN_FIRST, None, (str,)),
|
||||||
"consume": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
"consume": (GObject.SignalFlags.RUN_FIRST, None, (bool,)),
|
||||||
"audio": (GObject.SignalFlags.RUN_FIRST, None, (str,str,str,)),
|
"audio": (GObject.SignalFlags.RUN_FIRST, None, (str,str,str,)),
|
||||||
"bitrate": (GObject.SignalFlags.RUN_FIRST, None, (float,))
|
"bitrate": (GObject.SignalFlags.RUN_FIRST, None, (float,))
|
||||||
@ -590,7 +590,10 @@ class Client(MPDClient):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def toggle_option(self, option): # repeat, random, single, consume
|
def toggle_option(self, option): # repeat, random, single, consume
|
||||||
new_state=(int(self.status()[option])+1)%2 # toggle 0,1
|
state=self.status()[option]
|
||||||
|
if state != "1" and state != "0": # support single oneshot
|
||||||
|
state="1"
|
||||||
|
new_state=(int(state)+1)%2 # toggle 0,1
|
||||||
func=getattr(self, option)
|
func=getattr(self, option)
|
||||||
func(new_state)
|
func(new_state)
|
||||||
|
|
||||||
@ -605,8 +608,8 @@ class Client(MPDClient):
|
|||||||
self.emitter.emit("bitrate", float(val))
|
self.emitter.emit("bitrate", float(val))
|
||||||
elif key == "songid":
|
elif key == "songid":
|
||||||
self.emitter.emit("current_song_changed")
|
self.emitter.emit("current_song_changed")
|
||||||
elif key == "state":
|
elif key in ["state", "single"]:
|
||||||
self.emitter.emit("state", val)
|
self.emitter.emit(key, val)
|
||||||
elif key == "audio":
|
elif key == "audio":
|
||||||
# see: https://www.musicpd.org/doc/html/user.html#audio-output-format
|
# see: https://www.musicpd.org/doc/html/user.html#audio-output-format
|
||||||
samplerate, bits, channels=val.split(":")
|
samplerate, bits, channels=val.split(":")
|
||||||
@ -617,7 +620,7 @@ class Client(MPDClient):
|
|||||||
self.emitter.emit("volume_changed", float(val))
|
self.emitter.emit("volume_changed", float(val))
|
||||||
elif key == "playlist":
|
elif key == "playlist":
|
||||||
self.emitter.emit("playlist_changed", int(val))
|
self.emitter.emit("playlist_changed", int(val))
|
||||||
elif key in ["repeat", "random", "single", "consume"]:
|
elif key in ["repeat", "random", "consume"]:
|
||||||
if val == "1":
|
if val == "1":
|
||||||
self.emitter.emit(key, True)
|
self.emitter.emit(key, True)
|
||||||
else:
|
else:
|
||||||
@ -3226,6 +3229,7 @@ class PlaybackOptions(Gtk.Box):
|
|||||||
self._single_changed=self._client.emitter.connect("single", self._single_refresh)
|
self._single_changed=self._client.emitter.connect("single", self._single_refresh)
|
||||||
self._consume_changed=self._client.emitter.connect("consume", self._consume_refresh)
|
self._consume_changed=self._client.emitter.connect("consume", self._consume_refresh)
|
||||||
self._volume_changed=self._client.emitter.connect("volume_changed", self._volume_refresh)
|
self._volume_changed=self._client.emitter.connect("volume_changed", self._volume_refresh)
|
||||||
|
self._single_button.connect("button-press-event", self._on_single_button_press_event)
|
||||||
self._volume_button.connect("button-press-event", self._on_volume_button_press_event)
|
self._volume_button.connect("button-press-event", self._on_volume_button_press_event)
|
||||||
self._client.emitter.connect("disconnected", self._on_disconnected)
|
self._client.emitter.connect("disconnected", self._on_disconnected)
|
||||||
self._client.emitter.connect("reconnected", self._on_reconnected)
|
self._client.emitter.connect("reconnected", self._on_reconnected)
|
||||||
@ -3262,7 +3266,15 @@ class PlaybackOptions(Gtk.Box):
|
|||||||
|
|
||||||
def _single_refresh(self, emitter, val):
|
def _single_refresh(self, emitter, val):
|
||||||
self._single_button.handler_block(self._single_button_toggled)
|
self._single_button.handler_block(self._single_button_toggled)
|
||||||
self._single_button.set_active(val)
|
if val == "1":
|
||||||
|
self._single_button.get_style_context().remove_class("destructive-action")
|
||||||
|
self._single_button.set_active(True)
|
||||||
|
elif val == "oneshot":
|
||||||
|
self._single_button.get_style_context().add_class("destructive-action")
|
||||||
|
self._single_button.set_active(False)
|
||||||
|
else:
|
||||||
|
self._single_button.get_style_context().remove_class("destructive-action")
|
||||||
|
self._single_button.set_active(False)
|
||||||
self._single_button.handler_unblock(self._single_button_toggled)
|
self._single_button.handler_unblock(self._single_button_toggled)
|
||||||
|
|
||||||
def _consume_refresh(self, emitter, val):
|
def _consume_refresh(self, emitter, val):
|
||||||
@ -3285,6 +3297,14 @@ class PlaybackOptions(Gtk.Box):
|
|||||||
pop=OutputPopover(self._client, self._volume_button)
|
pop=OutputPopover(self._client, self._volume_button)
|
||||||
pop.popup()
|
pop.popup()
|
||||||
|
|
||||||
|
def _on_single_button_press_event(self, widget, event):
|
||||||
|
if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
|
state=self._client.wrapped_call("status")["single"]
|
||||||
|
if state == "oneshot":
|
||||||
|
self._client.wrapped_call("single", "0")
|
||||||
|
else:
|
||||||
|
self._client.wrapped_call("single", "oneshot")
|
||||||
|
|
||||||
def _on_reconnected(self, *args):
|
def _on_reconnected(self, *args):
|
||||||
self._repeat_button.set_sensitive(True)
|
self._repeat_button.set_sensitive(True)
|
||||||
self._random_button.set_sensitive(True)
|
self._random_button.set_sensitive(True)
|
||||||
@ -3300,7 +3320,7 @@ class PlaybackOptions(Gtk.Box):
|
|||||||
self._volume_button.set_sensitive(False)
|
self._volume_button.set_sensitive(False)
|
||||||
self._repeat_refresh(None, False)
|
self._repeat_refresh(None, False)
|
||||||
self._random_refresh(None, False)
|
self._random_refresh(None, False)
|
||||||
self._single_refresh(None, False)
|
self._single_refresh(None, "0")
|
||||||
self._consume_refresh(None, False)
|
self._consume_refresh(None, False)
|
||||||
self._volume_refresh(None, -1)
|
self._volume_refresh(None, -1)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user