ocarina/src/core/bt/signal.py

63 lines
1.1 KiB
Python

#! /usr/bin/python
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="bjschuma"
__date__ ="$Jan 20, 2010 12:13:21 AM$"
from map import Map
global signals, status, scripts
signals = Map()
status = dict()
scripts = dict()
def attachScript(signal,script):
global scripts
if (signal in scripts) == False:
scripts[signal] = [script]
else:
scripts[signal] += [script]
def register(signal,func,priority=100):
if signals.has(signal) == False:
status[signal] = False
signals.set(signal,(priority,func))
def remove(signal,func):
global signals
signals.remove(signal,func)
def stop(signal):
status[signal] = False
def emit(signal,args=None):
if signals.has(signal) == False:
return
funcs = signals.get(signal,True)
i = 0
status[signal] = True
for priority,func in funcs:
if status[signal] == True:
if not args==None:
func(args)
else:
func()
else:
break
stop(signal)
if (signal in scripts) == True:
import scripting
for script in scripts[signal]:
scripting.runScript(script)