本文整理匯總了Python中quodlibet.browsers.playlists.PlaylistsBrowser類的典型用法代碼示例。如果您正苦於以下問題:Python PlaylistsBrowser類的具體用法?Python PlaylistsBrowser怎麽用?Python PlaylistsBrowser使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了PlaylistsBrowser類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: setUp
def setUp(self):
try:
shutil.rmtree(PLAYLISTS)
except OSError:
pass
mkdir(PLAYLISTS)
self.lib = quodlibet.browsers.playlists.library = SongLibrary()
self.lib.librarian = SongLibrarian()
all_songs = SONGS + [self.ANOTHER_SONG]
for af in all_songs:
af.sanitize()
self.lib.add(all_songs)
pl = Playlist.new(PLAYLISTS, "Big", self.lib)
pl.extend(SONGS)
pl.write()
pl = Playlist.new(PLAYLISTS, "Small", self.lib)
pl.extend([self.ANOTHER_SONG])
pl.write()
PlaylistsBrowser.init(self.lib)
self.bar = PlaylistsBrowser(self.lib)
self.bar.connect('songs-selected', self._expected)
self.bar._select_playlist(self.bar.playlists()[0])
self.expected = None
示例2: setUp
def setUp(self):
# Testing locally is VERY dangerous without this...
self.assertTrue(_TEMP_DIR in PLAYLISTS or os.name == "nt",
msg="Failing, don't want to delete %s" % PLAYLISTS)
try:
shutil.rmtree(PLAYLISTS)
except OSError:
pass
mkdir(PLAYLISTS)
self.lib = quodlibet.browsers.playlists.library = SongLibrary()
self.lib.librarian = SongLibrarian()
all_songs = SONGS + [self.ANOTHER_SONG]
for af in all_songs:
af.sanitize()
self.lib.add(all_songs)
self.big = pl = FileBackedPlaylist.new(PLAYLISTS, "Big", self.lib)
pl.extend(SONGS)
pl.write()
self.small = pl = FileBackedPlaylist.new(PLAYLISTS, "Small", self.lib)
pl.extend([self.ANOTHER_SONG])
pl.write()
PlaylistsBrowser.init(self.lib)
self.bar = PlaylistsBrowser(self.lib)
self.bar.connect('songs-selected', self._expected)
self.bar._select_playlist(self.bar.playlists()[0])
self.expected = None
示例3: _on_new_playlist_activate
def _on_new_playlist_activate(self, item, songs):
parent = get_menu_item_top_parent(item)
title = Playlist.suggested_name_for(songs)
title = GetPlaylistName(qltk.get_top_parent(parent)).run(title)
if title is None:
return
playlist = FileBackedPlaylist.new(PLAYLISTS, title)
playlist.extend(songs)
PlaylistsBrowser.changed(playlist)
示例4: setUpClass
def setUpClass(cls):
# Only want to do this playlists setup once per test class...
quodlibet.config.init()
cls.lib = quodlibet.browsers.playlists.library = SongLibrary()
cls.lib.librarian = SongLibrarian()
all_songs = SONGS + [cls.ANOTHER_SONG]
for af in all_songs:
af.sanitize()
cls.lib.add(all_songs)
cls._create_temp_playlist_with("Big", SONGS)
cls._create_temp_playlist_with("Small", [cls.ANOTHER_SONG])
PlaylistsBrowser.init(cls.lib)
示例5: TPlaylists
class TPlaylists(TestCase):
def setUp(self):
quodlibet.config.init()
self.library = SongLibrary()
self.bar = PlaylistsBrowser(SongLibrary())
def test_can_filter(self):
for key in ["foo", "title", "fake~key", "~woobar", "~#huh"]:
self.failIf(self.bar.can_filter(key))
def tearDown(self):
self.bar.destroy()
self.library.destroy()
quodlibet.config.quit()
示例6: _on_toggle_playlist_activate
def _on_toggle_playlist_activate(self, item, playlist, songs):
parent = get_menu_item_top_parent(item)
has_some, has_all = playlist.has_songs(songs)
if has_all:
playlist.remove_songs(songs)
elif has_some:
resp = ConfirmMultipleSongsAction(parent, playlist, songs).run()
if resp == ConfirmMultipleSongsAction.REMOVE:
playlist.remove_songs(songs)
elif resp == ConfirmMultipleSongsAction.ADD:
playlist.extend(songs)
return
else:
playlist.extend(songs)
PlaylistsBrowser.changed(playlist)
示例7: _on_new_playlist_activate
def _on_new_playlist_activate(self, item, songs):
parent = get_menu_item_top_parent(item)
if len(songs) == 1:
title = songs[0].comma("title")
else:
title = ngettext(
"%(title)s and %(count)d more",
"%(title)s and %(count)d more",
len(songs) - 1) % {
'title': songs[0].comma("title"),
'count': len(songs) - 1
}
title = GetPlaylistName(qltk.get_top_parent(parent)).run(title)
if title is None:
return
playlist = Playlist.new(PLAYLISTS, title)
playlist.extend(songs)
PlaylistsBrowser.changed(playlist)
示例8: _new_playlist_submenu_for
def _new_playlist_submenu_for(self, song):
submenu = self._playlists_item.get_submenu()
if submenu:
submenu.destroy()
playlist_menu = PlaylistMenu([song], PlaylistsBrowser.playlists())
def on_new(widget, playlist):
PlaylistsBrowser.changed(playlist)
playlist_menu.connect('new', on_new)
self._playlists_item.set_submenu(playlist_menu)
self._playlists_item.set_sensitive(bool(song) and song.can_add)
self._playlists_item.show_all()
示例9: __init__
def __init__(self, songs):
super(PlaylistMenu, self).__init__()
i = Gtk.MenuItem(label=_(u"_New Playlist…"), use_underline=True)
i.connect("activate", self._on_new_playlist_activate, songs)
self.append(i)
self.append(SeparatorMenuItem())
self.set_size_request(int(i.size_request().width * 2), -1)
for playlist in PlaylistsBrowser.playlists():
name = playlist.name
i = Gtk.CheckMenuItem(name)
some, all = playlist.has_songs(songs)
i.set_active(some)
i.set_inconsistent(some and not all)
i.get_child().set_ellipsize(Pango.EllipsizeMode.END)
i.connect("activate", self._on_toggle_playlist_activate, playlist, songs)
self.append(i)
示例10: TPlaylists
class TPlaylists(TSearchBar):
Bar = PlaylistsBrowser
ANOTHER_SONG = AudioFile({
"title": "lonely",
"artist": "new artist",
"~filename": dummy_path(u"/dev/urandom")})
def setUp(self):
try:
shutil.rmtree(PLAYLISTS)
except OSError:
pass
mkdir(PLAYLISTS)
self.lib = quodlibet.browsers.playlists.library = SongLibrary()
self.lib.librarian = SongLibrarian()
all_songs = SONGS + [self.ANOTHER_SONG]
for af in all_songs:
af.sanitize()
self.lib.add(all_songs)
pl = Playlist.new(PLAYLISTS, "Big", self.lib)
pl.extend(SONGS)
pl.write()
pl = Playlist.new(PLAYLISTS, "Small", self.lib)
pl.extend([self.ANOTHER_SONG])
pl.write()
PlaylistsBrowser.init(self.lib)
self.bar = PlaylistsBrowser(self.lib)
self.bar.connect('songs-selected', self._expected)
self.bar._select_playlist(self.bar.playlists()[0])
self.expected = None
def tearDown(self):
self.bar.destroy()
self.lib.destroy()
shutil.rmtree(PLAYLISTS)
PlaylistsBrowser.deinit(self.lib)
def test_saverestore(self):
# Flush previous signals, etc. Hmm.
self.expected = None
self._do()
self.expected = [SONGS[0]]
self.bar.filter_text("title = %s" % SONGS[0]["title"])
self.bar._select_playlist(self.bar.playlists()[0])
self.expected = [SONGS[0]]
self._do()
self.bar.save()
self.bar.filter_text("")
self.expected = list(sorted(SONGS))
self._do()
self.bar.restore()
self.bar.activate()
self.expected = [SONGS[0]]
self._do()
def test_active_filter_playlists(self):
self.bar._select_playlist(self.bar.playlists()[1])
# Second playlist should not have any of `SONGS`
self.assertFalse(self.bar.active_filter(SONGS[0]))
# But it should have `ANOTHER_SONG`
self.assertTrue(self.bar.active_filter(self.ANOTHER_SONG),
msg="Couldn't find song from second playlist")
# ... and setting a reasonable filter on that song should match still
self.bar.filter_text("lonely")
self.assertTrue(self.bar.active_filter(self.ANOTHER_SONG),
msg="Couldn't find song from second playlist with "
"filter of 'lonely'")
# ...unless it doesn't match that song
self.bar.filter_text("piman")
self.assertFalse(self.bar.active_filter(self.ANOTHER_SONG),
msg="Shouldn't have matched 'piman' on second list")
示例11: setUp
def setUp(self):
quodlibet.config.init()
self.library = SongLibrary()
self.bar = PlaylistsBrowser(SongLibrary())
示例12: on_new
def on_new(widget, playlist):
PlaylistsBrowser.changed(playlist)
示例13: __init__
def __init__(self, library, songs, plugins=True, playlists=True,
queue=True, remove=True, delete=False,
edit=True, ratings=True, items=None, accels=True):
super(SongsMenu, self).__init__()
# The library may actually be a librarian; if it is, use it,
# otherwise find the real librarian.
librarian = getattr(library, 'librarian', library)
if ratings:
ratings_item = RatingsMenuItem(songs, librarian)
ratings_item.set_sensitive(bool(songs))
self.append(ratings_item)
self.separate()
# external item groups
for subitems in reversed(items or []):
self.separate()
for item in subitems:
self.append(item)
self.separate()
if plugins:
submenu = self.plugins.Menu(librarian, songs)
if submenu is not None:
b = qltk.MenuItem(_("_Plugins"), Icons.SYSTEM_RUN)
b.set_sensitive(bool(songs))
self.append(b)
b.set_submenu(submenu)
self.append(SeparatorMenuItem())
in_lib = True
can_add = True
is_file = True
for song in songs:
if song not in library:
in_lib = False
if not song.can_add:
can_add = False
if not song.is_file:
is_file = False
if playlists:
# Needed here to avoid a circular import; most browsers use
# a SongsMenu, but SongsMenu needs access to the playlist
# browser for this item.
# FIXME: Two things are now importing browsers, so we need
# some kind of inversion of control here.
from quodlibet.browsers.playlists.menu import PlaylistMenu
from quodlibet.browsers.playlists import PlaylistsBrowser
try:
submenu = PlaylistMenu(songs, PlaylistsBrowser.playlists())
def on_new(widget, playlist):
PlaylistsBrowser.changed(playlist)
submenu.connect('new', on_new)
except AttributeError as e:
print_w("Couldn't get Playlists menu: %s" % e)
else:
b = qltk.MenuItem(_("Play_lists"), Icons.FOLDER_DRAG_ACCEPT)
b.set_sensitive(can_add and bool(songs))
b.set_submenu(submenu)
self.append(b)
if queue:
b = qltk.MenuItem(_("Add to _Queue"), Icons.LIST_ADD)
def enqueue_cb(item, songs):
songs = [s for s in songs if s.can_add]
if songs:
from quodlibet import app
app.window.playlist.enqueue(songs)
b.connect('activate', enqueue_cb, songs)
if accels:
qltk.add_fake_accel(b, "<Primary>Return")
self.append(b)
b.set_sensitive(can_add and bool(songs))
if remove or delete:
self.separate()
if remove:
b = qltk.MenuItem(_("_Remove from Library"), Icons.LIST_REMOVE)
if callable(remove):
b.connect('activate', lambda item: remove(songs))
else:
def remove_cb(item, songs, library):
library.remove(set(songs))
b.connect('activate', remove_cb, songs, library)
b.set_sensitive(in_lib and bool(songs))
self.append(b)
if delete:
if callable(delete):
b = qltk.MenuItem(_("_Delete"), Icons.EDIT_DELETE)
b.connect('activate', lambda item: delete(songs))
if accels:
qltk.add_fake_accel(b, "<Primary>Delete")
#.........這裏部分代碼省略.........
示例14: tearDown
def tearDown(self):
self.bar.destroy()
self.lib.destroy()
shutil.rmtree(PLAYLISTS)
PlaylistsBrowser.deinit(self.lib)
示例15: TPlaylists
class TPlaylists(TSearchBar):
Bar = PlaylistsBrowser
ANOTHER_SONG = AudioFile({
"title": "lonely",
"artist": "new artist",
"~filename": fsnative(u"/dev/urandom")})
@classmethod
def setUpClass(cls):
# Only want to do this playlists setup once per test class...
quodlibet.config.init()
cls.lib = quodlibet.browsers.playlists.library = SongLibrary()
cls.lib.librarian = SongLibrarian()
all_songs = SONGS + [cls.ANOTHER_SONG]
for af in all_songs:
af.sanitize()
cls.lib.add(all_songs)
cls._create_temp_playlist_with("Big", SONGS)
cls._create_temp_playlist_with("Small", [cls.ANOTHER_SONG])
PlaylistsBrowser.init(cls.lib)
@classmethod
def _create_temp_playlist_with(cls, name, songs):
pl = Playlist.new(PLAYLISTS, name, cls.lib)
pl.extend(songs)
pl.write()
def setUp(self):
self.bar = PlaylistsBrowser(self.lib)
self.bar.connect('songs-selected', self._expected)
self.bar._select_playlist(self.bar.playlists()[0])
self.expected = None
def test_saverestore(self):
# Flush previous signals, etc. Hmm.
self.expected = None
self._do()
self.expected = [SONGS[0]]
self.bar.filter_text("title = %s" % SONGS[0]["title"])
self.bar._select_playlist(self.bar.playlists()[0])
self.expected = [SONGS[0]]
self._do()
self.bar.save()
self.bar.filter_text("")
self.expected = list(sorted(SONGS))
self._do()
self.bar.restore()
self.bar.activate()
self.expected = [SONGS[0]]
self._do()
def test_active_filter_playlists(self):
self.bar._select_playlist(self.bar.playlists()[1])
# Second playlist should not have any of `SONGS`
self.assertFalse(self.bar.active_filter(SONGS[0]))
# But it should have `ANOTHER_SONG`
self.assertTrue(self.bar.active_filter(self.ANOTHER_SONG),
msg="Couldn't find song from second playlist")
# ... and setting a reasonable filter on that song should match still
self.bar.filter_text("lonely")
self.assertTrue(self.bar.active_filter(self.ANOTHER_SONG),
msg="Couldn't find song from second playlist with "
"filter of 'lonely'")
# ...unless it doesn't match that song
self.bar.filter_text("piman")
self.assertFalse(self.bar.active_filter(self.ANOTHER_SONG),
msg="Shouldn't have matched 'piman' on second list")
def tearDown(self):
self.bar.destroy()
self.lib.destroy()
@classmethod
def tearDownClass(cls):
quodlibet.config.quit()