flickerstreak@25: --[[ flickerstreak@25: ReAction Configuration UI module flickerstreak@25: flickerstreak@33: Hooks into Blizzard Interface Options AddOns panel flickerstreak@25: --]] flickerstreak@25: flickerstreak@25: -- local imports flickerstreak@25: local ReAction = ReAction flickerstreak@25: local L = ReAction.L flickerstreak@25: flickerstreak@25: -- module declaration flickerstreak@25: local moduleID = "ConfigUI" flickerstreak@33: local module = ReAction:NewModule( moduleID ) flickerstreak@25: flickerstreak@25: -- module methods flickerstreak@25: function module:OnInitialize() flickerstreak@30: ReAction.RegisterCallback(self,"OnOptionsRegistered") flickerstreak@33: ReAction.RegisterCallback(self,"OnOptionsRefreshed") flickerstreak@46: self:InitializeOptions() flickerstreak@25: end flickerstreak@25: flickerstreak@30: function module:OnOptionsRegistered(evt, context, module, opts) flickerstreak@46: local c = self.configOptions.args[context] flickerstreak@46: if c then flickerstreak@30: for k, v in pairs(opts) do flickerstreak@46: c.args[k] = v flickerstreak@30: end flickerstreak@30: end flickerstreak@25: end flickerstreak@25: flickerstreak@33: function module:OnOptionsRefreshed(evt) flickerstreak@33: -- TODO: refresh options frame (just OpenConfig again?) flickerstreak@25: end flickerstreak@25: flickerstreak@25: function module:OpenConfig(bar) flickerstreak@30: InterfaceOptionsFrame_OpenToFrame("ReAction") flickerstreak@33: if bar then flickerstreak@33: -- TODO: select the correct bar pane flickerstreak@25: end flickerstreak@25: end flickerstreak@44: flickerstreak@46: function module:InitializeOptions() flickerstreak@46: self.configOptions = { flickerstreak@46: type = "group", flickerstreak@46: childGroups = "tab", flickerstreak@46: args = { flickerstreak@46: global = { flickerstreak@46: type = "group", flickerstreak@46: name = L["Global Settings"], flickerstreak@46: desc = L["Global configuration settings"], flickerstreak@46: args = { }, flickerstreak@46: order = 1, flickerstreak@46: }, flickerstreak@46: bar = { flickerstreak@46: type = "group", flickerstreak@46: name = L["Bar Config"], flickerstreak@46: desc = L["Configuration settings for bars"], flickerstreak@46: args = { }, flickerstreak@46: order = 2, flickerstreak@46: }, flickerstreak@46: module = { flickerstreak@46: type = "group", flickerstreak@46: childGroups = "select", flickerstreak@46: name = L["Module Settings"], flickerstreak@46: desc = L["Configuration settings for each module"], flickerstreak@46: args = { }, flickerstreak@46: order = -1, flickerstreak@46: }, flickerstreak@46: }, flickerstreak@46: plugins = { } flickerstreak@46: } flickerstreak@46: flickerstreak@46: for c, tbl in pairs(self.configOptions.args) do flickerstreak@46: for _, m in pairs(ReAction:GetOptions(c)) do flickerstreak@46: for k, v in pairs(m) do flickerstreak@46: tbl.args[k] = v flickerstreak@46: end flickerstreak@46: end flickerstreak@46: end flickerstreak@46: flickerstreak@46: self.configOptions.args.desc = { flickerstreak@46: type = "description", flickerstreak@46: name = L["Customizable replacement for Blizzard's Action Bars"], flickerstreak@46: } flickerstreak@46: self.configOptions.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(ReAction.db) flickerstreak@46: self.configOptions.args.profile.order = -2 flickerstreak@46: flickerstreak@46: ReAction:RegisterOptions("module",self, { flickerstreak@46: configUI = { flickerstreak@46: type = "group", flickerstreak@46: name = "Config UI", flickerstreak@46: desc = "description", flickerstreak@46: args = { flickerstreak@46: foo = { flickerstreak@46: type = "toggle", flickerstreak@46: handler = self, flickerstreak@46: name = "foo", flickerstreak@46: desc = "description", flickerstreak@46: get = function() return true end, flickerstreak@46: set = function() end, flickerstreak@46: } flickerstreak@46: } flickerstreak@46: }, flickerstreak@46: }) flickerstreak@46: flickerstreak@46: LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("ReAction",self.configOptions) flickerstreak@46: self.frame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ReAction", "ReAction") flickerstreak@46: self.frame.obj:SetCallback("default", function() ReAction.db:ResetProfile() end) flickerstreak@44: end flickerstreak@44: