ocarina/src/extra/rand.py

62 lines
1.2 KiB
Python

# Basic plugin class
__author__="bjschuma"
__date__ ="$Feb 8, 2010 10:00:40 AM$"
from bt import plugin
from bt.message import write
import settings
from bt import signal
import random
random.seed()
from ct import db
import manager
class Plugin(plugin.Plugin):
def __init__(self):
plugin.Plugin.__init__(self)
self.help = ""
def open(self):
if settings.has("random") == False:
settings.set("random",False)
elif settings.get("random") == True:
signal.register("next",self.randNext,90)
pass
def close(self):
signal.remove("next",self.randNext)
def randNext(self):
count = db.countlib(str(settings.get("curlib")))
curtrk = settings.get("curtrk")
id = curtrk
# Guarentee that we don't choose the same track twice
while id==curtrk:
id = random.randint(0,count)
# Prevent infinite loop if library has size 1
if count == 1:
break
manager.run("next",[id])
signal.stop("next")
pass
def run(self, args=None):
if args==None or len(args)==0:
rand = not settings.get("random")
settings.set("random",rand)
if rand == True:
signal.register("next",self.randNext,90)
else:
signal.remove("next",self.randNext)
elif args[0] == "?":
write(settings.get("random"))