Signals now use a priority queue instead of a deque

This commit is contained in:
bjschuma 2010-02-07 19:32:29 -05:00
parent 9b74966e2c
commit eba941be7c
11 changed files with 48 additions and 16 deletions

View File

@ -15,16 +15,14 @@ class Map(dict):
dict.__init__(self)
def set(self,key,item,right=False):
def set(self,key,item):
key = key.upper()
# Make a new deque if the key doesn't exist
if self.has(key) == False:
self[key] = deque()
if right == False:
self[key].appendleft(item)
self[key] = [item]
else:
self[key].append(item)
self[key] = self[key] + [item]
self[key].sort()
def get(self,key,all=False):

View File

@ -13,10 +13,10 @@ signals = Map()
status = dict()
def register(signal,func):
def register(signal,func,priority=10):
if signals.has(signal) == False:
status[signal] = False
signals.set(signal,func)
signals.set(signal,(priority,func))
def remove(signal,func):
@ -35,7 +35,7 @@ def emit(signal,args=None):
i = 0
status[signal] = True
for func in funcs:
for priority,func in funcs:
if status[signal] == True:
if not args==None:
func(args)

View File

@ -117,6 +117,7 @@ class Insert(Statement):
if not i == 0:
qs+=","
qs+="?"
#self.values[i] = str(self.values[i])
self.statement+=qs + ")"
Statement.execute(self, self.values)

View File

@ -157,4 +157,12 @@ class Manager:
global manager
manager = Manager()
manager = Manager()
def call(name,args=None):
global manager
disable()
result = manager.run(name,args)
enable()
return result

View File

@ -2,3 +2,5 @@
rm -r ./*/*.pyc
rm -r ./*/*/*.pyc
#rm -r ./*/*.pyo
#rm -r ./*/*/*.pyo

View File

@ -44,7 +44,7 @@ def init():
settings.set("clinex", 0)
settings.set("cliney", 0)
register("write", insert)
register("write", insert,9)

View File

@ -13,7 +13,7 @@ class Plugin(plugin.Plugin):
def __init__(self):
plugin.Plugin.__init__(self)
self.help = "Use to execute sql commands"
self.usage = "sql [table]"
self.usage = "sql [insert, select, table]"
def createTable(self,args):

View File

@ -14,7 +14,7 @@ class Plugin(plugin.Plugin):
def __init__(self):
plugin.Plugin.__init__(self)
self.help = "Used to show the current state of settings"
self.usage = "lsset [settings key]"
self.usage = "lsset [key]"
def run(self, args=None):

23
src/extra/lssignal.py Normal file
View File

@ -0,0 +1,23 @@
# Basic plugin class
__author__="bjschuma"
__date__ ="$Feb 7, 2010 7:19:45 PM$"
from bt import plugin
from bt.message import write
from bt import signal
class Plugin(plugin.Plugin):
def __init__(self):
plugin.Plugin.__init__(self)
self.help = ""
def run(self, args=None):
if args==None or len(args)==0:
write(signal.signals.keys())
else:
write(signal.signals.get(args[0],True))

View File

@ -28,8 +28,8 @@ class Plugin(plugin.Plugin):
def open(self):
#settings.set("guirunning",False)
if settings.get("guirunning") == True:
signal.register("run",self.loop)
signal.register("quit",self.close)
signal.register("run",self.loop,9)
signal.register("quit",self.close,9)
else:
settings.set("guirunning",False)

View File

@ -1,4 +1,4 @@
#!/bin/bash
# This is a simple shell script for properly starting scion
cd base && `which python` scion.py $*
cd base && `which python` scion.py $*