X-Git-Url: https://git.ucc.asn.au/?p=uccvend-vendserver.git;a=blobdiff_plain;f=VendServer%2FIdler.py;h=c2eedee233e8c2521dbe64f229e67d43cfa19afe;hp=5b6645517945891c49dd79b8ff6f1c62077410a3;hb=15173eaaa20442f08c2d32fca37825e5c3bcb3e6;hpb=6c130dc942392ccc8b7ffa0ec2ede5f9327f99e6 diff --git a/VendServer/Idler.py b/VendServer/Idler.py index 5b66455..c2eedee 100755 --- a/VendServer/Idler.py +++ b/VendServer/Idler.py @@ -10,8 +10,12 @@ orderings = None IDLER_TEXT_SPEED=1.8 class Idler: - def __init__(self, v): + def __init__(self, v, affinity=None): self.v = v + if affinity: + self._affinity = affinity + else: + self._affinity = 1 def next(self): """Displays next stage of the idler. Returns time to the next step""" @@ -27,11 +31,12 @@ class Idler: def affinity(self): """How much we want this idler to be the next one chosen""" - return 1 + return self._affinity class GreetingIdler(Idler): def __init__(self, v, secs_to_greeting = None): - self.v = v + affinity = 0 + Idler.__init__(self, v, affinity = affinity) self.secs_to_greeting = secs_to_greeting self.message_displayed = False @@ -52,13 +57,10 @@ class GreetingIdler(Idler): def finished(self): return self.message_displayed - def affinity(self): - return 0 - class TrainIdler(Idler): def __init__(self, v): + Idler.__init__(self, v) self.idle_state = 0 - self.v = v def put_shark(self, s, l): if self.s[l] == ' ': @@ -154,11 +156,11 @@ class OrderMaker: class GrayIdler(Idler): def __init__(self, v, one=None, zero=None, reorder=0): + Idler.__init__(self, v) self.bits = 8 self.size = 1 << self.bits self.i = 0 self.grayCode = 0 - self.v = v self.one = one self.zero = zero self.reorder = reorder @@ -231,10 +233,10 @@ class GrayIdler(Idler): class StringIdler(Idler): - def __init__(self, v, text="Hello Cruel World! ",repeat=True): - self.v = v + def __init__(self, v, text="Hello Cruel World! ",repeat=True, affinity=None): + Idler.__init__(self, v, affinity=affinity) self.mk = MessageKeeper(v) - self.text = self.clean_text(text) + " " + self.text = " " + self.clean_text(text) + " " msg = [("",False, None),(self.text, repeat, IDLER_TEXT_SPEED)] self.mk.set_messages(msg) @@ -263,7 +265,8 @@ class StringIdler(Idler): class ClockIdler(Idler): def __init__(self, v): - self.v = v + affinity = 3 + Idler.__init__(self, v, affinity = affinity) self.last = None def next(self): @@ -274,42 +277,33 @@ class ClockIdler(Idler): self.v.display(" %8.8s " % (output)) self.last = output - def affinity(self): - return 3 - class FortuneIdler(StringIdler): - def __init__(self, v): + def __init__(self, v, affinity = 30): fortune = "/usr/games/fortune" text = "I broke my wookie...." if os.access(fortune,os.F_OK|os.X_OK): (lines, unused) = Popen((fortune,), close_fds=True, stdout=PIPE).communicate() - text = string.join(lines) - StringIdler.__init__(self, v, text,repeat=False) + text = lines.replace('\n', ' ').replace('\r', '') + StringIdler.__init__(self, v, text,repeat=False, affinity=affinity) + + def reset(self): + self.__init__(self.v, affinity=self._affinity) - def affinity(self): - return 20 class PipeIdler(StringIdler): - def __init__(self, v, command, args): + def __init__(self, v, command, args, affinity = 5): text = "I ate my cookie...." if os.access(command,os.F_OK|os.X_OK): (lines, unused) = Popen([command,] + args.split(), close_fds=True, stdout=PIPE).communicate() - text = string.join(lines) - StringIdler.__init__(self, v, text,repeat=False) - - def affinity(self): - return 20 + text = lines.replace('\n', ' ').replace('\r', '') + StringIdler.__init__(self, v, text,repeat=False, affinity=affinity) class FileIdler(StringIdler): def __init__(self, v, thefile=None, repeat=False, affinity=8): text = "I broke my wookie...." - self._affinity = affinity if file and os.access(thefile,os.F_OK|os.R_OK): f = file(thefile,'r') text = string.join(f.readlines()) f.close() - StringIdler.__init__(self, v, text,repeat=repeat) - - def affinity(self): - return self._affinity + StringIdler.__init__(self, v, text,repeat=False, affinity=affinity)