import Queue import random import pygtk pygtk.require('2.0') import gtk class Playlist: #def __init__(self,prnt): def __init__(self): #self.prnt = prnt self.list = [] self.queue = Queue.Queue() self.curSong = 0 self.random = True self.translate = None self.opsNext = None #self.makeWindow() # Enqueue a song # Takes songid def queueSong(self,song): self.queue.put(song) # Insert the list of songs def insert(self,list): self.list = list # Return the next song def next(self): if self.queue.empty() == False: self.curSong = self.queue.get() return self.curSong if len(self.list) == 0: return -2 if self.random==True: self.curSong = random.randint(0,len(self.list)-1) else: self.curSong += 1 if self.curSong > len(self.list): self.curSong = 0 song = self.list[self.curSong] return song # Play the selected song def selectSong(self,module,iter,path,data,list): self.queueSong(list[iter][0]) self.opsNext(None,None) #self.hideWindow(None,None) # Make the playlist window #def makeWindow(self): # self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # self.window.connect("delete_event",self.hideWindow) # self.window.set_size_request(200,300) # self.scroll = gtk.ScrolledWindow() # self.scroll.set_border_width(0) # self.scroll.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) # self.window.add(self.scroll) # self.populateList() # Fill in rows in the playlist #def populateList(self): # liststore = gtk.ListStore(int,str,str,str,int) #liststore = gtk.ListStore(str,str) # for num in self.list: # liststore.append(self.translate(num)) # treeview = gtk.TreeView(liststore) # cell = gtk.CellRendererText() # cols = ["Id","Title","Artist","Album","Count"] # for i in range(len(cols)): # col = gtk.TreeViewColumn(cols[i],cell) # col.add_attribute(cell,'text',i) # col.set_resizable(True) # col.set_sort_column_id(i) # treeview.append_column(col) # treeview.set_search_column(1) # treeview.connect("row-activated",self.selectSong,"clicked",liststore) # treeview.show() # treeview.columns_autosize() # self.scroll.add(treeview) # self.scroll.show() # Go to current song, enable grid lines # selrowthe golden sun rises = self.curSong-10 # if selrow < 0: # selrow = 0 # treeview.scroll_to_cell(selrow,None,False,0,0) # treeview.set_grid_lines(True) # treesel = treeview.get_selection() # treesel.select_path(self.curSong) # Hide the playlist #def hideWindow(self,widget,data): #self.scroll.hide() # self.window.hide() # self.window = None # Show the playlist #def showWindow(self,widget,data): #self.populateList() # self.makeWindow() # self.window.show() # self.window.maximize()