annotate Templates.lua @ 121:1f68c46bc4de

BuffFrame: - Added interface framework for selectively hiding certain buff's auxiliary values.
author Nenue
date Mon, 17 Jul 2017 11:51:31 -0400
parents 8c94bee4fdfc
children ea2c616a3b4f
rev   line source
Nenue@90 1 -- Veneer
Nenue@90 2 -- Templates.lua
Nenue@90 3 -- Created: 10/24/2016 9:16 AM
Nenue@90 4 -- %file-revision%
Nenue@90 5 --
Nenue@90 6 -- Mover Widget base
Nick@109 7 local ADDON, Veneer = ...
Nenue@115 8 local print = DEVIAN_WORKSPACE and function(...) _G.print('Veneer', ...) end or nop
Nick@109 9 local PlaySoundKitID = DEVIAN_WORKSPACE and PlaySoundKitID or nop
Nick@109 10 local ipairs, pairs = ipairs, pairs
Nick@109 11 local pack, unpack = pack, unpack
Nenue@90 12
Nick@109 13 local Handler, ConfigLayer, Animation = {}, {}, {}
Nenue@90 14
Nick@109 15 VeneerConfigLayerMixin = ConfigLayer
Nick@109 16 VeneerAnimationMixin = Animation
Nick@109 17 VeneerHandlerMixin = Handler
Nick@109 18 Handler.anchorPoint = 'CENTER'
Nick@109 19 Handler.anchorPriority = 4
Nick@109 20 Handler.data = {}
Nick@109 21 Veneer.HandlerBase = Handler
Nick@109 22 Veneer.ConfigLayerBase = ConfigLayer
Nick@109 23 Veneer.AnimationBase = Animation
Nick@109 24
Nenue@121 25 local ANCHOR_BUTTON_TYPES = {
Nenue@121 26 'TOPLEFT', 'TOP', 'TOPRIGHT', 'RIGHT', 'LEFT', 'CENTER', 'BOTTOMLEFT', 'BOTTOM', 'BOTTOMRIGHT'
Nenue@121 27 }
Nick@109 28
Nick@109 29 function ConfigLayer:OnLoad()
Nenue@90 30 local handler = self:GetParent()
Nenue@90 31 print(handler:GetName(), 'configLayers')
Nenue@90 32 handler.ConfigLayers = handler.ConfigLayers or {}
Nenue@90 33 for i, region in ipairs(handler.ConfigLayers) do
Nenue@90 34 region:SetShown(Veneer.ConfigMode)
Nenue@90 35 end
Nenue@121 36 self.handler = handler
Nenue@121 37 end
Nenue@121 38
Nenue@121 39 function ConfigLayer:OnShow()
Nenue@121 40 self:Update()
Nenue@121 41 end
Nenue@121 42
Nenue@121 43 function ConfigLayer:Update()
Nenue@121 44 if not self.anchorButtons then
Nenue@121 45 self.anchorButtons = {}
Nenue@121 46 for _, anchorPoint in ipairs(ANCHOR_BUTTON_TYPES) do
Nenue@121 47 local button = CreateFrame('Button', nil, self, 'VeneerAnchorButtonTemplate')
Nenue@121 48 button.anchorPoint = anchorPoint
Nenue@121 49 button:SetScript('OnMouseDown', function() end)
Nenue@121 50 button:SetScript('OnMouseUp', function() end)
Nenue@121 51 button:SetPoint(anchorPoint)
Nenue@121 52 button:SetSize(16,16)
Nenue@121 53
Nenue@121 54 self.anchorButtons[anchorPoint] = button
Nenue@121 55 end
Nenue@121 56 end
Nenue@121 57
Nenue@121 58 for anchorPoint, button in pairs(self.anchorButtons) do
Nenue@121 59 if anchorPoint == self.handler.anchorPoint then
Nenue@121 60 button:GetNormalTexture():SetColorTexture(0,1,0,1)
Nenue@121 61 else
Nenue@121 62 button:GetNormalTexture():SetColorTexture(0.5,0.5,0.5,1)
Nenue@121 63 end
Nenue@121 64 end
Nenue@121 65
Nenue@121 66 self:RegisterForDrag('LeftButton')
Nenue@121 67 end
Nenue@121 68
Nenue@121 69 function ConfigLayer:OnDragStart()
Nenue@121 70
Nenue@121 71 end
Nenue@121 72 function ConfigLayer:OnDragStop()
Nenue@115 73
Nenue@90 74 end
Nenue@90 75
Nick@109 76 function ConfigLayer:OnUpdate()
Nenue@90 77 local handler = self:GetParent()
Nenue@90 78 handler.ConfigLayers = handler.ConfigLayers or {}
Nenue@90 79
Nenue@90 80 self.ConfigName:SetText(handler:GetName())
Nenue@90 81 self.ConfigID:SetText(handler:GetID())
Nenue@90 82 end
Nenue@90 83
Nick@109 84 -- Sets a state flag for use in OnUpdate conditionals
Nick@109 85 function Animation:OnPlay()
Nenue@90 86 PlaySoundKitID(229)
Nenue@90 87 self.animating = true
Nenue@90 88 print('|cFF00FF00Anim:OnPlay|r @', unpack(self.sourcePoint))
Nenue@90 89 end
Nick@109 90 function Animation:OnStop()
Nenue@90 91 PlaySoundKitID(229)
Nenue@90 92 self.animating = nil
Nenue@90 93 print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
Nenue@90 94 end
Nick@109 95 function Animation:OnFinished()
Nenue@90 96 PlaySoundKitID(229)
Nenue@90 97 self.animating = nil
Nenue@90 98 print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
Nenue@93 99 end
Nenue@93 100
Nick@109 101 -- Replace if module requires anything besides fixing frame anchors
Nick@109 102 function Handler:OnShow()
Nenue@93 103 self:Reanchor()
Nenue@93 104 Veneer:StaticReanchor(self)
Nenue@93 105 end
Nick@109 106 function Handler:OnHide()
Nenue@93 107 Veneer:DynamicReanchor()
Nenue@93 108 end
Nick@109 109 function Handler:Reanchor (anchorAll)
Nenue@99 110 Veneer:DynamicReanchor()
Nenue@98 111 end
Nick@109 112
Nick@109 113 -- Replace if module needs to do more than reconcile SavedVariables pointers
Nick@109 114 function Handler:Setup()
Nenue@115 115 print(self:GetName(), '|cFF00FF88Setup()')
Nenue@102 116 local configName = self:GetName():gsub('^Veneer', '')
Nenue@107 117 VeneerData[configName] = VeneerData[configName] or self.defaultSettings or {}
Nenue@102 118
Nenue@102 119 for k,v in pairs(self.data) do
Nenue@102 120 if not VeneerData[configName][k] then
Nenue@102 121 print('reconciling pre-data:', k, v)
Nenue@102 122 VeneerData[configName][k] = v
Nenue@102 123 end
Nenue@102 124 end
Nenue@115 125
Nenue@115 126 if self.EventList then
Nenue@115 127 for _, event in ipairs(self.EventList) do
Nenue@115 128 print(self:GetName(), event, 'registered')
Nenue@115 129 self:RegisterEvent(event)
Nenue@115 130 end
Nenue@115 131 end
Nenue@115 132
Nenue@107 133 local guid = UnitGUID('player')
Nenue@102 134 self.data = VeneerData[configName]
Nenue@107 135 self.data[guid] = self.data[guid] or {}
Nenue@107 136 self.profile = self.data[guid]
Nenue@102 137 print('data table loaded:', configName)
Nenue@102 138 self.initialized = true
Nenue@102 139 end
Nenue@98 140
Nick@109 141 -- Replace to stop collated outputs.
Nick@109 142 function Handler:Print(...)
Nenue@98 143 local txt = '|cFFFFFF00'..self:GetName()..'|r:'
Nenue@98 144 for i = 1, select('#', ...) do
Nenue@98 145 txt = txt .. ' '.. tostring(select(i, ...))
Nenue@98 146 end
Nenue@98 147 DEFAULT_CHAT_FRAME:AddMessage(txt)
Nenue@103 148 end
Nenue@103 149
Nick@109 150 -- Replace if not using the ConfigLayer template
Nick@109 151 function Handler:UpdateConfigLayers (configMode)
Nenue@103 152 -- Override to manage config visual elements when a config update is fired from /vn or login
Nenue@103 153 if not self:IsShown() then
Nenue@103 154 self:SetShown(configMode)
Nenue@103 155 self:Reanchor()
Nenue@103 156 end
Nenue@103 157 self.configMode = configMode
Nenue@90 158 end