Mercurial > wow > buffalo2
changeset 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 | 73316951ce73 |
files | Init.lua Options.lua Templates.lua Veneer.lua Veneer.toc |
diffstat | 5 files changed, 71 insertions(+), 60 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Init.lua Mon Mar 06 02:30:22 2017 -0500 @@ -0,0 +1,3 @@ +-- things to override for sanity +SLASH_RELOADUI1 = "/rl" +SlashCmdList["RELOADUI"] = ReloadUI \ No newline at end of file
--- a/Options.lua Sat Feb 25 11:42:07 2017 -0500 +++ b/Options.lua Mon Mar 06 02:30:22 2017 -0500 @@ -1,6 +1,5 @@ local plugin = CreateFrame('Frame', 'VeneerOptions', UIParent, 'TooltipBorderedFrameTemplate') - local vn, print = LibStub("LibKraken").register(Veneer, plugin) local fields = {}
--- a/Templates.lua Sat Feb 25 11:42:07 2017 -0500 +++ b/Templates.lua Mon Mar 06 02:30:22 2017 -0500 @@ -4,18 +4,26 @@ -- %file-revision% -- -- Mover Widget base +local ADDON, Veneer = ... local print = DEVIAN_WORKSPACE and function(...) _G.print('VnTemplate', ...) end or nop -local debugTemplates = {} +local PlaySoundKitID = DEVIAN_WORKSPACE and PlaySoundKitID or nop +local ipairs, pairs = ipairs, pairs +local pack, unpack = pack, unpack -VeneerConfigLayerMixin = {} -VeneerAnimationMixin = {} -VeneerHandlerMixin = { - anchorPoint = 'CENTER', - anchorPriority = 4, - data = {}, -} +local Handler, ConfigLayer, Animation = {}, {}, {} -function VeneerConfigLayerMixin:OnLoad() +VeneerConfigLayerMixin = ConfigLayer +VeneerAnimationMixin = Animation +VeneerHandlerMixin = Handler +Handler.anchorPoint = 'CENTER' +Handler.anchorPriority = 4 +Handler.data = {} +Veneer.HandlerBase = Handler +Veneer.ConfigLayerBase = ConfigLayer +Veneer.AnimationBase = Animation + + +function ConfigLayer:OnLoad() local handler = self:GetParent() print(handler:GetName(), 'configLayers') handler.ConfigLayers = handler.ConfigLayers or {} @@ -24,7 +32,7 @@ end end -function VeneerConfigLayerMixin:OnUpdate() +function ConfigLayer:OnUpdate() local handler = self:GetParent() handler.ConfigLayers = handler.ConfigLayers or {} @@ -32,37 +40,40 @@ self.ConfigID:SetText(handler:GetID()) end -function VeneerAnimationMixin:OnPlay() +-- Sets a state flag for use in OnUpdate conditionals +function Animation:OnPlay() PlaySoundKitID(229) self.animating = true print('|cFF00FF00Anim:OnPlay|r @', unpack(self.sourcePoint)) end -function VeneerAnimationMixin:OnStop() +function Animation:OnStop() PlaySoundKitID(229) self.animating = nil print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint)) end -function VeneerAnimationMixin:OnFinished() +function Animation:OnFinished() PlaySoundKitID(229) self.animating = nil print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint)) end -function VeneerHandlerMixin:OnShow() +-- Replace if module requires anything besides fixing frame anchors +function Handler:OnShow() self:Reanchor() Veneer:StaticReanchor(self) end -function VeneerHandlerMixin:OnHide() +function Handler:OnHide() Veneer:DynamicReanchor() end -function VeneerHandlerMixin:Reanchor (anchorAll) +function Handler:Reanchor (anchorAll) Veneer:DynamicReanchor() end -function VeneerHandlerMixin:Setup() + +-- Replace if module needs to do more than reconcile SavedVariables pointers +function Handler:Setup() local configName = self:GetName():gsub('^Veneer', '') VeneerData[configName] = VeneerData[configName] or self.defaultSettings or {} - -- reconcile any data accumulated before login trigger for k,v in pairs(self.data) do if not VeneerData[configName][k] then print('reconciling pre-data:', k, v) @@ -77,18 +88,17 @@ self.initialized = true end -function VeneerHandlerMixin:Print(...) +-- Replace to stop collated outputs. +function Handler:Print(...) local txt = '|cFFFFFF00'..self:GetName()..'|r:' for i = 1, select('#', ...) do txt = txt .. ' '.. tostring(select(i, ...)) end - - - DEFAULT_CHAT_FRAME:AddMessage(txt) end -function VeneerHandlerMixin:UpdateConfigLayers (configMode) +-- Replace if not using the ConfigLayer template +function Handler:UpdateConfigLayers (configMode) -- Override to manage config visual elements when a config update is fired from /vn or login if not self:IsShown() then self:SetShown(configMode)
--- a/Veneer.lua Sat Feb 25 11:42:07 2017 -0500 +++ b/Veneer.lua Mon Mar 06 02:30:22 2017 -0500 @@ -4,16 +4,17 @@ -- 3. Setup() where (not self.initialized) -- 4. Update() -- 5. Reanchor() - -SLASH_VENEER1 = "/veneer" -SLASH_VENEER2 = "/vn" +local ADDON, Veneer = ... local VENEER_VERSION = 703 local LE_FREE_FRAMES_GROUP = 1 local type, strrep, ipairs, tinsert, tostring, select = type, string.rep, ipairs, tinsert, tostring, select local pairs, tremove = pairs, tremove +local print = DEVIAN_WORKSPACE and function(...) _G.print('Veneer', ...) end or nop +local wipe = table.wipe +SLASH_VENEER1 = "/veneer" +SLASH_VENEER2 = "/vn" SlashCmdList.VENEER = function(cmd) - if Veneer.ConfigMode then Veneer.ConfigMode = false else @@ -22,19 +23,14 @@ Veneer:UpdateConfigLayers() end -VeneerCore = { - Frames = {}, - ConfigLayers = {}, - FrameClusters = { - [LE_FREE_FRAMES_GROUP] = {}, - }, - parserDepth = 0, - pendingCalls = {}, - AddOnCheck = {} -} - -local print = DEVIAN_WORKSPACE and function(...) _G.print('Veneer', ...) end or nop -local wipe = table.wipe +Veneer.Frames = {} +Veneer.ConfigLayers = {} +Veneer.FrameClusters = { + [LE_FREE_FRAMES_GROUP] = {} + } +Veneer.parserDepth = 0 +Veneer.pendingCalls = {} +Veneer.AddOnCheck = {} local defaults = { enableAll = true, @@ -84,7 +80,7 @@ CENTER = {0, 0}, } -function VeneerCore:print(...) +function Veneer:print(...) local txt = '|cFFFFFF00Veneer|r:' for i = 1, select('#', ...) do txt = txt .. ' '.. tostring(select(i, ...)) @@ -93,7 +89,7 @@ DEFAULT_CHAT_FRAME:AddMessage(txt) end -function VeneerCore:OnLoad() +function Veneer:OnLoad() print('|cFFFFFF00Veneer!|r') self:RegisterEvent('ADDON_LOADED') self:RegisterEvent('PLAYER_LOGIN') @@ -106,7 +102,7 @@ local select, IsAddOnLoaded, IsLoggedIn = select, IsAddOnLoaded, IsLoggedIn -function VeneerCore:OnEvent(event, ...) +function Veneer:OnEvent(event, ...) print('|cFFFF0088OnEvent()|r',event, ...) if (event == 'PLAYER_LOGIN') or (event == 'ADDON_LOADED') then print(IsLoggedIn(), self.initialized) @@ -138,11 +134,11 @@ end end -function VeneerCore:OnDragStart() +function Veneer:OnDragStart() self:StartMoving() end -function VeneerCore:OnDragStop() +function Veneer:OnDragStop() self:StopMovingOrSizing() end @@ -154,13 +150,13 @@ frame:Setup() frame.initialized = true else - Veneer:RegisterEvent('ADDON_LOADED') + frame:RegisterEvent('ADDON_LOADED') end end end -function VeneerCore:Setup () +function Veneer:Setup () print('|cFFFF0088Setup()|r') local resetConfig = (not VeneerData) if (not VeneerData) then @@ -176,7 +172,7 @@ self:Update() end -function VeneerCore:UpdateConfigLayers() +function Veneer:UpdateConfigLayers() if VeneerData then VeneerData.ConfigMode = self.ConfigMode @@ -208,7 +204,7 @@ end -function VeneerCore:GetClusterFromArgs (...) +function Veneer:GetClusterFromArgs (...) local primaryAnchor local insertPosition local insertPriority @@ -264,7 +260,7 @@ end -- args: frame object, list of anchor groups, true for forced top, number for priority layer -function VeneerCore:AddHandler(handler, ...) +function Veneer:AddHandler(handler, ...) print('|cFFFFFF00*** Adding handler:', handler.moduleName or handler:GetName()) @@ -319,12 +315,12 @@ end end -function VeneerCore:Reanchor() +function Veneer:Reanchor() self:ExecuteOnClusters(nil, 'Reanchor') self:DynamicReanchor(self) end -function VeneerCore:Update() +function Veneer:Update() self:ExecuteOnClusters(nil, function(frame) if frame.initialized and frame.Update then frame:Update() @@ -334,13 +330,13 @@ end -- updates anchor relations to and from the target handler -function VeneerCore:GetAnchor(...) +function Veneer:GetAnchor(...) end -- Evaluates frames visibility and chains them accordingly -function VeneerCore:DynamicReanchor(parent) +function Veneer:DynamicReanchor(parent) parent = parent or self print('|cFF88FF00DynamicReanchor()') for anchorPoint, cluster in pairs(parent.FrameClusters) do @@ -375,7 +371,7 @@ end -- Evaluates the current visibility state and re-anchors adjacent blocks accordingly -function VeneerCore:InternalReanchor(handler, printFunc) +function Veneer:InternalReanchor(handler, printFunc) print('|cFF00FFFFVeneer:InternalReanchor('..handler:GetName()..')') if handler.anchorFrame then handler:SetPoint(handler.anchorPoint, handler.anchorFrame, handler.anchorFrom, handler.anchorX, handler.anchorY) @@ -424,7 +420,7 @@ end end -function VeneerCore:SlideBlock(frame, ...) +function Veneer:SlideBlock(frame, ...) local aX, aY = frame:GetLeft(), frame:GetTop() frame:SetPoint('TOPLEFT', frame, 'BOTTOMLEFT', aX, aY) @@ -441,7 +437,7 @@ end -function VeneerCore:ExecuteOnClusters(layer, method) +function Veneer:ExecuteOnClusters(layer, method) self.parserDepth = self.parserDepth + 1 if not layer then if self.parserDepth > 1 then @@ -481,7 +477,7 @@ -- Takes frame handle and assigns a block to it -function VeneerCore:Acquire (frame, template) +function Veneer:Acquire (frame, template) if not frame then print('|cFFFF4400Unable to acquire frame...|r') return @@ -504,4 +500,6 @@ self.Frames[frame] = veneer end return veneer -end \ No newline at end of file +end + +VeneerCore = Veneer \ No newline at end of file