view modules/ReAction_ConfigUI/ReAction_ConfigUI.lua @ 33:c54c481ad0ed

- Moved bar control frame from ConfigUI to Bar - Added LICENSE.txt - added profile management options - other minor cleanup
author Flick <flickerstreak@gmail.com>
date Thu, 03 Apr 2008 20:25:40 +0000
parents 0d95ce7a9ec2
children 11ddb9610770
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 )

-- options table basic layer
module.configOptions = {
  type = "group",
  childGroups = "tab",
  args = {
    desc = {
      type = "description",
      name = L["Customizable replacement for Blizzard's Action Bars"],
    },
    global = {
      type = "group",
      name = L["Global Settings"],
      desc = L["Global configuration settings"],
      args = { 
        unlock = {
          type     = "toggle",
          handler  = module,
          name     = L["Unlock Bars"],
          desc     = L["Unlock bars for dragging and resizing with the mouse"],
          get      = function() return module.configMode end,
          set      = function(info, value) module:SetConfigMode(value) end,
          disabled = InCombatLockdown,
          order    = 1
        },
      },
      order = 1,
    },
    module = {
      type = "group",
      childGroups = "select",
      name = L["Module Settings"],
      desc = L["Configuration settings for each module"],
      args = { 
        configUI = {
          type = "group",
          name = "Config UI",
          desc = "description",
          args = {
            foo = {
              type = "toggle",
              handler = module,
              name = "foo",
              desc = "description",
              get = function() return true end,
              set = function() end,
            }
          }
        },
      },
      order = -1,
    },
  },
  plugins = { }
}

-- module methods
function module:OnInitialize()
  self.db = ReAction.db:RegisterNamespace( moduleID,
    {
      profile = { }
    }
  )

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

  self.configOptions.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(ReAction.db)
  self.configOptions.args.profile.order = -2

  LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("ReAction",self.configOptions)
  LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ReAction", "ReAction")
  ReAction.RegisterCallback(self,"OnOptionsRegistered")
  ReAction.RegisterCallback(self,"OnOptionsRefreshed")
end

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

  elseif context == "barMenu" then

  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