self.value = self.choices[(i + 1) % nchoices]
def getText(self):
- return _(self.description[self.value])
+ descr = self.description[self.value]
+ if len(descr):
+ return _(descr)
+ return descr
def getMulti(self, selected):
- return ("text", _(self.description[self.value]))
+ descr = self.description[self.value]
+ if len(descr):
+ return ("text", _(descr))
+ return ("text", descr)
# HTML
def getHTML(self, id):
self.value = not self.value
def getText(self):
- return _(self.descriptions[self.value])
+ descr = self.descriptions[self.value]
+ if len(descr):
+ return _(descr)
+ return descr
def getMulti(self, selected):
- return ("text", _(self.descriptions[self.value]))
+ descr = self.descriptions[self.value]
+ if len(descr):
+ return ("text", _(descr))
+ return ("text", descr)
- def tostring(self, value):
+ def tostring(self, value):
if not value:
return "false"
else:
if key == KEY_RIGHT:
self.value = self.value + self.increment
-
def getText(self):
return time.strftime(self.formatstring, time.localtime(self.value))
self.default = default
self.value = copy.copy(default)
+
+ self.endNotifier = []
def validate(self):
max_pos = 0
max_pos += len(str(self.limits[num][1]))
while self._value[num] < self.limits[num][0]:
- self.value[num] += 1
+ self._value[num] += 1
while self._value[num] > self.limits[num][1]:
self._value[num] -= 1
num += 1
if self.marked_pos >= max_pos:
+ for x in self.endNotifier:
+ x(self)
self.marked_pos = max_pos - 1
if self.marked_pos < 0:
if self.marked_pos >= total_len:
self.marked_pos = total_len - 1
+
+ def addEndNotifier(self, notifier):
+ self.endNotifier.append(notifier)
def handleKey(self, key):
if key == KEY_LEFT:
return str(v)
def fromstring(self, value):
- return [int(x) for x in self.saved_value.split(self.seperator)]
+ return [int(x) for x in value.split(self.seperator)]
class ConfigIP(ConfigSequence):
def __init__(self, default):
ConfigSequence.__init__(self, seperator = ".", limits = [(0,255),(0,255),(0,255),(0,255)], default = default)
+
+ def getHTML(self, id):
+ # we definitely don't want leading zeros
+ return '.'.join(["%d" % d for d in self.value])
class ConfigMAC(ConfigSequence):
def __init__(self, default):
self.value = self.default = default
def validateMarker(self):
- if self.marked_pos < 0:
- self.marked_pos = 0
if self.marked_pos >= len(self.text):
self.marked_pos = len(self.text) - 1
+ if self.marked_pos < 0:
+ self.marked_pos = 0
#def nextEntry(self):
# self.vals[1](self.getConfigPath())
self.marked_pos -= 1
elif key == KEY_RIGHT:
self.marked_pos += 1
- if not self.fixed_size:
- if self.marked_pos >= len(self.text):
- self.text = self.text.ljust(len(self.text) + 1)
+ self.maybeExpand()
elif key in KEY_NUMBERS:
number = self.getKey(getKeyNumber(key))
self.text = self.text[0:self.marked_pos] + unicode(number) + self.text[self.marked_pos + 1:]
self.validateMarker()
self.changed()
+ def maybeExpand(self):
+ if not self.fixed_size:
+ if self.marked_pos >= len(self.text):
+ self.text = self.text.ljust(len(self.text) + 1)
+
def nextFunc(self):
self.marked_pos += 1
+ self.maybeExpand()
self.validateMarker()
self.changed()
def __init__(self, list, default = None):
if default is not None:
default = str(default)
- ConfigSelection.__init__(self, choices = [(str(orbpos), desc) for (orbpos, desc) in list], default = default)
+ ConfigSelection.__init__(self, choices = [(str(orbpos), desc) for (orbpos, desc, flags) in list], default = default)
def getOrbitalPosition(self):
if self.value == "":
item.saved_value = self.stored_values[i]
item.load()
+ def dict(self):
+ res = dict()
+ for index in range(len(self)):
+ res[str(index)] = self[index]
+ return res
+
# same as ConfigSubList, just as a dictionary.
# care must be taken that the 'key' has a proper
# str() method, because it will be used in the config
item.saved_value = self.stored_values[str(key)]
item.load()
+ def dict(self):
+ return self
+
# Like the classes above, just with a more "native"
# syntax.
#
for x in self.content.items.values():
x.load()
+ def dict(self):
+ return self.content.items
+
# the root config object, which also can "pickle" (=serialize)
# down the whole config tree.
#
def __resolveValue(self, pickles, cmap):
if cmap.has_key(pickles[0]):
if len(pickles) > 1:
- return self.__resolveValue(pickles[1:], cmap[pickles[0]].content.items)
+ return self.__resolveValue(pickles[1:], cmap[pickles[0]].dict())
else:
return str(cmap[pickles[0]].value)
return None
configfile.load()
-def getConfigListEntry(desc, config):
- return (desc, config)
+def getConfigListEntry(*args):
+ assert len(args) > 1, "getConfigListEntry needs a minimum of two arguments (descr, configElement)"
+ return args
#def _(x):
# return x