view modules/ReAction_ConfigUI/ReAction_ConfigUI.lua @ 46:aa0b7fd68462

rearranged options table initialization a little
author Flick <flickerstreak@gmail.com>
date Thu, 10 Apr 2008 23:27:58 +0000
parents 2232b8336903
children e12b736c23c3
line wrap: on
line source
--[[
  ReAction Configuration UI module

  Hooks into Blizzard Interface Options AddOns panel
--]]

-- local imports
local ReAction = ReAction
local L = ReAction.L

-- module declaration
local moduleID = "ConfigUI"
local module = ReAction:NewModule( moduleID )

-- module methods
function module:OnInitialize()
  ReAction.RegisterCallback(self,"OnOptionsRegistered")
  ReAction.RegisterCallback(self,"OnOptionsRefreshed")
  self:InitializeOptions()
end

function module:OnOptionsRegistered(evt, context, module, opts)
  local c = self.configOptions.args[context]
  if c then
    for k, v in pairs(opts) do
      c.args[k] = v
    end
  end
end

function module:OnOptionsRefreshed(evt)
  -- TODO: refresh options frame (just OpenConfig again?)
end

function module:OpenConfig(bar)
  InterfaceOptionsFrame_OpenToFrame("ReAction")
  if bar then
    -- TODO: select the correct bar pane
  end
end

function module:InitializeOptions()
  self.configOptions = {
    type = "group",
    childGroups = "tab",
    args = {
      global = {
        type = "group",
        name = L["Global Settings"],
        desc = L["Global configuration settings"],
        args = { },
        order = 1,
      },
      bar = {
        type = "group",
        name = L["Bar Config"],
        desc = L["Configuration settings for bars"],
        args = { },
        order = 2,
      },
      module = {
        type = "group",
        childGroups = "select",
        name = L["Module Settings"],
        desc = L["Configuration settings for each module"],
        args = { },
        order = -1,
      },
    },
    plugins = { }
  }

  for c, tbl in pairs(self.configOptions.args) do
    for _, m in pairs(ReAction:GetOptions(c)) do
      for k, v in pairs(m) do
        tbl.args[k] = v
      end
    end
  end

  self.configOptions.args.desc = {
    type = "description",
    name = L["Customizable replacement for Blizzard's Action Bars"],
  }
  self.configOptions.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(ReAction.db)
  self.configOptions.args.profile.order = -2

  ReAction:RegisterOptions("module",self, {
    configUI = {
      type = "group",
      name = "Config UI",
      desc = "description",
      args = {
        foo = {
          type = "toggle",
          handler = self,
          name = "foo",
          desc = "description",
          get = function() return true end,
          set = function() end,
        }
      }
    },
  })

  LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("ReAction",self.configOptions)
  self.frame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ReAction", "ReAction")
  self.frame.obj:SetCallback("default", function() ReAction.db:ResetProfile() end)
end