[gnome-music/wip/mschraal/core] playlistsview: Restore playlist_play_action
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/core] playlistsview: Restore playlist_play_action
- Date: Sat, 13 Jul 2019 22:40:09 +0000 (UTC)
commit 55daf93048a598a9ae10bdb1d58206b2ab8e718a
Author: Jean Felder <jfelder src gnome org>
Date: Mon Jul 8 20:57:31 2019 +0200
playlistsview: Restore playlist_play_action
gnomemusic/views/playlistsview.py | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
---
diff --git a/gnomemusic/views/playlistsview.py b/gnomemusic/views/playlistsview.py
index d1ee4880..e6683e6a 100644
--- a/gnomemusic/views/playlistsview.py
+++ b/gnomemusic/views/playlistsview.py
@@ -22,12 +22,14 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from random import randrange
+
from gettext import gettext as _
from gi.repository import Gdk, GObject, Gio, Gtk
from gnomemusic import log
-from gnomemusic.player import PlayerPlaylist
+from gnomemusic.player import PlayerPlaylist, RepeatMode
from gnomemusic.views.baseview import BaseView
from gnomemusic.widgets.notificationspopup import PlaylistNotification
from gnomemusic.widgets.playlistcontextmenu import PlaylistContextMenu
@@ -84,9 +86,10 @@ class PlaylistsView(BaseView):
'activate', self._stage_song_for_deletion)
self._window.add_action(self._remove_song_action)
- # playlist_play_action = Gio.SimpleAction.new('playlist_play', None)
- # playlist_play_action.connect('activate', self._on_play_activate)
- # self._window.add_action(playlist_play_action)
+ playlist_play_action = Gio.SimpleAction.new('playlist_play', None)
+ playlist_play_action.connect(
+ 'activate', self._on_play_playlist)
+ self._window.add_action(playlist_play_action)
# self._playlist_delete_action = Gio.SimpleAction.new(
# 'playlist_delete', None)
@@ -179,7 +182,7 @@ class PlaylistsView(BaseView):
selected_row = self._view.get_selected_row()
song_widget = selected_row.get_child()
self._view.unselect_all()
- self._song_activated(song_widget, None)
+ self._song_activated(song_widget)
@log
def _stage_song_for_deletion(self, menuitem, data=None):
@@ -222,14 +225,27 @@ class PlaylistsView(BaseView):
return song_widget
- def _song_activated(self, widget, event):
+ def _song_activated(self, widget=None, event=None):
+ # FIXME: Selection should be automatic in the player
+ if widget is not None:
+ coresong = widget.props.coresong
+ else:
+ position = 0
+ if self.player.props.repeat_mode == RepeatMode.SHUFFLE:
+ position = randrange(
+ 0, self._current_playlist.props.model.get_n_items())
+ coresong = self._current_playlist.props.model.get_item(position)
+
self._coremodel.set_playlist_model(
- PlayerPlaylist.Type.PLAYLIST, widget.props.coresong,
+ PlayerPlaylist.Type.PLAYLIST, coresong,
self._current_playlist.props.model)
self.player.play()
return True
+ def _on_play_playlist(self, menuitem, data=None):
+ self._song_activated()
+
@log
def _is_current_playlist(self, playlist):
"""Check if playlist is currently displayed"""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]