X-Git-Url: https://git.ucc.asn.au/?p=zanchey%2Fdispense2.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FIdler.py;h=eedfe7335e2227982bc33276ff6ef03cd75e88b9;hp=80963a858eadf9c3d352e0f43373f58322cde11c;hb=92192e8cce7e4aa9de005ef7e32b13eca1776a79;hpb=2c748128852c5df2ab52eb6a3b023e3ac0a55b9e diff --git a/sql-edition/servers/Idler.py b/sql-edition/servers/Idler.py index 80963a8..eedfe73 100755 --- a/sql-edition/servers/Idler.py +++ b/sql-edition/servers/Idler.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -import string +import string, time, popen2, os from random import random from MessageKeeper import MessageKeeper @@ -15,6 +15,12 @@ class Idler: def reset(self): pass + + def finished(self): + return False + + def affinity(self): + return 1 class TrainIdler(Idler): def __init__(self, v): @@ -183,13 +189,60 @@ class GrayIdler(Idler): class StringIdler(Idler): - def __init__(self, v, text="Hello Cruel World!"): + def __init__(self, v, text="Hello Cruel World! ",repeat=True): self.v = v self.mk = MessageKeeper(v) - self.text = text + self.text = self.clean_text(text) + " " + + msg = [("",False, None),(self.text, repeat, 0.8)] + self.mk.set_messages(msg) + + def clean_text(self, text): + # nothing like a bit of good clean text :) + valid = string.digits \ + + string.letters \ + + string.punctuation \ + + " " + # uppercase it + text = string.upper(text) + clean = "" + for char in text: + if char in valid: + clean = clean + char + else: + clean = clean + " " + return clean def next(self): self.mk.update_display() - def reset(self): - self.mk.set_message(self.text, True, None) + def finished(self): + return self.mk.done() + +class ClockIdler(Idler): + def __init__(self, v): + self.v = v + self.last = None + + def next(self): + output = time.strftime("%H:%M:%S") + if output != self.last: + self.v.display(" %8.8s " % (output)) + self.last = output + + def affinity(self): + return 3 + +class FortuneIdler(StringIdler): + def __init__(self, v): + fortune = "/usr/games/fortune" + text = "I broke my wookie...." + if os.access(fortune,os.F_OK|os.X_OK): + (stdout, stdin) = popen2.popen2(fortune) + text = string.join(stdout.readlines()) + stdout.close() + stdin.close() + StringIdler.__init__(self, v, text,repeat=False) + + def affinity(self): + return 20