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
--- a/Veneer.toc	Sat Feb 25 11:42:07 2017 -0500
+++ b/Veneer.toc	Mon Mar 06 02:30:22 2017 -0500
@@ -9,6 +9,7 @@
 ## LoadOnDemand: 0
 ## OptionalDeps: Devian
 
+Init.lua
 Veneer.xml
 ##Options.lua