rework config system to use a API for setting up the table now, and no merging

This commit is contained in:
Hendrik Leppkes
2008-01-31 09:55:51 +00:00
parent 2242edd844
commit 319f5dc02a
3 changed files with 138 additions and 108 deletions
+66 -76
View File
@@ -58,86 +58,76 @@ end
-- creates it, if the first time called
-- the Universal Bar option table is merged into this, alot of stuff gets inherited.
function module:GetOptionsTable()
return self:GetOptionsObject().table
end
function module:GetOptionsObject()
if not self.baroptions then
self.baroptions = Bartender4:Merge({
general = {
-- type = inherited
-- name = inherited
-- cmdInline = inherited
local obj = Bar.GetOptionObject(self)
local cat_general = {
enabled = {
order = 1,
args = {
enabled = {
order = 1,
name = "Enabled",
desc = "Enable/Disable the bar.",
type = "toggle",
set = optSetter,
get = optGetter,
},
style = {
-- type = inherited
-- name = inherited
-- inline = inherited
-- order = inherited (5)
args = {
padding = {
order = 30,
type = "range",
name = "Padding",
desc = "Configure the padding of the buttons.",
min = -10, max = 20, step = 1,
set = optSetter,
get = optGetter,
},
grid = {
order = 5,
type = "toggle",
name = "Button Grid",
desc = "Toggle the button grid.",
set = optSetter,
get = optGetter,
},
},
},
layout = {
type = "group",
name = "Layout",
inline = true,
order = 10,
set = optSetter,
get = optGetter,
args = {
buttons = {
name = "Buttons",
desc = "Number of buttons.",
type = "range",
min = 1, max = 12, step = 1,
},
rows = {
name = "Rows",
desc = "Number of rows.",
type = "range",
min = 1, max = 12, step = 1,
},
},
}
},
name = "Enabled",
desc = "Enable/Disable the bar.",
type = "toggle",
set = optSetter,
get = optGetter,
},
swap = {
type = "group",
name = "Page Swapping",
cmdInline = true,
order = 2,
args = self:GetStanceOptionsTable(),
padding = {
order = 40,
type = "range",
name = "Padding",
desc = "Configure the padding of the buttons.",
min = -10, max = 20, step = 1,
set = optSetter,
get = optGetter,
},
align = {
-- type = inherited
-- name = inherited
-- cmdInline = inherited
order = 3,
args = {},
}
}, Bar.GetOptionTable(self))
grid = {
order = 15,
type = "toggle",
name = "Button Grid",
desc = "Toggle the button grid.",
set = optSetter,
get = optGetter,
width = "full",
},
layout_header = {
order = 101,
type = "header",
name = "Layout Options",
},
buttons = {
order = 110,
name = "Buttons",
desc = "Number of buttons.",
type = "range",
min = 1, max = 12, step = 1,
set = optSetter,
get = optGetter,
},
rows = {
order = 120,
name = "Rows",
desc = "Number of rows.",
type = "range",
min = 1, max = 12, step = 1,
set = optSetter,
get = optGetter,
},
}
obj:AddElementGroup("general", "ActionBar", cat_general)
local swap = {
type = "group",
name = "Page Swapping",
cmdInline = true,
order = 2,
args = self:GetStanceOptionsTable(),
}
obj:NewCategory("swap", swap)
self.baroptions = obj
end
return self.baroptions
+28 -32
View File
@@ -116,9 +116,9 @@ do
end
local options
function Bar:GetOptionTable()
function Bar:GetOptionObject()
if not options then
options = {
local otbl = {
general = {
type = "group",
cmdInline = true,
@@ -128,36 +128,33 @@ function Bar:GetOptionTable()
show = {
order = 3,
type = "toggle",
name = "Shown",
name = "Show",
desc = "Show/Hide the bar.",
get = optGetter,
set = optSetter,
},
style = {
type = "group",
name = "Style",
inline = true,
order = 5,
args = {
alpha = {
order = 10,
name = "Alpha",
desc = "Configure the alpha of the bar.",
type = "range",
min = .1, max = 1, bigStep = 0.1,
get = optGetter,
set = optSetter,
},
scale = {
order = 20,
name = "Scale",
desc = "Configure the scale of the bar.",
type = "range",
min = .1, max = 2, step = 0.05, bigStep = 0.1,
get = optGetter,
set = optSetter,
},
},
styleheader = {
order = 10,
type = "header",
name = "Style Options",
},
alpha = {
order = 20,
name = "Alpha",
desc = "Configure the alpha of the bar.",
type = "range",
min = .1, max = 1, bigStep = 0.1,
get = optGetter,
set = optSetter,
},
scale = {
order = 30,
name = "Scale",
desc = "Configure the scale of the bar.",
type = "range",
min = .1, max = 2, step = 0.05, bigStep = 0.1,
get = optGetter,
set = optSetter,
},
},
},
@@ -166,11 +163,10 @@ function Bar:GetOptionTable()
cmdInline = true,
name = "Alignment",
order = 10,
args = {
},
},
args = {},
}
}
options = Bartender4:NewOptionObject(otbl)
end
return options
+44
View File
@@ -164,3 +164,47 @@ end
function Bartender4:RegisterModuleOptions(key, table)
self.options.plugins[key] = { [key] = table }
end
local optionParent = {}
function optionParent:NewCategory(category, data)
self.table[category] = data
end
function optionParent:AddElement(category, element, data, ...)
local lvl = self.table[category]
for i = 1, select('#', ...) do
local key = select(i, ...)
if not (lvl.args[key] and lvl.args[key].args) then
error(("Sub-Level Key %s does not exist in options group or is no sub-group."):format(key), 2)
end
lvl = lvl.args[key]
end
lvl.args[element] = data
end
function optionParent:AddElementGroup(category, group_desc, data, ...)
local lvl = self.table[category]
for i = 1, select('#', ...) do
local key = select(i, ...)
if not (lvl.args[key] and lvl.args[key].args) then
error(("Sub-Level Key %s does not exist in options group or is no sub-group."):format(key), 2)
end
lvl = lvl.args[key]
end
if not lvl.plugins then
lvl.plugins = {}
end
lvl.plugins[group_desc] = data
end
function Bartender4:NewOptionObject(otbl)
if not otbl then otbl = {} end
local tbl = { table = otbl }
for k, v in pairs(optionParent) do
tbl[k] = v
end
return tbl
end