Overall CBI-UVL ineraction fixes

This commit is contained in:
Steven Barth 2008-09-13 12:20:39 +00:00
parent b69589fba3
commit f9303705a0
4 changed files with 24 additions and 8 deletions

View file

@ -75,6 +75,8 @@ function load(cbimap, ...)
if not instanceof(map, Node) then if not instanceof(map, Node) then
error("CBI map returns no valid map object!") error("CBI map returns no valid map object!")
return nil return nil
else
map:prepare()
end end
end end
@ -166,6 +168,13 @@ function Node._i18n(self, config, section, option, title, description)
end end
end end
-- Prepare nodes
function Node.prepare(self, ...)
for k, child in ipairs(self.children) do
child:prepare(...)
end
end
-- Append child nodes -- Append child nodes
function Node.append(self, obj) function Node.append(self, obj)
table.insert(self.children, obj) table.insert(self.children, obj)
@ -870,7 +879,9 @@ function AbstractValue.__init__(self, map, section, option, ...)
self.default = nil self.default = nil
self.size = nil self.size = nil
self.optional = false self.optional = false
end
function AbstractValue.prepare(self)
-- Use defaults from UVL -- Use defaults from UVL
if not self.override_scheme if not self.override_scheme
and self.map:get_scheme(self.section.sectiontype, self.option) then and self.map:get_scheme(self.section.sectiontype, self.option) then
@ -1099,23 +1110,23 @@ function ListValue.__init__(self, ...)
self.vallist = {} self.vallist = {}
self.size = 1 self.size = 1
self.widget = "select" self.widget = "select"
end
function ListValue.prepare(self, ...)
AbstractValue.prepare(self, ...)
if not self.override_scheme if not self.override_scheme
and self.map:get_scheme(self.section.sectiontype, self.option) then and self.map:get_scheme(self.section.sectiontype, self.option) then
local vs = self.map:get_scheme(self.section.sectiontype, self.option) local vs = self.map:get_scheme(self.section.sectiontype, self.option)
if self.value and vs.values and not self.override_values then if self.value and vs.valuelist and not self.override_values then
if self.rmempty or self.optional then for k, v in ipairs(vs.valuelist) do
self:value("")
end
for k, v in pairs(vs.values) do
local deps = {} local deps = {}
if not self.override_dependencies if not self.override_dependencies
and vs.enum_depends and vs.enum_depends[k] then and vs.enum_depends and vs.enum_depends[v.value] then
for i, dep in ipairs(vs.enum_depends[k]) do for i, dep in ipairs(vs.enum_depends[v.value]) do
table.insert(deps, _uvl_strip_remote_dependencies(dep)) table.insert(deps, _uvl_strip_remote_dependencies(dep))
end end
end end
self:value(k, v, unpack(deps)) self:value(v.value, v.title or v.value, unpack(deps))
end end
end end
end end

View file

@ -633,8 +633,10 @@ function UVL._parse_enum(self, scheme, k, v)
if not t.values then if not t.values then
t.values = { [v.value] = v.title or v.value } t.values = { [v.value] = v.title or v.value }
t.valuelist = { {value = v.value, title = v.title} }
else else
t.values[v.value] = v.title or v.value t.values[v.value] = v.title or v.value
t.valuelist[#t.valuelist + 1] = {value = v.value, title = v.title}
end end
if not t.enum_depends then if not t.enum_depends then

View file

@ -236,6 +236,7 @@ end
------------------- WiFI-Encryption ------------------- ------------------- WiFI-Encryption -------------------
encr = s:option(ListValue, "encryption", translate("encryption")) encr = s:option(ListValue, "encryption", translate("encryption"))
encr.override_values = true
encr:depends({mode="ap"}) encr:depends({mode="ap"})
encr:depends({mode="sta"}) encr:depends({mode="sta"})
encr:depends({mode="adhoc"}) encr:depends({mode="adhoc"})

View file

@ -141,6 +141,7 @@ local hwtype = m:get(wifidevs[1], "type")
if hwtype == "atheros" then if hwtype == "atheros" then
mode = s:option(ListValue, "mode", translate("mode")) mode = s:option(ListValue, "mode", translate("mode"))
mode.override_values = true
mode:value("", "auto") mode:value("", "auto")
mode:value("11b", "802.11b") mode:value("11b", "802.11b")
mode:value("11g", "802.11g") mode:value("11g", "802.11g")
@ -206,6 +207,7 @@ function mode.write(self, section, value)
end end
encr = s:option(ListValue, "encryption", translate("encryption")) encr = s:option(ListValue, "encryption", translate("encryption"))
encr.override_values = true
encr:value("none", "No Encryption") encr:value("none", "No Encryption")
encr:value("wep", "WEP") encr:value("wep", "WEP")