rework config system to use a API for setting up the table now, and no merging
This commit is contained in:
+66
-76
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user