annotate Templates.lua @ 109:26938ae258b7

- Re-use the basic addon table for core mixin - add /rl command
author Nick@Zahhak
date Mon, 06 Mar 2017 02:30:22 -0500
parents a41f6b74709a
children 8c94bee4fdfc
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@90 8 local print = DEVIAN_WORKSPACE and function(...) _G.print('VnTemplate', ...) 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
Nick@109 25
Nick@109 26 function ConfigLayer:OnLoad()
Nenue@90 27 local handler = self:GetParent()
Nenue@90 28 print(handler:GetName(), 'configLayers')
Nenue@90 29 handler.ConfigLayers = handler.ConfigLayers or {}
Nenue@90 30 for i, region in ipairs(handler.ConfigLayers) do
Nenue@90 31 region:SetShown(Veneer.ConfigMode)
Nenue@90 32 end
Nenue@90 33 end
Nenue@90 34
Nick@109 35 function ConfigLayer:OnUpdate()
Nenue@90 36 local handler = self:GetParent()
Nenue@90 37 handler.ConfigLayers = handler.ConfigLayers or {}
Nenue@90 38
Nenue@90 39 self.ConfigName:SetText(handler:GetName())
Nenue@90 40 self.ConfigID:SetText(handler:GetID())
Nenue@90 41 end
Nenue@90 42
Nick@109 43 -- Sets a state flag for use in OnUpdate conditionals
Nick@109 44 function Animation:OnPlay()
Nenue@90 45 PlaySoundKitID(229)
Nenue@90 46 self.animating = true
Nenue@90 47 print('|cFF00FF00Anim:OnPlay|r @', unpack(self.sourcePoint))
Nenue@90 48 end
Nick@109 49 function Animation:OnStop()
Nenue@90 50 PlaySoundKitID(229)
Nenue@90 51 self.animating = nil
Nenue@90 52 print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
Nenue@90 53 end
Nick@109 54 function Animation:OnFinished()
Nenue@90 55 PlaySoundKitID(229)
Nenue@90 56 self.animating = nil
Nenue@90 57 print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
Nenue@93 58 end
Nenue@93 59
Nick@109 60 -- Replace if module requires anything besides fixing frame anchors
Nick@109 61 function Handler:OnShow()
Nenue@93 62 self:Reanchor()
Nenue@93 63 Veneer:StaticReanchor(self)
Nenue@93 64 end
Nick@109 65 function Handler:OnHide()
Nenue@93 66 Veneer:DynamicReanchor()
Nenue@93 67 end
Nick@109 68 function Handler:Reanchor (anchorAll)
Nenue@99 69 Veneer:DynamicReanchor()
Nenue@98 70 end
Nick@109 71
Nick@109 72 -- Replace if module needs to do more than reconcile SavedVariables pointers
Nick@109 73 function Handler:Setup()
Nenue@102 74 local configName = self:GetName():gsub('^Veneer', '')
Nenue@107 75 VeneerData[configName] = VeneerData[configName] or self.defaultSettings or {}
Nenue@102 76
Nenue@102 77 for k,v in pairs(self.data) do
Nenue@102 78 if not VeneerData[configName][k] then
Nenue@102 79 print('reconciling pre-data:', k, v)
Nenue@102 80 VeneerData[configName][k] = v
Nenue@102 81 end
Nenue@102 82 end
Nenue@107 83 local guid = UnitGUID('player')
Nenue@102 84 self.data = VeneerData[configName]
Nenue@107 85 self.data[guid] = self.data[guid] or {}
Nenue@107 86 self.profile = self.data[guid]
Nenue@102 87 print('data table loaded:', configName)
Nenue@102 88 self.initialized = true
Nenue@102 89 end
Nenue@98 90
Nick@109 91 -- Replace to stop collated outputs.
Nick@109 92 function Handler:Print(...)
Nenue@98 93 local txt = '|cFFFFFF00'..self:GetName()..'|r:'
Nenue@98 94 for i = 1, select('#', ...) do
Nenue@98 95 txt = txt .. ' '.. tostring(select(i, ...))
Nenue@98 96 end
Nenue@98 97 DEFAULT_CHAT_FRAME:AddMessage(txt)
Nenue@103 98 end
Nenue@103 99
Nick@109 100 -- Replace if not using the ConfigLayer template
Nick@109 101 function Handler:UpdateConfigLayers (configMode)
Nenue@103 102 -- Override to manage config visual elements when a config update is fired from /vn or login
Nenue@103 103 if not self:IsShown() then
Nenue@103 104 self:SetShown(configMode)
Nenue@103 105 self:Reanchor()
Nenue@103 106 end
Nenue@103 107 self.configMode = configMode
Nenue@90 108 end