115 lines
2.4 KiB
Python
115 lines
2.4 KiB
Python
from song import Song
|
|
|
|
CONTINUE = 0
|
|
QUIT = 1
|
|
PAUSE = 2
|
|
|
|
# Use to define various operations
|
|
class Operations:
|
|
def __init__(self,exit):
|
|
self.song = None
|
|
self.plist = None
|
|
self.library = None
|
|
self.setInfo = None
|
|
self.resetInfo = None
|
|
self.scrollSong = None
|
|
self.exit = exit
|
|
self.after = CONTINUE
|
|
|
|
|
|
# Begin playback
|
|
def play(self,widget,data):
|
|
if self.song == None:
|
|
return
|
|
self.song.play()
|
|
|
|
|
|
# Pause playback
|
|
def pause(self,widget,data):
|
|
if self.song == None:
|
|
return
|
|
self.song.pause()
|
|
|
|
|
|
def stop(self,widget,data):
|
|
if self.song == None:
|
|
return
|
|
self.song.stop()
|
|
|
|
|
|
def afterTrack(self,widget,data,changeFrame):
|
|
str = ""
|
|
if (data=="qafter") and not (self.after==1):
|
|
self.after = QUIT
|
|
str = "Quitting "
|
|
elif (data=="pafter") and not (self.after==2):
|
|
self.after = PAUSE
|
|
str = "Pausing"
|
|
else:
|
|
self.after = CONTINUE
|
|
if str != "":
|
|
str += " After "
|
|
changeFrame(str)
|
|
|
|
|
|
# Advance to the next song
|
|
def next(self,widget,data):
|
|
# Close open songs
|
|
if self.song != None:
|
|
self.song.info.playCount+=1
|
|
self.song.close()
|
|
# Are we exiting?
|
|
if self.after == QUIT:
|
|
self.exit(None,None)
|
|
# Get next song
|
|
index = self.plist.next()
|
|
self.resetInfo()
|
|
if index > -1:
|
|
self.song = None
|
|
info = self.library.data.files[index]
|
|
self.song = Song(info,self.next)
|
|
if index > -2:
|
|
self.song.setInfo = self.setInfo
|
|
# Do we begin playback?
|
|
#if self.after != 2:
|
|
self.song.play()
|
|
if self.after == PAUSE:
|
|
self.song.pause()
|
|
self.after = CONTINUE
|
|
self.library.dump()
|
|
self.scrollSong()
|
|
|
|
|
|
# Mark progress on the progress bar
|
|
def markProgress(self,widget,data):
|
|
time = (False,None)
|
|
while time[0] == False:
|
|
time = self.song.curTime()
|
|
widget.set_fraction(float(self.song.current)/float(self.song.total))
|
|
widget.set_text(time[1].toStr()+" / "+self.song.info.length.toStr())
|
|
#print float(self.song.current)/float(self.song.total)
|
|
return True
|
|
|
|
|
|
# Print detailed song info
|
|
def info(self,widget,data):
|
|
# Return if no song found
|
|
if self.song == None:
|
|
return
|
|
# Return if no tags found
|
|
if self.song.info.tags == None:
|
|
print "Could not find any tags"
|
|
return
|
|
for tag in self.song.info.tags.keys():
|
|
print tag+":",self.song.info.tags[tag]
|
|
print self.song.info.filename
|
|
|
|
|
|
# Toggle random
|
|
def random(self,widget,data):
|
|
self.plist.random = not self.plist.random
|
|
|
|
|
|
def scanLib(self,dir):
|
|
self.library.scan(dir)
|