self.l = eListboxPythonConfigContent()
self.l.setSeperation(100)
self.timer = eTimer()
- self.timer.timeout.get().append(self.timeout)
self.list = list
self.onSelectionChanged = [ ]
self.current = None
self.help_window = None
self.setHelpWindowSession(session)
- def execEnd(self):
- self.timer = eTimer()
+ def execBegin(self):
self.timer.timeout.get().append(self.timeout)
+ def execEnd(self):
+ self.timer.timeout.get().remove(self.timeout)
+
def setHelpWindowSession(self, session):
assert self.help_window is None, "you can't move a help window to another session"
self.session = session
self.handleKey(KEY_TIMEOUT)
class ConfigListScreen:
- def __init__(self, list, session = None):
+ def __init__(self, list, session = None, on_change = None):
self["config_actions"] = NumberActionMap(["SetupActions", "TextInputActions"],
{
"ok": self.keyOK,
}, -1) # to prevent left/right overriding the listbox
self["config"] = ConfigList(list, session = session)
+ if on_change is not None:
+ self.__changed = on_change
+ else:
+ self.__changed = lambda: None
def keyOK(self):
self["config"].handleKey(KEY_OK)
def keyLeft(self):
self["config"].handleKey(KEY_LEFT)
+ self.__changed()
def keyRight(self):
self["config"].handleKey(KEY_RIGHT)
+ self.__changed()
def keyDelete(self):
self["config"].handleKey(KEY_DELETE)
+ self.__changed()
def keyNumberGlobal(self, number):
self["config"].handleKey(KEY_0 + number)
+ self.__changed()
+
def cancel(self):
self.load()
+ def isChanged(self):
+ if self.saved_value is None and self.value == self.default:
+ return False
+ return self.tostring(self.value) != self.saved_value
+
def changed(self):
for x in self.notifiers:
x(self)
elif key == KEY_RIGHT:
self.value = self.choices[(i + 1) % nchoices]
+ def getText(self):
+ return _(self.description[self.value])
+
def getMulti(self, selected):
- return ("text", self.description[self.value])
+ return ("text", _(self.description[self.value]))
# HTML
def getHTML(self, id):
if key in [KEY_LEFT, KEY_RIGHT]:
self.value = not self.value
+ def getText(self):
+ return _(self.descriptions[self.value])
+
def getMulti(self, selected):
return ("text", _(self.descriptions[self.value]))
if key == KEY_RIGHT:
self.value = self.value + self.increment
+
+ def getText(self):
+ return time.strftime(self.formatstring, time.localtime(self.value))
+
def getMulti(self, selected):
return ("text", time.strftime(self.formatstring, time.localtime(self.value)))
self.validate()
self.changed()
-
- def getMulti(self, selected):
+
+ def genText(self):
value = ""
mPos = self.marked_pos
num = 0;
else:
value += (self.censor_char * len(str(self.limits[num][1])))
num += 1
-
+ return (value, mPos)
+
+ def getText(self):
+ (value, mPos) = self.genText()
+ return value
+
+ def getMulti(self, selected):
+ (value, mPos) = self.genText()
# only mark cursor when we are selected
# (this code is heavily ink optimized!)
if self.enabled:
value = property(getValue, setValue)
_value = property(getValue, setValue)
+ def getText(self):
+ return self.value
+
def getMulti(self, selected):
return ("mtext"[1-selected:], self.value, [self.marked_pos])
self.checkValues()
self.changed()
+ def getText(self):
+ return "%d / %d" % (self.value, self.max)
+
def getMulti(self, selected):
self.checkValues()
return ("slider", self.value, self.max)
print "unable to load config (%s), assuming defaults..." % str(e)
def save(self):
- config.save()
+# config.save()
config.saveToFile(self.CONFIG_FILE)
def __resolveValue(self, pickles, cmap):
"save": self.keySave,
}, -2)
- ConfigListScreen.__init__(self, list, session = session)
+ ConfigListScreen.__init__(self, list, session = session, on_change = self.changedEntry)
self.changedEntry()
return self["config"].getCurrent()[0]
def getCurrentValue(self):
- return str(self["config"].getCurrent()[1].value)
+ return str(self["config"].getCurrent()[1].getText())
def createSummary(self):
return SetupSummary
self.close()
def keyCancel(self):
- self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
+ is_changed = False
+ for x in self["config"].list:
+ is_changed |= x[1].isChanged()
+
+ if is_changed:
+ self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
+ else:
+ self.close()
def getSetupTitle(id):
xmldata = setupdom.childNodes[0].childNodes