49 lines
790 B
Python
49 lines
790 B
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
|
|
signals = Map()
|
|
status = dict()
|
|
|
|
|
|
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)
|
|
|