New playlist module

The playlist should be a standalone module rather than inheriting from
the same base class as the library.
This commit is contained in:
Bryan Schumaker 2010-11-07 09:15:15 -05:00
parent 9e89283b19
commit 73de67f386
3 changed files with 67 additions and 38 deletions

View File

@ -15,7 +15,8 @@ QUEUE = 2
import lens
import library
playlist = lens.Playlist()
import playlist
#playlist = lens.Playlist()
file_to_id = library.file_to_id
play_id = library.play_id
@ -44,41 +45,15 @@ def lib_get_cur_id():
global cur_lib_id
return cur_lib_id
def walk_plist():
global playlist
global library
get_attr = library.get_attr
for id in playlist.walk_ids():
yield [get_attr(id, "artist"), get_attr(id, "album"),
get_attr(id, "title"), id, get_attr(id, "year"),
get_attr(id, "lenstr")]
def plist_save():
global playlist
playlist.save()
def plist_add_libid(lib_id):
global playlist
# Hey, Future Bryan. I really want to use a lib_get_attrs() function
# to return a list of attributes. Can you do that for me, please?
# Thank you, Past Bryan
artist = library.get_attr(lib_id, "artist")
album = library.get_attr(lib_id, "album")
title = library.get_attr(lib_id, "title")
playlist.insert_tags(artist, album, title, lib_id)
def plist_is_visible(id):
global playlist
return playlist.is_visible(id)
return True
#global playlist
#return playlist.is_visible(id)
def plist_filter(text):
global playlist
return playlist.filter(text)
def plist_reset():
global playlist
playlist.reset()
playlist.save()
return True
#global playlist
#return playlist.filter(text)
def plist_refresh():
return call("PLISTREFRESH")

View File

@ -0,0 +1,36 @@
# Bryan Schumaker (11/07/2010)
import libsaria
song_list = None
song_set = None
def add_id(id):
global song_list
global song_set
song_list.append(id)
song_set.add(id)
def reset():
global song_list
global song_set
song_list = []
song_set = set()
def load():
global song_list
global song_set
song_list = libsaria.data.load("playlist", ".list")
if song_list == None:
reset()
return
song_set = set(song_list)
load()
def save():
libsaria.data.save(song_list, "playlist", ".list")
def walk():
global song_list
for id in song_list:
yield id

View File

@ -6,7 +6,8 @@ import menu
libsaria = ocarina.libsaria
from libsaria import collection
library = collection.library
library = collection.library
playlist = collection.playlist
event = ocarina.libsaria.event
gtk = ocarina.gtk
@ -46,6 +47,21 @@ class Collection(gtk.ScrolledWindow):
ins_next += 1
self.list.thaw()
def populate2(self, func):
self.list.freeze()
insert = self.list.list.insert
getattr = library.get_attr
ins_next = 0
for id in func():
title = getattr(id, "title")
length = getattr(id, "lenstr")
artist = getattr(id, "artist")
album = getattr(id, "album")
year = getattr(id, "year")
insert(ins_next, [id, title, length, artist, album, year, ""])
ins_next += 1
self.list.thaw()
def on_mouse_motion(self, widget, pos):
list = self.list
x,y = list.convert_bin_window_to_widget_coords(int(pos.x), int(pos.y))
@ -60,8 +76,8 @@ class Collection(gtk.ScrolledWindow):
"Played: %s Score: %s" % items)
def add_selected_to_playlist(self, *args):
self.list.for_each_selected(collection.plist_add_libid)
collection.plist_save()
self.list.for_each_selected(playlist.add_id)
playlist.save()
collection.plist_refresh()
@ -128,13 +144,15 @@ class Playlist(Collection):
self.populate()
def reset(self):
collection.plist_reset()
playlist.reset()
playlist.save()
self.clear()
def populate(self):
#import datetime
#before = datetime.datetime.now()
Collection.populate(self, collection.walk_plist)
#Collection.populate(self, collection.walk_plist)
Collection.populate2(self, playlist.walk)
#after = datetime.datetime.now()
#print "Populating took: %s" % (after - before)