self.save_disabled = False
self.notifiers = []
self.enabled = True
+ self.callNotifiersOnSaveAndCancel = False
# you need to override this to do input validation
def setValue(self, value):
self.saved_value = None
else:
self.saved_value = self.tostring(self.value)
+ if self.callNotifiersOnSaveAndCancel:
+ self.changed()
def cancel(self):
self.load()
+ if self.callNotifiersOnSaveAndCancel:
+ self.changed()
def isChanged(self):
sv = self.saved_value
return [int(x) for x in value.split(self.seperator)]
class ConfigIP(ConfigSequence):
- def __init__(self, default):
+ def __init__(self, default, auto_jump = False):
ConfigSequence.__init__(self, seperator = ".", limits = [(0,255),(0,255),(0,255),(0,255)], default = default)
self.block_len = []
for x in self.limits:
self.block_len.append(len(str(x[1])))
self.marked_block = 0
self.overwrite = True
+ self.auto_jump = auto_jump
def handleKey(self, key):
+
if key == KEY_LEFT:
if self.marked_block > 0:
self.marked_block -= 1
- self.overwrite = True
+ self.overwrite = True
if key == KEY_RIGHT:
if self.marked_block < len(self.limits)-1:
self.marked_block += 1
- self.overwrite = True
+ self.overwrite = True
if key == KEY_HOME:
self.marked_block = 0
self.marked_block = len(self.limits)-1
self.overwrite = True
- if key in KEY_NUMBERS:
- number = getKeyNumber(key)
+ if key in KEY_NUMBERS or key == KEY_ASCII:
+ if key == KEY_ASCII:
+ code = getPrevAsciiCode()
+ if code < 48 or code > 57:
+ return
+ number = code - 48
+ else:
+ number = getKeyNumber(key)
oldvalue = self._value[self.marked_block]
if self.overwrite:
self.overwrite = False
else:
oldvalue *= 10
- self._value[self.marked_block] = oldvalue + number
+ newvalue = oldvalue + number
+ if self.auto_jump and newvalue > self.limits[self.marked_block][1] and self.marked_block < len(self.limits)-1:
+ self.handleKey(KEY_RIGHT)
+ self.handleKey(key)
+ return
+ else:
+ self._value[self.marked_block] = newvalue
if len(str(self._value[self.marked_block])) >= self.block_len[self.marked_block]:
self.handleKey(KEY_RIGHT)
def getValue(self):
return self.text.encode("utf-8")
-
+
def setValue(self, val):
try:
self.text = val.decode("utf-8")
except UnicodeDecodeError:
- self.text = val
+ self.text = val.decode("utf-8", "ignore")
print "Broken UTF8!"
value = property(getValue, setValue)