Mercurial > wow > reaction
view modules/Stance.lua @ 228:ad40cd3fc7e9
pull states config out of namespace
author | Flick |
---|---|
date | Mon, 21 Mar 2011 11:33:15 -0700 |
parents | c4b134512c50 |
children | 9b9f5fc84d34 |
line wrap: on
line source
--[[ ReAction Stance button module --]] -- local imports local addonName, addonTable = ... local ReAction = addonTable.ReAction local L = ReAction.L local _G = _G -- Stance button local Button = ReAction.Button.Stance -- module declaration local moduleID = "Stance" local module = ReAction:NewModule( moduleID -- mixins go here ) -- handlers function module:OnInitialize() self.buttons = { } ReAction.RegisterCallback(self, "OnCreateBar", "OnRefreshBar") ReAction.RegisterCallback(self, "OnDestroyBar") ReAction.RegisterCallback(self, "OnRefreshBar") end function module:OnDestroyBar(event, bar, name) local btns = self.buttons[bar] if btns then for _,b in pairs(btns) do if b then b:Destroy() end end self.buttons[bar] = nil end end function module:OnRefreshBar(event, bar, name) local config = bar:GetConfig() if config.type == moduleID then local btns = self.buttons[bar] if btns == nil then btns = { } self.buttons[bar] = btns end if not config.buttons then config.buttons = { } end local btnCfg = config.buttons local r, c = bar:GetButtonGrid() local n = r*c for i = 1, n do if btnCfg[i] == nil then btnCfg[i] = {} end if btns[i] == nil then local success, r = pcall(Button.New,Button,i,btnCfg,bar,i>1 and btnCfg[i-1].stanceID) if success and r then btns[i] = r bar:AddButton(i,r) else n = i - 1 bar:ClipNButtons(n) break end end btns[i]:Refresh() end for i = n+1, #btns do if btns[i] then bar:RemoveButton(btns[i]) btns[i] = btns[i]:Destroy() if btnCfg[i] then btnCfg[i] = nil end end end end end