annotate Veneer.lua @ 71:6f8661094643

- obtains veneer objects through a common function and track them as a unified table.
author Nenue
date Tue, 23 Aug 2016 06:35:08 -0400
parents ef4116179e2f
children d80db9a9b7e4
rev   line source
Nenue@54 1 -- Veneer
Nenue@71 2 -- Base framework for making things draggable.
Nenue@0 3
Nenue@59 4 local vn, print = LibStub("LibKraken").register(VeneerController)
Nenue@54 5
Nenue@0 6
Nenue@59 7 local defaults = {
Nenue@59 8 enableAll = true,
Nenue@59 9 enableModule = {
Nenue@59 10 BuffFrame = true,
Nenue@59 11 },
Nenue@59 12 BuffFrame = {
Nenue@59 13 width = 48,
Nenue@59 14 height = 48,
Nenue@59 15 }
Nenue@59 16 }
Nenue@71 17 local configMode
Nenue@71 18 local veneers = {}
Nenue@71 19
Nenue@71 20 do
Nenue@71 21 local anonID = 0
Nenue@71 22 local AnonymousName = function()
Nenue@71 23 anonID = anonID + 1
Nenue@71 24 return 'VN' .. anonID
Nenue@71 25 end
Nenue@71 26 end
Nenue@71 27
Nenue@71 28
Nenue@71 29 local VeneerButton_Update = function(self)
Nenue@71 30 if configMode then
Nenue@71 31 self:SetScript('OnDragStart', self.StartMoving)
Nenue@71 32 self:SetScript('OnDragStop', self.StopMovingOrSizing)
Nenue@71 33 self:SetMovable(false)
Nenue@71 34 self:EnableMouse(false)
Nenue@71 35 self:RegisterForDrag('LeftButton')
Nenue@71 36
Nenue@71 37 self.bg:SetColorTexture(0,1,0,0.5)
Nenue@71 38 else
Nenue@71 39
Nenue@71 40 self:SetScript('OnDragStart', self.StartMoving)
Nenue@71 41 self:SetScript('OnDragStop', self.StopMovingOrSizing)
Nenue@71 42 self:SetMovable(false)
Nenue@71 43 self:EnableMouse(false)
Nenue@71 44
Nenue@71 45 self.bg:SetColorTexture(0,1,0,0)
Nenue@71 46 end
Nenue@71 47 end
Nenue@71 48
Nenue@71 49 local ToggleVeneerConfig = function()
Nenue@71 50 if configMode then
Nenue@71 51 configMode = false
Nenue@71 52 vn:print('Config mode off.')
Nenue@71 53 else
Nenue@71 54 configMode = true
Nenue@71 55 vn:print('Config mode on.')
Nenue@71 56 end
Nenue@71 57
Nenue@71 58 for frame, veneer in pairs(veneers) do
Nenue@71 59 VeneerButton_Update(veneer)
Nenue@71 60 end
Nenue@71 61 end
Nenue@71 62
Nenue@71 63 local VeneerButton_OnShow = function(self)
Nenue@71 64 VeneerButton_Update(self)
Nenue@71 65 end
Nenue@71 66
Nenue@71 67 vn.GetVeneer = function(frame)
Nenue@71 68 if not frame then
Nenue@71 69 print('|cFFFF4400Unable to acquire frame...|r')
Nenue@71 70 return
Nenue@71 71 end
Nenue@71 72
Nenue@71 73
Nenue@71 74 if veneers[frame] then
Nenue@71 75 return veneers[frame]
Nenue@71 76 end
Nenue@71 77
Nenue@71 78 local veneer = CreateFrame('Frame', (frame:GetName() or AnonymousName())..'Veneer', UIParent)
Nenue@71 79
Nenue@71 80 veneer:SetAllPoints(frame)
Nenue@71 81 veneer:SetParent(frame)
Nenue@71 82 veneer.bg = veneer:CreateTexture()
Nenue@71 83 veneer.bg:SetColorTexture(1,1,1,0)
Nenue@71 84 veneer.bg:SetAllPoints(veneer)
Nenue@71 85 veneer.bg:Show()
Nenue@71 86 veneer:Hide()
Nenue@71 87 veneer:EnableMouse(false)
Nenue@71 88
Nenue@71 89 veneer:SetScript('OnShow', VeneerButton_OnShow)
Nenue@71 90
Nenue@71 91 -- find current X/Y
Nenue@71 92 veneer.currentLeft = frame:GetLeft()
Nenue@71 93 veneer.currentTop = frame:GetTop()
Nenue@71 94
Nenue@71 95 veneers[frame] = veneer
Nenue@71 96 return veneers[frame]
Nenue@71 97 end
Nenue@0 98
Nenue@59 99 vn.init = function()
Nenue@59 100 if (not VeneerData) or (not VeneerData.version) then
Nenue@59 101 VeneerData = defaults
Nenue@0 102 end
Nenue@59 103 vn.db = VeneerData
Nenue@71 104 end
Nenue@62 105
Nenue@71 106
Nenue@71 107 vn.wrap = function(module)
Nenue@71 108 vn.modules = vn.modules or {}
Nenue@71 109 tinsert(vn.modules, module)
Nenue@71 110 end
Nenue@71 111
Nenue@71 112 SLASH_VENEER1 = "/veneer"
Nenue@71 113 SLASH_VENEER2 = "/vn"
Nenue@71 114
Nenue@71 115 SlashCmdList.VENEER = function()
Nenue@71 116 ToggleVeneerConfig()
Nenue@59 117 end