ocarina/trunk/operations.py

111 lines
2.3 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.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.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()
# 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)