annotate modules/LBF.lua @ 175:df68b5a40490

Remove ReAction global in favor of built in addon table (drycoded)
author Flick <flickerstreak@gmail.com>
date Wed, 20 Oct 2010 17:11:50 +0000
parents 410d036c43b2
children 1696ff2c80cc
rev   line source
flickerstreak@108 1 -- local imports
flickerstreak@175 2 local addonName, addonTable = ...
flickerstreak@175 3 local ReAction = addonTable.ReAction
flickerstreak@108 4 local L = ReAction.L
flickerstreak@108 5 local _G = _G
flickerstreak@108 6
flickerstreak@108 7 -- module declaration
flickerstreak@108 8 local moduleID = "ButtonFacade"
flickerstreak@108 9 local module = ReAction:NewModule( moduleID )
flickerstreak@108 10
flickerstreak@108 11 -- handlers
flickerstreak@108 12 function module:OnInitialize()
flickerstreak@108 13 self.db = ReAction.db:RegisterNamespace( moduleID,
flickerstreak@108 14 {
flickerstreak@108 15 profile = {
flickerstreak@108 16 -- default profile goes here
flickerstreak@108 17 }
flickerstreak@108 18 }
flickerstreak@108 19 )
flickerstreak@108 20
flickerstreak@108 21 local LBF = LibStub("LibButtonFacade",true)
flickerstreak@108 22
flickerstreak@108 23 if not LBF then -- no more initialization
flickerstreak@108 24 return
flickerstreak@108 25 end
flickerstreak@108 26
flickerstreak@108 27 self.LBF = LBF
flickerstreak@108 28 self.groups = { }
flickerstreak@108 29
flickerstreak@108 30 -- override a method of ReAction.Bar
flickerstreak@108 31 -- note that 'self' in this context refers to the bar
flickerstreak@108 32 function ReAction.Bar:SkinButton( button, data )
flickerstreak@108 33 module:GetGroup(self:GetName()):AddButton(button:GetFrame(), data)
flickerstreak@108 34 end
flickerstreak@108 35
flickerstreak@108 36 -- register some common events
flickerstreak@108 37 ReAction.RegisterCallback(self, "OnCreateBar")
flickerstreak@108 38 ReAction.RegisterCallback(self, "OnDestroyBar")
flickerstreak@108 39 ReAction.RegisterCallback(self, "OnRefreshBar")
flickerstreak@108 40 ReAction.RegisterCallback(self, "OnEraseBar")
flickerstreak@108 41 ReAction.RegisterCallback(self, "OnRenameBar")
flickerstreak@108 42
flickerstreak@108 43 self.LBF:RegisterSkinCallback("ReAction", self.OnSkinChanged, self)
flickerstreak@108 44 end
flickerstreak@108 45
flickerstreak@108 46 function module:OnEnable()
flickerstreak@108 47
flickerstreak@108 48 end
flickerstreak@108 49
flickerstreak@108 50 function module:OnDisable()
flickerstreak@108 51
flickerstreak@108 52 end
flickerstreak@108 53
flickerstreak@108 54 function module:OnCreateBar(event, bar, name)
flickerstreak@108 55 local c = self.db.profile[name]
flickerstreak@108 56 if not c then
flickerstreak@108 57 c = {
flickerstreak@108 58 skinID = "Blizzard",
flickerstreak@108 59 backdrop = true,
flickerstreak@108 60 gloss = 0,
flickerstreak@108 61 colors = {},
flickerstreak@108 62 }
flickerstreak@108 63 self.db.profile[name] = c
flickerstreak@108 64 end
flickerstreak@108 65
flickerstreak@108 66 local g = self:GetGroup(name)
flickerstreak@108 67 g.SkinID = c.skinID or "Blizzard"
flickerstreak@108 68 g.Backdrop = c.backdrop
flickerstreak@108 69 g.Gloss = c.gloss
flickerstreak@108 70 g.Colors = c.colors
flickerstreak@108 71 end
flickerstreak@108 72
flickerstreak@108 73 function module:OnDestroyBar(event, bar, name)
flickerstreak@108 74 if self.groups[name] then
flickerstreak@108 75 self.groups[name]:Delete()
flickerstreak@108 76 self.groups[name] = nil
flickerstreak@108 77 end
flickerstreak@108 78 end
flickerstreak@108 79
flickerstreak@108 80 function module:OnRefreshBar(event, bar, name)
flickerstreak@108 81 local c = self.db.profile[name]
flickerstreak@108 82 local g = self.groups[name]
flickerstreak@108 83 if c and g then
flickerstreak@108 84 g:Skin(c.skinID, c.gloss, c.backdrop, c.colors)
flickerstreak@108 85 end
flickerstreak@108 86 end
flickerstreak@108 87
flickerstreak@108 88 function module:OnEraseBar(event, bar, name)
flickerstreak@108 89 self:OnDestroyBar(event, bar, name)
flickerstreak@108 90 self.db.profile[name] = nil
flickerstreak@108 91 end
flickerstreak@108 92
flickerstreak@108 93 function module:OnRenameBar(event, bar, oldName, newName)
flickerstreak@108 94 if self.groups[name] then
flickerstreak@108 95 self.groups[name]:Delete(true)
flickerstreak@108 96 self.db.profile[oldName], self.db.profile[newName] = nil, self.db.profile[oldName]
flickerstreak@108 97 self:OnCreateBar(event, bar, newName)
flickerstreak@108 98 end
flickerstreak@108 99 end
flickerstreak@108 100
flickerstreak@108 101 function module:OnSkinChanged( skinID, gloss, backdrop, group, button, colors )
flickerstreak@108 102 local c = self.db.profile[group]
flickerstreak@108 103 if c then
flickerstreak@108 104 c.skinID = skinID
flickerstreak@108 105 c.gloss = gloss
flickerstreak@108 106 c.backdrop = backdrop
flickerstreak@108 107 c.colors = colors
flickerstreak@108 108 end
flickerstreak@108 109 end
flickerstreak@108 110
flickerstreak@108 111 function module:GetGroup( name )
flickerstreak@108 112 if not self.groups[name] then
flickerstreak@108 113 self.groups[name] = self.LBF:Group("ReAction", name)
flickerstreak@108 114 end
flickerstreak@108 115 return self.groups[name]
flickerstreak@108 116 end