view Templates.lua @ 108:a41f6b74709a

- Handler number and boolean cluster arguments as positioning priority layer and "always top" respectively - Use SetShown and IsShown instead of IsVisible in doing full re-anchor checks
author Nick@Zahhak
date Sat, 25 Feb 2017 11:42:07 -0500
parents ff00679a7817
children 26938ae258b7
line wrap: on
line source
-- Veneer
-- Templates.lua
-- Created: 10/24/2016 9:16 AM
-- %file-revision%
--
-- Mover Widget base
local print = DEVIAN_WORKSPACE and function(...) _G.print('VnTemplate', ...) end or nop
local debugTemplates = {}

VeneerConfigLayerMixin = {}
VeneerAnimationMixin = {}
VeneerHandlerMixin = {
  anchorPoint = 'CENTER',
  anchorPriority = 4,
  data = {},
}

function VeneerConfigLayerMixin:OnLoad()
  local handler = self:GetParent()
  print(handler:GetName(), 'configLayers')
  handler.ConfigLayers = handler.ConfigLayers or {}
  for i, region in ipairs(handler.ConfigLayers) do
    region:SetShown(Veneer.ConfigMode)
  end
end

function VeneerConfigLayerMixin:OnUpdate()
  local handler = self:GetParent()
  handler.ConfigLayers = handler.ConfigLayers or {}

  self.ConfigName:SetText(handler:GetName())
  self.ConfigID:SetText(handler:GetID())
end

function VeneerAnimationMixin:OnPlay()
  PlaySoundKitID(229)
  self.animating = true
  print('|cFF00FF00Anim:OnPlay|r @', unpack(self.sourcePoint))
end
function VeneerAnimationMixin:OnStop()
  PlaySoundKitID(229)
  self.animating = nil
  print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
end
function VeneerAnimationMixin:OnFinished()
  PlaySoundKitID(229)
  self.animating = nil
  print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
end

function VeneerHandlerMixin:OnShow()
  self:Reanchor()
  Veneer:StaticReanchor(self)
end
function VeneerHandlerMixin:OnHide()
  Veneer:DynamicReanchor()
end
function VeneerHandlerMixin:Reanchor (anchorAll)
  Veneer:DynamicReanchor()
end
function VeneerHandlerMixin: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)
      VeneerData[configName][k] = v
    end
  end
  local guid = UnitGUID('player')
  self.data = VeneerData[configName]
  self.data[guid] = self.data[guid] or {}
  self.profile = self.data[guid]
  print('data table loaded:', configName)
  self.initialized = true
end

function VeneerHandlerMixin: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)
  -- Override to manage config visual elements when a config update is fired from /vn or login
  if not self:IsShown() then
    self:SetShown(configMode)
    self:Reanchor()
  end
  self.configMode = configMode
end