Mercurial > wow > buffalo2
view 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 |
line wrap: on
line source
-- Veneer -- Base framework for making things draggable. local vn, print = LibStub("LibKraken").register(VeneerController) local defaults = { enableAll = true, enableModule = { BuffFrame = true, }, BuffFrame = { width = 48, height = 48, } } local configMode local veneers = {} do local anonID = 0 local AnonymousName = function() anonID = anonID + 1 return 'VN' .. anonID end end local VeneerButton_Update = function(self) if configMode then self:SetScript('OnDragStart', self.StartMoving) self:SetScript('OnDragStop', self.StopMovingOrSizing) self:SetMovable(false) self:EnableMouse(false) self:RegisterForDrag('LeftButton') self.bg:SetColorTexture(0,1,0,0.5) else self:SetScript('OnDragStart', self.StartMoving) self:SetScript('OnDragStop', self.StopMovingOrSizing) self:SetMovable(false) self:EnableMouse(false) self.bg:SetColorTexture(0,1,0,0) end end local ToggleVeneerConfig = function() if configMode then configMode = false vn:print('Config mode off.') else configMode = true vn:print('Config mode on.') end for frame, veneer in pairs(veneers) do VeneerButton_Update(veneer) end end local VeneerButton_OnShow = function(self) VeneerButton_Update(self) end vn.GetVeneer = function(frame) if not frame then print('|cFFFF4400Unable to acquire frame...|r') return end if veneers[frame] then return veneers[frame] end local veneer = CreateFrame('Frame', (frame:GetName() or AnonymousName())..'Veneer', UIParent) veneer:SetAllPoints(frame) veneer:SetParent(frame) veneer.bg = veneer:CreateTexture() veneer.bg:SetColorTexture(1,1,1,0) veneer.bg:SetAllPoints(veneer) veneer.bg:Show() veneer:Hide() veneer:EnableMouse(false) veneer:SetScript('OnShow', VeneerButton_OnShow) -- find current X/Y veneer.currentLeft = frame:GetLeft() veneer.currentTop = frame:GetTop() veneers[frame] = veneer return veneers[frame] end vn.init = function() if (not VeneerData) or (not VeneerData.version) then VeneerData = defaults end vn.db = VeneerData end vn.wrap = function(module) vn.modules = vn.modules or {} tinsert(vn.modules, module) end SLASH_VENEER1 = "/veneer" SLASH_VENEER2 = "/vn" SlashCmdList.VENEER = function() ToggleVeneerConfig() end