for x in self.notifiers:
x(self)
- def addNotifier(self, notifier):
+ def addNotifier(self, notifier, initial_call = True):
assert callable(notifier), "notifiers must be callable"
self.notifiers.append(notifier)
-
+
# CHECKME:
# do we want to call the notifier
- # - at all when adding it? (yes)
+ # - at all when adding it? (yes, though optional)
# - when the default is active? (yes)
# - when no value *yet* has been set,
# because no config has ever been read (currently yes)
# (though that's not so easy to detect.
# the entry could just be new.)
- notifier(self)
+ if initial_call:
+ notifier(self)
def disableSave(self):
self.save_disabled = True
if self.censor_char == "":
value += ("%0" + str(len(str(self.limits[num][1]))) + "d") % i
else:
- value += (self.censorChar * len(str(self.limits[num][1])))
+ value += (self.censor_char * len(str(self.limits[num][1])))
num += 1
# only mark cursor when we are selected
class ConfigClock(ConfigSequence):
def __init__(self, default):
- ConfigSequence.__init__(self, seperator = ":", limits = [(0,23),(0,59)], default = default)
+ import time
+ t = time.localtime(default)
+ ConfigSequence.__init__(self, seperator = ":", limits = [(0,23),(0,59)], default = [t.tm_hour, t.tm_min])
class ConfigInteger(ConfigSequence):
def __init__(self, default, limits):
def tostring(self, value):
return str(value)
-class ConfigPIN(ConfigSequence):
+class ConfigPIN(ConfigInteger):
def __init__(self, default, len = 4, censor = ""):
- ConfigSequence.__init__(self, seperator = ":", limits = [(0, (10**len)-1)], censor_char = censor, default = [default])
+ assert isinstance(default, int), "ConfigPIN default must be an integer"
+ if default == -1:
+ default = "aaaa"
+ ConfigSequence.__init__(self, seperator = ":", limits = [(0, (10**len)-1)], censor_char = censor, default = default)
+ self.len = len
+
+ def getLength(self):
+ return self.len
class ConfigFloat(ConfigSequence):
def __init__(self, default, limits):
self.text = self.text.ljust(len(self.text) + 1)
elif key in KEY_NUMBERS:
number = self.getKey(getKeyNumber(key))
- self.text = self.text[0:self.marked_pos] + str(number) + self.text[self.marked_pos + 1:]
+ self.text = self.text[0:self.marked_pos] + unicode(number) + self.text[self.marked_pos + 1:]
elif key == KEY_TIMEOUT:
self.timeout()
return