git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix limits (typo)
[enigma2.git]
/
lib
/
python
/
Components
/
config.py
diff --git
a/lib/python/Components/config.py
b/lib/python/Components/config.py
index b255f55aa36600ef6c1018e3420ceb768cdf5c1d..ad389a08d2e11f87ae923906ddc671b6ac22d701 100644
(file)
--- a/
lib/python/Components/config.py
+++ b/
lib/python/Components/config.py
@@
-67,6
+67,11
@@
class ConfigElement(object):
def cancel(self):
self.load()
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)
def changed(self):
for x in self.notifiers:
x(self)
@@
-188,8
+193,17
@@
class ConfigSelection(ConfigElement):
elif key == KEY_RIGHT:
self.value = self.choices[(i + 1) % nchoices]
elif key == KEY_RIGHT:
self.value = self.choices[(i + 1) % nchoices]
+ def getText(self):
+ descr = self.description[self.value]
+ if len(descr):
+ return _(descr)
+ return descr
+
def getMulti(self, selected):
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):
# HTML
def getHTML(self, id):
@@
-220,10
+234,19
@@
class ConfigBoolean(ConfigElement):
if key in [KEY_LEFT, KEY_RIGHT]:
self.value = not self.value
if key in [KEY_LEFT, KEY_RIGHT]:
self.value = not self.value
+ def getText(self):
+ descr = self.descriptions[self.value]
+ if len(descr):
+ return _(descr)
+ return descr
+
def getMulti(self, selected):
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 not value:
return "false"
else:
@@
-274,6
+297,9
@@
class ConfigDateTime(ConfigElement):
if key == KEY_RIGHT:
self.value = self.value + self.increment
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)))
def getMulti(self, selected):
return ("text", time.strftime(self.formatstring, time.localtime(self.value)))
@@
-310,7
+336,7
@@
class ConfigSequence(ConfigElement):
max_pos += len(str(self.limits[num][1]))
while self._value[num] < self.limits[num][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
while self._value[num] > self.limits[num][1]:
self._value[num] -= 1
@@
-376,8
+402,8
@@
class ConfigSequence(ConfigElement):
self.validate()
self.changed()
self.validate()
self.changed()
-
- def ge
tMulti(self, selected
):
+
+ def ge
nText(self
):
value = ""
mPos = self.marked_pos
num = 0;
value = ""
mPos = self.marked_pos
num = 0;
@@
-392,7
+418,14
@@
class ConfigSequence(ConfigElement):
else:
value += (self.censor_char * len(str(self.limits[num][1])))
num += 1
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:
# only mark cursor when we are selected
# (this code is heavily ink optimized!)
if self.enabled:
@@
-479,10
+512,10
@@
class ConfigText(ConfigElement, NumericalTextInput):
self.value = self.default = default
def validateMarker(self):
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 >= 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())
#def nextEntry(self):
# self.vals[1](self.getConfigPath())
@@
-496,9
+529,7
@@
class ConfigText(ConfigElement, NumericalTextInput):
self.marked_pos -= 1
elif key == KEY_RIGHT:
self.marked_pos += 1
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:]
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:]
@@
-509,8
+540,14
@@
class ConfigText(ConfigElement, NumericalTextInput):
self.validateMarker()
self.changed()
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
def nextFunc(self):
self.marked_pos += 1
+ self.maybeExpand()
self.validateMarker()
self.changed()
self.validateMarker()
self.changed()
@@
-527,6
+564,9
@@
class ConfigText(ConfigElement, NumericalTextInput):
value = property(getValue, setValue)
_value = property(getValue, setValue)
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])
def getMulti(self, selected):
return ("mtext"[1-selected:], self.value, [self.marked_pos])
@@
-567,6
+607,9
@@
class ConfigSlider(ConfigElement):
self.checkValues()
self.changed()
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)
def getMulti(self, selected):
self.checkValues()
return ("slider", self.value, self.max)
@@
-579,7
+622,7
@@
class ConfigSatlist(ConfigSelection):
def __init__(self, list, default = None):
if default is not None:
default = str(default)
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
, flags) for (orbpos, desc, flags
) in list], default = default)
def getOrbitalPosition(self):
if self.value == "":
def getOrbitalPosition(self):
if self.value == "":
@@
-655,6
+698,12
@@
class ConfigSubList(list, object):
item.saved_value = self.stored_values[i]
item.load()
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
# 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
@@
-694,6
+743,9
@@
class ConfigSubDict(dict, object):
item.saved_value = self.stored_values[str(key)]
item.load()
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.
#
# Like the classes above, just with a more "native"
# syntax.
#
@@
-754,6
+806,9
@@
class ConfigSubsection(object):
for x in self.content.items.values():
x.load()
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.
#
# the root config object, which also can "pickle" (=serialize)
# down the whole config tree.
#
@@
-820,7
+875,7
@@
config = Config()
config.misc = ConfigSubsection()
class ConfigFile:
config.misc = ConfigSubsection()
class ConfigFile:
- CONFIG_FILE = resolveFilename(SCOPE_CONFIG, "
config2
")
+ CONFIG_FILE = resolveFilename(SCOPE_CONFIG, "
settings
")
def load(self):
try:
def load(self):
try:
@@
-829,11
+884,26
@@
class ConfigFile:
print "unable to load config (%s), assuming defaults..." % str(e)
def save(self):
print "unable to load config (%s), assuming defaults..." % str(e)
def save(self):
-
config.save()
+
#
config.save()
config.saveToFile(self.CONFIG_FILE)
config.saveToFile(self.CONFIG_FILE)
+ def __resolveValue(self, pickles, cmap):
+ if cmap.has_key(pickles[0]):
+ if len(pickles) > 1:
+ return self.__resolveValue(pickles[1:], cmap[pickles[0]].dict())
+ else:
+ return str(cmap[pickles[0]].value)
+ return None
+
def getResolvedKey(self, key):
def getResolvedKey(self, key):
- return None # FIXME
+ names = key.split('.')
+ if len(names) > 1:
+ if names[0] == "config":
+ ret=self.__resolveValue(names[1:], config.content.items)
+ if ret and len(ret):
+ return ret
+ print "getResolvedKey", key, "failed !! (Typo??)"
+ return ""
def NoSave(element):
element.disableSave()
def NoSave(element):
element.disableSave()
@@
-843,8
+913,9
@@
configfile = ConfigFile()
configfile.load()
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
#def _(x):
# return x