#! /usr/bin/python # To change this template, choose Tools | Templates # and open the template in the editor. __author__="bjschuma" __date__ ="$Feb 24, 2010 9:13:41 PM$" # Maintain the list of guests class GuestList(list): def __init__(self): list.__init__(self) self.active = False def add(self, item, priority): self += [(priority, item)] self.sort() class Event(dict): def __init__(self): dict.__init__(self) self.nextEvent = 0 self.create("OCARINA_START") self.create("OCARINA_QUIT") self.create("OCARINA_PLAY") self.create("OCARINA_PAUSE") def create(self,name): var = "self." + name.upper() exec var + " = " + str(self.nextEvent) self.nextEvent += 1 exec "self["+var+"] = GuestList()" def has(self,key): return (key in self.keys()) # Add a "guest" (function or script) to this event def invite(self, name, guest, priority=None): if priority==None: priority = 100 self[name].add(guest, priority) # Remove a guest from the guest list def uninvite(self, name, guest): self[name].remove(guest) def stop(self,name): self[name].active = False # Start the party! def start(self,name,args=None): if self.has(name) == False: return self[name].active = True for priority,guest in self[name]: if self[name].active == False: break elif self[name].active == True: if args==None: guest() else: guest(args) self.stop(name)